diff options
37 files changed, 84 insertions, 83 deletions
@@ -18,7 +18,7 @@ android_app { name: "UniversalMediaPlayer", sdk_version: "current", srcs: [ - "gen/**/*.java", // TODO Remove gen/ (either generate or remove dependencies) + "gen/**/*.java", // TODO(b/123702784) Remove gen/ (either generate or remove dependencies) "java/**/*.java" ], static_libs: [ @@ -27,7 +27,7 @@ android_app { "com.google.android.material_material" ], optimize: { - // TODO Re-enable. Currently disabled due to issues with androidx.media2_media2-exoplayer + // TODO(b/123703963) Re-enable. Currently disabled due to issues with media2-exoplayer enabled: false } } diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 6fe4fd8..b7681c8 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -70,11 +70,11 @@ </intent-filter> </activity> - <!-- TODO Handle music app intents; + <!-- TODO(b/123711288) Handle music app intents; https://developer.android.com/reference/android/content/Intent.html#CATEGORY_APP_MUSIC https://developer.android.com/reference/android/provider/MediaStore.html#INTENT_ACTION_MUSIC_PLAYER --> - <!-- TODO Handle play from search; + <!-- TODO(b/123711069) Handle play from search; https://developer.android.com/guide/components/intents-common#PlaySearch https://developer.android.com/reference/android/provider/MediaStore.html#INTENT_ACTION_MEDIA_PLAY_FROM_SEARCH https://developer.android.com/reference/android/provider/MediaStore#INTENT_ACTION_MEDIA_SEARCH diff --git a/build.gradle b/build.gradle index 95f5e29..4cdc53f 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ android { compileSdkVersion 28 buildToolsVersion '28.0.3' defaultConfig { - minSdkVersion 19 // TODO: Lower to 16 after media2-widget supports 16 + minSdkVersion 19 // TODO(b/123716038) Lower to 16 after media2-widget supports 16 targetSdkVersion 28 versionCode 1 versionName '1.0' @@ -57,7 +57,7 @@ repositories { jcenter() google() - // TODO: Remove before releasing and after stable media2 is released + // TODO(b/123716096) Remove before releasing and after stable media2 is released maven { url "$rootDir/../../../prebuilts/sdk/current/androidx/m2repository" } } diff --git a/gen/com/android/pump/BuildConfig.java b/gen/com/android/pump/BuildConfig.java index 1e2e7ab..e457b91 100644 --- a/gen/com/android/pump/BuildConfig.java +++ b/gen/com/android/pump/BuildConfig.java @@ -16,7 +16,7 @@ package com.android.pump; -// TODO This file is generated by gradle; Figure out what to do when using make instead +// TODO(b/123702784) This file is generated by gradle; Figure out what to do when using make instead public final class BuildConfig { private BuildConfig() { } diff --git a/java/com/android/pump/activity/AlbumDetailsActivity.java b/java/com/android/pump/activity/AlbumDetailsActivity.java index 05ae341..a30466b 100644 --- a/java/com/android/pump/activity/AlbumDetailsActivity.java +++ b/java/com/android/pump/activity/AlbumDetailsActivity.java @@ -36,7 +36,7 @@ public class AlbumDetailsActivity extends AppCompatActivity { public static void start(@NonNull Context context, @NonNull Album album) { Intent intent = new Intent(context, AlbumDetailsActivity.class); - // TODO Pass URI instead + // TODO(b/123704452) Pass URI instead intent.putExtra("id", album.getId()); // TODO Add constant key context.startActivity(intent); } diff --git a/java/com/android/pump/activity/ArtistDetailsActivity.java b/java/com/android/pump/activity/ArtistDetailsActivity.java index 0ce4320..9e4f0f1 100644 --- a/java/com/android/pump/activity/ArtistDetailsActivity.java +++ b/java/com/android/pump/activity/ArtistDetailsActivity.java @@ -36,7 +36,7 @@ public class ArtistDetailsActivity extends AppCompatActivity { public static void start(@NonNull Context context, @NonNull Artist artist) { Intent intent = new Intent(context, ArtistDetailsActivity.class); - // TODO Pass URI instead + // TODO(b/123704452) Pass URI instead intent.putExtra("id", artist.getId()); // TODO Add constant key context.startActivity(intent); } diff --git a/java/com/android/pump/activity/AudioPlayerActivity.java b/java/com/android/pump/activity/AudioPlayerActivity.java index d2cb029..66016e3 100644 --- a/java/com/android/pump/activity/AudioPlayerActivity.java +++ b/java/com/android/pump/activity/AudioPlayerActivity.java @@ -41,7 +41,7 @@ public class AudioPlayerActivity extends AppCompatActivity { private VideoView mVideoView; public static void start(@NonNull Context context, @NonNull Audio audio) { - // TODO Find a better URI (audio.getUri()?) + // TODO(b/123702587) Find a better URI (audio.getUri()?) Uri uri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, audio.getId()); Intent intent = new Intent(Intent.ACTION_VIEW, uri); diff --git a/java/com/android/pump/activity/GenreDetailsActivity.java b/java/com/android/pump/activity/GenreDetailsActivity.java index 8587495..e7dea5c 100644 --- a/java/com/android/pump/activity/GenreDetailsActivity.java +++ b/java/com/android/pump/activity/GenreDetailsActivity.java @@ -36,7 +36,7 @@ public class GenreDetailsActivity extends AppCompatActivity { public static void start(@NonNull Context context, @NonNull Genre genre) { Intent intent = new Intent(context, GenreDetailsActivity.class); - // TODO Pass URI instead + // TODO(b/123704452) Pass URI instead intent.putExtra("id", genre.getId()); // TODO Add constant key context.startActivity(intent); } diff --git a/java/com/android/pump/activity/MovieDetailsActivity.java b/java/com/android/pump/activity/MovieDetailsActivity.java index 60a1b6f..7fd5764 100644 --- a/java/com/android/pump/activity/MovieDetailsActivity.java +++ b/java/com/android/pump/activity/MovieDetailsActivity.java @@ -41,7 +41,7 @@ public class MovieDetailsActivity extends AppCompatActivity implements MediaDb.U public static void start(@NonNull Context context, @NonNull Movie movie) { Intent intent = new Intent(context, MovieDetailsActivity.class); - // TODO Pass URI instead + // TODO(b/123704452) Pass URI instead intent.putExtra("id", movie.getId()); // TODO Add constant key context.startActivity(intent); } @@ -136,7 +136,7 @@ public class MovieDetailsActivity extends AppCompatActivity implements MediaDb.U imageView.setImageURI(mMovie.getThumbnailUri()); posterView.setImageURI(mMovie.getPosterUri()); titleView.setText(mMovie.getTitle()); - attributesView.setText("1h 20m"); // TODO Implement + attributesView.setText("1h 20m"); // TODO(b/123707108) Implement synopsisView.setText(mMovie.getSynopsis()); ImageView playView = findViewById(R.id.activity_movie_details_play); diff --git a/java/com/android/pump/activity/OtherDetailsActivity.java b/java/com/android/pump/activity/OtherDetailsActivity.java index 5f2a8dc..1a02d25 100644 --- a/java/com/android/pump/activity/OtherDetailsActivity.java +++ b/java/com/android/pump/activity/OtherDetailsActivity.java @@ -45,7 +45,7 @@ public class OtherDetailsActivity extends AppCompatActivity implements MediaDb.U public static void start(@NonNull Context context, @NonNull Other other) { Intent intent = new Intent(context, OtherDetailsActivity.class); - // TODO Pass URI instead + // TODO(b/123704452) Pass URI instead intent.putExtra("id", other.getId()); // TODO Add constant key context.startActivity(intent); } @@ -141,7 +141,7 @@ public class OtherDetailsActivity extends AppCompatActivity implements MediaDb.U StringBuilder attributes = new StringBuilder(); if (mOther.hasDuration()) { long dur = mOther.getDuration(); - // TODO Move to string resource + // TODO(b/123706525) Move to string resource String duration = String.format("%dm %ds", TimeUnit.MILLISECONDS.toMinutes(dur), TimeUnit.MILLISECONDS.toSeconds(dur) - @@ -150,13 +150,13 @@ public class OtherDetailsActivity extends AppCompatActivity implements MediaDb.U attributes.append('\n'); } if (mOther.hasDateTaken()) { - // TODO Better formatting + // TODO(b/123707011) Better formatting String date = DateFormat.getLongDateFormat(this).format(new Date(mOther.getDateTaken())); attributes.append(date); attributes.append('\n'); } if (mOther.hasLatLong()) { - // TODO Use Geocoder; https://developer.android.com/training/location/display-address + // TODO(b/123706523) Decode GPS coordinates double latitude = mOther.getLatitude(); double longitude = mOther.getLongitude(); String latlong = String.format("%f %f", latitude, longitude); diff --git a/java/com/android/pump/activity/PlaylistDetailsActivity.java b/java/com/android/pump/activity/PlaylistDetailsActivity.java index 2b6d12a..7c506a5 100644 --- a/java/com/android/pump/activity/PlaylistDetailsActivity.java +++ b/java/com/android/pump/activity/PlaylistDetailsActivity.java @@ -36,7 +36,7 @@ public class PlaylistDetailsActivity extends AppCompatActivity { public static void start(@NonNull Context context, @NonNull Playlist playlist) { Intent intent = new Intent(context, PlaylistDetailsActivity.class); - // TODO Pass URI instead + // TODO(b/123704452) Pass URI instead intent.putExtra("id", playlist.getId()); // TODO Add constant key context.startActivity(intent); } diff --git a/java/com/android/pump/activity/SeriesDetailsActivity.java b/java/com/android/pump/activity/SeriesDetailsActivity.java index 81effe6..c912335 100644 --- a/java/com/android/pump/activity/SeriesDetailsActivity.java +++ b/java/com/android/pump/activity/SeriesDetailsActivity.java @@ -36,7 +36,7 @@ public class SeriesDetailsActivity extends AppCompatActivity { public static void start(@NonNull Context context, @NonNull Series series) { Intent intent = new Intent(context, SeriesDetailsActivity.class); - // TODO Pass URI instead + // TODO(b/123704452) Pass URI instead intent.putExtra("title", series.getTitle()); // TODO Add constant key if (series.hasYear()) { intent.putExtra("year", series.getYear()); // TODO Add constant key diff --git a/java/com/android/pump/activity/VideoPlayerActivity.java b/java/com/android/pump/activity/VideoPlayerActivity.java index 444ea0b..781169c 100644 --- a/java/com/android/pump/activity/VideoPlayerActivity.java +++ b/java/com/android/pump/activity/VideoPlayerActivity.java @@ -49,7 +49,7 @@ public class VideoPlayerActivity extends AppCompatActivity { private long mSavedPosition = SessionPlayer.UNKNOWN_TIME; public static void start(@NonNull Context context, @NonNull Video video) { - // TODO Find a better URI (video.getUri()?) + // TODO(b/123703220) Find a better URI (video.getUri()?) Uri uri = ContentUris.withAppendedId(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, video.getId()); Intent intent = new Intent(Intent.ACTION_VIEW, uri); diff --git a/java/com/android/pump/app/GlobalsApplication.java b/java/com/android/pump/app/GlobalsApplication.java index 865b274..95d8bbe 100644 --- a/java/com/android/pump/app/GlobalsApplication.java +++ b/java/com/android/pump/app/GlobalsApplication.java @@ -26,7 +26,7 @@ public abstract class GlobalsApplication extends Application implements Globals. @Override public void onTrimMemory(int level) { super.onTrimMemory(level); - // TODO implement + // TODO(b/123038906) Implement } @Override diff --git a/java/com/android/pump/db/Album.java b/java/com/android/pump/db/Album.java index 1a0797f..bc65f65 100644 --- a/java/com/android/pump/db/Album.java +++ b/java/com/android/pump/db/Album.java @@ -26,7 +26,7 @@ import androidx.annotation.Nullable; public class Album { private final long mId; - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private String mTitle; private Uri mAlbumArtUri; private Artist mArtist; diff --git a/java/com/android/pump/db/Artist.java b/java/com/android/pump/db/Artist.java index 3cac63f..46416b7 100644 --- a/java/com/android/pump/db/Artist.java +++ b/java/com/android/pump/db/Artist.java @@ -28,7 +28,7 @@ import androidx.annotation.Nullable; public class Artist { private final long mId; - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private String mName; private final List<Album> mAlbums = new ArrayList<>(); private boolean mLoaded; diff --git a/java/com/android/pump/db/Audio.java b/java/com/android/pump/db/Audio.java index e2ee08c..f1b06a2 100644 --- a/java/com/android/pump/db/Audio.java +++ b/java/com/android/pump/db/Audio.java @@ -28,7 +28,7 @@ public class Audio { private final Uri mUri; private final String mMimeType; - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private String mTitle; private Artist mArtist; private Album mAlbum; diff --git a/java/com/android/pump/db/AudioStore.java b/java/com/android/pump/db/AudioStore.java index e867eeb..5585ea9 100644 --- a/java/com/android/pump/db/AudioStore.java +++ b/java/com/android/pump/db/AudioStore.java @@ -62,11 +62,11 @@ class AudioStore extends ContentObserver { mChangeListener = changeListener; mMediaProvider = mediaProvider; - // TODO Do we need content observer for other content uris? (E.g. album, artist) + // TODO(123705758) Do we need content observer for other content uris? (E.g. album, artist) mContentResolver.registerContentObserver(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, true, this); - // TODO When to call unregisterContentObserver? + // TODO(123705758) When to call unregisterContentObserver? // mContentResolver.unregisterContentObserver(this); } @@ -268,13 +268,13 @@ class AudioStore extends ContentObserver { long artistId = cursor.getLong(artistIdColumn); Artist artist = mMediaProvider.getArtistById(artistId); updated |= audio.setArtist(artist); - updated |= loadData(artist); // TODO Load separate from audio + updated |= loadData(artist); // TODO(b/123707561) Load separate from audio } if (!cursor.isNull(albumIdColumn)) { long albumId = cursor.getLong(albumIdColumn); Album album = mMediaProvider.getAlbumById(albumId); updated |= audio.setAlbum(album); - updated |= loadData(album); // TODO Load separate from audio + updated |= loadData(album); // TODO(b/123707561) Load separate from audio } } } finally { @@ -309,7 +309,7 @@ class AudioStore extends ContentObserver { } } - updated |= loadAlbums(artist); // TODO Load separate from artist + updated |= loadAlbums(artist); // TODO(b/123707561) Load separate from artist return updated; } @@ -347,7 +347,7 @@ class AudioStore extends ContentObserver { long artistId = cursor.getLong(artistIdColumn); Artist artist = mMediaProvider.getArtistById(artistId); updated |= album.setArtist(artist); - updated |= loadData(artist); // TODO Load separate from album + updated |= loadData(artist); // TODO(b/123707561) Load separate from album } } } finally { @@ -382,7 +382,7 @@ class AudioStore extends ContentObserver { } } - updated |= loadAudios(genre); // TODO Load separate from genre + updated |= loadAudios(genre); // TODO(b/123707561) Load separate from genre return updated; } @@ -411,7 +411,7 @@ class AudioStore extends ContentObserver { } } - updated |= loadAudios(playlist); // TODO Load separate from playlist + updated |= loadAudios(playlist); // TODO(b/123707561) Load separate from playlist return updated; } @@ -434,7 +434,7 @@ class AudioStore extends ContentObserver { long albumId = cursor.getLong(albumIdColumn); Album album = mMediaProvider.getAlbumById(albumId); updated |= artist.addAlbum(album); - //updated |= loadData(album); // TODO Load separate from artist + //updated |= loadData(album); // TODO(b/123707561) Load separate from artist } } finally { cursor.close(); @@ -460,7 +460,7 @@ class AudioStore extends ContentObserver { long audioId = cursor.getLong(audioIdColumn); Audio audio = mMediaProvider.getAudioById(audioId); updated |= genre.addAudio(audio); - updated |= loadData(audio); // TODO Load separate from genre + updated |= loadData(audio); // TODO(b/123707561) Load separate from genre } } finally { cursor.close(); @@ -487,7 +487,7 @@ class AudioStore extends ContentObserver { long audioId = cursor.getLong(audioIdColumn); Audio audio = mMediaProvider.getAudioById(audioId); updated |= playlist.addAudio(audio); - updated |= loadData(audio); // TODO Load separate from playlist + updated |= loadData(audio); // TODO(b/123707561) Load separate from playlist } } finally { cursor.close(); @@ -506,13 +506,13 @@ class AudioStore extends ContentObserver { @Override public void onChange(boolean selfChange, @Nullable Uri uri) { Clog.i(TAG, "onChange(" + selfChange + ", " + uri + ")"); - // TODO Figure out what changed + // TODO(123705758) Figure out what changed // onChange(false, content://media) // onChange(false, content://media/external) // onChange(false, content://media/external/audio/media/444) // onChange(false, content://media/external/video/media/328?blocking=1&orig_id=328&group_id=0) - // TODO Notify listener about changes + // TODO(123705758) Notify listener about changes // mChangeListener.xxx(); } diff --git a/java/com/android/pump/db/Episode.java b/java/com/android/pump/db/Episode.java index ce96dbf..cba4728 100644 --- a/java/com/android/pump/db/Episode.java +++ b/java/com/android/pump/db/Episode.java @@ -28,7 +28,7 @@ public class Episode extends Video { private final int mSeason; private final int mEpisode; - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private Uri mThumbnailUri; private Uri mPosterUri; private boolean mLoaded; diff --git a/java/com/android/pump/db/Genre.java b/java/com/android/pump/db/Genre.java index e75bfa8..a55b621 100644 --- a/java/com/android/pump/db/Genre.java +++ b/java/com/android/pump/db/Genre.java @@ -28,7 +28,7 @@ import androidx.annotation.Nullable; public class Genre { private final long mId; - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private String mName; private final List<Audio> mAudios = new ArrayList<>(); private boolean mLoaded; diff --git a/java/com/android/pump/db/MediaDb.java b/java/com/android/pump/db/MediaDb.java index 848c09b..d0cbf31 100644 --- a/java/com/android/pump/db/MediaDb.java +++ b/java/com/android/pump/db/MediaDb.java @@ -245,7 +245,7 @@ public class MediaDb implements MediaProvider { } public void loadData(@NonNull Audio audio) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (audio.isLoaded()) return; mExecutor.execute(() -> { @@ -259,7 +259,7 @@ public class MediaDb implements MediaProvider { } public void loadData(@NonNull Artist artist) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (artist.isLoaded()) return; mExecutor.execute(() -> { @@ -273,7 +273,7 @@ public class MediaDb implements MediaProvider { } public void loadData(@NonNull Album album) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (album.isLoaded()) return; mExecutor.execute(() -> { @@ -287,7 +287,7 @@ public class MediaDb implements MediaProvider { } public void loadData(@NonNull Genre genre) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (genre.isLoaded()) return; mExecutor.execute(() -> { @@ -301,7 +301,7 @@ public class MediaDb implements MediaProvider { } public void loadData(@NonNull Playlist playlist) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (playlist.isLoaded()) return; mExecutor.execute(() -> { @@ -314,9 +314,9 @@ public class MediaDb implements MediaProvider { }); } - // TODO Merge with loadData(episode)/loadData(other) + // TODO(b/123707018) Merge with loadData(episode)/loadData(other) public void loadData(@NonNull Movie movie) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (movie.isLoaded()) return; mExecutor.execute(() -> { @@ -336,7 +336,7 @@ public class MediaDb implements MediaProvider { } public void loadData(@NonNull Series series) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (series.isLoaded()) return; mExecutor.execute(() -> { @@ -355,9 +355,9 @@ public class MediaDb implements MediaProvider { }); } - // TODO Merge with loadData(movie)/loadData(other) + // TODO(b/123707018) Merge with loadData(movie)/loadData(other) public void loadData(@NonNull Episode episode) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (episode.isLoaded()) return; mExecutor.execute(() -> { @@ -376,9 +376,9 @@ public class MediaDb implements MediaProvider { }); } - // TODO Merge with loadData(movie)/loadData(episode) + // TODO(b/123707018) Merge with loadData(movie)/loadData(episode) public void loadData(@NonNull Other other) { - // TODO ensure no concurrent runs for the same item !! + // TODO(b/123707632) Ensure no concurrent runs for the same item !! if (other.isLoaded()) return; mExecutor.execute(() -> { diff --git a/java/com/android/pump/db/Movie.java b/java/com/android/pump/db/Movie.java index 31b4ae7..4bae2a3 100644 --- a/java/com/android/pump/db/Movie.java +++ b/java/com/android/pump/db/Movie.java @@ -27,7 +27,7 @@ public class Movie extends Video { private final String mTitle; private final int mYear; - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private Uri mThumbnailUri; private Uri mPosterUri; private String mSynopsis; diff --git a/java/com/android/pump/db/Other.java b/java/com/android/pump/db/Other.java index 8b46d55..4efe11a 100644 --- a/java/com/android/pump/db/Other.java +++ b/java/com/android/pump/db/Other.java @@ -24,7 +24,7 @@ import androidx.annotation.Nullable; @AnyThread public class Other extends Video { - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private String mTitle; private long mDuration; private long mDateTaken; diff --git a/java/com/android/pump/db/Playlist.java b/java/com/android/pump/db/Playlist.java index 8419797..93e231f 100644 --- a/java/com/android/pump/db/Playlist.java +++ b/java/com/android/pump/db/Playlist.java @@ -28,7 +28,7 @@ import androidx.annotation.Nullable; public class Playlist { private final long mId; - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private String mName; private final List<Audio> mAudios = new ArrayList<>(); private boolean mLoaded; diff --git a/java/com/android/pump/db/Series.java b/java/com/android/pump/db/Series.java index 398122c..99dd653 100644 --- a/java/com/android/pump/db/Series.java +++ b/java/com/android/pump/db/Series.java @@ -31,7 +31,7 @@ public class Series { private final String mTitle; private final int mYear; - // TODO Lock mutable fields to ensure consistent updates + // TODO(b/123706949) Lock mutable fields to ensure consistent updates private Uri mPosterUri; private final List<Episode> mEpisodes = new ArrayList<>(); private boolean mLoaded; diff --git a/java/com/android/pump/db/VideoStore.java b/java/com/android/pump/db/VideoStore.java index 53b5ad5..92f1153 100644 --- a/java/com/android/pump/db/VideoStore.java +++ b/java/com/android/pump/db/VideoStore.java @@ -60,11 +60,11 @@ class VideoStore extends ContentObserver { mChangeListener = changeListener; mMediaProvider = mediaProvider; - // TODO Do we need content observer for other content uris? (E.g. thumbnail) + // TODO(b/123706961) Do we need content observer for other content uris? (E.g. thumbnail) mContentResolver.registerContentObserver(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, true, this); - // TODO When to call unregisterContentObserver? + // TODO(b/123706961) When to call unregisterContentObserver? // mContentResolver.unregisterContentObserver(this); } @@ -236,7 +236,7 @@ class VideoStore extends ContentObserver { private @Nullable Uri getThumbnailUri(long id) { int thumbKind = MediaStore.Video.Thumbnails.MINI_KIND; - // TODO The following line is required to generate thumbnails -- is there a better way? + // TODO(b/123707512) The following line is required to generate thumbnails -- is there a better way? MediaStore.Video.Thumbnails.getThumbnail(mContentResolver, id, thumbKind, null); Uri thumbnailUri = null; @@ -274,13 +274,13 @@ class VideoStore extends ContentObserver { @Override public void onChange(boolean selfChange, @Nullable Uri uri) { Clog.i(TAG, "onChange(" + selfChange + ", " + uri + ")"); - // TODO Figure out what changed + // TODO(b/123706961) Figure out what changed // onChange(false, content://media) // onChange(false, content://media/external) // onChange(false, content://media/external/audio/media/444) // onChange(false, content://media/external/video/media/328?blocking=1&orig_id=328&group_id=0) - // TODO Notify listener about changes + // TODO(b/123706961) Notify listener about changes // mChangeListener.xxx(); } } diff --git a/java/com/android/pump/fragment/AlbumFragment.java b/java/com/android/pump/fragment/AlbumFragment.java index 07e5bc8..64ecf4e 100644 --- a/java/com/android/pump/fragment/AlbumFragment.java +++ b/java/com/android/pump/fragment/AlbumFragment.java @@ -64,7 +64,7 @@ public class AlbumFragment extends Fragment { gridLayoutManager.setSpanSizeLookup( new HeaderSpanSizeLookup(gridLayoutManager.getSpanCount())); - // TODO Enable view caching + // TODO(b/123707260) Enable view caching //mRecyclerView.setItemViewCacheSize(0); //mRecyclerView.setRecycledViewPool(Globals.getRecycledViewPool(requireContext())); return view; @@ -73,7 +73,7 @@ public class AlbumFragment extends Fragment { private static class AlbumAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements MediaDb.UpdateCallback { private final MediaDb mMediaDb; - private final List<Album> mAlbums; // TODO Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead + private final List<Album> mAlbums; // TODO(b/123710968) Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead private AlbumAdapter(@NonNull Context context) { setHasStableIds(true); diff --git a/java/com/android/pump/fragment/ArtistFragment.java b/java/com/android/pump/fragment/ArtistFragment.java index 81f908d..ce87844 100644 --- a/java/com/android/pump/fragment/ArtistFragment.java +++ b/java/com/android/pump/fragment/ArtistFragment.java @@ -65,7 +65,7 @@ public class ArtistFragment extends Fragment { gridLayoutManager.setSpanSizeLookup( new HeaderSpanSizeLookup(gridLayoutManager.getSpanCount())); - // TODO Enable view caching + // TODO(b/123707260) Enable view caching //mRecyclerView.setItemViewCacheSize(0); //mRecyclerView.setRecycledViewPool(Globals.getRecycledViewPool(requireContext())); return view; @@ -74,7 +74,7 @@ public class ArtistFragment extends Fragment { private static class ArtistAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements MediaDb.UpdateCallback { private final MediaDb mMediaDb; - private final List<Artist> mArtists; // TODO Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead + private final List<Artist> mArtists; // TODO(b/123710968) Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead private ArtistAdapter(@NonNull Context context) { setHasStableIds(true); diff --git a/java/com/android/pump/fragment/AudioFragment.java b/java/com/android/pump/fragment/AudioFragment.java index 11e102b..ad89732 100644 --- a/java/com/android/pump/fragment/AudioFragment.java +++ b/java/com/android/pump/fragment/AudioFragment.java @@ -56,7 +56,7 @@ public class AudioFragment extends Fragment { mRecyclerView.setHasFixedSize(true); mRecyclerView.setAdapter(new AudioAdapter(requireContext())); - // TODO Enable view caching + // TODO(b/123707260) Enable view caching //mRecyclerView.setItemViewCacheSize(0); //mRecyclerView.setRecycledViewPool(Globals.getRecycledViewPool(requireContext())); return view; @@ -65,7 +65,7 @@ public class AudioFragment extends Fragment { private static class AudioAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements MediaDb.UpdateCallback { private final MediaDb mMediaDb; - private final List<Audio> mAudios; // TODO Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead + private final List<Audio> mAudios; // TODO(b/123710968) Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead private AudioAdapter(@NonNull Context context) { setHasStableIds(true); diff --git a/java/com/android/pump/fragment/GenreFragment.java b/java/com/android/pump/fragment/GenreFragment.java index 227d01f..1585847 100644 --- a/java/com/android/pump/fragment/GenreFragment.java +++ b/java/com/android/pump/fragment/GenreFragment.java @@ -63,7 +63,7 @@ public class GenreFragment extends Fragment { gridLayoutManager.setSpanSizeLookup( new HeaderSpanSizeLookup(gridLayoutManager.getSpanCount())); - // TODO Enable view caching + // TODO(b/123707260) Enable view caching //mRecyclerView.setItemViewCacheSize(0); //mRecyclerView.setRecycledViewPool(Globals.getRecycledViewPool(requireContext())); return view; @@ -72,7 +72,7 @@ public class GenreFragment extends Fragment { private static class GenreAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements MediaDb.UpdateCallback { private final MediaDb mMediaDb; - private final List<Genre> mGenres; // TODO Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead + private final List<Genre> mGenres; // TODO(b/123710968) Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead private GenreAdapter(@NonNull Context context) { setHasStableIds(true); diff --git a/java/com/android/pump/fragment/MovieFragment.java b/java/com/android/pump/fragment/MovieFragment.java index a6a6e8a..7a4bf85 100644 --- a/java/com/android/pump/fragment/MovieFragment.java +++ b/java/com/android/pump/fragment/MovieFragment.java @@ -68,7 +68,7 @@ public class MovieFragment extends Fragment { ((SimpleItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false); - // TODO Enable view caching + // TODO(b/123707260) Enable view caching //mRecyclerView.setItemViewCacheSize(0); //mRecyclerView.setRecycledViewPool(Globals.getRecycledViewPool(requireContext())); return view; @@ -77,7 +77,7 @@ public class MovieFragment extends Fragment { private static class MovieAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements MediaDb.UpdateCallback { private final MediaDb mMediaDb; - private final List<Movie> mMovies; // TODO Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead + private final List<Movie> mMovies; // TODO(b/123710968) Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead private MovieAdapter(@NonNull Context context) { setHasStableIds(true); diff --git a/java/com/android/pump/fragment/OtherFragment.java b/java/com/android/pump/fragment/OtherFragment.java index 19c4c2b..09dacf9 100644 --- a/java/com/android/pump/fragment/OtherFragment.java +++ b/java/com/android/pump/fragment/OtherFragment.java @@ -75,7 +75,7 @@ public class OtherFragment extends Fragment { mRecyclerView.setItemAnimator(null); // TODO Re-enable add/remove animations - // TODO Enable view caching + // TODO(b/123707260) Enable view caching //mRecyclerView.setItemViewCacheSize(0); //mRecyclerView.setRecycledViewPool(Globals.getRecycledViewPool(requireContext())); return view; @@ -85,7 +85,7 @@ public class OtherFragment extends Fragment { implements MediaDb.UpdateCallback, ImageLoader.Callback { private final ImageLoader mImageLoader; private final MediaDb mMediaDb; - private final List<Other> mOthers; // TODO Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead + private final List<Other> mOthers; // TODO(b/123710968) Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead private final SparseIntArray mSpanSize = new SparseIntArray(); private OtherAdapter(@NonNull Context context) { diff --git a/java/com/android/pump/fragment/PlaylistFragment.java b/java/com/android/pump/fragment/PlaylistFragment.java index 7862521..545880e 100644 --- a/java/com/android/pump/fragment/PlaylistFragment.java +++ b/java/com/android/pump/fragment/PlaylistFragment.java @@ -71,7 +71,7 @@ public class PlaylistFragment extends Fragment { gridLayoutManager.setSpanSizeLookup( new HeaderSpanSizeLookup(gridLayoutManager.getSpanCount())); - // TODO Enable view caching + // TODO(b/123707260) Enable view caching //mRecyclerView.setItemViewCacheSize(0); //mRecyclerView.setRecycledViewPool(Globals.getRecycledViewPool(requireContext())); return view; @@ -80,7 +80,7 @@ public class PlaylistFragment extends Fragment { private static class PlaylistAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements MediaDb.UpdateCallback { private final MediaDb mMediaDb; - private final List<Playlist> mPlaylists; // TODO Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead + private final List<Playlist> mPlaylists; // TODO(b/123710968) Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead private PlaylistAdapter(@NonNull Context context) { setHasStableIds(true); diff --git a/java/com/android/pump/fragment/SeriesFragment.java b/java/com/android/pump/fragment/SeriesFragment.java index dbe930f..aefe3b7 100644 --- a/java/com/android/pump/fragment/SeriesFragment.java +++ b/java/com/android/pump/fragment/SeriesFragment.java @@ -67,7 +67,7 @@ public class SeriesFragment extends Fragment { ((SimpleItemAnimator) mRecyclerView.getItemAnimator()).setSupportsChangeAnimations(false); - // TODO Enable view caching + // TODO(b/123707260) Enable view caching //mRecyclerView.setItemViewCacheSize(0); //mRecyclerView.setRecycledViewPool(Globals.getRecycledViewPool(requireContext())); return view; @@ -76,7 +76,7 @@ public class SeriesFragment extends Fragment { private static class SeriesAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> implements MediaDb.UpdateCallback { private final MediaDb mMediaDb; - private final List<Series> mSeries; // TODO Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead + private final List<Series> mSeries; // TODO(b/123710968) Use android.support.v7.util.SortedList/android.support.v7.widget.util.SortedListAdapterCallback instead private SeriesAdapter(@NonNull Context context) { // TODO setHasStableIds(true); diff --git a/java/com/android/pump/util/ImageLoader.java b/java/com/android/pump/util/ImageLoader.java index 6caab6d..59ecc59 100644 --- a/java/com/android/pump/util/ImageLoader.java +++ b/java/com/android/pump/util/ImageLoader.java @@ -61,7 +61,7 @@ public class ImageLoader { } public void addCallback(@NonNull Callback callback, @NonNull Executor executor) { - synchronized (this) { // TODO other lock + synchronized (this) { // TODO(b/123708613) other lock if (!mCallbacks.add(new SimpleEntry<>(executor, callback))) { throw new IllegalArgumentException("Callback " + callback + " already added"); } @@ -73,7 +73,7 @@ public class ImageLoader { } public void removeCallback(@NonNull Callback callback, @NonNull Executor executor) { - synchronized (this) { // TODO other lock + synchronized (this) { // TODO(b/123708613) other lock if (!mCallbacks.remove(new SimpleEntry<>(executor, callback))) { throw new IllegalArgumentException("Callback " + callback + " not found"); } @@ -88,7 +88,7 @@ public class ImageLoader { @NonNull Executor executor) { Bitmap bitmap; Runnable loader = null; - synchronized (this) { // TODO other lock + synchronized (this) { // TODO(b/123708613) other lock bitmap = mBitmapCache.get(uri); if (bitmap == null) { List<Map.Entry<Executor, Callback>> callbacks = mLoadCallbacks.get(uri); @@ -132,7 +132,7 @@ public class ImageLoader { Bitmap bitmap = decodeBitmapFromByteArray(data); Set<Map.Entry<Executor, Callback>> callbacks; List<Map.Entry<Executor, Callback>> loadCallbacks; - synchronized (ImageLoader.this) { // TODO proper lock + synchronized (ImageLoader.this) { // TODO(b/123708613) proper lock if (bitmap != null) { mBitmapCache.put(mUri, bitmap); mOrientationCache.put(mUri, bitmap); @@ -151,7 +151,7 @@ public class ImageLoader { } } catch (IOException | OutOfMemoryError e) { Clog.e(TAG, "Failed to load image " + mUri, e); - // TODO remove from mLoadCallbacks + // TODO(b/123708676) remove from mLoadCallbacks } } @@ -162,7 +162,7 @@ public class ImageLoader { BitmapFactory.decodeByteArray(data, 0, data.length, options); options.inJustDecodeBounds = false; - options.inSampleSize = 1; // TODO add scaling + options.inSampleSize = 1; // TODO(b/123708796) add scaling return BitmapFactory.decodeByteArray(data, 0, data.length, options); } } diff --git a/res/layout/activity_pump.xml b/res/layout/activity_pump.xml index 0d0256c..b8f002f 100644 --- a/res/layout/activity_pump.xml +++ b/res/layout/activity_pump.xml @@ -57,7 +57,7 @@ </com.google.android.material.appbar.AppBarLayout> - <!-- TODO Switch to androidx.viewpager2.widget.ViewPager2 --> + <!-- TODO(b/123715653) Switch to androidx.viewpager2.widget.ViewPager2 --> <androidx.viewpager.widget.ViewPager android:id="@+id/activity_pump_view_pager" android:layout_width="match_parent" diff --git a/res/layout/activity_video_player.xml b/res/layout/activity_video_player.xml index dbd9f4e..4b054cd 100644 --- a/res/layout/activity_video_player.xml +++ b/res/layout/activity_video_player.xml @@ -15,6 +15,7 @@ limitations under the License. --> +<!-- TODO(b/123635879) Replace keepScreenOn with a better solution --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" |