2013-12-09 12 views
0

我正在開發某種汽車模式應用程序,我想在駕駛時更換默認主屏幕。但是我想在用戶使用NFC標籤或超過速度限制時激活它。我在Google Play上發現了一個應用程序(https://play.google.com/store/apps/details?id=com.safedrivingassociation.everyonetexts),因此可以這樣做,但我不知道如何執行此操作。如何把android沒有碼頭的汽車模式?

+0

聽起來很有趣。祝你好運!當你有問題時請回頭。 – admdrew

+0

不知道這是你在找什麼,但它可以幫助:http://stackoverflow.com/questions/5109407/how-do-i-test-my-dock-application – turbo

+0

如果使一個應用程序是沒有幫助的目標,但我想這樣做,所以我只是使用喇嘛。它是一個動作管理器,可以讓你根據事件做事情。不知道它是否支持nfc,但我知道替代它的確可以。 – ghostbust555

回答

2

最後,我找到了一個解決方案。首先,我們需要得到一個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); 

就這樣。而對於我們的活動,我們希望它是一個主屏幕汽車模式,我們只需添加意向過濾器清單:

<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> 
+0

enableCarMode()的文檔聲明flags參數必須爲0,但是您提供的常量(ENABLE_CAR_MODE_GO_CAR_HOME)爲1。也許它已被棄用? – spaaarky21

+1

奇怪,但根據文檔,這兩個常量的值爲1 http://developer.android.com/reference/android/app/UiModeManager.html#ENABLE_CAR_MODE_GO_CAR_HOME但是這裏是來自文檔的另一部分:ENABLE_CAR_MODE_GO_CAR_HOME 在API級別添加8 使用enableCarMode(int)的標誌:作爲啓用的一部分轉到汽車之家活動。 –

+0

是的,這看起來像是一個差異。該常數的文檔稱它「確保了當前活動(非車模式)和汽車之家活動之間的清潔轉換」。當我使用國旗時,它似乎強制轉換,關閉活動並重新打開它,儘管我最終在同一個屏幕上結束。如果我使用0,則我的活動的日/夜主題會發生變化,而我的活動不會明顯重新開放。 – spaaarky21