Android 4.2.1 / 4.2.2通知以静默模式振动

时间:2013-03-04 15:58:04

标签: android android-4.2-jelly-bean android-notifications android-vibration

在Android 4.2.1之前,以下代码工作得很好

notification.audioStreamType = AudioManager.STREAM_RING;
notification.flags = notification.flags | Notification.FLAG_INSISTENT
        | Notification.FLAG_ONGOING_EVENT;
notificationManager.notify(ID_NOTIFICATION_SOUND, notification);

振动分开进行,具体取决于偏好设置的状态。

vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(vibr_pattern1, 0);

现在使用Android 4.2.1+,即使手机设置为静音(无振动)并设置为振动模式,即使振动的应用程序设置设置为关闭,也始终存在振动。 有趣的是,手机处于正常模式时没有振动。

如上所述,在4.2.1之前一切正常。

有人可以帮忙吗?谷歌改变了什么?它与this bug report相关吗?

的问候,
安德烈亚斯

2 个答案:

答案 0 :(得分:1)

我这样修好了:

//vibration workaround for android 4.2.1+
notification.vibrate = new long[]{0,0};
//end workaround

我手动添加“无振动”,如果用户选择振动,则使用Vibrator对象完成。如果没有,上面的代码可以保持一切安静。如前所述,在4.2.1 +

之前没有必要这样做

答案 1 :(得分:0)

我知道这是旧的。但对于一些正在寻找答案的人来说。你可以试试这个。

AudioManager audio = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
     Vibrator v = (Vibrator) this.getSystemService(Context.VIBRATOR_SERVICE);
    switch( audio.getRingerMode() ){
    case AudioManager.RINGER_MODE_NORMAL:
        try {
            Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
            Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification);
            r.play();
            v.vibrate(500);
        } catch (Exception e) {
            e.printStackTrace();
        }
       break;
    case AudioManager.RINGER_MODE_SILENT:
       break;
    case AudioManager.RINGER_MODE_VIBRATE:
         v.vibrate(500);
       break;
    }