我有一个闹钟应用程序,一些用户抱怨手机在闹钟期间振动,而振动应该被禁用。
经过一些挖掘,我发现,在一些设备上有一个系统选项,设备沿着报警音乐振动.例如,在我的测试像素4它位于设置-〉声音&振动-〉振动&Heptics-〉报警振动.
默认情况下启用的此设置导致的是,振动试图“模拟”通过MediaPlayer播放的音乐,我无法找到一种方法来防止从应用程序内发生这种情况,甚至无法检测是否存在/启用了此类设置。
有谁知道如何摆脱这种情况吗?下面是我用于测试的示例方法:
private fun startThePlayer(context: Context, playInLoop: Boolean = true) {
try {
mediaPlayer.reset()
mediaPlayer.isLooping = playInLoop
val uri = Settings.System.DEFAULT_RINGTONE_URI
mediaPlayer.setDataSource(context, uri)
mediaPlayer.setOnPreparedListener {
mediaPlayer.start()
}
mediaPlayer.prepareAsync()
} catch (e: Exception) {
log(e.toString())
}
}
VIBRATE权限是工作所必需的。
Android 13对Pixel 4的影响:设备正在振动,好像试图“模拟”播放的音乐。振动强度取决于设备设置中的值,完全忽略闹钟音乐的音量设置,并且还扰乱了直接在我的应用程序中设置的任何振动。
有趣的是,由于某种原因,Android的默认时钟应用程序忽略了此设置,设备在闹钟期间不会振动。
2条答案
按热度按时间nbysray51#
首先,我建议你使用android的
VibratorManager
来控制你的应用程序的振动设置(这是android开发团队如何称呼这项服务的...多么奇怪)。使用getDefaultVibrator
和cancel
方法来停止你的应用程序产生的任何振动(官方文档来拯救)第二,因为你的应用是一个闹钟,请考虑使用
setWakeMode
,这将允许你保持你的应用在后台运行,而不管显示器(为了防止闹钟停止,如果屏幕关闭)。希望您能找到合适的组合来满足您的需求
lsmd5eda2#
我遇到了同样的问题,解决方法是在媒体播放器上调用
setAudioAttributes
: