之前不需要这样做
在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;
}