当我测试我的应用时:
的AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-feature android:name="android.software.leanback" android:required="false" />
<uses-feature android:name="android.hardware.touchscreen" android:required="false" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<application
android:name="removed"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:largeHeap="true"
android:supportsRtl="true"
android:hardwareAccelerated="true"
android:banner="@mipmap/banner"
android:theme="@style/AppTheme">
<activity
android:name=".MyActivity"
android:theme="@style/SplashAppTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
...
我也有这个函数在模拟器上返回 true ,在框中返回 false :
public boolean isTvApp() {
PackageManager pm = getPackageManager();
UiModeManager uiModeManager = (UiModeManager) getSystemService(UI_MODE_SERVICE);
boolean isTvAsRecommendedByGoogle = uiModeManager.getCurrentModeType() == Configuration.UI_MODE_TYPE_TELEVISION;
@SuppressWarnings( "deprecation" )
boolean isTv01 = android.os.Build.VERSION.SDK_INT == 21 && pm.hasSystemFeature(PackageManager.FEATURE_TELEVISION);
boolean isTv02 = android.os.Build.VERSION.SDK_INT >= 21 && pm.hasSystemFeature(PackageManager.FEATURE_LIVE_TV);
boolean hasTouchScreen = pm.hasSystemFeature(PackageManager.FEATURE_TOUCHSCREEN);
boolean hasLeanback = android.os.Build.VERSION.SDK_INT >= 21 && pm.hasSystemFeature(PackageManager.FEATURE_LEANBACK);
return
isTvAsRecommendedByGoogle ||
isTv01 ||
isTv02 ||
!hasTouchScreen ||
hasLeanback;
}
如何让横幅在Android框上工作/显示?
如何让isTvApp()为Android框工作?
答案 0 :(得分:0)
我相信原因
UI_MODE_TYPE_TELEVISION == false
FEATURE_TELEVISION == false
FEATURE_LIVE_TV == false
FEATURE_TOUCHSCREEN == true
是因为(大多数?)android盒有可能使用鼠标(和键盘)。
鼠标基本上提供了触摸屏的功能。
我相信我们需要将android盒子比起TV-app盒子更多地看作是一台计算机。
我很确定Android盒子制造商设置了FEATURE_TOUCHSCREEN == true
(尽管没有触摸屏),以便他们的用户可以访问所有应用程序(而不仅仅是具有{{ 1}})。
考虑到这一点,我不确定是否最好将所有Android Box都视为Android TV。 (您可能会将功能限制为像计算机一样实际使用它的用户。)