Android中MediaRecorder
現在最火熱的計算機技術人工智慧、智慧識別,當你拿起你的手機呼喚出後臺小愛同學,小溪同學,Siri,你說什麼他們就能工具你的話來操作手機或者回答,這就說要Android提供的音訊採集功能:MediaRecorder
第一步須有擁有麥克風許可權
第一種方式是在AndroidManifest.xml中申請許可權,不過未經允許偷偷記錄使用者的隱私是不對的
<uses-permission android:name="android.permission.RECORD_AUDIO" />
第二種方式是, ActivityCompat.requestPermissions
if(ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED){ ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO},1); }else { //執行初始化MediaRecorder的步驟 }
第二步是執行初始化
private void initMR() { mediaRecorder = new MediaRecorder(); mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); mediaRecorder.setOutputFile(mFileName); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); }
setAudioSource是設定麥克風,使用音訊來源,
setOutputFormat是設定輸出格式,
setOutputFile是設定輸出檔案,
setAudioEncoder是設定音訊編碼方式
第三步就可以執行各種操作了
例如:開始錄音
Button btStart= (Button) findViewById(R.id.btStartRecord); btStart.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { try { mediaRecorder.prepare(); } catch (IOException e) { Log.e(LOG_TAG, "MR出錯!"); } mediaRecorder.start(); } });
例如:結束錄音
Button btStop= (Button) findViewById(R.id.btStopRecord); btStop.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mediaRecorder.stop(); mediaRecorder.release(); mediaRecorder = null; } });
最後需要寫一下onRequestPermissionsResult
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if(requestCode==1){ if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){ initMR(); }else{ Toast.makeText(this,"未獲得麥克風訪問許可權", Toast.LENGTH_LONG).show(); finish(); } } }
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2680957/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- android音視訊指南-MediaRecorder概述Android
- Android音訊處理知識(一)MediaRecorder錄製音訊Android音訊
- Android使用MediaRecorder進行錄影,暫停和繼續錄影的VideoUtilsAndroidIDE
- No virtual method setOutputFile Ljava/io/File V in class Landroid/media/MediaRecorderJavaAndroid
- Android中SQLiteAndroidSQLite
- android中StackViewAndroidView
- Android中HandlerAndroid
- Android中invalidateAndroid
- 你有使用過MediaRecorder嗎?說說它的運用場景有哪些?
- Android解析ClassLoader(二)Android中的ClassLoaderAndroid
- Android進階(七)Android中的ClassLoaderAndroid
- Android中的NotificationAndroid
- Android中的VectorAndroid
- Android中的targetsdkversioinAndroid
- Android中Content ProviderAndroidIDE
- android中的ListViewAndroidView
- Android中的RecyclerViewAndroidView
- Android中的intentAndroidIntent
- android中的ViewPageAndroidView
- Android中的AOPAndroid
- Android中的BitmapAndroid
- Android中的ClassLoaderAndroid
- Android 中的 WindowAndroid
- Android開發:在Eclipse中配置Android環境AndroidEclipse
- Android kotlin中配置protobufAndroidKotlin
- 淺談Android中LifecycleAndroid
- Android中Service總結Android
- Android中的Web ServiceAndroidWeb
- 聊聊Android中的ContextImplAndroidContext
- Android中SearchView的使用AndroidView
- android中反射機制Android反射
- Android中Context、Activity、ApplicatioAndroidContextAPP
- Android中的分割線Android
- Android面試題之Android中的設計模式Android面試題設計模式
- React Native在Android當中實踐(三)——整合到Android專案當中React NativeAndroid
- Android中的icon適配Android
- Android中的廣播使用Android
- Android程式中的時間Android