相关疑难解决方法(0)

AudioRecord:start()状态-38

我有以下问题:我使用SpeechRecognizer来识别几个单词.我用

public void onResults
Run Code Online (Sandbox Code Playgroud)

销毁SpeechRecognizer的方法.

在破坏之后我初始化AudioRecord并从麦克风开始录音.这导致我的logcat中出现以下错误:

12-09 00:44:01.976: E/AudioRecord(21185): start() status -38
Run Code Online (Sandbox Code Playgroud)

我的代码中没有异常.AudioRecord无法正常启动.我假设SpeechRecognizer没有足够快地释放麦克风,因为如果我在AudioRecord初始化之前添加Thread.sleep(200),我不会遇到这个问题.

由于显而易见的原因,此解决方案非常糟 因此,我有以下问题:

如何检查AudioRecord是否已正确初始化?(我的代码中没有异常.)

_audioRecord.getState() == AudioRecord.STATE_UNINITIALIZED
Run Code Online (Sandbox Code Playgroud)

也是假的.

或者我如何检查SpeechRecognizer是否正确释放麦克风?

非常感谢!

android audiorecord

14
推荐指数
2
解决办法
5922
查看次数

Android AudioRecord - 第二次不会初始化

Hej,我目前正试图让AudioRecord工作.因为我需要一个更大的项目.但它似乎搞得很多.我一直在尝试很多东西,所以当我追踪这个bug时我回到了基础.我正在使用我的三星Galaxy S作为我的调试设备.

我的问题是,第一次重启我的设备后,我可以初始化我创建的AudioRecord对象没有问题.但是第二次运行它时,它不会初始化AudioRecord对象.我已经尝试了几个频率,fyi.

这是我的代码:

package android.audiorecordtest;

import android.app.Activity;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;

public class AudioRecordTest extends Activity {

    int frequency;
    AudioRecord audRec;
    TextView txtVw;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        txtVw = (TextView) findViewById(R.id.txtVw);


        frequency=8000;
        int bufferSize=(AudioRecord.getMinBufferSize(frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT))*2;
        if (bufferSize>0) {
            audRec = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize);
                int status = audRec.getState();
        if (status == …
Run Code Online (Sandbox Code Playgroud)

audio android alsa sample-rate android-audiorecord

13
推荐指数
2
解决办法
1万
查看次数

使用Android AudioRecorder录制.Wav

我已经阅读了很多关于Android的AudioRecorder的网页.您可以在问题下方看到它们的列表.

我正在尝试使用AudioRecorder录制音频,但效果不佳.

public class MainActivity extends Activity {

AudioRecord ar = null;
int buffsize = 0;

int blockSize = 256;
boolean isRecording = false;
private Thread recordingThread = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


}

public void baslat(View v)
{
            // when click to START 
    buffsize = AudioRecord.getMinBufferSize(44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT);
    ar = new AudioRecord(MediaRecorder.AudioSource.MIC, 44100, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, buffsize);

    ar.startRecording();

    isRecording = true;
    recordingThread = new Thread(new Runnable() {
        public void run() {
            writeAudioDataToFile();
        }
    }, "AudioRecorder Thread"); …
Run Code Online (Sandbox Code Playgroud)

android audiorecord

12
推荐指数
2
解决办法
3万
查看次数

Android AudioRecord read总是返回-3(ERROR_INVALID_OPERATION)

我已经尝试将代码简化为最低限度,但它仍然无效:

public class MainActivity extends AppCompatActivity {

AudioRecord rec;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rec=  new AudioRecord(MediaRecorder.AudioSource.MIC,44100, AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT,8192);

    short buff[] = new short[8192];
    int read = rec.read(buff,0,buff.length);
    System.out.print(read);
}
Run Code Online (Sandbox Code Playgroud)

无论如何,总是返回-3.我错过了什么?

java android audiorecord

8
推荐指数
1
解决办法
1473
查看次数

Android AudioRecord不会初始化

我正在尝试实现一个监听麦克风输入(特别是呼吸)的应用程序,并根据它提供数据.我正在使用Android类AudioRecord,在尝试实例化AudioRecord时,我得到了三个错误.

AudioRecord: AudioFlinger could not create record track, status: -1
AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
Run Code Online (Sandbox Code Playgroud)

我发现这个优秀的线程:AudioRecord对象没有初始化

我从已接受的答案中借用了代码,尝试所有采样率,音频格式和通道配置以尝试解决问题,但它没有帮助,我得到了所有设置的上述错误.我还根据线程中的一个答案在几个地方添加了对AudioRecord.release()的调用,但它没有任何区别.

这是我的代码:

import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;
import android.util.Log;

public class SoundMeter {

private AudioRecord ar = null;
private int minSize;
private static int[] mSampleRates = new int[] { 8000, 11025, 22050, 32000, 44100 };

public boolean start() {
    ar = findAudioRecord();
    if(ar != null){
        ar.startRecording();
        return …
Run Code Online (Sandbox Code Playgroud)

java multithreading android audiorecord

7
推荐指数
1
解决办法
7942
查看次数

引起:java.lang.IllegalStateException:在未初始化的AudioRecord上调用startRecording()

我得到的错误就像开始录制()在Android 2.3.4版本的手机(LG)中称为未初始化的音频录制,它在Android 2.2中正常工作但在android 2.3中抛出错误.

android

6
推荐指数
1
解决办法
7449
查看次数

AudioRecord对象未在项目中初始化

当我尝试使用以下代码通过我的Nexus 5录制音频时

record = new AudioRecord(MediaRecorder.AudioSource.MIC, sampleRate, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_8BIT, BYTE_OF_SAMPLE * bufferSampleSize);
record.startRecording();
Run Code Online (Sandbox Code Playgroud)

然后我在logcat中得到以下异常:

E/AudioRecord: AudioFlinger could not create record track, status: -1
E/AudioRecord-JNI: Error creating AudioRecord instance: initialization check failed with status -1.
E/android.media.AudioRecord: Error code -20 when initializing native AudioRecord object.
E/AndroidRuntime: FATAL EXCEPTION: Thread-855
E/AndroidRuntime: Process: com.*.*, PID: 14206
E/AndroidRuntime: java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
E/AndroidRuntime:     at android.media.AudioRecord.startRecording(AudioRecord.java:885)
E/AndroidRuntime:     at com.*.*.MainActivity$Looper.run(MainActivity.java:265)
E/Surface: getSlotFromBufferLocked: unknown buffer: 0x9e476d00
Run Code Online (Sandbox Code Playgroud)

我在清单文件中添加了以下行.

<uses-permission android:name="android.permission.RECORD_AUDIO" />
Run Code Online (Sandbox Code Playgroud)

我已经测试了AudioRecord对象未初始化.这些解决方案都不起作用.

但它在另一个项目中工作.有什么遗漏?

java android sampling

6
推荐指数
1
解决办法
2520
查看次数

Android 中的音频录制和流式传输

我正在开发一个 android 应用程序。我想完成以下功能。我将使用手机的内置麦克风进行录音,同时我希望通过手机的扬声器或耳机播放录制的音频。可行吗?如果是,请帮助我。

android audio-recording audio-streaming

2
推荐指数
1
解决办法
4930
查看次数