Java 未完成的关闭应用程序
当我运行我的应用程序时,我收到一条“停止应用程序”消息,下面是我的代码。请看一看Java 未完成的关闭应用程序,java,android,xml,Java,Android,Xml,当我运行我的应用程序时,我收到一条“停止应用程序”消息,下面是我的代码。请看一看 @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); setContentView(R.layout.dublayout); outputFile = Environment.getExternalStorageDirectory().
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.dublayout);
outputFile = Environment.getExternalStorageDirectory().
getAbsolutePath() + "/javacodegeeksRecording.3gpp";
myRecorder = new MediaRecorder();
myRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);
myRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
myRecorder.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
myRecorder.setOutputFile(outputFile);
addListenerButton();
}
private void addListenerButton() {
recbtn = (Button)findViewById(R.id.recbut);
recbtn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
start(v);
}
});
}
public void start(View view){
if (recbtn.getText() == getString(R.string.recBtn)){
try {
myRecorder.prepare();
myRecorder.start();
recbtn.setText(getString(R.string.stopBtn));
} catch (IllegalStateException e) {
// start:it is called before prepare()
// prepare: it is called after start() or before setOutputFormat()
e.printStackTrace();
} catch (IOException e) {
// prepare() fails
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Start recording...",
Toast.LENGTH_SHORT).show();
}
else{
try {
myRecorder.stop();
myRecorder.release();
myRecorder = null;
recbtn.setText(getString(R.string.recBtn));
Toast.makeText(getApplicationContext(), "Stop recording...",
Toast.LENGTH_SHORT).show();
} catch (IllegalStateException e) {
// it is called before start()
e.printStackTrace();
} catch (RuntimeException e) {
// no valid audio/video data has been received
e.printStackTrace();
}
}
}
这不是录音,我尝试了一切,但我还是无法让它工作抱歉,但我对这种语言还是陌生的
在logcat中,它说:
02-05 08:01:09.853:D/OpenGLRenderer(1565):纹理缓存::获取:创建
纹理(0xb87af490):名称、大小、mSize=229216914952402-05
08:01:19.125:E/MediaRecorder(1565):在无效状态下调用停止:
4 02-05 08:01:19.125:带系统错误(1565):
java.lang.IllegalStateException 02-05 08:01:19.129:
W/System.err(1565):在android.media.MediaRecorder.stop(本机)
方法)02-05 08:01:19.129:带系统错误(1565):在
com.example.mixpad.DubActivity.start(DubActivity.java:136)02-05
08:01:19.129:带系统错误(1565):在
com.example.mixpad.DubActivity$2.onClick(DubActivity.java:99)02-05
08:01:19.129:带系统错误(1565):在
android.view.view.performClick(view.java:4084)02-05 08:01:19.133:
带系统错误(1565):在
android.view.view$PerformClick.run(view.java:16966)02-05
08:01:19.137:W/系统错误(1565):在
handleCallback(Handler.java:615)02-05
08:01:19.137:W/系统错误(1565):在
android.os.Handler.dispatchMessage(Handler.java:92)02-05
08:01:19.141:W/系统错误(1565):在
android.os.Looper.loop(Looper.java:137)02-05 08:01:19.141:
带系统错误(1565):在
android.app.ActivityThread.main(ActivityThread.java:4745)02-05
08:01:19.141:W/系统错误(1565):在
java.lang.reflect.Method.Invokenactive(本机方法)02-05
08:01:19.145:带系统错误(1565):在
java.lang.reflect.Method.invoke(Method.java:511)02-05 08:01:19.145:
带系统错误(1565):在
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
02-05 08:01:19.145:带系统错误(1565):在
com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)02-05
08:01:19.149:带系统错误(1565):在
dalvik.system.NativeStart.main(本机方法)
有人能帮你的开始(…)
方法吗
if (recbtn.getText() == getString(R.string.recBtn))
不能使用==
比较Java中的字符串。您需要使用等于(…)
您的问题是使用==
将始终失败,这意味着将始终调用else
条件和myRecorder.stop()
将抛出IllegalStateException
,因为您的MediaRecorder
从未准备/启动过
把那行改成
if (recbtn.getText().equals(getString(R.string.recBtn)))
在rec之前是否按了其他按钮?请发布完整的logcat错误。如果(recbtn.getText().equals(getString(R.string.recbtn)))代码不起作用,但当我替换else时,它起作用