【发布时间】:2017-10-06 05:20:05
【问题描述】:
这个问题已经被问过了,但我无法找到我的解决方案。
我正在做的是,OnTouchListener 中的MotionEvent.ACTION_DOWN 我开始录制音频,在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);
}
这是我的问题,当我单击该按钮时,应用程序崩溃了
【问题讨论】:
-
在此处发布您的错误日志
-
java.lang.RuntimeException: 停止失败。在 android.media.MediaRecorder.stop(本机方法)
-
请输入完整的 logcat 并检查当你按下 onclick 时 onTouch 是否被调用 ActionDown 并且 ActionUp 也被调用。
-
是的,这就是它崩溃的原因,但是如何解决这个问题
-
我已经发布了解决这个问题的答案。
标签: android onclicklistener ontouchlistener touch-event android-audiorecord