2011-02-03 29 views
5

我開始爲Android開發,並且使用Eclipse與Android插件和Android SDK一起使用。無法聽到從eclipse啓動的Android SDK模擬器的任何音頻

無論我做什麼,我都無法讓模擬器發出任何聲音。

我試着在虛擬設備設置中打開音頻。

我還試圖在運行配置的各種命令線,如:

  • -audio oss ====此得到一個錯誤消息沒有定義OSS後端。
  • -useaudio ===出來作爲不是有效選項
  • -audion -winaudio ===啓動W/O錯誤,但仍沒有健全

如果我打開我的windows7音頻控制器我的筆記本電腦,我看到android虛擬機獲取自己的音量滑塊,但是當我移動或單擊該音頻滑塊時沒有任何聲音。 (其他音量滑塊產生正常的嗶聲。)

我一直在尋找「Android模擬器沒有聲音」幾個小時,但沒有運氣。

任何想法?

回答

2

問題不在於仿真程序沒有發出聲音(經過驗證,它不會在我的設備上運行),而是SoundPool類的一個未解決的問題。

我在logcat中查找並找到類似「sample 1 not ready」的引用。研究這個我終於找到了一個不明確的線程,提到它需要一段時間才能使用聲池(因此所有的聲音都應該在使用之前加載好)。

我修改了我的playSound方法來監視soundPool.play(...)方法調用的返回值。它返回正在運行的聲音流的ID,如果失敗則返回0(即「樣本1未準備就緒」)。

我所做的只是把它放到一個循環中,並且當soundPool.play(...)方法調用的返回值爲0時,我的線程睡眠了1 毫秒,然後再試一次。有了這個方法,我現在總是在 得到一個聲音。

作爲一個方面說明,我也一直在運行我的SDK的教程,設置爲Android 2.2而不是Android 2.3.1,因爲Android 2.2是安裝在我的設備上的一個Sprint LG optimus S LS670。

我已經在Android 2.2和Android 2.3.1虛擬設備上運行了我的修改代碼。

當我在舊的Android 2.2 VD上運行代碼時,它通常需要大約10到15個循環(因此延遲10到15毫秒)才能準備播放聲音。

當我在Android 2.3.1 VD上運行相同的代碼時,延遲更加糟糕,在它播放之前需要大約350毫秒的延遲 - 是的差不多慢35倍!

當我運行相同的代碼deplyed到我的設備運行Android 2.2,時間延遲大約是相同的在模擬器上運行它。

+0

你是如何得到它的工作?什麼是SoundPool?我的程序不使用這個類,但我仍然有同樣的問題,即模擬器沒有播放任何聲音。請參閱我的嘗試在這裏:http://stackoverflow.com/questions/18143032/can-the-android-emulator-play-audio – user13267 2013-08-09 10:25:07