以编程方式将通知振动强度降低到零

时间:2016-11-19 07:33:54

标签: android notifications

在我的应用程序中,我想在通知到来时关闭振动。我可以将通知声音静音但不能停止振动。

为了静音通知声音,我使用了以下代码:

 if (audioManager.getStreamVolume(AudioManager.STREAM_NOTIFICATION) != value) {
        audioManager.setStreamVolume(AudioManager.STREAM_NOTIFICATION, value, 0);
        Utils.log("Volume Changed to " + value);
    }

请建议如何将通知振动强度更改为零,或建议在通知到达时取消振动的其他方法。

audio.setVibrateSetting(AudioManager.VIBRATE_TYPE_NOTIFICATION,
        AudioManager.VIBRATE_SETTING_OFF);

setVibrateSetting不起作用且不推荐使用

我可以通过以下方式手动更改三星设备中通知的振动强度:

  1. 转到设置
  2. 转到“我的设备”标签
  3. 点击声音并打开“振动强度”
  4. 选择来电,通知和触觉反馈的振动强度
  5. 但是我怎么能以编程方式进行呢?请帮忙。

2 个答案:

答案 0 :(得分:2)

通常在手机和类似设备中small dis-balanced motor causes the vibration when its powered on实施振动。 除开/关外,该电机通常无法控制,因此您可以控制振动持续时间,而不是它的水平。

在这种情况下,您可以使用Pulse-width modulation (PWM)方法(如图所示)来控制振动强度:设置一段时间T(例如1秒)和第一次900毫秒({{ 1}})将振动设置为开启和100毫秒(tv1) - 保持振动关闭。超过800毫秒(ts1)设置振动打开和200毫秒(tv2) - 保持振动等,直到振动时间变为0。

PWM vibration control

Vibrator课程中实施的Android振动器控制。

建议@Rohit J,您可以使用振动模式(描述here),例如:

ts2

并将其添加到long[] pattern = { 0, // start vibrate immediately 900, // vibrate 1 900 ms 100, // silence 1 100 ms 800, // vibrate 2 800 ms 200, // silence 2 200 ms 700, 300, 600, 400, 500, 500, 400, 600, 300, 700, 200, 800, 100, 900, };

Notification

NB!此外,您可以创建(手动或编程)更复杂的振动控制模式,以实现更平滑的强度变化(例如,不会产生长的固体振动脉冲但是很短且减少振动的持续时间,但是脉冲的数量,例如{{ 3}})。

答案 1 :(得分:0)

此问题的唯一问题是保持静音模式。在最新版本的android中,我们无法关闭默认振动。