【问题标题】:Initializing AudioRecorder on Nexus 7 Marshmallow在 Nexus 7 Marshmallow 上初始化 AudioRecorder
【发布时间】:2015-12-22 16:37:57
【问题描述】:

我的程序已在六台测试设备上成功运行,数百名显然很高兴从 Google Play 下载我的应用的用户。

我购买了升级到 Marshmallow 的二手 Nexus 7,但无法录制。该设备可以正常运行其他录音应用,但无法运行我的应用。

这里有一些代码:

private static AudioRecord recorder = null;

public static void record() throws IllegalArgumentException
{
    int channelConfig = AudioFormat.CHANNEL_IN_MONO;
    int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
    int sampleRate = 44100;
    int minSize = AudioRecord.getMinBufferSize(sampleRate, channelConfig, audioFormat );
    int latencySize = 3584;
    int inputBufferSize = Math.max( minSize, latencySize );
    recorder = new AudioRecord( MediaRecorder.AudioSource.DEFAULT, sampleRate, channelConfig, audioFormat, inputBufferSize );
    int state = recorder.getState();
    if ( state != AudioRecord.STATE_INITIALIZED )
    {
        if ( recorder != null )
            recorder.release();
        recorder = null;
        throw new IllegalArgumentException( "Failed to initialize Audio recorder.  State = " + state );
    }
    recorder.startRecording();
    Thread inputThread = new Thread( new Runnable() { public void run() { inputTask(); } }, "Input" );
    inputThread.setPriority( Thread.MAX_PRIORITY );
    inputThread.start();
}

这会失败,状态为 0,与 STATE_UNINITIALIZED 相同。

我的 AndroidManifest.xml 包括

<uses-permission android:name="android.permission.RECORD_AUDIO"/>

正如我所说,这段代码在数百台其他机器上成功运行,但在我的 Nexus 7 上却失败了。Marshmallow 有什么新的不同之处吗?我应该怀疑我的硬件有问题吗?怎么回事?

【问题讨论】:

    标签: android android-6.0-marshmallow audiorecord


    【解决方案1】:

    在 Android 6.0 Marshmallow 中引入了一种使用权限的新方法。

    现在应该在运行时询问一些权限,用户可以选择,是否允许。

    Check this link for more information

    【讨论】:

    • 为什么 piep 没有在任何地方被告知...花了我一天的时间^_^
    • @DipSwitch,它是,但不是无处不在。在 Android 6 中被告知了很多关于新权限系统的信息,但并非无处不在。
    猜你喜欢
    • 1970-01-01
    • 2016-06-04
    • 1970-01-01
    • 2011-10-11
    • 2013-11-25
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多