首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android RetroArch从意图加载ROM

Android RetroArch从意图加载ROM
EN

Stack Overflow用户
提问于 2022-04-23 22:56:08
回答 1查看 269关注 0票数 0

嘿,我试着用一个意图来启动一个名为RetroArch的应用程序,并将所需的参数传递给它,这样它就可以在不需要使用RetroArch GUI的情况下开始游戏了。

我有一些我一直在看的参考:

我想出的代码是:

代码语言:javascript
复制
public void onAddPicClick(String name) {
    String gameName = name.replace(".png", "").replace(" ", "_");
    Uri romPath = Uri.parse("android.resource://com.cpt.sample/raw/" + gameName);

    /*Uri rom = Uri.parse(
                "am start " +
                 "--user 0 " +
                 "-n com.retroarch/.browser.retroactivity.RetroActivityFuture " +
                 "-e ROM android.resource://com.example.telluridetainment/raw/" + gameName + ".nes " +
                 "-e LIBRETRO /data/data/com.retroarch/cores/fceumm_libretro_android.so " +
                 "-e CONFIGFILE /storage/emulated/0/Android/data/com.retroarch/files/retroarch.cfg " +
                 "-e QUITFOCUS " +
                 "--activity-clear-top " +
                 "--activity-clear-task " +
                 "--activity-no-history"
    );*/

    //Bundle b = new Bundle();
    Intent intent = new Intent(Intent.ACTION_MAIN,null);
    //Intent intent = getActivity().getPackageManager().getLaunchIntentForPackage("com.retroarch");

    //intent.setData(rom);
    //intent.putExtra("n", "com.retroarch/.browser.retroactivity.RetroActivityFuture");
    intent.putExtra("ROM", romPath);
    intent.putExtra("LIBRETRO", "/data/data/com.retroarch/cores/nestopia_libretro_android.so");
    intent.putExtra("CONFIGFILE", "/storage/emulated/0/Android/data/com.retroarch/files/retroarch.cfg");
    //b.putString("QUITFOCUS", null);
    //b.putString("activity-clear-top", null);
    //b.putString("activity-clear-task", null);
    //b.putString("activity-no-history", null);
    //intent.putExtras(b);
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

    startActivity(intent);
}

我已经能够启动RetroArch,但尚未能够运行的ROM没有用户交互。

那么,什么是正确的方式来编码这个意图呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-25 16:46:57

经过几个小时的反复尝试和错误之后,我终于开始工作了。我在这里张贴最后的代码,以防其他人在这个问题上绊倒,需要一个解决方案。

下面是NES游戏的核心,我正在使用64位RetrtoArch + apk

代码语言:javascript
复制
try {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.setComponent(new ComponentName("com.retroarch.aarch64", "com.retroarch.browser.retroactivity.RetroActivityFuture"));
    intent.setAction("com.retroarch.aarch64/.browser.retroactivity.RetroActivityFuture");
    intent.putExtra("ROM", "/storage/emulated/0/games/nes/Mario.nes");
    intent.putExtra("LIBRETRO", "/data/data/com.retroarch.aarch64/cores/nestopia_libretro_android.so");
    intent.putExtra("CONFIGFILE", "/storage/emulated/0/Android/data/com.retroarch.aarch64/files/retroarch.cfg");
    intent.addCategory(Intent.CATEGORY_LAUNCHER);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);

    startActivity(intent);
} catch (Exception e) {
    Log.d("RetroArchDebugError", e.getMessage());
}

备注:

  • 如果使用32位的com.retroarch.aarch64版本,则将RetroArch替换为com.retroarch.。
  • /storage/emulated/0/...是内部存储路径。
  • 根据您希望使用的仿真器,需要替换核心(.../cores/...)。

您可以从这里获取模拟器名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71984199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档