麥克風是Android設備中很常見的硬體設備,可以用於錄製聲音、語音命令交互、音頻聊天等功能。但是在Android中,應用程序需要先獲得授權,才能使用麥克風。本文將介紹如何在應用程序中請求並使用麥克風。
一、如何請求麥克風許可權?
在Android 6.0及以上版本中,應用程序需要動態請求授權才能使用麥克風。請求授權分為兩個步驟:
1、在AndroidManifest.xml中添加麥克風許可權聲明。
<uses-permission android:name="android.permission.RECORD_AUDIO" />
2、在應用程序中請求授權。
請求授權的方式有兩種:一種是使用ActivityCompat.requestPermissions()方法請求授權,這種方式比較簡單,但是只能在Activity中使用;另一種是使用FragmentCompat.requestPermissions()方法請求授權,這種方式可以在Fragment中使用。
以下是請求授權的示例代碼:
public class MainActivity extends AppCompatActivity { private static final int PERMISSION_REQUEST_RECORD_AUDIO = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, PERMISSION_REQUEST_RECORD_AUDIO); } else { //已經授權 } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_RECORD_AUDIO: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { //已經授權 } else { //授權被拒絕 } return; } } } }
二、如何使用麥克風?
在獲取到授權後,就可以使用麥克風了。使用麥克風需要使用android.media.MediaRecorder或android.media.AudioRecord類,這裡以android.media.MediaRecorder為例介紹使用麥克風的方法。
錄製聲音的流程一般分為以下幾個步驟:
1、創建MediaRecorder對象,並設置音頻源和輸出格式。
以下是設置音頻源和輸出格式的代碼:
MediaRecorder recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
2、設置輸出文件路徑和文件格式。
以下是設置輸出文件路徑和文件格式的代碼:
recorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/record.3gp");
3、準備錄製。
以下是準備錄製的代碼:
try { recorder.prepare(); } catch (IOException e) { e.printStackTrace(); }
4、開始錄製。
以下是開始錄製的代碼:
recorder.start();
5、停止錄製。
以下是停止錄製的代碼:
recorder.stop(); recorder.release();
完整的錄製聲音的示例代碼:
public class MainActivity extends AppCompatActivity { private static final int PERMISSION_REQUEST_RECORD_AUDIO = 0; private MediaRecorder recorder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.RECORD_AUDIO}, PERMISSION_REQUEST_RECORD_AUDIO); } else { startRecording(); } } private void startRecording() { recorder = new MediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setOutputFile(Environment.getExternalStorageDirectory().getAbsolutePath() + "/record.3gp"); try { recorder.prepare(); } catch (IOException e) { e.printStackTrace(); } recorder.start(); } private void stopRecording() { recorder.stop(); recorder.release(); recorder = null; } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_RECORD_AUDIO: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { startRecording(); } else { //授權被拒絕 } return; } } } }
三、如何處理授權被拒絕的情況?
用戶有可能會拒絕授權,如果授權被拒絕,應用程序就不能正常使用麥克風了。可以在onRequestPermissionsResult()方法中處理授權被拒絕的情況。
以下是授權被拒絕的示例代碼:
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case PERMISSION_REQUEST_RECORD_AUDIO: { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { startRecording(); } else { Toast.makeText(this, "授權被拒絕,無法使用麥克風", Toast.LENGTH_SHORT).show(); } return; } } }
四、總結
本文介紹了如何在Android應用程序中請求並使用麥克風。在請求授權之後,可以使用android.media.MediaRecorder或android.media.AudioRecord類來錄製聲音。如果授權被拒絕,可以在onRequestPermissionsResult()方法中進行相應的處理。
原創文章,作者:MAOB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142585.html