Android 4.2.1 / 4.2.2通知在静音模式下震动



在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之前一切正常。

有人能帮忙吗?谷歌在这里改变了什么?这和这个bug报告有关吗?

问候,
Andreas

我这样修复它:

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

我手动添加"无振动",如果用户选择振动,则使用Vibrator对象完成。如果不是,上面的代码将保持一切安静。如前所述,在4.2.1+

之前不需要这样做

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

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;
    }

相关内容

  • 没有找到相关文章

最新更新