如何在没有底座的情况下将 android 置于汽车模式?

Posted

技术标签:

【中文标题】如何在没有底座的情况下将 android 置于汽车模式?【英文标题】:How to put android to a car mode without a dock? 【发布时间】:2013-12-09 17:28:21 【问题描述】:

我正在开发某种汽车模式应用程序,我想在驾驶时更换默认主屏幕。但我想在用户使用 NFC 标签或超过速度限制时激活它。我在 Google Play (https://play.google.com/store/apps/details?id=com.safedrivingassociation.everyonetexts) 上找到了一个可以执行此操作的应用程序,因此有可能,但我不知道如何实现。

【问题讨论】:

听起来很有趣。祝你好运!当你有问题时,回头看看。 不确定这是否是您正在寻找的,但它可能会有所帮助:***.com/questions/5109407/… 如果以制作应用程序为目标,这没有帮助,但我想这样做,所以我只使用 Lama。它是一个动作管理器,可让您根据事件执行操作虽然不确定它是否支持 nfc,但我知道它的替代方案确实可以。 你最后有没有让这个工作正常?特别是家庭活动部分。 【参考方案1】:

最后,我找到了解决方案。首先我们需要获取一个 UiModeManager 实例:

UiModeManager uiModeManager = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);

接下来,将手机设置为我们刚刚调用的车载模式

uiModeManager.enableCarMode(UiModeManager.ENABLE_CAR_MODE_GO_CAR_HOME);

恢复默认电话模式:

uiModeManager.disableCarMode(UiModeManager.DISABLE_CAR_MODE_GO_HOME);

就是这样。对于我们希望它成为汽车模式主屏幕的 Activity,我们只需将 Intent-filter 添加到清单中:

<intent-filter>
  <action android:name="android.intent.action.MAIN" />
  <category android:name="android.intent.category.CAR_MODE" />
  <category android:name="android.intent.category.DEFAULT" />
  <category android:name="android.intent.category.CAR_DOCK"/>
</intent-filter>

【讨论】:

enableCarMode() 的文档说 flags 参数必须为 0,但您提供的常量 (ENABLE_CAR_MODE_GO_CAR_HOME) 为 1。也许它已被弃用? 很奇怪,但是根据文档,这两个常量的值都是 1 developer.android.com/reference/android/app/… 但这是来自文档的另一部分:ENABLE_CAR_MODE_GO_CAR_HOME 在 API 级别 8 中添加了用于 enableCarMode(int) 的标志:转到作为启用的一部分的汽车回家活动。 是的,这确实看起来像是一个差异。常量的文档说它“确保当前活动(在非汽车模式下)和汽车之家活动之间的干净过渡”。当我使用标志时,它似乎强制转换,关闭活动并重新打开它,即使我最终最终出现在同一个屏幕上。如果我使用 0,我的活动的日/夜主题会发生变化,而我的活动不会明显重新打开。

以上是关于如何在没有底座的情况下将 android 置于汽车模式?的主要内容,如果未能解决你的问题,请参考以下文章

如何在不将Dock设置为Fill的情况下将Label置于Panel内部

在不使用绝对位置、顶部和左侧的情况下将按钮置于图像中心的替代方法

如何在没有 Facebook、Twitter 等的情况下将社交功能集成到 iOS 和/或 Android 应用程序中?

如何在没有 Geofire 的情况下将位置对象保存在 Firebase 中?

如何在不将您的应用设为默认消息应用的情况下将短信发送到 android 中的特定应用?

在没有 Web 服务的情况下将 Android 应用程序连接到 ASP 网站 [关闭]