如何检测应用程序(或移动设备)已连接到Android Auto

时间:2018-01-23 12:49:30

标签: android android-broadcast android-auto

我搜索过,但无法得到任何答案 当我们的手机连接到Android Auto时,是否有任何广播检测到?

我有这个代码,但需要由某个事件来运行。

public static boolean isCarUiMode(Context c) {
UiModeManager uiModeManager = (UiModeManager) c.getSystemService(Context.UI_MODE_SERVICE);
if (uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_CAR) {
    LogHelper.d(TAG, "Running in Car mode");
    return true;
} else {
    LogHelper.d(TAG, "Running on a non-Car mode");
    return false;
}

1 个答案:

答案 0 :(得分:5)

查看UiModeManager上的文档,我找到了ACTION_ENTER_CAR_MODE,以及ACTION_EXIT_CAR_MODE

使用这些,您可以在清单中创建和注册接收器,如下所示:

<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", "Car Mode");
      } else if (UiModeManager.ACTION_EXIT_CAR_MODE.equals(action)) {
        Log.d("CarModeReceiver", "Non-Car Mode");
      }
  }
}