diff options
| -rw-r--r-- | services/core/java/com/android/server/broadcastradio/hal2/Convert.java | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/services/core/java/com/android/server/broadcastradio/hal2/Convert.java b/services/core/java/com/android/server/broadcastradio/hal2/Convert.java index 9730c9a1a380..ab5bef8b80a7 100644 --- a/services/core/java/com/android/server/broadcastradio/hal2/Convert.java +++ b/services/core/java/com/android/server/broadcastradio/hal2/Convert.java @@ -275,8 +275,18 @@ class Convert { return hwSel; } - static @NonNull ProgramSelector programSelectorFromHal( + private static boolean isEmpty( @NonNull android.hardware.broadcastradio.V2_0.ProgramSelector sel) { + if (sel.primaryId.type != 0) return false; + if (sel.primaryId.value != 0) return false; + if (sel.secondaryIds.size() != 0) return false; + return true; + } + + static @Nullable ProgramSelector programSelectorFromHal( + @NonNull android.hardware.broadcastradio.V2_0.ProgramSelector sel) { + if (isEmpty(sel)) return null; + ProgramSelector.Identifier[] secondaryIds = sel.secondaryIds.stream(). map(Convert::programIdentifierFromHal).map(Objects::requireNonNull). toArray(ProgramSelector.Identifier[]::new); @@ -364,7 +374,7 @@ class Convert { collect(Collectors.toList()); return new RadioManager.ProgramInfo( - programSelectorFromHal(info.selector), + Objects.requireNonNull(programSelectorFromHal(info.selector)), programIdentifierFromHal(info.logicallyTunedTo), programIdentifierFromHal(info.physicallyTunedTo), relatedContent, @@ -402,7 +412,7 @@ class Convert { public static @NonNull android.hardware.radio.Announcement announcementFromHal( @NonNull Announcement hwAnnouncement) { return new android.hardware.radio.Announcement( - programSelectorFromHal(hwAnnouncement.selector), + Objects.requireNonNull(programSelectorFromHal(hwAnnouncement.selector)), hwAnnouncement.type, vendorInfoFromHal(hwAnnouncement.vendorInfo) ); |