0

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

有人可以帮忙吗?谷歌在这里改变了什么?它与此错误报告有关吗?

问候,
安德烈亚斯

4

2 回答 2

1

我这样修复它:

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

我手动添加“无振动”,如果用户选择振动,它是用一个Vibrator物体完成的。如果没有,上面的代码会让一切保持安静。如前所述,这在 4.2.1+ 之前不是必需的

于 2013-03-07T16:22:13.703 回答
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;
    }
于 2014-04-24T18:14:55.237 回答