android - Android Auto 启动时的 Intent 过滤器
问题描述
是否存在指示 Android Auto 何时启动的意图过滤器?正在构建一个启动后台线程的应用程序,我想使用蓝牙连接到设备以从自定义硬件远程控制主机。
解决方案
您可以在广播接收器中使用ACTION_ENTER_CAR_MODE来监听 Android Auto 何时启动和连接。请记住,ACTION_ENTER_CAR_MODE 不是 Android Auto 独有的,它仅表示操作系统处于汽车模式,这可能涉及也可能不涉及 Android Auto。
此外,为了满足 Android O 要求,您需要通过在活动中注册接收器来显式注册接收器。由于在活动中注册它,它不会在第一次连接到 Auto 时接收广播,但只有在创建活动之后,然后在之后的每个连接上。
<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>
然后在接收器的实现中......
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");
}
}
}
还值得注意的是,从上面链接的文档中......
此外,用户可以手动将系统切换到汽车模式,而无需身在码头。在汽车模式下——无论是通过用户手动操作还是物理放置在底座中——都会显示一条通知,允许用户退出底座模式。因此,此处表示的停靠模式可能与底层停靠事件广播的当前状态不同。
推荐阅读
- python - 仅在 PyCharm 的编辑器中缺少 qgis.core 模块中的类
- c# - 如何将 connectionString 从 App.config 移动到 C# 中的代码?
- google-cloud-monitoring - 信用用完时停止 GCP 作业
- javascript - JS 数组在 Google Apps 脚本中未被识别为数组
- c# - C#手动停止异步for语句(打字机效果)
- javascript - reduce 可以返回一个包含 2 个值的数组吗?
- python - 线程超类 - args
- xml - XSLT 结合多个父母
- sql - SQL Server Query 等效于 excel 公式
- linux - 在 Ubuntu 20.04 上安装 codelite 时出错 - 无法启动连接