我在使用 Android 版 AudioRecord 时遇到问题。我已经在网上阅读了尽可能多的内容,但我似乎无法获得良好的初始化。我尝试过 Android 2.2 模拟器、1.5 模拟器和我的手机(运行 Froyo 的 HTC Incredible)。模拟器和我的手机初始化失败。
我尝试过8000、11025和44100的采样率,CHANNEL_IN_MONO/STEREO和CHANNEL_CONFIGURATION_MONO/STEREO的格式,8位和16位编码(8位使getMinBufferSize失败),以及MIC和DEFAULT的AudioSource。所有这些都会导致变量 test 在运行 get state 后变为 0(初始化失败)。
从我读到的所有内容看来,这应该正确初始化对象。我在 buflen 上尝试过乘数,使其范围从 512(函数的结果)到 102400,因为我听说 HTC 设备需要高于 8192 的值。
为了测试我的问题,我创建了一个新的小项目,尽可能简单地重现我的问题。我将所需的常量提取到本地整数中,然后运行构造函数并访问 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();
}
}
我认为他的意思是你需要清单中的 RECORD_AUDIO 权限:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
这对我有用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)