Tyl*_*ler 6 android android-10.0 android-virtualdisplay
概念:
我有一个用 Kotlin 编写的 Android 应用程序,它只需在外部显示器上启动 Android 应用程序即可。显示器可以是 AirServer、Miracast、Microsoft Connect、USB-OTG HDMI、USB-C HDMI 或模拟辅助显示器(参见屏幕截图)。
这是执行“繁重工作”的代码的例外情况:
val intent = packageManager.getLaunchIntentForPackage(info.id)
val dm = recyclerView.context.getSystemService(Service.DISPLAY_SERVICE) as DisplayManager
val displays = dm.getDisplays(DisplayManager.DISPLAY_CATEGORY_PRESENTATION)
for (display in displays) {
val options = ActivityOptions.makeBasic()
options.launchDisplayId = display.displayId
recyclerView.context.startActivity(intent, options.toBundle())
break
}
Run Code Online (Sandbox Code Playgroud)
应用程序开始正常。请参阅屏幕截图,我用它来将 Minecraft 袖珍版启动到模拟辅助显示器(就好像连接了外部 HDMI 显示器一样)。问题是我无法将触摸或光标输入发送到虚拟显示器。
什么有效:
adb shell input -d <display-id> tap <x> <y>什么不起作用:
我尝试过的:
的输出dumpsys display显示虚拟显示器都缺少touch VIRTUAL内部显示器具有的参数。我不确定这是否意味着显示器本身不支持触摸屏输入,或者只是未启用。
我尝试强制应用程序进入前台,这使应用程序检测键盘和控制器输入,但光标仍然锁定在内部显示窗口。
值得注意的是,Android 10 桌面模式开发人员设置确实将光标放入外部显示器而不是内部显示器。这就是我正在努力实现的目标。
Android SDK 中似乎有一个隐藏的 Java API:
我尝试通过反射访问此类并调用 setFocusedDisplay,但即使更改了私有 API 黑名单安全设置,我仍然不断收到 ClassNotFound 异常。
任何帮助将不胜感激。与此相关的唯一其他威胁就在这里,但从未得到解决:
我已经解决了我的问题。指向外部显示器的输入由 Android 内部框架控制。默认情况下,外部鼠标定向到内部显示器。要让它们转到外部显示器,必须在开发人员设置中启用强制桌面模式。目前没有其他方法可以转发指针。
| 归档时间: |
|
| 查看次数: |
3687 次 |
| 最近记录: |