在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相关吗?
的问候,
安德烈亚斯
答案 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;
}