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.

InformationsquelleAutor SKoganti | 2011-06-01

Schreibe einen Kommentar