You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Auto开发:如何监听手机与车机的连接状态?

Android Auto 连接状态监听方案

你可以通过以下两种核心方式监听手机与车机的连接状态:

1. 使用 CarConnectionEvent(推荐,Android Auto 专属API)

从 Android Auto 相关库中,你可以注册 CarConnectionCallback 来监听连接状态变化:

  • 确保依赖中包含 Android Auto 相关库(比如 com.google.android.gms:play-services-car:X.X.X,替换为对应版本号)
  • 初始化 Car 对象并注册回调:
val car = Car.createCar(context, object : CarConnectionCallback() {
    override fun onConnected(car: Car) {
        // 手机已连接到车机
    }

    override fun onDisconnected(car: Car) {
        // 手机已与车机断开连接
    }
})
car.connect()

注意:使用此API需要在AndroidManifest.xml中声明 android.permission.ACCESS_CAR_FEATURES 权限。

2. 监听蓝牙连接状态(间接方式)

大部分车机通过蓝牙与手机连接,你可以监听蓝牙的连接广播:

  • 注册 BroadcastReceiver 监听 BluetoothDevice.ACTION_ACL_CONNECTED 和 BluetoothDevice.ACTION_ACL_DISCONNECTED
val bluetoothReceiver = object : BroadcastReceiver() {
    override fun onReceive(context: Context?, intent: Intent?) {
        when(intent?.action) {
            BluetoothDevice.ACTION_ACL_CONNECTED -> {
                val device = intent.getParcelableExtra<BluetoothDevice>(BluetoothDevice.EXTRA_DEVICE)
                // 判断该蓝牙设备是否为车机(可通过设备名称、UUID等特征识别)
            }
            BluetoothDevice.ACTION_ACL_DISCONNECTED -> {
                // 处理断开逻辑
            }
        }
    }
}

context?.registerReceiver(bluetoothReceiver, IntentFilter().apply {
    addAction(BluetoothDevice.ACTION_ACL_CONNECTED)
    addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED)
})

这种方式需要额外判断连接的蓝牙设备是否为车机,不如第一种方式精准。

另外,没有直接对应 Intent.ACTION_POWER_CONNECTED 的系统广播来专门监听Android Auto连接,推荐使用第一种专属API实现更可靠的状态监听。

内容的提问来源于stack exchange,提问作者AdamN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:22:38