您的位置:首页 > 其它

Andorid Tv 开发 基础以及 应用安装上打不开,没图标以及遥控器选择的问题

2017-06-21 15:46 281 查看
    转载请注明出处:http://blog.csdn.net/heisunfly/article/details/73549873

    前段时间接手搞了一点android TV 发现网上相关资料很少踩了很多坑,相关资料很少,写个博客记录一下。
     项目写好跑起来后没有图标,并且打不开的问题
    这个问题我也踩了很多坑,我的项目是直接File->new project出来的Andorid Tv 大概想下图那样


然后项目写了在模拟器上没问题但是在TV上安装后打不开并且找不到,找了很多博客问题在清单文件里

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.testtv">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="true" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/Theme.Leanback">
<activity
android:name=".MainActivity"
android:banner="@drawable/app_icon_your_company"
android:icon="@drawable/app_icon_your_company"
android:label="@string/app_name"
android:logo="@drawable/app_icon_your_company"
android:screenOrientation="landscape">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LEANBACK_LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".DetailsActivity" />
<activity android:name=".PlaybackOverlayActivity" />
<activity android:name=".BrowseErrorActivity" />
</application>

</manifest>

清单文件是这样,问题就在这里

<category android:name="android.intent.category.LEANBACK_LAUNCHER" />

这里改为我们平时用的  android.intent.category.LAUNCHER应用安装后能正常打开这个属性是程序的入口这个属性是程序的入口,一般我查的资料都说LEANBACK_LAUNCHER 是TV应用入口用的,而LUNCHER则是app平板用的,所以我试了一下用LEANBACK_LAUNCHER这个属性安装app手机上的app也是一样没有图标,从应用管理中找到也打不开,所以问题就是没有程序的入口系统认为你这个应用是不可打开的,而我测试用的LETV可能系统更接近与手机,所以要指定手机的入口。在开发中可以制定两个Activity在清单文件中一个制定为电视的入口,一个指定为手机的入口。
顺便说下这两个属性第一个是不能触屏第二个属性是如果你的应用要同事运行在手机、平板、以及电视设备上需要将required设置为false,如果设置为true只能运行到Leanback UI的设备上。

<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />


模拟器测试

开发中肯定要用到模拟器测试,那么电视使用遥控器操作的,而且很多电视一般不支持触摸,我一开始也是在模拟器上用鼠标点后来找了很久才知道怎么模拟遥控起,用键盘的↑↓←→键可以代替遥控器选择的操作用回车代表确认键,一开始没试出来也是自己没想到焦点选择到后的框要自己去写,所以按了很多键都没有效果,比如按了下键焦点其实已经到下面了,但是界面上确没有变化

焦点控制

其实这个对于做够手机开发的同学就简单了自己定义一个xml的selector,自己定义获取焦点和没有获取焦点的形状,我的就是获取焦点的背景是有个白色边框的。系统中如果界面中有多个可focus的控件,上下左右导航,则会找到与当前控件最邻近的控件作为下一个选中的控件,因此如果你确切想指定下一个导航的控件,则可以指定下一个控件的ID,只要该id在当前显示的界面中,比如向上view1.setNextFocusUpId(R.id.dial_tab);

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/bg_textview_select" android:state_focused="false" ></item>
<item android:drawable="@mipmap/bg_textview_select_focused" android:state_focused="true" ></item>
</selector>










                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: