无法在Android Emulator上使用MediaRecorder。存储位置是否错误?
我正在尝试使用Android Emulator录制声音。我知道这个问题在网上很流行,我查了很多帖子,似乎只有一个人成功了:。(我想他用过 文件fTmFile;而不是字符串fTmpFile 我也试过了)。根据Philip的建议和官方网站教程以及其他资源,我仍然无法记录。我的应用程序在第行抛出异常:无法在Android Emulator上使用MediaRecorder。存储位置是否错误?,android,android-emulator,mediarecorder,Android,Android Emulator,Mediarecorder,我正在尝试使用Android Emulator录制声音。我知道这个问题在网上很流行,我查了很多帖子,似乎只有一个人成功了:。(我想他用过 文件fTmFile;而不是字符串fTmpFile 我也试过了)。根据Philip的建议和官方网站教程以及其他资源,我仍然无法记录。我的应用程序在第行抛出异常: fMediaRecorder.prepare(); 更准确地说,这是我第一次得到的: W/System.err(1042):java.io.FileNotFoundException:/mnt/sd
fMediaRecorder.prepare();
更准确地说,这是我第一次得到的:
W/System.err(1042):java.io.FileNotFoundException:/mnt/sdcard/audiorecordtest.3gp(权限被拒绝)
这让我觉得存储位置有问题,因为即使我为大小为256 MiB的仿真器添加了“SD卡支持”属性,我也无法访问它,而且我可以在仿真器中看到这样的消息:当我进入音乐时:“您的手机没有插入SD卡”
我在AndroidManifest.xml中将音频录制和外部存储权限以及音频(录制+播放)硬件设置添加到Win7上的emulator 2.3.3中。我的应用程序、文件存储方式或其他方面是否有问题?如果有任何人有任何想法,请随意分享,我们将不胜感激
以下是完整的源代码:
import java.io.File;
import java.io.FileDescriptor;
import java.io.IOException;
import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class RecordSoundActivity extends Activity {
private MediaRecorder fMediaRecorder = null;
private Button btnrecord;
private Button btnstop;
String fTmpFile;
public RecordSoundActivity() {
fTmpFile = Environment.getExternalStorageDirectory().getPath();
fTmpFile += "/audiorecordtest.3gp";
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnrecord = (Button) findViewById(R.id.button1);
btnstop = (Button) findViewById(R.id.button2);
btnrecord.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Toast.makeText(RecordSoundActivity.this, "Recording...", Toast.LENGTH_LONG).show();
Recording();
}
});
btnstop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
fMediaRecorder.stop();
fMediaRecorder.release();
}
});
}
public void Recording() {
fMediaRecorder = new MediaRecorder();
fMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
fMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
fMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
fMediaRecorder.setAudioChannels(1);
fMediaRecorder.setAudioSamplingRate(8000);
fMediaRecorder.setOutputFile(fTmpFile);
try {
fMediaRecorder.prepare();
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
try {
fMediaRecorder.start();
} catch (IllegalStateException e) {
// TODO: handle exception
e.printStackTrace();
}
//fMediaRecorder.stop();
//fMediaRecorder.release();
}
}
试试看它是否适用于Android 4.0。我知道我在模拟器中的摄像头有一些问题,在较低版本(低于4.0)中,它无法识别我的笔记本电脑网络摄像头。但当我在4.0上试用时,当AVD加载时,弹出一条消息,问我是否要将网络摄像头连接到AVD,我同意后,它工作了 苏的另一张海报也问了这个问题,关于相机,将AVD版本改为4.0确实帮助了他
也许录音也一样,因为它们都是典型PC的外部硬件。谢谢,但我的4.0Android模拟器不工作,我不知道为什么,我已经更新了SDK,但当我尝试启动它时,崩溃了。需要更新Eclipse才能与Android Emulator 4配合使用吗?是的,需要更新ADT。转到Eclipse,选择菜单“帮助”并选择“检查更新”,然后更新ADT.SDK已完全更新,安装了所有Android4.0功能,没有可用的更新,但它仍然有奇怪的行为。我仍在等待人员的响应,以查看存储位置是否有问题。谢谢。我买了一台新的Nexus S设备,应用程序在上面运行。你是什么意思?给出问题的细节。