2011-03-10 34 views
9

我沒有安卓手機,但我正在努力爲它開發。目前測試我的應用程序的唯一方法是使用我讀過的模擬器不支持音頻錄製。不過,我讀到了啓動命令「-audio」,它允許您的電腦使用'winaudio'後端進行音頻輸入/輸出。雖然我一直無法使用它,但有可能使用我的電腦麥克風進行錄製嗎?如果是這樣,我做錯了什麼?Android模擬器可以使用PC硬件錄製和播放音頻嗎?

回答

2

我的知識:爲了能夠使用MediaRecorder,您需要構建整個源,以便您可以使用錄製工具以及您提到的選項。

  • 獲取您定位的android版本的源代碼。
  • 通過構建通用的圖像:(即選擇通用的選擇,而不是仿真器)
    1. . build/envsetup.sh
    2. lunch 1
    3. make -j<number>其中number = #cores通過你的電腦支持;排除尖括號
  • cd out/target/.../generic,...表示其餘的路徑達到通用;將環境變量ANDROID_PRODUCTION_OUT設置爲此目錄。
  • 使用-audio選項從out/host /.../ bin目錄運行模擬器。

這應該是理想的工作。

默認的sdk不支持您的用例,因爲您在此處有正確提及。

+0

我在窗口,我剛纔讀的構建源代碼只可能在OSX和Linux操作系統。它是否正確?有沒有其他方法? – Steve 2011-03-10 03:45:39

+0

我認爲這是正確的。另外:對於Froyo而言,你需要32位的Linux;對於薑餅和以上,你需要64位的Linux。我不知道有任何其他方式... – Mno 2011-03-10 04:16:30

6

至少在Windows 7的標準2.3.3模擬器中可以錄製音頻;我已經嘗試過,它的工作原理。然而,在我的情況下,錄製的音頻聽起來有點怪(慢)。我沒有調查原因。

您需要將音頻錄製+播放支持添加到模擬器(Android SDK和AVD管理器 - >虛擬設備 - >編輯 - >硬件 - >新建)。然後使用[MediaRecorder API] [1]錄製(MediaRecorder.AudioSource.MIC)。

代碼是:

fMediaRecorder= new MediaRecorder(); 
fMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
fMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); 
fMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

fMediaRecorder.setAudioChannels(1); 
fMediaRecorder.setAudioSamplingRate(8000); 

fMediaRecorder.setOutputFile(fTmpFile.getAbsolutePath()); 

fMediaRecorder.prepare(); 

fMediaRecorder.start(); 

您還需要

<uses-permission android:name="android.permission.RECORD_AUDIO"/> 

AndroidManifest.xml

對我的作品,但聲音失真。

+0

你會請上傳一些在Windows7上工作的源代碼來記錄聲音在Android模擬器?我真的需要它。 – 2011-08-25 13:33:17

+0

添加了我的答案的代碼。 – Tom 2011-08-28 17:02:35

+0

好的,謝謝你的回覆。我已經完成了我自己的。它的工作也在1.6。 – 2011-08-29 04:05:43

相關問題