首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AudioFlinger无法创建记录轨道,状态:-1,需要ifx帮助

AudioFlinger无法创建记录轨道,状态:-1,需要ifx帮助
EN

Stack Overflow用户
提问于 2013-12-20 06:32:56
回答 5查看 14.1K关注 0票数 19
代码语言:javascript
复制
public class AudioRecorderActivity extends Activity {

  private static final int RECORDER_SAMPLERATE        = 8000;
  private static final int RECORDER_CHANNELS          = AudioFormat.CHANNEL_IN_MONO;
  private static final int RECORDER_AUDIO_ENCODING    = AudioFormat.ENCODING_PCM_16BIT;
  private AudioRecord recorder                        = null;
  private static final String TAG                     = "AudioRecorderActivity";
  short[][]   buffers                                 = new short[256][160];
  int         ix                                      = 0;
  private boolean     stopped                         = false;

  private void startRecording() {

    android.os.Process.setThreadPriority(android.os.Process.THREAD_PRIORITY_URGENT_AUDIO);
    try {
      int N = AudioRecord.getMinBufferSize (  
                          RECORDER_SAMPLERATE, 
                          RECORDER_CHANNELS, 
                          RECORDER_AUDIO_ENCODING) * 20;

      recorder = new  AudioRecord(AudioSource.MIC,
                    RECORDER_SAMPLERATE, 
                    RECORDER_CHANNELS,
                    RECORDER_AUDIO_ENCODING,N );        

      recorder.startRecording();

      while(!stopped) {
        short[] buffer = buffers[ix++ % buffers.length];      
        N = recorder.read(buffer,0,buffer.length);
      }

    } 
    catch(Throwable x) { 
      Log.v(TAG,"Error reading voice audio",x);
      x.printStackTrace();
    } 
    finally { 
      stopped = true;
      stopRecording();
    }    
  }  
}

问:虽然代码片段是基于StackOverflow中的一个示例,但它不工作。请让我知道可能的错误是什么?

以下是错误消息

代码语言:javascript
复制
12-20 03:44:32.271: E/AudioRecord(224): AudioFlinger could not create record track, status: -1
12-20 03:44:32.271: E/AudioRecord-JNI(224): Error creating AudioRecord instance: initialization check failed.
12-20 03:44:32.271: E/AudioRecord-Java(224): [ android.media.AudioRecord ] Error code -20 when initializing native AudioRecord object.
EN

回答 5

Stack Overflow用户

发布于 2014-01-15 16:22:47

向AndroidManifest.xml添加record_audio权限

代码语言:javascript
复制
<uses-permission android:name="android.permission.RECORD_AUDIO" />
票数 45
EN

Stack Overflow用户

发布于 2016-05-21 07:06:16

在最新的Android版本中,似乎在更改清单中的权限后从Android Studio重新推送apk实际上并不会更改应用程序设置中的权限。这就是为什么上面的答案对我有效。我在清单中构建了一个没有RECORD_AUDIO权限的应用程序,并在日志中看到了权限错误(以及OP中的错误)。我将权限添加到我的清单中,并在设备上重新运行应用程序,日志中的权限错误不再存在,但我在操作中仍然收到错误。我转到我的系统、应用程序、应用程序管理器和MyApp ->权限,看到已列出录制音频,但仍处于关闭状态。手动打开它修复了它。

我想(但还没有确认),如果我一开始就在我的清单中建立了正确的权限,这对我来说应该是有效的。或者,从设备上卸载我的应用程序,然后重新安装,也可能会解决问题,但我也没有尝试过。

票数 13
EN

Stack Overflow用户

发布于 2016-07-20 07:33:35

android的预棉花糖版本的解决方案将与Olexij提到的相同...

代码语言:javascript
复制
<uses-permission android:name="android.permission.RECORD_AUDIO" />

然而,由于启动Android API23(棉花糖),这被认为是危险的权限,您必须在使用它的Activity中请求此权限。Dave的经验就是这样;如果你在Manifest中声明权限,但在运行时(至少第一次)不请求,那么它将显示在应用程序管理器的App权限中,但将保持关闭状态。

检查一下...

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20693001

复制
相关文章

相似问题

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