黑阈(yù)不需要 root 就能待机(App Standby,Android 6.0
引入,部分设备不支持)或强行停止应用,防止应用持续运行。

黑阈不处理非“黑阈清单”内应用。当您启动应用,使用完退出(如按“返回”)以后,黑阈会待机它;待机超时,或者从概览屏幕(recents
screen)划掉,黑阈会强行停止它。无论何时应用被运行,只要没有打开界面,黑阈都将强行停止它。

本篇文章只做技术性讨论,不接受实用性评价。

上一部手机不幸挂了,因为贫穷,我选择了比较便宜的SONY XPERIA Z5 SO-01H(DOCOMO日版)
拿到手后发现自己还是年少太轻狂了,这手机不能解锁/不能ROOT
火龙810在裤兜里烫大腿呀!这谁顶得住呀…

这种情况使用黑阈去镇压毒瘤效果还是很好,但因为黑阈使用了ADB来激活
ADB Shell权限很高,每次手机重启后都要连接到电脑上使用ADB激活(Android 8以下)
不过每次只要手机重启了,就要连接到电脑上去激活,比较麻烦

黑阈还提供了黑阈激活器的方案,手机进入设置-开发者选项(设置里没有百度),打开USB调试,将一个U盘大小的设备插在USB电源上,另一端插上数据线,数据线连接手机。
如果你是第一次连接激活器,手机会提示ADB授权,点击确定后,稍等片刻即可激活黑阈。

个人很好奇激活器的内部原理,昨日突发奇想,也想整一个

说干就干,拿出我的rasyberry 3b+

首先我们要先安装ADB tools

sudo apt-get install adb

安装完成后输入

adb

若屏幕上输出了帮助信息,则说明ADB安装成功

接下来我们要编写一套udev rules
首先查看我的手机的一些特征

pi@raspberrypi:~ $ udevadm monitormonitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

在 udevadm monitor 命令运行时,插入手机
屏幕上会滚动一些ADD信息,这就是你刚刚插入的设备的信息

KERNEL[160.873180] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2 (usb)
KERNEL[160.873457] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)
KERNEL[160.873710] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.1 (usb)

复制第一个设备的路径地址
输入pi@raspberrypi:~ $ udevadm info -ap /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2
来列出设备的详细属性

Udevadm info starts with the device specified by the devpath and then
walks up the chain of parent devices. It prints for every device
found, all possible attributes in the udev rules key format.
A rule to match, can be composed by the attributes of the device
and the attributes from one single parent device.looking at device '/devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2':KERNEL=="1-1.2"SUBSYSTEM=="usb"DRIVER=="usb"ATTR{authorized}=="1"ATTR{avoid_reset_quirk}=="0"ATTR{bConfigurationValue}=="1"ATTR{bDeviceClass}=="00"ATTR{bDeviceProtocol}=="00"ATTR{bDeviceSubClass}=="00"ATTR{bMaxPacketSize0}=="64"ATTR{bMaxPower}=="500mA"ATTR{bNumConfigurations}=="1"ATTR{bNumInterfaces}==" 2"ATTR{bcdDevice}=="0310"ATTR{bmAttributes}=="80"ATTR{busnum}=="1"ATTR{configuration}==""ATTR{devnum}=="7"ATTR{devpath}=="1.2"ATTR{devspec}=="  (null)"ATTR{idProduct}=="51d9"  //产品IDATTR{idVendor}=="0fce"   //供应商IDATTR{ltm_capable}=="no"ATTR{manufacturer}=="Sony"ATTR{maxchild}=="0"ATTR{product}=="SO-01H"ATTR{quirks}=="0x0"ATTR{removable}=="removable"ATTR{serial}=="BH905DDM4S" //唯一序号ATTR{speed}=="480"ATTR{urbnum}=="126"ATTR{version}==" 2.00"
ATTR{idProduct}=="51d9"  //产品ID
ATTR{idVendor}=="0fce"   //供应商ID

现在我已经知道我的设备的供应商ID和产品ID,下面要编辑udev rules文件了

pi@raspberrypi:/etc/udev/rules.d $ ls
99-com.rules
pi@raspberrypi:/etc/udev/rules.d $ 

可以列出当前目录下的所有rules文件
下面我们要创建一个rules文件

udev 规则是定义在一个以 .rules
为扩展名的文件中。那些文件主要放在两个位置:/usr/lib/udev/rules.d,这个目录用于存放系统安装的规则;/etc/udev/rules.d/
这个目录是保留给自定义规则的。

定义那些规则的文件的命名惯例是使用一个数字作为前缀(比如,50-udev-default.rules),并且以它们在目录中的词汇顺序进行处理的。在
/etc/udev/rules.d 中安装的文件,会覆盖安装在系统默认路径中的同名文件。
引用:https://zhuanlan.zhihu.com/p/33932734

