/**
* 以下是测试麦克风的demo
* <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
* <uses-permission android:name="android.permission.RECORD_AUDIO"/>
**/
private void showMicro(){
final AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.STREAM_MUSIC);//设置声音模式
final String[] items = new String[]{"打开麦克风", "关闭麦克风","麦克风状态"};//创建item
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("库里的麦克风")
.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {//添加单选框
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ToastUtil.showByString(getApplicationContext(), items[i]);
switch (i) {
case 0:
audioManager.setMicrophoneMute(true); //打开麦克风
break;
case 1:
audioManager.setMicrophoneMute(false);
break;
case 2:
validateMicAvailability();
break;
default:
break;
}
}
})
.setPositiveButton("确定", new DialogInterface.OnClickListener() {//添加"Yes"按钮
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {//添加取消
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
})
.create();
alertDialog.show();
}
private void validateMicAvailability(){
Boolean available = true;
AudioRecord recorder =
new AudioRecord(MediaRecorder.AudioSource.MIC, 44100,
AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_DEFAULT, 44100);
try{
if(recorder.getRecordingState() != AudioRecord.RECORDSTATE_STOPPED ){
available = false;
}
recorder.startRecording();
if(recorder.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING){
recorder.stop();
available = false;
}
recorder.stop();
} finally{
recorder.release();
recorder = null;
}
ToastUtil.showByString(this,available?"空闲":"占用");
}
测试麦克风是否可用
最新推荐文章于 2023-10-07 01:10:24 发布