1.需求

1.由于我们的产品是运行在机顶盒上使用的,并且是可以插入鼠标操作的。 由于鼠标指针太小,用户使用又是依靠投影设备当作屏幕使用,
所以这个时候机顶盒显示出来的鼠标旧显得比较小,而且还有其他一些系统因素,比如背景纯黑色,鼠标指针也是默认黑色的,这样就更不容易
看清屏幕上的鼠标指针在哪里了。

2.解决方案

1.不予解决,一开始我是拒绝的。鼠标指针是跟随系统的,也改变不了系统的资源啊。驳回诉求吧。
2.慢慢想办法解决

3.开始解决

3.0 写在前面

1.风险点:操作不当有可能一直卡在开机界面哦,我不负责哈
2.设备必须要root

3.1资料查找

经不住客户的压力,还是需要去慢慢尝试看能不能解决。然后也各种查找资料,终于有点眉目。

1.修改方式一:在出厂的时候修改,重新打包签名安装到系统里面。(pass)
2.修改方式二:1. SRO–Static resource overly(静态替换)  RRO–Runtime resource overlay (运行时替换) ,貌似也是源码级修改大家可以自行了解下(pass)
3.修改方式三:各种通过adbtools工具反编译,替换资源,然后重新签名打包。(pass)

经过了上面的资料查找,又了解到

1.知道了系统的资源文件都是存放在framework-res.apk中的,具体目录是 /system/framework/ 目录下。
2.可以参考别的app修改主题的方式,去替换鼠标资源文件。
3.鼠标资源文件名为:pointer_arrow.png

所有就大胆的尝试。

3.2 step1

导出framework-res.apk文件,然后通过压缩软件打开这个apk文件,找到pointer_arrow.png文件。

3.2 step2

然后我们准备一张鼠标的图片

然后我们替换一下图标

就这样,我们就替换好了图片,然后我们在放回原来的位置。可以通过Android studio 直接upload,也可以直接 通过adb命令
push 进去。这里我们假设push到的目录是sdcard的根目录,然后执行以下命令

adb push /mnt/sdcard/framework-res.apk /system/framework/   //把sdcard中的apk push到system/framework目录下覆盖原来的文件。

如果上面的命令不成功,则选择手动upload进去把,也可以通过其他方式比如,第三方的资源文件管理器拷贝过去。

3.2 step3

拷贝完成以后,重启设备,重启设备,重启设备

4.看效果

原始的图标样式

替换后的图标样式

ok,效果看到了吧,直接替换资源文件确实能够修改鼠标资源样式。也不需要重新签名打包,即可完成对鼠标资源样式的替换。

5 继续

既然现在知道了修改framework-res.apk里面的鼠标指针资源文件能够有效的替换,接下来我们开始第二步操作。

5.1 如何给客户替换?

因为目前机顶盒在我们开发手上,所以我们可以很方便的通过adb push 或者第三方的资源文件管理器很快的执行替换,拷贝操作。但是,客户手上的盒子怎么给他改造呢?这是个问题。

所以这个时候要求解了

1.已知机顶盒是拥有root权限
2.已知可以用代码执行adb命令。
3.已知机顶盒型号大都固定,只有一两款。

根据上面的已知参数,然后继续尝试。

5.2 准备工作

准备工作,逻辑梳理

1.需要提前准备好已经处理过的framework-res.apk文件。
2.需要判断是否有root权限。
3.执行替换的命令

5.3 开始替换

1.判断是否有权限(kotlin)

/**** 检查su权限*/fun checkSuPermission(): Boolean {val binaryName: String?="su"var found = falseif (!found) {val places = arrayOf("/sbin/","/system/bin/","/system/xbin/","/data/local/xbin/","/data/local/bin/","/system/sd/xbin/","/system/bin/failsafe/","/data/local/")for (where in places) {if (File(where + binaryName).exists()) {println("where + binaryName = ${where + binaryName}")found = truebreak}}}return found}

2.执行adb命令的方法(kotlin)

    fun execCmd(cmd:String):String{var result = ""var dis:DataInputStream?=nullvar dos:DataOutputStream?= nulltry {val exec = Runtime.getRuntime().exec("su")dis =DataInputStream(exec.inputStream)dos = DataOutputStream(exec.outputStream)dos.writeBytes(cmd)dos.writeBytes("\n")dos.flush()var line: String? = dis.readLine()while (line!= null) {Log.d("=====", line);result += lineline=dis.readLine()}exec.waitFor()}catch (e:Exception){e.printStackTrace()}finally {dos?.let {it.close()}dis?.let {it.close()}}return result}
Tips: 执行adb命令的方法也可以用来检查是否有root权限,输入 “echo test”  如果返回也是test 那么说明有root权限。

3.替换命令执行调用

execCmd("dd if=/mnt/sdcard/framework-res.apk of=/system/framework/framework-res.apk"+ "\n"+"reboot")解析:
dd linux 命令,文件拷贝操作(自己可以查查更多用法,因为Android也是基于linux 所以linux命令也适用,应该是这样,哈哈)
if = input File
of = output File
\n 换号,表示执行上一条命令
reboot  重启设备。

5.4 亲测有效。

