区分App运行在手机还是电视,就是要稳

版权声明:

本公众号发布的所有文章,均属于原创,版权归本公众号所有。

未经允许,不得转载。

一、前言

现在 Android 智能电视出货量已经非常的大了,近两年产的电视,基本上都属于智能电视,而很大一部分都是搭载的 Android 系统。

当然,除了智能电视之外,还有一些智能盒子,例如:小米盒子、天猫魔盒等,其实最终都是 Android 系统。

在国内的环境下,开发的 TV App 其实也并不是遵循的 Google TV 的开发规范,而都是当成一个普通的 Android App 来开发的。在这个过程中,实际上是需要处理一些手机和电视的差异的,例如:焦点、选中状态、屏幕适配等等,这些有时间再细说。

如果,屏幕适配做的好的话,实际上是可以无缝在手机设备上,运行一个原本为了 Android TV 而开发的 App。

而有些场景下,为了节约开发成本,有可能需要对一些在电视上运行的 App 做一个手机端的适配,最常见的场景,一个微信登录的功能,TV App 做的一般是提供一个二维码,让手机扫码登录,但是当这个程序运行在手机端的时候,就可能需要一个按钮,点击调起微信去登录了。

那么,如何在同一个 App 内,区分当前运行在手机设备上,还是电视设备上,就尤为重要了。

二、如何区分

既然要对运行环境做一个区分,那么就需要考虑到,手机和电视的一些差异。

手机和电视的差异性:

  • 屏幕物理尺寸不同。

  • 布局尺寸不同。

  • SIM 卡的支持不同。

  • 电源接入的方式不同。

1、屏幕物理尺寸

手机和电视的屏幕物理尺寸是完全不一样的,但是我们也不能完全使用买电视的时候介绍的 Xx寸 来区分屏幕物理尺寸。实际上完全可以将 Android 电视当成一个大平板。

这里以一个电视英寸数的计算公式,计算屏幕对角线的长度,来做一个参考的数值。

既然把电视当成一个大平板,这里计算出来的数值,对于电视而言,基本上都是大于 6.5 的,所以以这个条件做判断,是有一定参考价值的。

2、布局尺寸

既然屏幕的尺寸有差异,那么从不同的布局中获取布局文件也是不一样的,可以通过 screenLayout 参数来区分出当前命中那一套。

规则如下:

截图来自官方文档,有兴趣的可以通篇阅读一下。

https://developer.android.com/guide/practices/screens_support.html?hl=zh-cn

而代码如下:

3、SIM 支持的模式

对于电视而言,就现在所了解到的,还没有一款智能电视或者智能盒子,是可以插 SIM 卡的,所以判断 SIM 支持的模式,基本上就可以区分出电视还是手机了。

SIM 卡支持的模式可以使用 TelephonyManager 来获取当前的支持模式。

可以看到 getPhoneType() 可以获取当前设备支持的 Radio 的模式。

一般而言,判断不出来,就可以认为是一款不支持 SIM 插卡的设备了。

4、电源的接入方式

对于电视的电源,有什么特点?

  1. 永远没有耗电的变动,获取到的电量永远是满的。

  2. 电源接入的方式,使用 AC 交流电,而非 USB 或者电池。

获取当前电源和充电的接入方式,没什么好说的,基本上依据这两个条件,就可以区分出当前到底是电视还是手机/平板了。

三、设计原则

这里提供的几点方法,其实都是猜测,都是有缺陷的。例如可能出现某些厂商的奇葩设备,出货屏幕尺寸就是大的手机,或者有一些奇葩的电视或者盒子,就是可以支持插 SIM 卡,再或者还有一些智能投影的设备,其实是内带电池的,是有电量的消耗的。

所以最稳妥的方式,就是组合起来判断。

而这里实际上,这款 App 依然是主要需要发布Android 电视市场的,所以这里的判断,对手机进行严格判断,其他的都认为是 Android TV 。这样即便是误判了,影响也不会太大。

要在PyCharm中运行手机App,首先需要确保你已经完成了以下几个步骤: 1. 确保你的手机已连接到计算机,并且已经开启了USB调试模式。 2. 在PyCharm中创建一个新的Python项目。 3. 在项目文件夹中下载并安装Appium和相应的Python包。 4. 使用命令`adb devices`来验证手机是否成功连接到计算机。 一旦你完成了上述步骤,你可以按照以下方法在PyCharm中运行手机App: 1. 首先,在代码中导入所需的库和模块,例如Appium库和WebDriver模块。 2. 设置所需的Desired Capabilities,包括手机操作系统版本(desired_caps['platformVersion'])、appPackage和appActivity的信息(使用`adb shell dumpsys activity |find "mFocusedActivity"`命令来获取)。 3. 初始化WebDriver,并将Desired Capabilities传递给WebDriver。 4. 使用WebDriver的相关方法来启动和运行App。 以下是一个示例代码,展示了在PyCharm中运行手机App的步骤: ``` from appium import webdriver desired_caps = {} desired_caps['platformName'] = 'Android' desired_caps['platformVersion'] = '8.0.0' # 手机操作系统版本<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Appium+Python+Pycharm环境搭建及调试](https://blog.csdn.net/weixin_42568714/article/details/113720962)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值