首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓电视-安卓电视盒没有被检测为电视(UI_MODE_TYPE_TELEVISION)

安卓电视-安卓电视盒没有被检测为电视(UI_MODE_TYPE_TELEVISION)
EN

Stack Overflow用户
提问于 2017-07-31 23:49:43
回答 1查看 1.5K关注 0票数 0

当我测试我的应用程序时:

  • 电视模拟器:按预期运行,横幅出现,我得到了"TV“应用程序。
  • Android (Wetek 2,棒棒糖5.1.1):“非电视”应用程序,没有横幅。

AndroidManifest.xml

代码语言:javascript
复制
<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

代码语言:javascript
复制
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盒工作?

EN

回答 1

Stack Overflow用户

发布于 2020-10-10 01:03:42

我相信原因是

UI_MODE_TYPE_TELEVISION == false

FEATURE_TELEVISION == false

FEATURE_LIVE_TV == false

FEATURE_TOUCHSCREEN == true

是因为(大多数?)android机箱具有使用鼠标(和键盘)的潜力。

鼠标基本上提供了触摸屏的功能。

我认为,我们需要把android盒看作是一台计算机,而不是电视应用程序。

我确信安卓机箱制造商会设置FEATURE_TOUCHSCREEN == true (尽管没有触摸屏),这样他们的用户就可以访问所有的应用程序(而不仅仅是有<uses-feature android:name="android.hardware.touchscreen" android:required="false" />的应用程序)。

考虑到这一点,我不确定是否最好把所有的Android机箱当作是安卓电视。(你可能会把功能限制在那些真正像电脑一样使用它的人身上)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45426925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档