Android TV 遥控器app开发总结

791 阅读1分钟

近期为公司投影开发了一款遥控器app,这里是从方案调研到开发的总结。

手机信号传输方式

  • 手机信号传输到投影仪Launcher的方式应该有三种,分别是蓝牙,红外线,网络协议。
  • 考虑到部分安卓设备配有红外线,但不支持苹果手机,首先排除该方案。
  • 蓝牙方案未深入调研,Android 添加蓝牙遥控按键
  • 网络协议方案,参考悟空遥控。需要开发client端运行在手机上,负责模拟按键信号发送,以及运行在投影设备的server端,建立一个socket长连接供client连接,然后接收client端的信号,以及执行模拟按键。

模拟按键

  • 模拟按键根据调研情况,选择Instrumentation的方式来实现。
    • adb shell input
      • 需要root权限,执行效率慢(200ms)
    • monkey
      • 稳定性不高
    • Instrumentation
      • 安卓测试框,必须获得系统签名才能控制所有程序,需要自行编译Android系统
    • sendevent
      • 需匹配不同机型
    • AccessibilityService
      • 盲人模式,需定制app开发,成本高
  • android 跨进程点击方式总结
  • Android随笔之——模拟按键操作的几种方式

重签名

  • 在正常开发完成后,发现打开server完成连接后,当server处于前台时,上下左右和返回按钮可以生效,但关机、home键、设置页点击无效。
  • 调研发现是因为app权限不够,必须将app的权限提高为系统权限,才能实现后台不被杀死,且可控制其他app。
  • 如何用android:sharedUserId属性生成带有系统权限的apk?