aboutsummaryrefslogtreecommitdiff
path: root/TestMediaApp
diff options
context:
space:
mode:
Diffstat (limited to 'TestMediaApp')
-rw-r--r--TestMediaApp/build.gradle6
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java49
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/phone/TmaLauncherActivity.java22
-rw-r--r--TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java8
4 files changed, 56 insertions, 29 deletions
diff --git a/TestMediaApp/build.gradle b/TestMediaApp/build.gradle
index 79fd66d..6711d6d 100644
--- a/TestMediaApp/build.gradle
+++ b/TestMediaApp/build.gradle
@@ -18,11 +18,11 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 28
+ compileSdkVersion 30
defaultConfig {
applicationId "com.android.car.media.testmediaapp"
- minSdkVersion 21
- targetSdkVersion 28
+ minSdkVersion 28
+ targetSdkVersion 30
versionCode 1
versionName "1.0"
}
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
index 3c3eeb6..61b3a31 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/TmaBrowser.java
@@ -33,7 +33,9 @@ import androidx.annotation.Nullable;
import androidx.media.MediaBrowserServiceCompat;
import com.android.car.media.testmediaapp.loader.TmaLoader;
+import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs;
import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaAccountType;
+import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaBrowseNodeType;
import com.android.car.media.testmediaapp.prefs.TmaEnumPrefs.TmaReplyDelay;
import com.android.car.media.testmediaapp.prefs.TmaPrefs;
@@ -72,6 +74,10 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
private BrowserRoot mRoot;
+ public TmaBrowser() {
+ super();
+ }
+
@Override
public void onCreate() {
super.onCreate();
@@ -91,14 +97,9 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
mediaSessionExtras.putString(BROWSE_SERVICE_FOR_SESSION_KEY, TmaBrowser.class.getName());
mSession.setExtras(mediaSessionExtras);
- mPrefs.mAccountType.registerChangeListener(
- (oldValue, newValue) -> onAccountChanged(newValue));
-
- mPrefs.mRootNodeType.registerChangeListener(
- (oldValue, newValue) -> invalidateRoot());
-
- mPrefs.mRootReplyDelay.registerChangeListener(
- (oldValue, newValue) -> invalidateRoot());
+ mPrefs.mAccountType.registerChangeListener(mOnAccountChanged);
+ mPrefs.mRootNodeType.registerChangeListener(mOnRootNodeTypeChanged);
+ mPrefs.mRootReplyDelay.registerChangeListener(mOnReplyDelayChanged);
Bundle browserRootExtras = new Bundle();
browserRootExtras.putBoolean(SEARCH_SUPPORTED, true);
@@ -109,23 +110,33 @@ public class TmaBrowser extends MediaBrowserServiceCompat {
@Override
public void onDestroy() {
+ mPrefs.mAccountType.unregisterChangeListener(mOnAccountChanged);
+ mPrefs.mRootNodeType.unregisterChangeListener(mOnRootNodeTypeChanged);
+ mPrefs.mRootReplyDelay.unregisterChangeListener(mOnReplyDelayChanged);
mSession.release();
mHandler = null;
mPrefs = null;
super.onDestroy();
}
- private void onAccountChanged(TmaAccountType accountType) {
- if (PLAYBACK_STATE_UPDATE_FIRST.equals(mPrefs.mLoginEventOrder.getValue())) {
- updatePlaybackState(accountType);
- invalidateRoot();
- } else {
- invalidateRoot();
- (new Handler()).postDelayed(() -> {
- updatePlaybackState(accountType);
- }, 3000);
- }
- }
+ private final TmaPrefs.PrefValueChangedListener<TmaAccountType> mOnAccountChanged =
+ (oldValue, newValue) -> {
+ if (PLAYBACK_STATE_UPDATE_FIRST.equals(mPrefs.mLoginEventOrder.getValue())) {
+ updatePlaybackState(newValue);
+ invalidateRoot();
+ } else {
+ invalidateRoot();
+ (new Handler()).postDelayed(() -> {
+ updatePlaybackState(newValue);
+ }, 3000);
+ }
+ };
+
+ private final TmaPrefs.PrefValueChangedListener<TmaBrowseNodeType> mOnRootNodeTypeChanged =
+ (oldValue, newValue) -> invalidateRoot();
+
+ private final TmaPrefs.PrefValueChangedListener<TmaReplyDelay> mOnReplyDelayChanged =
+ (oldValue, newValue) -> invalidateRoot();
private void updatePlaybackState(TmaAccountType accountType) {
if (accountType == TmaAccountType.NONE) {
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/phone/TmaLauncherActivity.java b/TestMediaApp/src/com/android/car/media/testmediaapp/phone/TmaLauncherActivity.java
index 84f481f..014e81e 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/phone/TmaLauncherActivity.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/phone/TmaLauncherActivity.java
@@ -52,13 +52,21 @@ public class TmaLauncherActivity extends AppCompatActivity {
// Get the token for the MediaSession
MediaSessionCompat.Token token = mediaBrowser.getSessionToken();
- // Create a MediaControllerCompat
- MediaControllerCompat controller =
- new MediaControllerCompat(TmaLauncherActivity.this, token);
-
- // Save the controller
- MediaControllerCompat.setMediaController(
- TmaLauncherActivity.this, controller);
+ try {
+ // Create a MediaControllerCompat
+ MediaControllerCompat controller =
+ new MediaControllerCompat(TmaLauncherActivity.this, token);
+ // Save the controller
+ MediaControllerCompat.setMediaController(
+ TmaLauncherActivity.this, controller);
+ } catch (Exception ex) {
+ // ToDo: b/166328624 Workaround for an Android Studio Build error:
+ // unreported exception RemoteException
+ // Whereas as an Android Soong Build error:
+ // RemoteException is never thrown
+ Log.e(TAG, "Failed to create MediaControllerCompat", ex);
+ return;
+ }
}
};
diff --git a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java
index 8e9d89f..dd08cd2 100644
--- a/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java
+++ b/TestMediaApp/src/com/android/car/media/testmediaapp/prefs/TmaPrefs.java
@@ -110,6 +110,14 @@ public class TmaPrefs {
mSharedPrefs.registerOnSharedPreferenceChangeListener(listenerWrapper);
mListeners.put(listener, listenerWrapper);
}
+
+ public void unregisterChangeListener(PrefValueChangedListener<T> listener) {
+ OnSharedPreferenceChangeListener listenerWrapper = mListeners.get(listener);
+ if (listenerWrapper != null) {
+ mSharedPrefs.unregisterOnSharedPreferenceChangeListener(listenerWrapper);
+ mListeners.remove(listener);
+ }
+ }
}