測試麥克風是否可用


    /**
     * 以下是測試麥克風的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?"空閒":"佔用");
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章