sudo vi 100-echo-usb-event.rules

输入

SUBSYSTEM=="usb",ACTION=="add",ATTRS{idVendor}=="0fce",ATTR{idProduct}=="51d9",,RUN+="/usr/local/bin/echo_usb_add.sh"

特别说明,不要无脑照抄,你如果直接复制我的这个,累死你也激活不了的…除非把我手机买了…
udev reuls使用键 == 值对的规则来填写,非数字值应用""引号扩上

操作符的说明

操作符 说明
== 和 != == 是相等操作符,而 != 是不等于操作符。通过使用它们,我们可以确认规则上应用的键是否匹配各自的值。
= 和 := = 是赋值操作符,是用于为一个键赋值。当我们想要赋值,并且想确保它不会被其它规则所覆盖,我们就需要使用 := 操作符来代替,使用这个操作符分配的值,它就不能被改变。
+= 和 -= += 和 -= 操作符各自用于从一个指定的键定义的值列表中增加或者移除一个值。

键值对的说明

KEY VALUE
SUBSYSTEM - 匹配设备的子系统 例:usb、ide
ACTION - 何时触发规则 例:add(连接)、remove(断开)
ATTR{} - 大括号中填写要匹配的sysfs规则 例:ATTR{idProduct}==“51d9” //产品ID
RUN - 填写你触发规则时运行的脚本 例:/home/pi/xxx.sh

另外

想了解更多花活,参考跟我一起写udev规则

接下来该在脚本里填写的路径下创建一个激活黑阈的脚本了
我填写的是/usr/local/bin/echo_usb_add.sh
所以 sudo vi /usr/local/bin/echo_usb_add.sh 新建一个shell脚本

#!/bin/bashechoLog(){logger -s $*
}echoLog "检测到插入了手机,开始激活黑阈服务"
echoLog "激活中..."
sleep 3
result=$(adb -d shell sh /data/data/me.piebridge.brevent/brevent.sh)
echoLog $result
echoLog "激活黑阈-事件结束"

等等,为什么用到了sleep?
因为手机插上后,马上就进行adb命令激活,会失败的
为保证成功,我保守起见加了一个3秒的sleep,3秒钟后才会开始激活的操作
你可以结合自身情况,缩短这个延时

之后保存吧!给这个脚本设置好文件权限sudo chmod 777 /usr/local/bin/echo_usb_add.sh

好,大功告成,现在该设置你的手机了

现在我手机上的黑阈没有被激活

打开开发者选项 - 打开USB调试,插入吧,如果你是第一次的话,手机会提醒你。

好,输入

pi@raspberrypi:/usr/local/bin $ adb devices
List of devices attached
BH905DDM4S  device

看到这个 BH905DDM4S 没有?这是我的手机序号,不是你的,你要是没有,说明adb没有识别到你的手机
下面,手动测试脚本能否激活黑阈了

pi@raspberrypi:~ $ cd /usr/local/bin/
pi@raspberrypi:/usr/local/bin $ ./echo_usb_add.sh
<13>May 19 21:32:28 pi: 检测到插入了手机,开始激活黑阈服务
<13>May 19 21:32:28 pi: 激活中...
<13>May 19 21:32:31 pi: 激活黑阈-事件结束
pi@raspberrypi:/usr/local/bin $ 

激活成功激活失败都这么显示的,你可以根据手机的反馈来判断黑阈是否激活成功
如果找不出原因可以查查日志呢vi /var/log/syslog
或者tail -f /var/log/syslog然后插上手机,实时看一下日志

提示窗口没了,并且显示应用列表了,就说明黑阈激活成功了,或者你可以疯狂的按手机的HOME键,手机会有悬浮通知的

稳妥,现在可以重启你的树莓派或输入udevadm control —reload
开机后无需登录,插上数据线就行!
Enjoy you 全自动黑阈激活器

相关链接/教程

  • udev 入门:管理设备事件的 Linux 子系统 https://zhuanlan.zhihu.com/p/33932734
  • 【转】跟我一起写udev规则(译) http://www.cnitblog.com/luofuchong/archive/2007/12/18/37831.html
  • Arch wiki - udev https://wiki.archlinux.org/index.php/Udev_(简体中文)

