国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android如何判斷手機是否有錄音權限的工具類

2019-12-12 00:46:13
字體:
來源:轉載
供稿:網友

作用

判斷手機是否有錄音權限的工具類,兼容6.0以上以及以下android系統

測試環境

這篇文章是評論中的網友提出質疑后,經過重寫修改與重寫測試后編寫的,我的調試環境是小米note3,Android7.1的系統。

記得在清單文件中配置對應的權限。

思路

檢測是否有權限

-->有權限--執行相關操作

-->無權限-- 判斷系統版本

--大于等于6.0 --動態申請權限

-->對申請結果的回調處理
--允許
--拒絕

代碼

工具類CheckAudioPermission.java

package com.example.a002034.testaudioperrmission; import android.content.Context;import android.media.AudioFormat;import android.media.AudioRecord;import android.media.MediaRecorder; /** * Function:判斷錄音權限,兼容android6.0以下以及以上系統 * * @author xuzhuyun * @date 2018/5/10 */ public class CheckAudioPermission {  /**   * 音頻獲取源   */  public static int audioSource = MediaRecorder.AudioSource.MIC;  /**   * 設置音頻采樣率,44100是目前的標準,但是某些設備仍然支持22050,16000,11025   */  public static int sampleRateInHz = 44100;   /**   * 設置音頻的錄制的聲道CHANNEL_IN_STEREO為雙聲道,CHANNEL_CONFIGURATION_MONO為單聲道   */  public static int channelConfig = AudioFormat.CHANNEL_IN_STEREO;  /**   * 音頻數據格式:PCM 16位每個樣本。保證設備支持。PCM 8位每個樣本。不一定能得到設備支持。   */  public static int audioFormat = AudioFormat.ENCODING_PCM_16BIT;  /**   * 緩沖區字節大小   */  public static int bufferSizeInBytes = 0;   public static AudioRecord audioRecord;    /**   * 判斷是是否有錄音權限.   */  public static boolean isHasPermission(final Context context) {    bufferSizeInBytes = 0;    bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz,        channelConfig, audioFormat);    if (audioRecord == null) {      audioRecord = new AudioRecord(audioSource, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes);     }    //開始錄制音頻    try {      // 防止某些手機崩潰,例如聯想      audioRecord.startRecording();    } catch (IllegalStateException e) {      e.printStackTrace();    }     /**     * 根據開始錄音判斷是否有錄音權限s     */    if (audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {      return false;    }    audioRecord.stop();    //釋放資源    audioRecord.release();    audioRecord = null;     return true;  } }

測試類MainActivity

package com.example.a002034.testaudioperrmission; import android.Manifest;import android.content.pm.PackageManager;import android.os.Build;import android.support.annotation.NonNull;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log; /** * desc:測試錄音權限. * steps: * 檢測是否有權限--有--執行相關操作 * --無權限-- * <p> * --判斷系統版本 * --小于6.0 直接獲取 * --大于6.0 動態申請權限 * --對申請結果的處理回調 * <p> * --允許 * <p> * --拒絕 * <p> * test: * test1 build.gradle minsdk <23  真機android7.1 清單文件中配置了錄音權限 * test2 build.gradle minsdk >=23  真機android7.1 清單文件中配置了錄音權限 * * @author xuzhuyun * @date 2018/5/10 */public class MainActivity extends AppCompatActivity {  private static final String TAG = "MainActivity";   @Override  protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    //檢測是否有錄音權限    if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)        != PackageManager.PERMISSION_GRANTED) {      Log.i(TAG, "默認無錄音權限");      if (Build.VERSION.SDK_INT >= 23) {        Log.i(TAG, "系統版本不低于android6.0 ,需要動態申請權限");        requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, 1001);      }    } else {      Log.i(TAG, "默認有錄音權限");    }  }   @Override  public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,                      @NonNull int[] grantResults) {    super.onRequestPermissionsResult(requestCode, permissions, grantResults);    if (requestCode == 1001) {      //方式一校驗      boolean isHasAudioPermission = CheckAudioPermission.isHasPermission(this);      Log.i(TAG, "申請權限完畢,當前錄音權限:" + isHasAudioPermission);      //方式二校驗      int result = 0;      for (int i = 0; i < grantResults.length; i++) {        if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {          result++;        }      }      if (result != permissions.length) {        //沒有權限        Log.i(TAG, "onRequestPermissionsResult: 申請權限完畢,當前錄音權限:false");        return;      }      //有權限      Log.i(TAG, "onRequestPermissionsResult: 申請后,是否有權限:true");    }  } }

源碼下載:Android如何判斷手機是否有錄音

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 英超| 加查县| 伊川县| 阿克苏市| 黄梅县| 腾冲县| 衡阳市| 芮城县| 拉孜县| 岳普湖县| 同德县| 新竹市| 新化县| 青铜峡市| 海安县| 阜新市| 广宗县| 芷江| 汨罗市| 建德市| 临城县| 安岳县| 沁阳市| 昔阳县| 铜山县| 安新县| 聊城市| 盐津县| 象州县| 环江| 武威市| 海淀区| 锡林浩特市| 高碑店市| 南涧| 德阳市| 连山| 阜城县| 昆山市| 齐齐哈尔市| 吉隆县|