You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让Java开发的安卓应用在Pico Neo 3 VR头显开机时自动启动?

如何让Java开发的安卓应用在Pico Neo 3 VR头显开机时自动启动?

哥们,我来帮你搞定Pico Neo 3开机自启的问题!先梳理下你之前试过的方法为啥不管用,再给你几个针对性的可行方案:

先说说你之前踩的坑

  • 系统设置没自启选项:Pico消费级OS确实默认把这个选项藏起来了,普通用户在设置里找不到很正常。
  • pico_autostart_pkg命令失效:这个参数是给Pico企业版OS或者定制版用的,你用的5.12.2.S消费级版本不支持这个命令,白忙活啦。
  • 设备闲置白名单:这个只是防止应用被后台杀死,不是触发开机自启的条件,单独设置当然没用。
  • 普通BOOT_COMPLETED广播:Pico的VR系统对开机广播做了限制,普通应用默认收不到,而且你直接启动普通Activity也不符合Pico VR应用的启动规范。

可行方案来了,按步骤来!

方案一:用Pico消费级OS支持的ADB命令

首先得确保你的应用是符合Pico VR规范的(比如Manifest里配置了VR相关权限和Activity),然后执行以下ADB命令:

# 设置默认开机启动的VR应用(替换成你的包名和主Activity)
adb shell am set-default-package com.example.app com.example.app.MainActivity
# 把应用加入设备闲置白名单,防止被后台杀死
adb shell dumpsys deviceidle whitelist +com.example.app
# 允许应用在后台运行
adb shell appops set com.example.app RUN_IN_BACKGROUND allow

执行完后重启头显,应该就能自动启动了。

方案二:适配Pico VR的启动逻辑修改Manifest

普通的开机广播在Pico系统里可能被拦截,咱们改用Pico专属的广播,同时调整启动方式:

  1. 先在Manifest里添加Pico VR相关权限:
<uses-permission android:name="com.pico.vr.permission.LAUNCH_VR_APP" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
  1. 修改你的BroadcastReceiver,同时监听系统和Pico的开机广播,并且用Pico的方式启动应用:
public class BootUpReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        // 同时监听系统和Pico专属的开机完成广播
        String action = intent.getAction();
        if (Intent.ACTION_BOOT_COMPLETED.equals(action) 
            || "com.pico.vr.action.BOOT_COMPLETED".equals(action)) {
            // 获取应用的启动Intent,而不是直接启动Activity
            Intent launchIntent = context.getPackageManager().getLaunchIntentForPackage("com.example.app");
            if (launchIntent != null) {
                launchIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                // 添加Pico VR启动标记,确保以VR模式启动
                launchIntent.putExtra("com.pico.vr.intent.extra.LAUNCH_MODE", "vr_launch");
                context.startActivity(launchIntent);
            }
        }
    }
}
  1. 在Manifest里更新接收器的注册,加上Pico的广播Action:
<receiver
    android:name=".BootUpReceiver"
    android:enabled="true"
    android:exported="true"
    android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="com.pico.vr.action.BOOT_COMPLETED"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</receiver>

方案三:试试开发者模式的隐藏选项

  1. 打开头显设置,找到「关于设备」,连续点击「版本号」7次,启用开发者模式。
  2. 进入开发者模式,找找「VR应用设置」或者「开机自启设置」(不同版本位置可能不一样),手动添加你的应用到自启列表。
    注意:有些消费级版本可能还是没这个选项,那就回到方案一用ADB搞定。

最后验证下

  • 确保应用是正式签名的,Pico OS可能对未签名的应用限制自启。
  • 先手动启动一次应用,确认能正常运行,再重启头显测试自启。

备注:内容来源于stack exchange,提问作者Ranot

火山引擎 最新活动