Android TV通过inputs默认打开live tv

本文介绍了在Android TV项目中,由于预装的GMS包中的Live Channels与本地信源通道兼容性问题,导致用户体验不佳。为解决此问题,文章提出了两种策略:开机时通过addPreferredActivity设置默认启动支持信源播放的Live TV应用,以及在检测到cts verify测试apk时移除偏好设置,以允许使用Live Channels进行测试。提供了核心代码片段供参考,并提示可通过package-restrictions.xml文件检查设置是否成功。
摘要由CSDN通过智能技术生成

Android TV项目由于会默认预装GMS包里面的所有apk,其中有个live channels的信源播放apk也是采用标准TIF架构的,由于该应用是Google为网络流媒体专门准备的,无法完美兼容本地的信源通道(比如ATV/DTV,HDMI,AV)。所以各大厂商都会基于AOSP上的live tv开发一个单独的通道播放apk,平台中可能存在2个支持TIF的channel apk。

而之前GTVS认证要求可以通过launcher上的inpu微件进行通道切换,当点击任意信源通道时是通过intent消息是拉起对应的apk,所以由于存在2个支持TIF的apk,就会导致出现应用选择的dialog,并且如果用户选择了live channels这个apk进行ADTV播放,可能会由于Google apk兼容性问题导致多个bug(由于live channels是闭源的,无法进行定制,所以大部分厂商会将里面支持网络流媒体播放的功能直接移植到live tv中,然后不再预装)。

那既然live channels有这么多问题是否可以不预装就可以了?答案是可以不预装,但是必须将里面的核心功能移植到另外的live tv中,否则在GTVS认证的cts verify测试中,TIF相关的case将会fail,无法通过认证。

所以这篇文章是针对那些没有做移植功能,并且又不想因为apk存在导致用户体验差的问题。解决方案如下:

1.用户正常使用时,当开机第一次启动时通过addPreferredActivity强制设置发生intent打开支持信源播放的live tv。

2.当检测到已经安装了cts verify测试的apk时,去掉偏好设置,让测试人员可以选择用live channels进行测试。

以下是贴出的解决方案的2个patch(只提供大概的核心代码,可以参考实现其他的客户定制需求)

①开机第一次启动时设置live tv为打开的channel默认应用

--- a/core/res/src/com/droidlogic/BootComplete.java
+++ b/core/res/src/com/droidlogic/BootComplete.java
@@ -24,6 +24,13 @@ import android.content.ContentResolver;
 import android.util.Log;
 import android.media.AudioManager;
 import android.provider.Settings;
+//import android.content.pm.IPackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.IntentFilter;
+import android.content.pm.ActivityInfo;
+import android.content.ComponentName;
+//import android.app.ActivityThread;
+import android.bluetooth.BluetoothAdapter;
 
 import android.content.ComponentName;
 import android.content.ServiceConnection;
@@ -33,6 +40,9 @@ import java.lang.reflect.AccessibleObject;
 import java.lang.reflect.Field;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.List;
+import android.net.Uri;
 
 import com.droidlogic.app.OutputModeManager;
 import com.droidlogic.app.PlayBackManager;
@@ -54,6 +64,7 @@ public class BootComplete extends BroadcastReceiver {
     private SystemControlManager mSystemControlManager;
     private AudioManager mAudioManager;
     private AudioSettingManager mAudioSettingManager;
+    private Context mContext;
 
     @Override
     public void onReceive(Context cont
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值