博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
两步实现安卓手机秒变网络摄像头
阅读量:7120 次
发布时间:2019-06-28

本文共 3031 字,大约阅读时间需要 10 分钟。

今天大概是兴趣加技术篇,程序员不写点有趣的代码,怕是很难在女票和家人面前秀出科技感。

GITHUB:

如GIF所示,自动接起QQ电话。

QQ视频来电自动接起来,微信视频电自动接起来。

首先你需要两个硬件设备

1.一步Root了的,并且安装手机QQ的安卓手机。
2.如果像文档一点你可能需要一个手机支架。

两步逻辑很简单:

1.通过BroadcastReceiver获取亮屏幕的广播。
2.通过shell input 命令去滑动接起视频电话。

1.写一个BroadcastReceiver监控的广播是Intent.ACTION_SCREEN_ON也就是屏幕被点亮后并执行我们设定好的shell命令:

BroadcastReceiver mBatInfoReceiver = new BroadcastReceiver() {            @Override            public void onReceive(final Context context, final Intent intent) {                Log.d(TAG, "onReceive");                String action = intent.getAction();                if (Intent.ACTION_SCREEN_ON.equals(action)) {                    Log.d(TAG, "screen on");                    try {                        if (KAI)                            Tools.doCmds("input swipe 170 1200 600 1200");                    } catch (Exception e) {                        e.printStackTrace();                    }                }             }        };        registerReceiver(mBatInfoReceiver, filter);    }复制代码

2.就是让手机去执行shell脚本直接调工具类就好啦。

Tools.doCmds("input swipe 170 1200 600 1200");

public static void doCmds(String cmds) throws Exception {        Process process = Runtime.getRuntime().exec("su");        DataOutputStream os = new DataOutputStream(process.getOutputStream());        os.writeBytes(cmds + "\n");        os.writeBytes("exit\n");        os.flush();        os.close();        process.waitFor();    }复制代码

解释一下:

input swipe 170 1200 600 1200意思就是从(170,1200)滑动到(600,1200),大概就是来电话那个滑动按钮,手机分辨率不通大家可以根据不通的分辨率去获取一下这个坐标值。如果你想更友好的话也可以去让用户去手动设置这两个坐标值,因为shell input命令是个字符串,根据用户的输入去拼接一下就好了。
分享一些常用的input命令:

//休眠3秒adb shell sleep 3//按下home键还有很多物理按键都是这么调用adb shell input keyevent 3//从550 1000滑动到550 1100adb shell input swipe 550 1000 550 1100//点击事件adb shell input tap 118 1800//输入字符串 这个貌似不支持中文,一般会唤起手机输入法肯定会改变//其它节目元素的位置,所以使用时候已定要小心哦。adb shell input text zaiganmane复制代码

这是我写的一小段QQ聊天命令。没时间陪XX聊天的可以好好发掘发掘。

adb shell input text zainmaadb shell input tap 118 1800adb shell input tap 967 1600adb shell sleep 30adb shell input text haodeadb shell input tap 118 1800adb shell input tap 967 1600adb shell sleep 10adb shell input text wufanchilamaadb shell input tap 118 1800adb shell input tap 967 1600adb shell sleep 10adb shell input text nabucuooadb shell input tap 118 1800adb shell input tap 967 1600adb shell sleep 10adb shell input text heiheiadb shell input tap 118 1800adb shell input tap 967 1600复制代码

不要忘了加个是否自动接听的开关一个布尔值控制一下就好了:

public void on1(View v) {        KAI = true;        mTextView.setText("is on");    }    public void on2(View v) {        KAI = false;        mTextView.setText("is off");    }复制代码

然后是一定让QQ和我们都应用都在后台白名单里,避免被杀死。笔者用自己小米MAX和MX2,红米note3。亲测24全体小时有效

由于没有判断是谁来视频电话建议用QQ小号,只有自己为好友,免得谁来电都会接起来。

另外使用Accessibility可能可以优化该一些问题,这里不做详解。
不过笔者认为,打造一个网络摄像头,秀一下科技。这篇的技术就够啦。
看看家中的阿猫阿狗,检查检查你加班的时候XX在干嘛。
如果你用微信接听电话,如何更改代码相信大家都清楚了吧,
如果还想切换一下前后摄像头也是sleep一下tap一下就ok的。也
欢迎大家Fork字的自动化程序。

欢迎关注作者。欢迎评论讨论。欢迎拍砖。

欢迎star,Fork我的github。

喜欢作者的也可以Follow。也算对作者的一种支持。

本文Github代码链接

CSDN链接:

博主原创未经允许不许转载。

家中一爱犬小葡萄,上个月走啦,T T

笔者和家人心里甚是难过,也借此文悼念一下我的小葡萄一路走好。

你可能感兴趣的文章
提问的艺术(中文版)
查看>>
一只饥饿的老虎
查看>>
MagicalRecord使用中的注意事项
查看>>
开涛spring3(9.4) - Spring的事务 之 9.4 声明式事务
查看>>
Android Studio 运行出现 Multiple dex files define Landroid/support/annotation/AnimRes 解决方法...
查看>>
Sencha Touch xtype对应的class
查看>>
Java并发基础框架AbstractQueuedSynchronizer初探(ReentrantLock的实现分析)
查看>>
Beautifulsoup 和selenium 的查询
查看>>
第一次担任项目经理从零开始架构自己的网站(二) 需求文档定稿,开始建表,建库(转)...
查看>>
Ajax跨域访问XML数据的另一种方式——使用YQL查询语句
查看>>
试验如何通过审核Google AdSense——我跟谷歌ads杠上啦
查看>>
KBMMW 4.82.00 发布
查看>>
19、java内存分配 常量池详解
查看>>
WINRAR4.2破解方式或注册码
查看>>
hbase列表排序
查看>>
【程序员面试宝典】找规律
查看>>
网购时代,写在消费者权益保护的新篇章大企业
查看>>
功率W与dBm的对照表及关系(转)
查看>>
制作SM2证书
查看>>
264分析两大利器:264VISA和Elecard StreamEye Tools
查看>>