日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

android 动态录音权限,Android如何判断手机是否有录音权限的工具类

發布時間:2025/3/21 Android 62 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 动态录音权限,Android如何判断手机是否有录音权限的工具类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作用

判斷手機是否有錄音權限的工具類,兼容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:

* 檢測是否有權限--有--執行相關操作

* --無權限--

*

* --判斷系統版本

* --小于6.0 直接獲取

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

* --對申請結果的處理回調

*

* --允許

*

* --拒絕

*

* 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 动态录音权限,Android如何判断手机是否有录音权限的工具类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 变态 另类 国产 亚洲 | 日韩手机在线观看 | 伊人黄| 青青草免费在线观看 | 日韩久久一区 | 男女性生活毛片 | 38在线视频 | 自拍偷自拍亚洲精品播放 | 亚洲AV无码精品一区二区三区 | 青青草视频免费观看 | 奇米影视亚洲春色 | 超碰久草 | 国产精品三级电影 | 三级欧美韩日大片在线看 | 国产黄色a | 在线成人 | 国产成人无遮挡在线视频 | 中文字幕在线观看第二页 | 成熟了的熟妇毛茸茸 | 99久久久无码国产精品衣服 | 久久av无码精品人妻系列试探 | 偷拍夫妻性生活 | 欧美熟妇久久久久 | 精品国产露脸精彩对白 | 国产精品视频一区二区三区, | 影音先锋亚洲精品 | 婷婷激情小说 | 黄色免费在线看 | 性爽爽| 日本加勒比在线 | 性史性农村dvd毛片 日韩精品在线视频观看 | 性做爰视频免费播放大全 | 黄频在线播放 | 欧美性视频一区二区三区 | 亚洲小说区图片区 | 亚洲国产第一页 | 播金莲一级淫片aaaaaaa | 国产无遮挡裸体免费视频 | 99热最新在线 | 日本黄色xxxx| 性网站在线观看 | 熟女人妻在线视频 | 国产精品xxxx喷水欧美 | 午夜在线观看免费视频 | 亚洲区一区二区三区 | 男女啪啪av | 一区二区三区四区在线 | jzzjzz日本丰满成熟少妇 | 美国毛片av | 天堂成人在线观看 | 中国极品少妇xxxx | 超鹏在线视频 | 波多野结衣在线视频播放 | 国产香蕉精品视频 | 男插女青青影院 | 99精品视频在线免费观看 | 欧美日韩有码 | 欧美视频在线观看 | 激情内射亚洲一区二区三区爱妻 | 国产91清纯白嫩初高中在线观看 | 乖疼润滑双性初h | 国产中文字幕三区 | 伊人色网 | 韩国三级在线看 | 少妇与公做了夜伦理69 | 亚洲无av| 九草视频在线观看 | 成年在线观看 | a视频免费 | a天堂中文字幕 | 亚洲精品免费视频 | 日韩精品四区 | 日韩精品免费一区二区夜夜嗨 | 欧美激情三级 | 亚洲第一淫片 | 久久a级片 | 娇妻高潮浓精白浆xxⅹ | 男人日女人免费视频 | 亚洲精品在线免费观看视频 | 欧美性受视频 | 看免费黄色片 | 一二区视频| 成av人片一区二区三区久久 | 国产精品自拍合集 | 久久久久久久国产精品 | 亚洲国产精品久久AV | 欧美一区二区三区在线 | 黄色动漫在线观看 | 中文写幕一区二区三区免费观成熟 | 精品国产自在精品国产精小说 | 日韩区欧美区 | 3344成人| 97久久国产 | 岛国一区| 国产crm系统91在线 | 男人操女人视频网站 | 亚洲精品乱码久久久久久蜜桃欧美 | 成人久草 | 快播色图 |