Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android AudioRecord无法初始化_Android_Android Emulator_Audiorecord_Android Audiorecord - Fatal编程技术网

Android AudioRecord无法初始化

Android AudioRecord无法初始化,android,android-emulator,audiorecord,android-audiorecord,Android,Android Emulator,Audiorecord,Android Audiorecord,我在使用Android的AudioRecord时遇到了一个问题。我已经在网上尽可能多地阅读了关于它的内容,但我似乎没有得到一个好的初始化。我试过Android 2.2仿真器、1.5仿真器和我的手机,一款运行Froyo的HTC。模拟器和我的手机初始化失败 我尝试过8000、11025和44100的采样率,单声道/立体声和单声道/立体声配置中的声道格式,8位和16位编码(8位使getMinBufferSize失败),以及麦克风和默认的音频源。在运行get状态(初始化失败)后,所有这些都会导致变量测试

我在使用Android的AudioRecord时遇到了一个问题。我已经在网上尽可能多地阅读了关于它的内容,但我似乎没有得到一个好的初始化。我试过Android 2.2仿真器、1.5仿真器和我的手机,一款运行Froyo的HTC。模拟器和我的手机初始化失败

我尝试过8000、11025和44100的采样率,单声道/立体声和单声道/立体声配置中的声道格式,8位和16位编码(8位使getMinBufferSize失败),以及麦克风和默认的音频源。在运行get状态(初始化失败)后,所有这些都会导致变量测试变为0

从我读到的所有内容来看,这应该正确初始化对象。我在buflen上使用了乘法器,使其范围从512(函数的结果)到102400,因为我听说HTC设备需要8192以上的值

为了测试我的问题,我做了一个新的小项目,尽可能简单地重新创建我的问题。我将所需的常量提取到本地int中,然后运行构造函数并访问getState方法以检查它是否有效

package com.example.audiorecordtest;

import android.app.Activity;
import android.os.Bundle;
import android.media.AudioFormat;
import android.media.AudioRecord;
import android.media.MediaRecorder;

public class audioRecordTest extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        int freq =8000;
        int chan = AudioFormat.CHANNEL_IN_MONO;
        int enc  = AudioFormat.ENCODING_PCM_16BIT;
        int src  = MediaRecorder.AudioSource.MIC;
        int buflen = AudioRecord.getMinBufferSize(freq, chan, enc);
        AudioRecord ar = new AudioRecord(src,freq,chan,enc,20*buflen);
        int test = ar.getState();
    }
}
--编辑--

请看比尔的回答

--结束编辑--

也许你应该检查一下你是否获得了正确的许可。
e、 g.如果您需要振动设备,则需要在AndroidManifest.xml文件中获取android.permission.VIBRATE。

我认为他的意思是您需要清单中的录制音频权限:

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


这对我来说很有效。

谢谢,我想我在没有意识到我必须这么做的情况下,有点太快地尝试让音频正常工作了。谢谢你。他为什么要用振动器呢?@汤姆,你让我高兴极了