我們談談技術,當然,主要也是給自己做的應用打打廣告,謝謝大家支援,下載用用,提提意見。先上個二維碼,感興趣的現在就可以去看看:
點選下載方便聊,下方二維碼掃描直接下載
看看這個可愛的二維碼
說說初衷
一個月之前,朋友給我說了一個很有意思的需求: 在騎單車的時候(開車同理,反正就是手沒空的場景),希望能夠來了微信訊息能夠語音朗讀出來(如果是語音就自動播放),然後啊,這時候如果帶了耳機,能夠用耳機的按鍵來傳送微信語音訊息。 這個聽起來好像還有點意思,從技術的角度來說應該很好實現,哈哈,馬上搜一搜有沒有這方面的應用,結果當然是沒有,不然也沒有這篇文章了
能聽會說
這個應用做出來,主要就兩個功能,一個詞形容:能聽會說。首先來看看聽,微信用耳機來傳送語音,其實啊,這個功能微信團隊也想到了,然後在iOS的微信是可以開啟這個功能的:
-
首先要在微信通訊錄裡找到“微信團隊”這個帳號,向該賬號傳送kqej,即“開啟耳機”的四字的首字母,就能開啟微信的耳機錄音功能。傳送“gbej”即能關閉微信耳機錄音功能
-
微信耳機錄音功能開啟後,按一下耳機線上的播放/暫停鍵(增減音量中間的空白部分)後就可以說話。這時,螢幕上也會顯示開始錄音的標識。說話結束後,再按一次播放/暫停鍵,剛才記錄的語音就會傳送出去。
-
當然,用iPhone耳機傳送語音並不會自動播放他人發過來的訊息。它的方便之處在於解放了你的雙手,在你不方便的時候再不用舉著手機說話。
然後我試了一下,iOS 11.2.5 微信6.6.3開啟失敗,得到的回覆是你的微信版本不支援微信耳機功能。 當然,iOS不是我們現在討論的主要內容,我們來看看Android,很遺憾,微信官方並沒有這個功能,其實這個實現的難度主要還是在硬體,蘋果的耳機是可以按下按鍵的同時接收麥克風語音的,但是大部分Android的耳機並不可以,一按下按鍵就沒辦法使用麥克風。況且要從外部控制微信的語音按鈕也是個問題,所以聽 這個功能暫時就擱置了,還是先從簡單的來,後面再慢慢研究這個。正在看文章的你有沒有什麼好辦法呢?
說出訊息
通知欄讀取
說訊息這個主要就是訊息的解析,最簡單的一種方案是讀取通知欄,這個方案不僅是微信,所有具有通知許可權的應用訊息都可以讀出來,怎麼來實現呢,Android從4.4API19之後提供了一個類NotificationListenerService,在使用者手動開啟了通知欄讀取許可權之後,可以在這個服務類中獲取所有的通知欄訊息,並且還可以控制,誇張一點說,只要使用者同意了之後,手機上的所有通知訊息你想怎麼處理就怎麼處理。當然,這裡面有好多坑,也有一些致命的問題。你可以下載應用試試,可能會遇到,我再告訴你。
輔助功能(無障礙)
通知欄讀取很方便,但是你會說,我開了免打擾怎麼辦,或者說我隱藏了訊息具體內容怎麼辦,這就是個問題了,而且微信還有語音訊息,最好能夠自動播放......
這個怎麼來解決呢,想要實現這個,在手機不root的情況只有一個辦法,那就是使用輔助功能(有的手機叫無障礙),這個功能主要是用來獲取當前介面的所有控制元件和內容,還可以模擬點選,現在市面上大部分搶紅包外掛也是用的這種方法。這個類叫AccessibilityService,在使用者同意了許可權之後,就可以獲取當前開啟介面的所有資訊(注意是所有介面,不限於微信)。
微信訊息讀取
上面說到可以讀取當前介面的所有訊息是應用不做特殊處理的情況下,那微信的訊息可以直接讀取麼?很遺憾,答案是不能,不得不說,微信安全這方面確實做了很多考慮,怎麼實現的我還是很好奇,有沒人知道呢?我還試了QQ,QQ是可以直接讀聊天內容的,也不知道QQ的需求大不大?如果需求大的話後面加進去。
那要讀到微信訊息怎麼辦呢,在苦思冥想,撓破頭皮之後只想到一個笨辦法,那就是長按訊息之後複製,再讀取剪貼簿的內容。既然叫笨辦法,那肯定是有很多缺陷的,最大的缺陷就是這個不太穩定,容易複製失敗,這時候往往需要手動去長按複製一下或者點選一下訊息再開啟才會生效。
隱私問題
上面說的這些有沒有嚇到不是開發者的讀者呢?如果是我我也會覺得這有點可怕,可以讀到你當前開啟的所有內容,想想都嚇人......但是你放心,上面提到的兩個功能,一個是通知欄許可權,一個是輔助功能許可權,這兩個功能必須手動允許,而且在應用被殺死之後大部分系統會自動關閉,你只需要謹慎的開啟就好,比如方便聊這個應用,完全沒必要擔心這個問題,理論上它關閉網路也能用的,聯網只是語音sdk需要聯網,應用本身是不會儲存任何內容的,您完全放心下載使用。
方便聊,聊天更方便,覺得有意思的下載來試試唄?
現在應用還不太穩定,功能也比較單一,有什麼意見隨便提!
點選下載方便聊,下方二維碼掃描直接下載
看看這個可愛的二維碼