在科比最後一次告別演出的日子,寫此部落格致敬偉大的球員,或許nba會再次出現和科比一樣偉大的球員,但我們再也沒有第二個青春去追隨。
好了,不廢話了,大家在做android錄音的時候會碰到許可權被禁止的情況出現,當使用者禁止了錄音許可權的時候我們為了介面友好會提示使用者,但是安卓機型很多,有些機型在錄音start的時候如果被禁會報異常,當然這種情況很好解決,但是有些機型會正常執行,在此我們分析一下我所遇到的情況。
int readsize = 0;
/*--實時錄音寫資料--*/
readsize = audiorecord.read(buffer,0,minbuffersize);
if (readsize < 0)
該方法能檢測到大部分機型錄音被禁止,或其他異常狀況。
mediarecorder判斷方法:
mediarecorder就不怎麼好檢測了,因為mediarecorder在用方法getmaxamplitude()時取得振幅值是0-32767,也就是即使不禁止錄音許可權,振幅值依然會有0值出現,所以不能簡單地判斷振幅值是否為0,我在此的檢測方法是根據前1s的錄音,取10次振幅值進行判斷:
先宣告三個變數:
private
int vocauthority = new
int[10];
private
int vocnum = 0;
private
boolean check = true;
然後寫個方法:
int voclevel = mrecorder.getmaxamplitude();
if (check)
if (set.size() == 1) else
} else
}
該方法每100ms執行一次,1s十次後判斷vocauthority中的值是否全部一樣,也就是說是否全部為零,如果全部一樣那麼錄音肯定有問題。(我試了如果在非常安靜的情況下前十次的取值也不是都為零,大家可以試試)
第三種,還有部分機型不僅不報異常,而且在錄音時會製造音訊振幅的假資料,也就是雖然錄音被禁止,系統依然會把音訊振幅反饋給你,像華為p7就是這樣,這種情況肯定不能再去檢測音訊振幅了,只能另闢蹊徑,通過我的觀察發現在用mediarecorder錄音時,如果被禁止那麼本地不會出現錄音檔案,所以我們可以以此為突破口,檢測本地是否有生成的錄音檔案來判斷系統是否禁止了我們的錄音許可權。audiorecord我沒試,大家可以試試。
有疑問或者更好地實現方式的話 **qq群:135451435。共同進步!
Unity工程判斷當前錄音許可權是否被禁
unity提供了和錄音有關的類microphone 原本以為devices變數是指當前有效錄音裝置 應用的錄音沒有禁用 的數量,但實際上不是。這就很尷尬了,這意味著獲取錄音許可權被使用者拒絕時,單靠microphone類解決不了問題,unity也沒有提供類似的介面,只能呼叫android和ios的原...
關於Android許可權被禁止的問題
我們都知道,在android中呼叫相機 聯絡人等,需要宣告相應的許可權。方式類似 我們當然希望,許可權被禁止時,一旦使用者呼叫,則提示他去設定許可權。那麼就必須要獲取到當前許可權是否被禁止。然而,目前為止,我沒有發現有任何一種方式能夠獲取到許可權是否被禁止。網上流傳的 checkcallingors...
Android之音訊錄音
必須在androidmanifest中設定相應的許可權 android name android.permission.record audio 1.首先判定是否存在sd卡,並得到相應的路徑 檢測是否存在sd卡 if environment.getexternalstoragestate equal...