Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/180.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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 Emulator上使用MediaRecorder。存储位置是否错误?_Android_Android Emulator_Mediarecorder - Fatal编程技术网

无法在Android Emulator上使用MediaRecorder。存储位置是否错误?

无法在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

我正在尝试使用Android Emulator录制声音。我知道这个问题在网上很流行,我查了很多帖子,似乎只有一个人成功了:。(我想他用过

文件fTmFile;而不是字符串fTmpFile

我也试过了)。根据Philip的建议和官方网站教程以及其他资源,我仍然无法记录。我的应用程序在第行抛出异常:

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设备,应用程序在上面运行。你是什么意思?给出问题的细节。