此问题已被提出,但我无法找到我的解决方案。
我正在做的是MotionEvent.ACTION_DOWN
OnTouchListener
我开始录制音频,而MotionEvent.ACTION_UP
我停止了录音。
在长时间触摸该图标时,它工作正常,但onclick
应用程序崩溃了。
这是我的
audio.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(Chat.this, "You Have to hold the Button for audio recording.", Toast.LENGTH_LONG).show();
}
});
audio.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
MediaRecorderReady();
try {
mediaRecorder.prepare();
mediaRecorder.start();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else if (event.getAction() == MotionEvent.ACTION_UP) {
if (mediaRecorder != null) {
mediaRecorder.stop();
}
}
return true;
}
});
public void MediaRecorderReady() {
mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
mediaRecorder.setOutputFile(AudioSavePathInDevice);
}
这是我的问题,当我点击该按钮时,应用程序崩溃了
答案 0 :(得分:3)
检查这个答案 Android mediarecorder stop failed 并阅读有关mediaRecorder及其状态的官方文档。 https://developer.android.com/reference/android/media/MediaRecorder.html 崩溃是因为您停止媒体播放器和媒体播放器未处于录制状态。 当没有处于录制状态时,不要直接停止呼叫。
try {
mRecorder.stop();
}
catch(RuntimeException e) {
}
finally {
mRecorder.release();
mRecorder = null;
}
答案 1 :(得分:0)
如下所示。
width