2013-08-09 3 views
4

녹음 된 사운드를 전화기의 스피커로 전달하고 싶지만 기록 코드가 작동하지 않습니다 (앱이 손상됨, SEE MY ATTEMPT HERE). 이제 에뮬레이터가 작동하는지 확인하려고합니다. 오디오와 관련된 모든 일을 할 수 있습니다. wav (16 비트 pcm, 44k 샘플링 주파수, 모노)와 mp3 (Audacity를 통해 녹음 및 변환 모두)에서 1 초 녹음을 sdcard로 복사했습니다. IDE의 파일 탐색기에서 파일을 볼 수 있으므로 에뮬레이터에서 sdcard가 제대로 감지되고있는 것 같습니다. 하지만 필자는 에뮬레이터에 내장 된 뮤직 플레이어로 그들을 탐지하지 못했습니다 (왜?).안드로이드 에뮬레이터에서 오디오를 재생할 수 있습니다.

두 번째 시도로 코드 HERE을 샘플 hello world Android 앱에 복사했습니다. 다음은 주요 활동 클래스입니다.

public class MainActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // String PATH_TO_FILE = "/sdcard/asMP3.mp3"; 
     // String PATH_TO_FILE = Environment.getExternalStorageDirectory().getPath()+"/asMP3.mp3"; 
     String PATH_TO_FILE = Environment.getExternalStorageDirectory().getPath()+"/wavSigned16bitPCM.wav"; 
     MediaPlayer mp1 = new MediaPlayer(); 
     try 
     { 

      mp1.setDataSource(PATH_TO_FILE); 
      mp1.prepare(); 
      mp1.start(); 
      Toast.makeText(getApplicationContext(), "HERE", Toast.LENGTH_SHORT).show(); 
     } 
     catch (IllegalArgumentException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     catch (IllegalStateException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     catch (IOException e) 
     { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 
} 

앱 시작과 동시에 사운드 재생이 시작된다고 가정했습니다. Toast이 나타나서 코드가 실행 중임을 알고 있습니다. 프로그램이 충돌하지 않지만이 경우에는 아무 소리도 들리지 않습니다. (이유는 무엇입니까?)

세번째 시도로 코드 HERE을 사용하여 재생하려고하는 파일을 res\raw에 추가했습니다. . 이 프로그램도 충돌하지 않지만 여전히 아무 것도들을 수 없습니다.

에뮬레이터에서 오디오와 관련된 모든 작업을 수행 할 수 있습니까? THIS QUESTION을 보면 이것이 가능해야하는 것처럼 보입니다. 그럼 내 프로그램에서 왜 그렇게되지 않습니까? 오디오 출력을 위해 그가 명시한 모든 권한을 설정해야합니까?

---- 편집 은 암탉이

나는 또한 THIS를 봐 왔지만, 나는 -useaudio 옵션을 사용하는 경우 에뮬레이터 그냥 -useaudio 알 수없는 옵션이다라고하고, emulator -help가 표시되지 않습니다

입니다 ---- 개발자 웹 사이트에서 옵션으로 명확하게 표시되며 기본적으로 useaudio가 기본적으로 활성화되어 있다고합니다. 그렇다면 내 에뮬레이터에서 소리가 나는 이유는 무엇입니까?

--- UPDATE ---
에뮬레이터 스냅 샷을 사용하기 시작 한 경우 오디오 기능이 작동하지 않는 것 같다. 그렇지 않은 경우 컴퓨터에 따라 오디오 기능이 여전히 작동하거나 작동하지 않을 수 있습니다. 참조하십시오 HERE

답변

2

예, 에뮬레이터에서 오디오 관련 작업을 수행 할 수 있습니다. 귀하의 코드 시퀀스가 ​​있어야한다

-

mp1 = new MediaPlayer(); 
mp1.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mp1.setDataSource(PATH_TO_FILE); 
mp1.prepare(); 
mp1.start(); 

그리고 매니페스트 파일에 권한을 설정하기위한

. 기능을 재생 녹음 기능 -

이들에 대한

사용이가 -

공식 안드로이드 개발자 웹 사이트에 안내 글이

Guide to audio captureGuide to media playback

및 그것이 작동하지 않으면 로그 고양이 스크린 샷을 게시하십시오.

+0

https://developer.android.com/guide/topics/media/audio-capture.html에 "Android 에뮬레이터에는 오디오 캡처 기능이 없지만 실제 장치는 이러한 기능을 제공 할 가능성이 있습니다. " – droidballoon

+0

예 에뮬레이터 자체에는 오디오 캡처 기능이 없지만 호스트 PC에 마이크가 설치되어 있으면 오디오를 캡처 할 수 있습니다. 참고 : [나는 이것을 시도하지는 않았지만 시도해 볼 수 있습니다.] (http://stackoverflow.com/questions/5254994/can-the-android-emulator-record-and-play-back-audio-using) -pc-hardware) –

관련 문제