2017-05-24 51 views
4

是否可以執行運行時檢查以查看設備是否正在運行Android-Things?檢查設備是否正在運行Android-Things

+0

對於某件事情而言,您希望在另一個Android設備上進行不同的操作,具體是什麼?例如,如果要使用特定於事件的API類,請使用'Class.forName()'來查看它們是否存在。 – CommonsWare

+0

嗯,我想看看我是否可以有Android的相同的應用程序也運行在Android的東西,我可能想要執行一個非託管的Android設備上的自動操作,同時要求在普通的Android設備上手動輸入。 –

+1

我認爲你的決策標準不應該是「它是一件事嗎?」,而是「我們有屏幕嗎?」或類似的東西。 Android的東西可以有屏幕和輸入設備,用戶可能有興趣提供手動輸入。 – CommonsWare

回答

6

您可以查詢PackageManagerFEATURE_EMBEDDED,這是所有Android設備的事情來實現:在AndroidØ預覽版SDK最近添加

public boolean isThingsDevice(Context context) { 
    final PackageManager pm = context.getPackageManager(); 
    return pm.hasSystemFeature(PackageManager.FEATURE_EMBEDDED); 
} 

此常數。在基於O的Android Things預覽發佈之前,您可能需要使用常量的文字名稱:android.hardware.type.embedded

+0

謝謝!我正在尋找這樣的東西。 –

1

任何您使用AndroidThings製作的apk都會上傳到Play商店的物聯網控制檯而不是

因此,如果您想要使用Gradle Flavors and a flag的單個代碼庫,我會推薦。這意味着您將構建兩個單獨的APK - 而不是在運行時執行「我在哪個平臺上」檢查。

這將確保您的APK在內存受限的單獨平臺上具有最小的尺寸。 (例如,用於Android Things的Google Play服務的風格是針對一般Android應用程序可用的瘦身版本)。 Android Things supports a subset of the Google APIs for Android. The linked table breaks down API support in Android Things.