gpt4 book ai didi

安卓;检测设备中的振动设置是打开还是关闭,尤其是当它响了但不振动的情况

转载 作者:行者123 更新时间:2023-12-05 00:17:33 25 4
gpt4 key购买 nike

应用要求:检测手机何时开启振动设置关闭的响铃模式所以问题归结为:检测振动设置是关闭还是打开

相关信息:

首先, Vibrator没有像 isVibratorModeOn() 这样的方法,并且 Flags related to VibrateEXTRA_VIBRATE_...都标记为已弃用:

This constant was deprecated in API level 16. Applications should maintain their own vibrate policy based on current ringer mode that can be queried via getRingerMode().

但在getRingerMode()下,我们不会确切地知道振动设置是否关闭与 RINGER_MODE_NORMAL ;

It will vibrate if the vibrate setting is on.

现在 getVibrateSetting()也已弃用。

用于在*大多数设备和操作系统上检测 RINGER_MODE 的代码版本包括 Android M on Nexus 6 :

 if(audioManager.getRingerMode()!=AudioManager.RINGER_MODE_SILENT){
if (audioManager.getStreamVolume(AudioManager.STREAM_RING) != 0) {

*异常(exception):Nexus 5 - 5.1.1,可能适用于所有 Lollipop 版本

如果遗漏了这一点,或者我因遗漏了一些明显的东西而犯了大(最)愚蠢的错误,我感到非常惊讶。希望这不是浪费您的时间。

这里再解释一下问题:
RINGER_MODE_SILENT涵盖的场景: Scenario Covered - ringer silent mode

RINGER_MODE_VIBRATE 场景涵盖: Scenario Covered - ringer vibrate mode

检测到这是问题所在:
Problem senario - ringer volume high, vibrate setting off

Android M、Nexus 6 的屏幕截图

最佳答案

更新:

解决方案有点曲折,在其中一个循环中使用了一种已弃用的方法,它在我测试过的所有设备上都有效;那些品牌;摩托罗拉、三星、htc、lg、小米、micromax、索尼

audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);

if (audioManager.getRingerMode() != AudioManager.RINGER_MODE_SILENT) {
//ensuring it is not on silent
if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_VIBRATE) {
// if it is on vibrate mode , esp for api 23
} else if (audioManager.getStreamVolume(AudioManager.STREAM_RING) != 0) {
// else check whether the volume is not 0
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.LOLLIPOP_MR1) {
if (audioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER) == AudioManager.VIBRATE_SETTING_ON
|| audioManager.getVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER) == AudioManager.VIBRATE_SETTING_ONLY_SILENT) { //need to add this to detect a specific scenario in xiaomi device
// if the device o.s version is not 23 this part works
}
}
if ((1 == Settings.System.getInt(ApplicationController.getInstance().getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING, 0))) {
// the constant VIBRATE_WHEN_RINGING was added in api 23
}
}

关于安卓;检测设备中的振动设置是打开还是关闭,尤其是当它响了但不振动的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com