【问题标题】:Android: MediaRecorder.start() runetimException vague errorAndroid:MediaRecorder.start() runetimException 模糊错误
【发布时间】:2017-03-01 23:29:14
【问题描述】:

我只是想创建一个 Microphone 类,它是一个允许其他代码开始和停止录制的外观。但是,我总是收到以下错误:

Caused by: java.lang.RuntimeException: start failed.
                  at android.media.MediaRecorder.start(Native Method)
                  at kwedt.afasie_app.service.Microphone.Record(Microphone.java:41)
                  at kwedt.afasie_app.NamingActivity.recordAudio(NamingActivity.java:69)
                  at kwedt.afasie_app.NamingActivity.commence(NamingActivity.java:51)
                  at kwedt.afasie_app.AphasiaTestActivity.setSubtest(AphasiaTestActivity.java:143)
                  at kwedt.afasie_app.AphasiaTestActivity.menuSelect(AphasiaTestActivity.java:251)
                  at java.lang.reflect.Method.invoke(Native Method) 
                  at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:288) 
                  at android.view.View.performClick(View.java:5637) 
                  at android.view.View$PerformClick.run(View.java:22429) 
                  at android.os.Handler.handleCallback(Handler.java:751) 
                  at android.os.Handler.dispatchMessage(Handler.java:95) 
                  at android.os.Looper.loop(Looper.java:154) 
                  at android.app.ActivityThread.main(ActivityThread.java:6119) 

这是我的课:

public class Microphone
{
private MediaRecorder recorder;

public Microphone()
{
    recorder = new MediaRecorder();
    init();
}

private void init()
{
    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);;
}

public void Record(Context context, String path) throws DomainException
{
    File file = new File(context.getFilesDir(), path + Calendar.getInstance()
            .get(Calendar.SECOND)); //save recording under current time
    recorder.setOutputFile(file.getAbsolutePath());
    try
    {
        recorder.prepare();
    }
    catch (IOException e)
    {
        throw new DomainException(e,"Could not prepare microphone." + e.toString());
    }
    recorder.start();
}

public void Stop()
{
    recorder.stop();
    recorder.reset();
    recorder.release();
}
}

我几乎在整个万维网上搜索了答案,但找不到。 我还请求了录制音频的权限,并在我的模拟器中看到该应用程序有权使用麦克风。

【问题讨论】:

    标签: java android microphone mediarecorder


    【解决方案1】:

    模拟器没有麦克风...你必须在真实设备上使用它。

    【讨论】:

    • 事实证明确实如此。我使用了另一个项目中的相同代码,该代码可以在我的笔记本电脑上运行,但我买了一台新的(笔记本电脑)并没有考虑到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-05
    • 2011-01-04
    • 2013-10-29
    • 1970-01-01
    • 2021-03-17
    相关资源
    最近更新 更多