进入音乐APP,点击艺术家Tab页中专辑项目下歌曲信息,自动跳转至正在扫描SD卡,一直卡在扫描界面,无法退出
对比 9.0 看了之前的效果是点击歌曲信息后就跳转至歌曲详情界面 TrackBrowserActivity,再点击条目就直接播放了
操作效果和从专辑Tab页中点击歌曲跳转流程一样,10.0 中专辑Tab页点击歌曲跳转也正常,那么解决思路就是我们在
艺术家Tab中点击时也跳到 TrackBrowserActivity 界面就好了,不去进行扫描操作。后来分析日志发现,一直在扫描是
因为数据库查不到对应的 albumId
vendor\mediatek\proprietary\packages\apps\Music\src\com\android\music\AlbumBrowserActivity.java
专辑 Tab 页 AlbumBrowserActivity 中条目点击事件
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/track");
intent.putExtra("album", Long.valueOf(id).toString());
intent.putExtra("artist", mArtistId);
android.util.Log.e("ccm","album="+Long.valueOf(id).toString());
android.util.Log.e("ccm","artist="+mArtistId);
startActivity(intent);
}
对应歌曲专辑id为1,艺术家id为null
2020-07-10 16:55:38.753 3835-3835/com.android.music V/MusicBrowser: onPageSelected-position:1
2020-07-10 16:55:38.755 3835-3835/com.android.music V/MusicBrowser: onTabChanged-tabId:Album
2020-07-10 16:55:41.052 3835-3835/com.android.music E/ccm: album=1
2020-07-10 16:55:41.052 3835-3835/com.android.music E/ccm: artist=null
2020-07-10 16:55:41.075 3835-3835/com.android.music V/MusicBrowser: onPause
2020-07-10 16:55:41.075 3835-3835/com.android.music D/Album: onPause
2020-07-10 16:55:41.076 3835-3835/com.android.music D/Artist/Album: onPause
2020-07-10 16:55:41.131 3835-3835/com.android.music V/MusicUtils: bindToService: activity=com.android.music.TrackBrowserActivity@d626e0
2020-07-10 16:55:41.137 3835-3835/com.android.music V/TrackBrowser: setAlbumArtBackground: mAlbumId = 1, mAlbumArtBitmap = null
2020-07-10 16:55:41.138 3835-3884/com.android.music V/MusicUtils: >> getArtWork, song_id=-1, album_id=1
2020-07-10 16:55:41.139 3835-3835/com.android.music V/TrackBrowser: starting query
2020-07-10 16:55:41.152 3835-3835/com.android.music V/TrackBrowser: onResume>>>
vendor\mediatek\proprietary\packages\apps\Music\src\com\android\music\ArtistAlbumBrowserActivity.java
艺术家 Tab 页 ArtistAlbumBrowserActivity 中条目点击事件
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
mCurrentAlbumId = Long.valueOf(id).toString();
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/track");
intent.putExtra("album", mCurrentAlbumId);
Cursor c = (Cursor) getExpandableListAdapter().getChild(groupPosition, childPosition);
String album = c.getString(c.getColumnIndex(MediaStore.Audio.Albums.ALBUM));
if (album == null || album.equals(MediaStore.UNKNOWN_STRING)) {
// unknown album, so we should include the artist ID to limit
//the songs to songs only by that artist
mArtistCursor.moveToPosition(groupPosition);
mCurrentArtistId = mArtistCursor.getString(
mArtistCursor.getColumnIndex(MediaStore.Audio.Artists._ID));
intent.putExtra("artist", mCurrentArtistId);
}
android.util.Log.e("ccm","album11="+mCurrentArtistId);
android.util.Log.e("ccm","artist11="+artistId);
startActivity(intent);
return true;
}
同一首歌曲对应专辑id为16,艺术家id为1
2020-07-10 17:22:57.716 3413-3413/com.android.music V/MusicBrowser: Sdcard normal
2020-07-10 17:22:57.717 3413-3413/com.android.music V/MusicUtils: updateNowPlaying: activity = com.android.music.MusicBrowserActivity@c269a68, orientaiton = 2
2020-07-10 17:23:17.717 3413-3413/com.android.music E/ccm: album11=16
2020-07-10 17:23:17.717 3413-3413/com.android.music E/ccm: artist11=1
2020-07-10 17:23:17.736 3413-3413/com.android.music V/MusicBrowser: onPause
2020-07-10 17:23:17.737 3413-3413/com.android.music D/Artist/Album: onPause
2020-07-10 17:23:17.738 3413-3413/com.android.music D/Album: onPause
2020-07-10 17:23:17.792 3413-3413/com.android.music V/TrackBrowser: setAlbumArtBackground: mAlbumId = 16, mAlbumArtBitmap = null
2020-07-10 17:23:17.794 3413-3506/com.android.music V/MusicUtils: >> getArtWork, song_id=-1, album_id=16
2020-07-10 17:23:17.796 3413-3413/com.android.music V/TrackBrowser: starting query
2020-07-10 17:23:17.802 3413-3413/com.android.music V/TrackBrowser: onResume>>>
明明是同一首歌啊,为啥 albumId 不一样,那不行我得让它一样,明显是艺术家id 和专辑id 对调了。
修改后如下,只需保证 albumId 是正确的, artistId 为 null 就行
@Override
public boolean onChildClick(ExpandableListView parent, View v,
int groupPosition, int childPosition, long id) {
mCurrentAlbumId = Long.valueOf(id).toString();
String artistId = null;
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setDataAndType(Uri.EMPTY, "vnd.android.cursor.dir/track");
//intent.putExtra("album", mCurrentAlbumId);//annotaion for artist id isn't correct
Cursor c = (Cursor) getExpandableListAdapter().getChild(groupPosition, childPosition);
String album = c.getString(c.getColumnIndex(MediaStore.Audio.Albums.ALBUM));
if (true || album == null || album.equals(MediaStore.UNKNOWN_STRING)) {
// unknown album, so we should include the artist ID to limit
//the songs to songs only by that artist
mArtistCursor.moveToPosition(groupPosition);
mCurrentArtistId = mArtistCursor.getString(
mArtistCursor.getColumnIndex(MediaStore.Audio.Artists._ID));
//intent.putExtra("artist", mCurrentArtistId);
intent.putExtra("artist", artistId);
intent.putExtra("album", mCurrentArtistId);
}
android.util.Log.e("ccm","album11="+mCurrentArtistId);
android.util.Log.e("ccm","artist11="+artistId);
startActivity(intent);
return true;
}