illegalStateException in android
Ich genommen Tonaufnahme-code aus
http://developer.android.com/guide/topics/media/index.html, nach läuft es auf meinem emulator es wirft illegalStateException, ich habe auch versucht, in meinem Gerät, es gibt aber auch seines gleichen Sache.
Ich bin neu in android, bitte helfen Sie mir
package com.android.audiorecordtest;
import android.app.Activity;
import android.widget.LinearLayout;
import android.os.Bundle;
import android.os.Environment;
import android.view.ViewGroup;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;
import android.content.Context;
import android.util.Log;
import android.media.MediaRecorder;
import android.media.MediaPlayer;
import java.io.IOException;
public class AudioRecordTest extends Activity
{
private static final String LOG_TAG = "AudioRecordTest";
private static String mFileName = null;
private RecordButton mRecordButton = null;
private MediaRecorder mRecorder = null;
private PlayButton mPlayButton = null;
private MediaPlayer mPlayer = null;
private void onRecord(boolean start) {
if (start) {
startRecording();
} else {
stopRecording();
}
}
private void onPlay(boolean start) {
if (start) {
startPlaying();
} else {
stopPlaying();
}
}
private void startPlaying() {
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(mFileName);
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
}
private void stopPlaying() {
mPlayer.release();
mPlayer = null;
}
private void startRecording() {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
}
private void stopRecording() {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
class RecordButton extends Button {
boolean mStartRecording = true;
OnClickListener clicker = new OnClickListener() {
public void onClick(View v) {
onRecord(mStartRecording);
if (mStartRecording) {
setText("Stop recording");
} else {
setText("Start recording");
}
mStartRecording = !mStartRecording;
}
};
public RecordButton(Context ctx) {
super(ctx);
setText("Start recording");
setOnClickListener(clicker);
}
}
class PlayButton extends Button {
boolean mStartPlaying = true;
OnClickListener clicker = new OnClickListener() {
public void onClick(View v) {
onPlay(mStartPlaying);
if (mStartPlaying) {
setText("Stop playing");
} else {
setText("Start playing");
}
mStartPlaying = !mStartPlaying;
}
};
public PlayButton(Context ctx) {
super(ctx);
setText("Start playing");
setOnClickListener(clicker);
}
}
public AudioRecordTest() {
mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
mFileName += "/audiorecordtest.3gp";
}
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
LinearLayout ll = new LinearLayout(this);
mRecordButton = new RecordButton(this);
ll.addView(mRecordButton,
new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0));
mPlayButton = new PlayButton(this);
ll.addView(mPlayButton,
new LinearLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
0));
setContentView(ll);
}
@Override
public void onPause() {
super.onPause();
if (mRecorder != null) {
mRecorder.release();
mRecorder = null;
}
if (mPlayer != null) {
mPlayer.release();
mPlayer = null;
}
}
}
Stack Trace:
> 06-01 11:06:18.440:
> ERROR/AndroidRuntime(724): Uncaught
> handler: thread main exiting due to
> uncaught exception 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724):
> java.lang.IllegalStateException 06-01
> 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.media.MediaRecorder.start(Native
> Method) 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.example.android.whereareyou.Main.startRecording(Main.java:75)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.example.android.whereareyou.Main.onRecord(Main.java:32)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.example.android.whereareyou.Main.access$0(Main.java:30)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.example.android.whereareyou.Main$RecordButton$1.onClick(Main.java:89)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.view.View.performClick(View.java:2179)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.view.View.onTouchEvent(View.java:3828)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.widget.TextView.onTouchEvent(TextView.java:6291)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.view.View.dispatchTouchEvent(View.java:3368)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:863)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:1707)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1197)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.app.Activity.dispatchTouchEvent(Activity.java:1993)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:1691)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.view.ViewRoot.handleMessage(ViewRoot.java:1525)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.os.Handler.dispatchMessage(Handler.java:99)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.os.Looper.loop(Looper.java:123)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> android.app.ActivityThread.main(ActivityThread.java:3948)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> java.lang.reflect.Method.invokeNative(Native
> Method) 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> java.lang.reflect.Method.invoke(Method.java:521)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
> 06-01 11:06:18.449:
> ERROR/AndroidRuntime(724): at
> dalvik.system.NativeStart.main(Native
> Method)
poste bitte den stacktrace deiner exception aus dem logcat
ob die Aufnahme passiert, oder nicht... Bist du immer alle ANR-Dialog...
Könntest du bitte posten Sie Ihre Manifest-Datei, danke.
ob die Aufnahme passiert, oder nicht... Bist du immer alle ANR-Dialog...
Könntest du bitte posten Sie Ihre Manifest-Datei, danke.
InformationsquelleAutor SKoganti | 2011-06-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen zu verwenden, dass:-
}
Diese funktionieren. und die Datei wird gespeichert in die SD-Karte. Sie können auch spielen, indem Sie mithilfe der play-Methode, wie Sie in Ihrem code verwendet.
InformationsquelleAutor Balban
Das problem im code ist es so, dass der name den Dateinamen, wo Sie record (mFileName) ist null.
Können Sie einfach anrufen
AudioRecordTest()
vor dem AufrufmRecorder.setOutputFile(mFileName)
aufstartRecording()
Methode. Das sollte funktionieren. Zumindest kam es für mich.InformationsquelleAutor Julian