测试麦克风是否可用


    /**
     * 以下是测试麦克风的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?"空闲":"占用");
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值