Android 自动启动时的 Intent 过滤器

Intent filter when Android Auto started

是否存在指示 Android Auto 何时启动的意图过滤器?我正在构建一个启动后台线程的应用程序,我想使用蓝牙连接到设备以从自定义硬件远程控制主机。

您可以在广播接收器中使用 ACTION_ENTER_CAR_MODE 来监听 Android 自动启动和连接的时间。请记住 ACTION_ENTER_CAR_MODE 不是 Android Auto 独有的,它只是意味着 OS 处于汽车模式,这可能涉及也可能不涉及 Android Auto。

此外,为了满足 Android O 要求,您需要通过在 activity 中注册来显式注册接收者。作为在 activity 中注册它的结果,它不会在第一次连接到 Auto 时接收广播,但只有在创建 activity 之后,然后在之后的每个连接上。

<receiver 
    android:name=".CarModeReceiver" 
    android:enabled="true" 
    android:exported="true"> 
       <intent-filter> 
           <action android:name="android.app.action.ENTER_CAR_MODE"/> 
           <action android:name="android.app.action.EXIT_CAR_MODE"/> 
       </intent-filter> 
</receiver>

然后在receiver的实现中...

public class CarModeReceiver extends BroadcastReceiver { 
    @Override public void onReceive(Context context, Intent intent) { 
        String action = intent.getAction(); 
        if (UiModeManager.ACTION_ENTER_CAR_MODE.equals(action)) { 
            Log.d("CarModeReceiver", "Entered Car Mode"); 
        } else if (UiModeManager.ACTION_EXIT_CAR_MODE.equals(action)) { 
            Log.d("CarModeReceiver", "Exited Car Mode"); 
        } 
    } 
}

还值得注意的是,根据上面链接的文档...

In addition, the user may manually switch the system to car mode without physically being in a dock. While in car mode -- whether by manual action from the user or being physically placed in a dock -- a notification is displayed allowing the user to exit dock mode. Thus the dock mode represented here may be different than the current state of the underlying dock event broadcast.