麦克风是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/n/142585.html
微信扫一扫
支付宝扫一扫