安卓6.0之前的系统 判断app是否有录音权限
public static synchronized boolean isVoicePermission() {
AudioRecord record = null;
try {
record = new AudioRecord(MediaRecorder.AudioSource.MIC, 22050,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
AudioRecord.getMinBufferSize(22050,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT));
record.startRecording();
int recordingState = record.getRecordingState();
if (recordingState == AudioRecord.RECORDSTATE_STOPPED) {
return false;
}
//第一次 为true时,先释放资源,在进行一次判定
//************
record.release();
record = new AudioRecord(MediaRecorder.AudioSource.MIC, 22050,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT,
AudioRecord.getMinBufferSize(22050,
AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT));
record.startRecording();
int recordingState1 = record.getRecordingState();
if (recordingState1 == AudioRecord.RECORDSTATE_STOPPED) {
}
//**************
//如果两次都是true, 就返回true 原因未知
return true;
} catch (Exception e) {
return false;
} finally {
if (record != null) {
record.release();
}
}
}
只判定一次的话 ,一般第一次拒绝 会得到true,表示有权限,但是再次获取 就会为false,不知道什么原理
据说是判定有没有被占用,表示疑问

浙公网安备 33010602011771号