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.
是否存在指示 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.