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

首頁 > 系統(tǒng) > Android > 正文

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

2019-10-21 21:49:17
字體:
來源:轉載
供稿:網(wǎng)友

作用

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

測試環(huán)境

這篇文章是評論中的網(wǎng)友提出質疑后,經(jīng)過重寫修改與重寫測試后編寫的,我的調試環(huán)境是小米note3,Android7.1的系統(tǒng)。

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

思路

檢測是否有權限

-->有權限--執(zhí)行相關操作

-->無權限-- 判斷系統(tǒng)版本

--大于等于6.0 --動態(tài)申請權限

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

代碼

工具類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以下以及以上系統(tǒng) * * @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;  /**   * 音頻數(shù)據(jù)格式:PCM 16位每個樣本。保證設備支持。PCM 8位每個樣本。不一定能得到設備支持。   */  public static int audioFormat = AudioFormat.ENCODING_PCM_16BIT;  /**   * 緩沖區(qū)字節(jié)大小   */  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 {      // 防止某些手機崩潰,例如聯(lián)想      audioRecord.startRecording();    } catch (IllegalStateException e) {      e.printStackTrace();    }     /**     * 根據(jù)開始錄音判斷是否有錄音權限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: * 檢測是否有權限--有--執(zhí)行相關操作 * --無權限-- * <p> * --判斷系統(tǒng)版本 * --小于6.0 直接獲取 * --大于6.0 動態(tài)申請權限 * --對申請結果的處理回調 * <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, "系統(tǒng)版本不低于android6.0 ,需要動態(tài)申請權限");        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如何判斷手機是否有錄音

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


注:相關教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 武威市| 东源县| 郁南县| 孝感市| 阿克陶县| 米泉市| 林甸县| 永宁县| 汕尾市| 林口县| 闽侯县| 正阳县| 政和县| 龙井市| 枣庄市| 广饶县| 巴楚县| 禄丰县| 常熟市| 汝南县| 织金县| 石家庄市| 定西市| 吉安市| 丹棱县| 崇信县| 运城市| 修水县| 长治市| 博湖县| 饶平县| 兴城市| 博客| 阆中市| 上饶县| 高州市| 革吉县| 密云县| 兰坪| 新和县| 沽源县|