summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-10 07:25:15 +0000
committerAndroid Build Coastguard Worker <android-build-coastguard-worker@google.com>2022-05-10 07:25:15 +0000
commitbc7f5b09be0fd5c22fb25313cec1e94c5bd73eeb (patch)
tree570566844f54e0de1d84743cbd81322e352986be
parente7cb020b5dcf64f84bb5b50aeb33cc51530e3a00 (diff)
parentd52c1b46dc734a17afee894007a6ba689e681b10 (diff)
downloadLocalMediaPlayer-bc7f5b09be0fd5c22fb25313cec1e94c5bd73eeb.tar.gz
Change-Id: If32660137f4b728f2d34a43592d508cc2999000a
-rw-r--r--Android.bp4
-rw-r--r--AndroidManifest.xml3
-rw-r--r--res/values/strings.xml1
-rw-r--r--src/com/android/car/media/localmediaplayer/DataModel.java4
-rw-r--r--src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java2
-rw-r--r--src/com/android/car/media/localmediaplayer/Player.java26
6 files changed, 33 insertions, 7 deletions
diff --git a/Android.bp b/Android.bp
index 08c816f..b848243 100644
--- a/Android.bp
+++ b/Android.bp
@@ -15,6 +15,10 @@
//
// Proto dependencies
+package {
+ default_applicable_licenses: ["Android-Apache-2.0"],
+}
+
java_library {
name: "LocalMediaPlayer-proto",
srcs: ["proto/**/*.proto"],
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 22ece79..5535e6f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -20,9 +20,10 @@
<uses-sdk
android:minSdkVersion="23"
- android:targetSdkVersion="23" />
+ android:targetSdkVersion="29" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<application
android:allowBackup="true"
diff --git a/res/values/strings.xml b/res/values/strings.xml
index ac6d4a1..987f291 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -30,4 +30,5 @@
<string name="play">Play</string>
<string name="pause">Pause</string>
<string name="next">Next</string>
+ <string name="notification_channel_name">Media playback notifications</string>
</resources>
diff --git a/src/com/android/car/media/localmediaplayer/DataModel.java b/src/com/android/car/media/localmediaplayer/DataModel.java
index 3d4ee2f..30bf471 100644
--- a/src/com/android/car/media/localmediaplayer/DataModel.java
+++ b/src/com/android/car/media/localmediaplayer/DataModel.java
@@ -174,9 +174,9 @@ public class DataModel {
Uri albumArtUri = ContentUris.withAppendedId(ART_BASE_URI,
cursor.getLong(albumId));
try {
- InputStream dummy = mResolver.openInputStream(albumArtUri);
+ InputStream unused = mResolver.openInputStream(albumArtUri);
albumArt = albumArtUri.toString();
- dummy.close();
+ unused.close();
} catch (IOException e) {
// Ignored because the albumArt is intialized correctly anyway.
}
diff --git a/src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java b/src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java
index 26a440f..48a0ee5 100644
--- a/src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java
+++ b/src/com/android/car/media/localmediaplayer/LocalMediaBrowserService.java
@@ -128,7 +128,7 @@ public class LocalMediaBrowserService extends MediaBrowserService {
filter.addAction(ACTION_PAUSE);
filter.addAction(ACTION_NEXT);
filter.addAction(ACTION_PREV);
- registerReceiver(mNotificationReceiver, filter);
+ registerReceiver(mNotificationReceiver, filter, Context.RECEIVER_NOT_EXPORTED);
}
@Override
diff --git a/src/com/android/car/media/localmediaplayer/Player.java b/src/com/android/car/media/localmediaplayer/Player.java
index e39b394..5c5cab2 100644
--- a/src/com/android/car/media/localmediaplayer/Player.java
+++ b/src/com/android/car/media/localmediaplayer/Player.java
@@ -16,6 +16,7 @@
package com.android.car.media.localmediaplayer;
import android.app.Notification;
+import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
@@ -31,6 +32,7 @@ import android.media.session.MediaSession;
import android.media.session.MediaSession.QueueItem;
import android.media.session.PlaybackState;
import android.media.session.PlaybackState.CustomAction;
+import android.os.Build;
import android.os.Bundle;
import android.util.Log;
@@ -55,6 +57,7 @@ public class Player extends MediaSession.Callback {
private static final String TAG = "LMPlayer";
private static final String SHARED_PREFS_NAME = "com.android.car.media.localmediaplayer.prefs";
private static final String CURRENT_PLAYLIST_KEY = "__CURRENT_PLAYLIST_KEY__";
+ private static final String CHANNEL_ID = "com.android.car.media.localmediaplayer.player";
private static final int NOTIFICATION_ID = 42;
private static final int REQUEST_CODE = 94043;
@@ -143,11 +146,14 @@ public class Player extends MediaSession.Callback {
.addAction(prevAction)
.addAction(playAction)
.addAction(nextAction);
+
+ createNotificationChannel();
}
private Notification.Action makeNotificationAction(String action, int iconId, int stringId) {
PendingIntent intent = PendingIntent.getBroadcast(mContext, REQUEST_CODE,
- new Intent(action), PendingIntent.FLAG_UPDATE_CURRENT);
+ new Intent(action),
+ PendingIntent.FLAG_IMMUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Action notificationAction = new Notification.Action.Builder(iconId,
mContext.getString(stringId), intent)
.build();
@@ -235,7 +241,8 @@ public class Player extends MediaSession.Callback {
Intent prefsIntent = new Intent();
prefsIntent.setClass(mContext, PermissionsActivity.class);
prefsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- PendingIntent pendingIntent = PendingIntent.getActivity(mContext, 0, prefsIntent, 0);
+ PendingIntent pendingIntent =
+ PendingIntent.getActivity(mContext, 0, prefsIntent, PendingIntent.FLAG_IMMUTABLE);
Bundle extras = new Bundle();
extras.putString(Utils.ERROR_RESOLUTION_ACTION_LABEL,
@@ -378,7 +385,9 @@ public class Player extends MediaSession.Callback {
if (mQueue == null) {
return;
}
-
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ builder.setChannelId(CHANNEL_ID);
+ }
MediaDescription current = mQueue.get(mCurrentQueueIdx).getDescription();
Notification notification = builder
.setStyle(new Notification.MediaStyle().setMediaSession(mSession.getSessionToken()))
@@ -637,4 +646,15 @@ public class Player extends MediaSession.Callback {
safeAdvance();
}
};
+
+ private void createNotificationChannel() {
+ // Create the NotificationChannel, but only on API 26+ because
+ // the NotificationChannel class is new and not in the support library
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ CharSequence name = mContext.getString(R.string.notification_channel_name);
+ int importance = NotificationManager.IMPORTANCE_DEFAULT;
+ NotificationChannel channel = new NotificationChannel(CHANNEL_ID, name, importance);
+ mNotificationManager.createNotificationChannel(channel);
+ }
+ }
}