PhoneGap 的 vibrate() 和 beep() 函数在 iPhone、Android 模拟器中中断
Posted
技术标签:
【中文标题】PhoneGap 的 vibrate() 和 beep() 函数在 iPhone、Android 模拟器中中断【英文标题】:PhoneGap's vibrate() and beep() functions break in iPhone, Android emulators 【发布时间】:2011-02-22 02:15:53 【问题描述】:我有一个 PhoneGap 应用,我正在 webOS、android 和 iPhone 上进行测试。我正在使用物理设备和模拟器(它们各自的 SDK 附带的,而不是 PhoneGap emulator)。
部分代码使用了navigator.notification.vibrate()
和navigator.notification.beep()
函数。
我使用的所有物理设备要么执行该行为,要么在它们不具备此功能时忽略它(例如,iPod 无法振动)。但是,模拟器的行为有所不同。
只要调用beep()
函数,Android 模拟器就会终止应用程序。每当调用 vibrate()
函数时,iPhone 模拟器都会导致应用挂起。
有没有办法让模拟器在无法执行这些函数调用时忽略它们?也就是说,有没有办法让它们优雅地降级,这样我就可以在两个地方测试应用程序,而无需专门为模拟器修改代码?
【问题讨论】:
【参考方案1】:我不认为这是模拟器的问题。我可以在我的原生应用程序中同时使用振动和音频警报。这些都在模拟器中运行良好。我认为问题在于 PhoneGap 如何在本机代码中处理这些功能。您是否建议这些功能在设备上工作而不是在模拟器上工作?
【讨论】:
没错。设备本身做得很好(只要它们具有振动/哔哔声的物理能力),但仿真器有时会死机。是否有适用于模拟器的 PhoneGap 解决方法?以上是关于PhoneGap 的 vibrate() 和 beep() 函数在 iPhone、Android 模拟器中中断的主要内容,如果未能解决你的问题,请参考以下文章
更改 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate) 的持续时间
permissions required by Vibrator.vibrate: android.permission.VIBRATE
如果有除使用 kSystemSoundID_Vibrate 之外的其他振动方法