当前位置: 首页 > news >正文

解决Lemuroid识别不到蓝牙键盘的问题

Android系统基于libretro的全能游戏模拟器,目前有RetroArch,Kodi,Lemuroid。
而且这三个都是开源免费的APP。

Lemuroid相对前面两个功能比较简陋。也不能自己下载核心。但代码也是最少的。

在使用Lemuroid的时候,发现它不能检测出我的蓝牙键盘,也就不能用蓝牙键盘操作游戏。

经过一番研究找到了问题所在,在此做一个笔记。


不知什么原因,作者对android系统的输入设备做了一个过滤:

源码文件在:lemuroid-app\src\main\java\com\swordfish\lemuroid\app\shared\input\InputDeviceManager.kt
如下代码,在获取所有输入设备时对设备列表进行了过滤,删掉.filter的两行代码就好了。

    private fun getAllGamePads(): List<InputDevice> {return runCatching {InputDevice.getDeviceIds().map { InputDevice.getDevice(it) }.filter { it.getLemuroidInputDevice().isSupported() }.filter { it.name !in BLACKLISTED_DEVICES }.sortedBy { it.controllerNumber }}.getOrNull() ?: listOf()}

如果不想自己编译,可以找官方编译的APK进行反编译再修改。

针对smali的修改,主要是去掉两个if-eqz的判断。
不同的版本,修改位置不一样,下面的smali代码仅供参考:

    invoke-interface {v3}, Lm4/a;->a()Zmove-result v3if-eqz v3, :cond_1 #删除此行invoke-interface {v0, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Zgoto :goto_1.line 9:cond_2new-instance v1, Ljava/util/ArrayList;invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V.line 10invoke-interface {v0}, Ljava/lang/Iterable;->iterator()Ljava/util/Iterator;move-result-object v0:cond_3:goto_2invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Zmove-result v2if-eqz v2, :cond_4invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;move-result-object v2move-object v3, v2check-cast v3, Landroid/view/InputDevice;.line 11sget-object v4, Lk4/b;->f:Ljava/util/Set;invoke-virtual {v3}, Landroid/view/InputDevice;->getName()Ljava/lang/String;move-result-object v3invoke-interface {v4, v3}, Ljava/util/Set;->contains(Ljava/lang/Object;)Zmove-result v3xor-int/lit8 v3, v3, 0x1if-eqz v3, :cond_3 #删除此行invoke-interface {v1, v2}, Ljava/util/Collection;->add(Ljava/lang/Object;)Z

http://www.lryc.cn/news/62938.html

相关文章:

  • SpringBoot 使用 Sa-Token 完成权限认证
  • Spring核心与设计思想、创建与使用
  • mysql 备份 还原
  • 每日学术速递4.26
  • RabbitMQ使用StringRedisTemplate-防止重复消费
  • 临沂大学张继群寄语
  • 线程学习笔记
  • 代码随想录算法训练营第四十二天|01背包问题,你该了解这些!、01背包问题,你该了解这些! 滚动数组 、416. 分割等和子集
  • 结构体指针、数组指针和结构体数组指针
  • 项目架构一些注意点
  • Forefront GPT-4免费版:开启无限畅聊时代,乐享人工智能快感,无限制“白嫖”,还能和N多角色一起聊天?赶紧注册,再过些时间估计就要收费了
  • 深入浅出 Compose Compiler(1) Kotlin Compiler KCP
  • BatchNormalization和LayerNormalization的理解、适用范围、PyTorch代码示例
  • 大数据 | 实验二:文档倒排索引算法实现
  • Java文档注释-JavaDoc标签
  • 黑盒测试过程中【测试方法】详解5-输入域,输出域,猜错法
  • Python学习之sh(shell脚本)在Python中的使用
  • 追求卓越:编写高质量代码的方法和技巧
  • MATLAB算法实战应用案例精讲-【人工智能】机器视觉(概念篇)(最终篇)
  • 【老王读SpringMVC-3】根据 url 是如何找到 controller method 的?
  • 人机交互到艺术设计及玫瑰花绘制实例
  • 多臂老虎机问题
  • DNS 查询原理详解
  • 浅谈软件测试工程师的技能树
  • 转型产业互联网,新氧能否再造辉煌?
  • CRE66365 应用资料
  • vue3快速上手学习笔记,还不快来看看?
  • HDU 5927 Auxiliary Set
  • 24:若所有参数皆需类型转换,请为此采用non-member函数
  • CMake(2)-详解-编译-安装-支持GDB-添加环境检查-添加版本号-生成安装包