Невозможно использовать MediaRecorder на эмуляторе Android. Неправильно ли место хранения? - PullRequest
1 голос
/ 31 октября 2011

Я пытаюсь записать звук с помощью Android Emulator.Я знаю, что этот вопрос популярен в Интернете, я проверил много сообщений, кажется, что только один человек преуспел: Может ли эмулятор Android записывать и воспроизводить звук с использованием аппаратного обеспечения ПК? .(кажется, он использовал

File fTmFile; вместо String fTmpFile;

, который я тоже попробовал).И, следуя советам Филиппа и официальному учебнику сайта http://developer.android.com/guide/topics/media/audio-capture.html, а также другим ресурсам, я все еще не могу записать.Мое приложение выдает исключение в строке:

fMediaRecorder.prepare(); 

точнее, вот что я впервые получаю:

W / System.err (1042): java.io.FileNotFoundException:/mnt/sdcard/audiorecordtest.3gp (В доступе отказано)

, что заставляет меня думать, что с хранилищем что-то не так, потому что даже я добавил свойство 'SD Card Support' для эмулятора размером 256 МБЯ не могу получить к нему доступ, кроме того, я вижу в эмуляторе сообщение: «В телефоне не вставлена ​​SD-карта», когда я захожу в «Музыка».

Я добавил как аудиозапись, так и внешнююразрешения на хранение, в AndroidManifest.xml и обоих аппаратных настройках аудио (запись + воспроизведение) для эмулятора 2.3.3 на Win 7. Что-то не так в моем приложении, способ хранения файла или что-то еще?Пожалуйста, если у кого-то есть идеи, не стесняйтесь поделиться, это будет оценено.

Вот полный исходный код:

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();
  }
}

1 Ответ

0 голосов
/ 31 октября 2011

Попробуйте и посмотрите, работает ли он на Android 4.0.Я знаю, что у меня были некоторые проблемы с камерой в эмуляторе, в более низкой версии (ниже 4.0) она просто не распознает веб-камеру моего ноутбука.Но когда я попробовал это на 4.0, когда AVD загружался, появилось всплывающее сообщение и спросил меня, хочу ли я подключить веб-камеру к AVD, и как только я согласился, что это работает.Вопрос тоже касался камеры, и изменение версии AVD на 4.0 помогло ему.

Возможно, то же самое относится и к записи звука, так как оба являются внешним оборудованием для типичного ПК.

...