下面列出了android.app.NotificationChannel#shouldVibrate ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
/**
* @return The vibrate setting for a specific recipient. If that recipient has no channel, this
* will return the setting for the default message channel.
*/
public static synchronized boolean getMessageVibrate(@NonNull Context context, @NonNull Recipient recipient) {
if (!supported()) {
return getMessageVibrate(context);
}
NotificationManager notificationManager = ServiceUtil.getNotificationManager(context);
NotificationChannel channel = notificationManager.getNotificationChannel(recipient.getNotificationChannel());
if (!channelExists(channel)) {
Log.w(TAG, "Recipient didn't have a channel. Returning message default.");
return getMessageVibrate(context);
}
return channel.shouldVibrate();
}
@VisibleForTesting
void lockFieldsForUpdate(NotificationChannel original, NotificationChannel update) {
if (original.canBypassDnd() != update.canBypassDnd()) {
update.lockFields(NotificationChannel.USER_LOCKED_PRIORITY);
}
if (original.getLockscreenVisibility() != update.getLockscreenVisibility()) {
update.lockFields(NotificationChannel.USER_LOCKED_VISIBILITY);
}
if (original.getImportance() != update.getImportance()) {
update.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE);
}
if (original.shouldShowLights() != update.shouldShowLights()
|| original.getLightColor() != update.getLightColor()) {
update.lockFields(NotificationChannel.USER_LOCKED_LIGHTS);
}
if (!Objects.equals(original.getSound(), update.getSound())) {
update.lockFields(NotificationChannel.USER_LOCKED_SOUND);
}
if (!Arrays.equals(original.getVibrationPattern(), update.getVibrationPattern())
|| original.shouldVibrate() != update.shouldVibrate()) {
update.lockFields(NotificationChannel.USER_LOCKED_VIBRATION);
}
if (original.canShowBadge() != update.canShowBadge()) {
update.lockFields(NotificationChannel.USER_LOCKED_SHOW_BADGE);
}
}
private void loadNotificationRuleSettings() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O ||
mEditingRule == null || mEditingRule.settings == null ||
mEditingRule.settings.notificationChannelId == null)
return;
android.app.NotificationManager mgr = (android.app.NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
NotificationChannel channel =
mgr.getNotificationChannel(mEditingRule.settings.notificationChannelId);
mEditingRule.settings.soundEnabled = channel.getSound() != null;
mEditingRule.settings.soundUri = null;
if (channel.getSound() != null && !channel.getSound().equals(
RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)))
mEditingRule.settings.soundUri = channel.getSound().toString();
mEditingRule.settings.vibrationEnabled = channel.shouldVibrate();
if (channel.shouldVibrate())
mEditingRule.settings.vibrationDuration = channel.getVibrationPattern() == null ||
channel.getVibrationPattern().length != 2
? 0 : (int) channel.getVibrationPattern()[1];
mEditingRule.settings.lightEnabled = channel.shouldShowLights();
if (channel.shouldShowLights())
mEditingRule.settings.light = channel.getLightColor();
}
@SuppressWarnings("DoubleNegation")
private boolean hasNotificationRuleChanges() {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O ||
mEditingRule == null || mEditingRule.settings.notificationChannelId == null)
return false;
android.app.NotificationManager mgr = (android.app.NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
NotificationChannel channel =
mgr.getNotificationChannel(mEditingRule.settings.notificationChannelId);
Uri soundUri = mSoundEntry.getValue();
if (channel.getSound() != soundUri &&
(channel.getSound() == null || !channel.getSound().equals(soundUri)))
return true;
int vibrationDuration = mVibrationOptions[mVibrationEntry.getSelectedOption()];
if (channel.shouldVibrate() != (vibrationDuration != 0))
return true;
if (channel.shouldVibrate()) {
int channelVibrationDuration = channel.getVibrationPattern() == null ||
channel.getVibrationPattern().length != 2
? -1 : (int) channel.getVibrationPattern()[1];
if (channelVibrationDuration != vibrationDuration)
return true;
}
if (channel.shouldShowLights() != (mColorEntry.getSelectedColorIndex() != 0))
return true;
//noinspection RedundantIfStatement
if (channel.shouldShowLights() && channel.getLightColor() !=
(mColorEntry.getSelectedColorIndex() == -1 ? 0 : mColorEntry.getSelectedColor()))
return true;
return false;
}