首页 > 解决方案 > Android Auto 启动时的 Intent 过滤器

问题描述

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

标签: androidandroid-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"); 
        } 
    } 
}

还值得注意的是,从上面链接的文档中......

此外,用户可以手动将系统切换到汽车模式,而无需身在码头。在汽车模式下——无论是通过用户手动操作还是物理放置在底座中——都会显示一条通知,允许用户退出底座模式。因此,此处表示的停靠模式可能与底层停靠事件广播的当前状态不同。


推荐阅读