我开始为Android开发,我使用Eclipse与Android插件和Android SDK.
无论我做什么,我都无法让模拟器发出任何声音.
我尝试在虚拟设备设置中打开音频.
我还在运行配置中尝试了各种命令行,例如:
-audio oss ====这会收到一条错误消息,表明没有定义任何后端.-useaudio ===出现不是一个有效的选项-audion -winaudio ===开始没有错误但仍然没有声音如果我在笔记本电脑上打开我的windows7音频控制器,我看到android虚拟机有自己的音量滑块,但当我移动或点击该音频滑块时没有任何声音.(其他音量滑块会产生正常的哔声.)
我一直在寻找"Android模拟器没有声音"几个小时但没有运气.
有任何想法吗?
问题不在于模拟器不发出声音(事实证明它也无法在我的设备上工作),而是 SoundPool 类存在未解释的问题。
我查看了 logcat,发现了诸如“示例 1 未准备好”之类的引用。经过研究,我终于发现了一个模糊的线程,其中提到声音池准备好使用之前需要一些时间(因此所有声音都应该在使用之前加载好)。
我修改了 playSound 方法来监视 soundPool.play(...) 方法调用的返回值。它返回正在运行的声音流的 id,如果失败则返回 0(即“样本 1 未就绪”)。
我所做的就是将其放入循环中,当 soundPool.play(...) 方法调用的返回值为 0 时,我让线程休眠 1 毫秒,然后重试。有了这个方法,我现在总是能听到声音。
附带说明一下,我还使用针对 Android 2.2 而不是 Android 2.3.1 设置的 SDK 来运行教程,因为我的设备(Sprint LG optimus S LS670)上安装的是 Android 2.2。
我已经在 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 的设备上运行相同的代码时,时间延迟与在模拟器上运行的时间大致相同。
| 归档时间: |
|
| 查看次数: |
4731 次 |
| 最近记录: |