代码之家  ›  专栏  ›  技术社区  ›  Jerry Agin

在Nexus 7棉花糖上初始化AudioRecorder

  •  1
  • Jerry Agin  · 技术社区  · 9 年前

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

    我买了一台用过的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上却失败了?我应该怀疑我的硬件有故障吗?发生什么事?

    1 回复  |  直到 9 年前
        1
  •  3
  •   geNia    9 年前

    在Android 6.0棉花糖中,引入了一种使用权限的新方法。

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

    Check this link for more information