我在 google play 上上传了一个应用程序。这是链接。
它尚未在许多设备上进行测试,因此错误很常见。一位用户今天给我发消息说,如果切换按钮打开并且按钮只是按下而不是按住,应用程序就会崩溃。
这是他发给我的 logcat 文件:
E/MessageQueue-JNI(31135): java.lang.RuntimeException: stop failed.
E/MessageQueue-JNI(31135): at android.media.MediaRecorder.stop(Native Method)
E/MessageQueue-JNI(31135): at com.whizzappseasyvoicenotepad.MainActivity.stopRecording(MainActivity.java:183)
引用:
应用程序并不总是崩溃。有时会,有时不会。它仅在切换按钮打开时发生。如果我触摸并按住按钮,它可以正常工作,但如果我只触摸它片刻,它就会崩溃。我正在使用 Xperia S 4.1.2
我在我的手机上试过这个,我只触摸了按钮而不是按住它,它工作得很好,我不知道为什么会在他的手机上发生这种情况。
这是 onTouchListener 的代码:
recBtn.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
startRecording();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
stopRecording();
nameAlert();
}
return true;
}
});
并且logcat说调用stopRecording时会出现问题,所以这里是stopRecording方法:
public void stopRecording() {
final ImageButton recBtn = (ImageButton) findViewById(com.whizzappseasyvoicenotepad.R.id.recButton);
final ToggleButton tBtn = (ToggleButton) findViewById(R.id.tBtn1);
if (null != recorder) {
recorder.stop();
recorder.reset();
recorder.release();
recorder = null;
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
stopTimer();
tBtn.setEnabled(true);
}
}
我猜问题是他只触摸了一会儿按钮,所以在完全调用 startRecording 之前,已经调用了 stopRecoring ,所以它崩溃了,因为 startRecording 甚至还没有完全启动。如果是这种情况,我该如何解决?如果不是这样,那有什么问题呢?为什么这样的错误会出现在另一部手机上而不是我的手机上?