我搜索过,但无法得到任何答案 当我们的手机连接到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;
}
答案 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");
}
}
}