在 Nexus 7 Marshmallow 上初始化 AudioRecorder
Initializing AudioRecorder on Nexus 7 Marshmallow
我有一个程序已 运行 在六台测试设备上成功运行,并且有数百名显然很高兴的用户从 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 6.0 Marshmallow 中引入了一种使用权限的新方法。
现在在运行时会询问一些权限,用户可以选择是否允许。
我有一个程序已 运行 在六台测试设备上成功运行,并且有数百名显然很高兴的用户从 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 6.0 Marshmallow 中引入了一种使用权限的新方法。
现在在运行时会询问一些权限,用户可以选择是否允许。