首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >录音机错误

录音机错误
EN

Stack Overflow用户
提问于 2016-01-27 19:22:31
回答 4查看 473关注 0票数 0

我正在尝试使一个录音器,我正在点击录制按钮,它给出错误作为致命异常:主进程: rishabh.agarwal.holmes.recorder,PID:在rishabh.agarwal.holmes.recorder.MainActivity$2.onClick(MainActivity.java:47)的android.media.MediaRecorder.setOutputFormat(Native方式下为22175 java.lang.IllegalStateException )

这是我的代码

代码语言:javascript
复制
public class MainActivity extends AppCompatActivity {

Button btnPlay,btnRec,btnStop;
MediaRecorder mr;
String fname;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    fname=Environment.getExternalStorageDirectory()+"/myrec1.3gp";
    btnPlay=(Button)findViewById(R.id.button1);
    btnRec=(Button)findViewById(R.id.button2);
    btnStop=(Button)findViewById(R.id.button3);
    btnPlay.setEnabled(false);
    btnStop.setEnabled(false);
    btnPlay.setOnClickListener(new OnClickListener() {


        @Override
        public void onClick(View v) {


        }
    });

    btnRec.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mr = new MediaRecorder();
            mr.setOutputFile(fname);
            mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mr.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB);
            mr.setAudioSource(MediaRecorder.AudioSource.MIC);
            try {
                mr.prepare();
            } catch (IllegalStateException e) {

                e.printStackTrace();
               // Toast.makeText(MainActivity.this, e.toString(), 5).show();
            } catch (IOException e) {
                // TODO Auto-generated catch block
               // Toast.makeText(MainActivity.this, e.toString(), 5).show();
                e.printStackTrace();
            }
            mr.start();
            btnRec.setEnabled(false);
            btnStop.setEnabled(true);
        }
    });

    btnStop.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            mr.release();
            mr.stop();

        }
    });
}

}

EN

回答 4

Stack Overflow用户

发布于 2016-01-27 19:32:39

尝试删除此行

代码语言:javascript
复制
mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
票数 0
EN

Stack Overflow用户

发布于 2016-01-27 19:33:56

试试这个:-

recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

票数 0
EN

Stack Overflow用户

发布于 2016-01-27 20:01:39

您忘记在清单文件中放置权限。在清单文件中编写以下代码。

代码语言:javascript
复制
 <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35035965

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档