现在最火热的计算机技术人工智能、智能识别,当你拿起你的手机呼唤出后台小爱同学,小溪同学,Siri,你说什么他们就能工具你的话来操作手机或者回答,这就说要Android提供的音频采集功能:MediaRecorder

第一步须有拥有麦克风权限

第一种方式是在AndroidManifest.xml中申请权限,不过未经允许偷偷记录用户的隐私是不对的

<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>

第二种方式是,ActivityCompat.requestPermissions

if(ContextCompat.checkSelfPermission(this,Manifest.permission.RECORD_AUDIO)!=PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this,newString[]{Manifest.permission.RECORD_AUDIO},1);}else{//执行初始化MediaRecorder的步骤}

第二步是执行初始化

privatevoidinitMR(){mediaRecorder=newMediaRecorder();mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mediaRecorder.setOutputFile(mFileName);mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);}

setAudioSource是设置麦克风,使用音频来源,

setOutputFormat是设置输出格式,

setOutputFile是设置输出文件,

setAudioEncoder是设置音频编码方式

第三步就可以执行各种操作了

例如:开始录音

ButtonbtStart=(Button)findViewById(R.id.btStartRecord);btStart.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){try{mediaRecorder.prepare();}catch(IOExceptione){Log.e(LOG_TAG,"MR出错!");}mediaRecorder.start();}});

例如:结束录音

ButtonbtStop=(Button)findViewById(R.id.btStopRecord);btStop.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){mediaRecorder.stop();mediaRecorder.release();mediaRecorder=null;}});

最后需要写一下onRequestPermissionsResult

publicvoidonRequestPermissionsResult(intrequestCode,@NonNullString[]permissions,@NonNullint[]grantResults){if(requestCode==1){if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED){initMR();}else{Toast.makeText(this,"未获得麦克风访问权限",Toast.LENGTH_LONG).show();finish();}}}