如何针对特定来电提供定制振动

2024-02-17

该程序的功能如下:用户有一个电话号码列表,只有当没有其他系统范围的应用程序提供振动(例如在静音模式下)时,手机才会在来电时振动。我知道这在某种程度上违反了规则,因为应用程序应该尊重用户的设置,但应用程序仅限于某些有此需求的用户。我尝试了两种方法,但都不令人满意:

  1. 监听电话状态,用我自己的模式直接触发振动服务(用Vibrator.vibrate())。此方法无来电时有效,开机时随机有效CALL_STATE_RINGING状态,我猜这是因为与实际处理来电时振动的系统范围应用程序发生冲突。

  2. 判断来电时手机是否震动(AudioManager.shouldVibrate()),并决定是否更改振动设置(用AudioManager.setRingerMode() and AudioManager.setVibrateSetting())。如果我的应用程序更改了振动设置,则一旦手机恢复正常,它们就会恢复CALL_STATE_IDLE状态。然而,这种方法有时仍然不起作用,而且没有任何原因的迹象。

我希望有人可以就这个问题提供一些建议。欢迎对这两种方式发表评论或其他建议。


您需要使用两种设置才能使手机振动。第一个是声音模式,需要使用AudioManager来设置:

AudioManager audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
audioManager.setRingerMode(targetSoundMode);

第二部分没有正确记录,我相信这是代码中缺少的部分:

String VIBRATE_IN_SILENT_SETTING_NAME = "vibrate_in_silent";
Settings.System.putInt(getContentResolver(), VIBRATE_IN_SILENT_SETTING_NAME, 1);

使用 1 打开振动,使用 0 关闭振动。

要完全了解如何使用振动设置和模式,请查看以下链接:http://hi-android.info/src/com/android/settings/SoundSettings.java.html http://hi-android.info/src/com/android/settings/SoundSettings.java.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何针对特定来电提供定制振动 的相关文章

随机推荐