兩步實現安卓手機秒變網絡攝像頭

今天大概是興趣加技術篇,程序員不寫點有趣的代碼,怕是很難在女票和家人面前秀出科技感。
GITHUB:
github.com/AndroidMsky…android

如GIF所示,自動接起QQ電話。git

QQ視頻來電自動接起來,微信視頻電自動接起來。程序員

首先你須要兩個硬件設備
1.一步Root了的,而且安裝手機QQ的安卓手機。
2.若是像文檔一點你可能須要一個手機支架。github

兩步邏輯很簡單:
1.經過BroadcastReceiver獲取亮屏幕的廣播。
2.經過shell input 命令去滑動接起視頻電話。 shell

1.寫一個BroadcastReceiver監控的廣播是Intent.ACTION_SCREEN_ON也就是屏幕被點亮後並執行咱們設定好的shell命令:api

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 1100
adb shell input swipe 550 1000 550 1100
//點擊事件
adb shell input tap 118 1800
//輸入字符串 這個貌似不支持中文,通常會喚起手機輸入法確定會改變
//其它節目元素的位置,因此使用時候已定要當心哦。
adb shell input text zaiganmane複製代碼

這是我寫的一小段QQ聊天命令。沒時間陪XX聊天的能夠好好發掘發掘。ide

adb shell input text zainma
adb shell input tap 118 1800
adb shell input tap 967 1600
adb shell sleep 30
adb shell input text haode
adb shell input tap 118 1800
adb shell input tap 967 1600
adb shell sleep 10
adb shell input text wufanchilama
adb shell input tap 118 1800
adb shell input tap 967 1600
adb shell sleep 10
adb shell input text nabucuoo
adb shell input tap 118 1800
adb shell input tap 967 1600
adb shell sleep 10
adb shell input text heihei
adb shell input tap 118 1800
adb 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。

github.com/AndroidMsky

喜歡做者的也能夠Follow。也算對做者的一種支持。

本文Github代碼連接
github.com/AndroidMsky…

CSDN連接:
blog.csdn.net/androidmsky…

博主原創未經容許不準轉載。

家中一愛犬小葡萄,上個月走啦,T T

筆者和家人內心甚是難過,也藉此文悼念一下個人小葡萄一路走好。

相關文章
相關標籤/搜索