使用树莓派3b+作为黑阈激活器相关推荐

  1. 使用树莓派3B+开发智能音乐播放器

    使用树莓派3B+开发智能音乐播放器 2018年07月03日 21:25:13 qq_42044484 阅读数:2397 一.功能描述 对麦克风说出歌名后,树莓派自动下载对应歌曲的MP3,默认播放搜索到 ...

  2. 树莓派3B qt+mplayer制作音乐播放器(10)

    内容 树莓派3B qt+mplayer制作音乐播放器:播放.暂停.上一曲.下一曲,音量调节. 平台:树莓派+qt+mplayer 1.配置 qt安装见此: https://blog.csdn.net/ ...

  3. 树莓派python蓝牙_树莓派3B 爬虫蓝牙播放器

    一直没有尝试使用一下树莓派3B 的蓝牙功能,今天特别想试试,于是就烧录了最新的raspbian镜像,然后接上5寸GPIO触摸屏和键盘鼠标,开始了调试,网上看了看其他人的教程,发现都很老了,有的还不能用 ...

  4. 树莓派3B+日常使用记录

    1 作为点播后台卡顿问题 我使用的是树莓派3B+,买的新的三星32G的SD卡,电源也买的新的,供电充足.系统是官方的,目前还只有32位系统,据网上有人自己适配了一些64位系统的测试结果,提升非常大,可 ...

  5. 树莓派3B+、opencv3+PyQt5实现人脸识别门禁系统

    前言 总结.干货.知识点.注意实现.无个人背景(别人不会关心,捂脸) 效果展示 没点效果,没兴趣往下看了吧(反正我是这样) 下面是两个界面:主页和人脸检测界面,主页可以密码锁.以及其他操作(自己按需) ...

  6. 【EUI】乐视2 游戏开发版 卡片后台 调温控舒适度 xposed黑阈 游戏内核

    [关于内置应用] ROM中虽然集成了几个第三方APP,但它们可以由用户自由随意卸载(高级设置中有卸载功能,且可以看app路径,也可用RE管理器通过路径连根拔除),如果大家喜欢本ROM并支持我们,请在使 ...

  7. 树莓派3B摄像头的详细使用教程(拍照+录像+监控)

    树莓派4B摄像头的详细使用教程(拍照+录像+监控) 本篇博文将介绍树莓派摄像头是如何在树莓派开发板上从安装到使用的,博主过程中参考了许多帖子,现将整理的比较全面的过程分享出来,供大家参考使用. 排线连 ...

  8. 在树莓派3B+上安装大疆EP的SDK全纪录

    目录 First Blood: 一.设备清单: 二.系统: 三.烧录工具: 四.正式开始:树莓派系统的安装 Double Kill: 一.设备清单: 二.系统: 三.烧录工具: 四.格式化工具: 步骤 ...

  9. 树莓派3B 2.0 通用联网篇

    文章目录 前言 一.开篇说明 二.使用步骤 用无线免驱网卡(推荐) 用下载器来控制ssh终端 手机USB共享网络 ENC28J60共享网络 查询IP(针对于用手机usb共享的方法) 使用SSH 开启V ...

最新文章

  1. 游戏行业两大核心问题:数据挖掘与安全
  2. ExtJs计算两个DateField所间隔的月份(天数) new Date(str) IE游览器提示NaN 处理...
  3. 84. ExtJS下页面显示中文乱码问题
  4. 人工智能 | 增强小目标检测(Augmentation for small object detection)
  5. 开发常见单词Java
  6. 柔性机械臂_CSR论文精选 | 基于视觉的双连杆柔性机械臂末端位置跟踪控制
  7. 计算机考试单招考试面试,单招计算机面试题.docx
  8. git pull时冲突的几种解决方式
  9. freeMarker 遍历 list,map,listmap
  10. 教你制作自己的linux
  11. arm汇编—str,mov等指令
  12. 在HTML列表入图片怎么变小,科技常识:html如何把图片大小变小
  13. 69期-Java SE-035_MySQL-6 存储过程、SQL练习 -doing
  14. Nginx配置虚拟主机
  15. html课堂考勤系统源码,考勤管理系统课程设计源码
  16. 用CSS画小猪佩奇,你就是下一个社会人! js将“I am a coder”反转成 “coder a am I”,不许用split,join,subString,reverse;求解方法三...
  17. 《Pro SQL Server Internals, 2nd edition》节选翻译(4)
  18. JavaScript最简单的方法实现简易的计算器
  19. 推特大裁员后,马斯克与白宫发生冲突!META 大批裁员正在路上
  20. 华夏名网十周年盛大感恩优惠活动

热门文章

  1. 太吾绘卷第一世攻略_太吾绘卷剑冢难度顺序排名详解 太吾绘卷剑冢怎么打/通关玩法攻略...
  2. ecshop 属性自动组合_昆仑通态软件应用(14):加热反应炉自动控制系统的设计(案例)...
  3. 哈工大804电磁场与电磁波考试大纲
  4. 自己对职业生涯的回顾和总结
  5. php中的sql函数的作用,PHP实用函数9
  6. T2080RDB: booting vxworks using uboot
  7. 常用ASP代码加密工具的工作原理
  8. WIN10+MATLAB2018b+STK11.6+MATLAB_Connectors1.0.11安装记录
  9. 矮人DOS工具箱 使用说明
  10. 自制能升级的瑞星杀毒U盘