MediaRecorder无效状态16 [英] MediaRecorder invalid state 16

查看:467
本文介绍了MediaRecorder无效状态16的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想录音并保存到SD卡中。我发现了一个无效状态异常。我已经添加了正确的权限,如RECORD_AUDIO和WRITE_EXTERNAL_STORAG​​E。我有$ P $调用start()之前ppared的MediaRecorder。

为什么会出现此异常。先谢谢了。

 公共无效recordAudio(){        audioFilePath =
                 。Environment.getExternalStorageDirectory()getAbsolutePath()+/myaudio.3gp;        尝试{
            mediaRecorder =新MediaRecorder();
            mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mediaRecorder.setOutputFile(audioFilePath);
            mediaRecorder.setAudioEn codeR(MediaRecorder.AudioEn coder.AMR_NB);
            mediaRecorder prepare()。
          }赶上(例外五){
           e.printStackTrace();
          }
        mediaRecorder.start();        最后ProgressDialog mProgressDialog =新ProgressDialog(RecordActivity.this);
        mProgressDialog.setTitle(记录......);
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        mProgressDialog.setButton(停止,新DialogInterface.OnClickListener(){
        公共无效的onClick(DialogInterface对话,诠释whichButton){
            mProgressDialog.dismiss();
            mediaRecorder.stop();
            mediaRecorder.release();
            }
        });        mProgressDialog.setOnCancelListener(新DialogInterface.OnCancelListener(){
            公共无效onCancel(DialogInterface P1){
                mediaRecorder.stop();
                mediaRecorder.release();
            }
        });
        mediaRecorder.start();
        mProgressDialog.show();
    }
} // RecordActivity结束

  10-31 14:48:50.034:E / MediaRecorder(29120):启动名为无效状态:16
10-31 14:48:50.044:E / AndroidRuntime(29120):致命异常:主要
10-31 14:48:50.044:E / AndroidRuntime(29120):了java.lang.RuntimeException:无法启动活动ComponentInfo {com.carefreegroup.rr3 / com.carefreegroup.rr3.RecordActivity}:java.lang.IllegalStateException
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2463)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.app.ActivityThread.access $ 600(ActivityThread.java:162)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1366)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.os.Handler.dispatchMessage(Handler.java:99)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.os.Looper.loop(Looper.java:158)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.app.ActivityThread.main(ActivityThread.java:5751)
10-31 14:48:50.044:E / AndroidRuntime(29120):在java.lang.reflect.Method.invokeNative(本机方法)
10-31 14:48:50.044:E / AndroidRuntime(29120):在java.lang.reflect.Method.invoke(Method.java:511)
10-31 14:48:50.044:E / AndroidRuntime(29120):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:1083)
10-31 14:48:50.044:E / AndroidRuntime(29120):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
10-31 14:48:50.044:E / AndroidRuntime(29120):在dalvik.system.NativeStart.main(本机方法)
10-31 14:48:50.044:E / AndroidRuntime(29120):致:java.lang.IllegalStateException
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.media.MediaRecorder._start(本机方法)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.media.MediaRecorder.start(MediaRecorder.java:805)
10-31 14:48:50.044:E / AndroidRuntime(29120):在com.carefreegroup.rr3.RecordActivity.recordAudio(RecordActivity.java:65)
10-31 14:48:50.044:E / AndroidRuntime(29120):在com.carefreegroup.rr3.RecordActivity.onCreate(RecordActivity.java:25)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.app.Activity.performCreate(Activity.java:5165)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103)
10-31 14:48:50.044:E / AndroidRuntime(29120):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)


解决方案

您有两个呼叫mediaRecorder.start(){REF。迈克尔,上述}。此外,.stop()/。发布()后,添加mediaRecorder = NULL。

I'm trying to record audio and save to the sdcard. I'm getting an invalid state exception. I've added the correct permissions eg record_audio and write_external_storage. I've prepared the MediaRecorder before calling start().

Why am i getting this exception. Thanks in advance.

public void recordAudio() {

        audioFilePath = 
                 Environment.getExternalStorageDirectory().getAbsolutePath() + "/myaudio.3gp";

        try {
            mediaRecorder = new MediaRecorder();
            mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mediaRecorder.setOutputFile(audioFilePath);
            mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            mediaRecorder.prepare();
          } catch (Exception e) {
           e.printStackTrace();
          }
        mediaRecorder.start();

        final ProgressDialog mProgressDialog = new ProgressDialog(RecordActivity.this);
        mProgressDialog.setTitle("Recording...");
        mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        mProgressDialog.setButton("Stop", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int whichButton) {
            mProgressDialog.dismiss();
            mediaRecorder.stop();
            mediaRecorder.release();
            }
        });

        mProgressDialog.setOnCancelListener(new DialogInterface.OnCancelListener(){
            public void onCancel(DialogInterface p1) {
                mediaRecorder.stop();
                mediaRecorder.release();
            }
        });
        mediaRecorder.start();
        mProgressDialog.show();
    }


}//end of RecordActivity

.

10-31 14:48:50.034: E/MediaRecorder(29120): start called in an invalid state: 16
10-31 14:48:50.044: E/AndroidRuntime(29120): FATAL EXCEPTION: main
10-31 14:48:50.044: E/AndroidRuntime(29120): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.carefreegroup.rr3/com.carefreegroup.rr3.RecordActivity}: java.lang.IllegalStateException
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2463)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2520)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.app.ActivityThread.access$600(ActivityThread.java:162)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1366)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.os.Handler.dispatchMessage(Handler.java:99)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.os.Looper.loop(Looper.java:158)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.app.ActivityThread.main(ActivityThread.java:5751)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at java.lang.reflect.Method.invokeNative(Native Method)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at java.lang.reflect.Method.invoke(Method.java:511)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at dalvik.system.NativeStart.main(Native Method)
10-31 14:48:50.044: E/AndroidRuntime(29120): Caused by: java.lang.IllegalStateException
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.media.MediaRecorder._start(Native Method)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.media.MediaRecorder.start(MediaRecorder.java:805)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at com.carefreegroup.rr3.RecordActivity.recordAudio(RecordActivity.java:65)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at com.carefreegroup.rr3.RecordActivity.onCreate(RecordActivity.java:25)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.app.Activity.performCreate(Activity.java:5165)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1103)
10-31 14:48:50.044: E/AndroidRuntime(29120):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2419)

解决方案

You have two calls to mediaRecorder.start() {ref. Michael, above}. Also, after .stop()/.release(), add mediaRecorder=null.

这篇关于MediaRecorder无效状态16的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