gpt4 book ai didi

android - 接收来电时振动设置未关闭 - Android

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:04:51 27 4
gpt4 key购买 nike

我想在来电时关闭设备振动设置。我已经为此功能实现了 BroadcastReceiver,它执行接收 PHONE_STATE 广播的操作。问题是我根本无法关闭振动。我尝试了以下方法:

AudioManager audioManager = (AudioManager)
context.getSystemService(Context.AUDIO_SERVICE);
audioManager.setVibrateSetting(AudioManager.VIBRATE_TYPE_RINGER,
AudioManager.VIBRATE_SETTING_OFF);

Vibrator vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();

第一种方法对我来说似乎很理想。它甚至可以在接到电话时“打开”振动。但是,在这种情况下我无法将它们“关闭”。

有人试过吗?

编辑:我检查了 Android 的电话应用程序代码。 Ringer.java 中存在以下代码:

if (shouldVibrate() && mVibratorThread == null) {
mContinueVibrating = true;
mVibratorThread = new VibratorThread();
mVibratorThread.start();
}

线程最初由振动手机的电话应用程序启动。当我将振动设置更改为关闭时,将跳过此检查,但已经启动的线程继续运行。

这也解释了如何在来电时打开振动。在那种情况下,线程最初没有运行。然后,当我打开振动设置时它就会启动。如果不更改电话应用程序,我认为没有任何解决方案。

最佳答案

这个:

Vibrator vib = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vib.cancel();

不会帮助您,因为它会取消振动器的新实例。

我可以想象,如果振动已经在进行中,那么如果来电已经来电,那么关闭设备振动为时已晚。因此,您必须在来电之前执行此操作。

关于android - 接收来电时振动设置未关闭 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8065862/

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