gpt4 book ai didi

android - 如何为特定来电提供自定义振动

转载 作者:IT老高 更新时间:2023-10-28 23:00:59 27 4
gpt4 key购买 nike

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

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

  2. 来电时判断手机是否震动(AudioManager.shouldVibrate()),决定是否改变震动设置(AudioManager.setRingerMode() AudioManager.setVibrateSetting())。如果我的应用程序更改了振动设置,一旦手机回到 CALL_STATE_IDLE 状态,它们将被恢复。但是,这种方法有时仍然不起作用,没有任何原因。

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

最佳答案

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

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

关于android - 如何为特定来电提供自定义振动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8800348/

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