【问题标题】:How to receive input events in TvInputService overlay view如何在 TvInputService 覆盖视图中接收输入事件
【发布时间】:2018-01-24 21:39:45
【问题描述】:

Tv Input Framework (TIF) documentaition 说:

只有系统 TV Input 才有资格接收InputEvents,并且只有在他们拥有RECEIVE_INPUT_EVENT 系统权限的情况下。 TV Input 负责确定使用哪个InputEvents,并应允许 TV App 处理它不需要使用的键。

这个RECEIVE_INPUT_EVENT 好像是系统权限。 尝试通过adb 启用它失败:

$ adb shell pm grant com.example.mytvinput \
  com.android.tv.permission.RECEIVE_INPUT_EVENT

Operation not allowed: java.lang.SecurityException: Permission 
com.android.tv.permission.RECEIVE_INPUT_EVENT is not a changeable permission type

Android Open Source Project (AOSP) sources表示RECEIVE_INPUT_EVENT权限为signatureOrSystem类型,而Android Permission documentation又定义为:

系统仅授予 Android 系统映像中的应用程序或使用与声明该权限的应用程序相同的证书签名的应用程序的权限。

如何为使用输入的 Android Tv 输入服务开发覆盖(例如 HbbTv)?

开发的Tv Input是否需要编译成安卓镜像才能开发?

【问题讨论】:

    标签: android-tv


    【解决方案1】:

    您应该将您的应用程序安装在/system/priv-app

    /system/priv-app 是一个特殊的地方,适用于需要比其他权限更多的应用程序。

    一步一步

    要启动具有可写系统分区的模拟器,您应该使用-writable-system 标志。

    ./emulator -writable-system -avd Oreo_Android_TV_1080p_API_26
    

    接下来重新挂载/system分区

    adb root
    adb remount
    

    接下来将您的应用程序移动到/system/priv-app 并重新启动

    adb shell mv /data/app/com.example.myinput /system/priv-app/com.example.myinput
    

    来源

    Android Emulator Command Line doc, explaining -writable-service flag

    What is the difference between system apps and privileged apps on Android?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多