}
private static AudioAttributes audioAttributesForNotification(Notification n) {
- return new AudioAttributes.Builder().setLegacyStreamType(n.audioStreamType).build();
+ if (n.audioAttributes != null
+ && !Notification.AUDIO_ATTRIBUTES_DEFAULT.equals(n.audioAttributes)) {
+ return n.audioAttributes;
+ }
+ return new AudioAttributes.Builder()
+ .setLegacyStreamType(n.audioStreamType)
+ .setUsage(AudioAttributes.usageForLegacyStreamType(n.audioStreamType))
+ .build();
}
void showNextToastLocked() {
import android.content.pm.PackageManager.NameNotFoundException;
import android.content.res.Resources;
import android.graphics.Bitmap;
+import android.media.AudioAttributes;
import android.service.notification.StatusBarNotification;
+
import com.android.internal.annotations.VisibleForTesting;
import java.io.PrintWriter;
pw.println(prefix + String.format(" defaults=0x%08x flags=0x%08x",
notification.defaults, notification.flags));
pw.println(prefix + " sound=" + notification.sound);
+ pw.println(prefix + " audioStreamType=" + notification.audioStreamType);
+ pw.println(prefix + " audioAttributes=" + notification.audioAttributes);
pw.println(prefix + String.format(" color=0x%08x", notification.color));
pw.println(prefix + " vibrate=" + Arrays.toString(notification.vibrate));
pw.println(prefix + String.format(" led=0x%08x onMs=%d offMs=%d",
}
public boolean isCategory(String category) {
- return Objects.equals(category, getNotification().category);
+ return Objects.equals(getNotification().category, category);
+ }
+
+ public boolean isAudioStream(int stream) {
+ return getNotification().audioStreamType == stream;
+ }
+
+ public boolean isAudioAttributesUsage(int usage) {
+ final AudioAttributes attributes = getNotification().audioAttributes;
+ return attributes != null && attributes.getUsage() == usage;
}
/**
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.database.ContentObserver;
+import android.media.AudioAttributes;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Handler;
private boolean isAlarm(NotificationRecord record) {
return record.isCategory(Notification.CATEGORY_ALARM)
- || record.isCategory(Notification.CATEGORY_EVENT);
+ || record.isCategory(Notification.CATEGORY_EVENT)
+ || record.isAudioStream(AudioManager.STREAM_ALARM)
+ || record.isAudioAttributesUsage(AudioAttributes.USAGE_ALARM);
}
private boolean isCall(NotificationRecord record) {