Не слышно звука из Android SDK, эмулятор запущен из Eclipse - PullRequest
5 голосов
/ 03 февраля 2011

Я начинаю разрабатывать для Android и использую Eclipse с плагином Android и Android SDK.

Что бы я ни делал, я не могу заставить эмулятор издавать звук.

Я попытался включить звук в настройке виртуального устройства.

Я также пробовал различные командные строки в конфигурации запуска, такие как:

  • -audio oss ==== при этом появляется сообщение об ошибке, что бэкэнд oss не определен.
  • -useaudio === является недопустимым параметром
  • -audion -winaudio === запускается без ошибки, но звук по-прежнему отсутствует

Если я открою свой аудиоконтроллер Windows7 на своем ноутбуке, я увижу, что виртуальная машина Android получает свой собственный слайдер громкости, но ничего не звучит, когда я двигаюсь или нажимаю на этот аудио слайдер. (Другие ползунки громкости воспроизводят нормальный звуковой сигнал.)

Я искал "эмулятор Android без звука" несколько часов, но не повезло.

Есть идеи?

1 Ответ

2 голосов
/ 05 февраля 2011

Проблема была не в том, что эмулятор не издает звук (что подтверждается тем фактом, что он не будет работать и на моем устройстве), а в неучтенной проблеме с классом SoundPool.

Я посмотрел в logcat и нашел ссылки типа "образец 1 не готов". Исследуя это, я наконец нашел неясную тему, в которой упоминалось, что требуется некоторое время, прежде чем пул звуков будет готов к использованию (и, следовательно, все звуки должны быть загружены задолго до их использования).

Я изменил свой метод playSound, чтобы отслеживать возвращаемое значение вызова метода soundPool.play (...). Он возвращает идентификатор запущенного звукового потока или 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 мс), прежде чем sounspool был готов воспроизвести звук.

Когда я запускал тот же код на Android 2.3.1 VD, задержка была НАМНОГО хуже, с задержкой в ​​350 мс, прежде чем она заработала - да, почти в 35 раз медленнее!

Когда я запускал тот же код, запущенный на моем устройстве под управлением Android 2.2, время задержки было примерно таким же, как при запуске его на эмуляторе.

...