如果不小心开不了机了,联系厂商提供如何恢复的方法,一般都留有重置按钮的操作,只是比较隐藏,有的在av插孔里面。

6.结束

你以为这就完了吗?

上面的命令是能够替换了,但是你如何放到客户的机顶盒里面? 让客户手动导入吗?

那么继续解决问题。。 具体代码后面补充

1.方案一: 通过网络下载对应型号的framework-res.apk到机顶盒中。
2.方案二:提取机顶盒里面的framework-res.apk 到外部存储目录,然后通过解压替换文件,重新压缩打包(待尝试)

所以,要走的路还没完。~~~~~~~~~~~~~~~~~~~~~~

Android 机顶盒(Box)替换修改鼠标指针样式(需要Root)相关推荐

  1. JavaScript中改变鼠标指针样式的方法

    JavaScript中改变鼠标指针样式的方法 在js中我们可以通过style对象的cursor属性来设置鼠标指针的样式,例 var body = document.querySelector(&quo ...

  2. css更改鼠标指针样式,几种鼠标点击效果

    原文链接 : https://blog.csdn.net/qq_42038623/article/details/104875481 更改鼠标指针样式 1. 鼠标指针的不同样式 平常,我们在浏览界面时 ...

  3. cocoscreator修改鼠标图标样式

    /* * 后面的参数可以参照html的鼠标样式 * default为默认样式 */ cc.game.canvas.style.cursor = "default";/* * 如果要 ...

  4. Android机顶盒Linux终端修改时间

    Android机顶盒Linux终端修改时间 文章目录 Android机顶盒Linux终端修改时间 1.首先了解几个时区概念: 2.查看时间和修改命令 3.修改00:00点的命令 4.操作截图 1.首先 ...

  5. WPF拖拽过程中修改鼠标指针属性

    在WPF中鼠标拖拽时,指针默认是个圆圈(呵呵,有点难看),网上找了一圈没有找到好的方法,在此把我的解决过程写下: 在拖拽过程中使用到了DragDrop类,类中DoDragDrop方法为启动拖拽操作,而 ...

  6. css cursor 鼠标指针样式总结

    今天在修改页面细节时,对某些地方的鼠标指针的样式不满意,于是就趁机回顾了一下 css cursor 属性. css cursor 属性值总结: 使用示例: body {cursor: auto; } ...

  7. Android中用Java代码模拟鼠标指针(可显示于整个系统界面之上)

    Android有几款平板是有USB接口,连上鼠标后,界面上面就会出现一个鼠标指针,然后就可以用鼠标代替手势操作平板了,最近有项目需要用到鼠标指针,但是苦于不知道怎么调出系统的鼠标指针,所以只能用代码去 ...

  8. html如果修改鼠标指针,改网页鼠标指针、改指定元素指针(2)——小白也能自绘指针...

    上节中讲到,css改网页的鼠标指针.使得大家都更能美化自己的网页.但指针文件怎么获取呢?你可以到百度上搜索鼠标指针图片.鼠标样式图片.光标图片等等.其二我们可以自己画出独一无二的光标图片哦,今天我就来 ...

  9. CSS自定义鼠标指针样式

    原文链接: http://davidwalsh.name/css-custom-cursor Demo地址: http://davidwalsh.name/demo/css-custom-cursor ...

最新文章

  1. Android getLocationInWindow
  2. 自然语言交流系统 phxnet团队 创新实训 个人博客 (二)
  3. Vue 3源码剖析,看这篇就够了
  4. Redis Scan 命令
  5. Zabbix 探索主机 “Discovery” 自动发现主机 详细图文教程
  6. OSPF——多区域概念及配置、ABR简介、ASBR简介、路由重分发
  7. 笔记本卡顿不流畅是什么原因_为什么越来越多的笔记本电池不可拆卸
  8. 小米回应 50 亿疫情贷款申请;​爱奇艺 App 崩溃;OpenSSH 8.2 发布 | 极客头条
  9. mysql io 100_MySQL服务器 IO 100%的案例分析
  10. Android应用开发的一些思考
  11. 蓝桥杯备战(一)3n+1问题
  12. 面向开发者的最佳 Android 库列表
  13. 三维重建开源项目汇总
  14. g++编译时对'xxxx'未定义的引用问题(undefined reference to)
  15. 分辨率、像素、像素尺寸、GSD、图片文件大小
  16. php扩展 zval_copy_ctor,Zend API:pval/zval 数据结构
  17. 学习记录664@项目管理之项目进度管理
  18. 2018百度沸点国人年度榜单出炉
  19. chatgpt+机器人控制器融合(一)
  20. 【jquery事件】

热门文章

  1. 跨境电商如何使用WhatsApp Business与客户沟通?这几个错误需要避免
  2. input_data
  3. 基于QT4.8.6的软键盘
  4. AndroidStudio代码提示
  5. 磨金石教育科技摄影技能干货分享|艺术摄影的本源是创作,核心是表达
  6. 大数据之cdh集群安装
  7. 论分布式数据库TiDB架构的“存”与“算”
  8. FFmpeg 推流后部分播放器无法播放
  9. Puppet部署与应用
  10. matlab实现人口阻滞增长模型的代码