- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想从专辑 ID 中获取歌曲和其他媒体详细信息。我只有专辑 ID,我尝试了很多解决方案,但没有一个成功。
我的代码 fragment :
ContentResolver contentResolver = getContentResolver();
Uri mediaUri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, albumId);
Log.wtf("SKJDBKJ", mediaUri.toString());
Cursor mediaCursor = contentResolver.query(mediaUri, null, null, null, null);
// if the cursor is null.
if(mediaCursor != null && mediaCursor.moveToFirst())
{
Log.wtf("DSJK", "entered cursor");
//get Columns
int titleColumn = mediaCursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM);
int idColumn = mediaCursor.getColumnIndex(MediaStore.Audio.Media._ID);
int artistColumn = mediaCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
// Store the title, id and artist name in Song Array list.
do
{
long thisId = mediaCursor.getLong(idColumn);
String thisTitle = mediaCursor.getString(titleColumn);
String thisArtist = mediaCursor.getString(artistColumn);
Log.wtf("Title", thisTitle);
// Add the info to our array.
songArrayList.add(new Song(thisId, thisTitle, thisArtist));
}
while (mediaCursor.moveToNext());
// For best practices, close the cursor after use.
mediaCursor.close();
}
Log for mediaUri
返回当前相册的路径,例如: content://media/external/audio/media/41
。有人告诉我该怎么做吗?
最佳答案
我自己做了。你可以在 contentResolver.query 上为 'selection' 字符串编写简单的 sqlite 查询。这个例子可以告诉你如何通过专辑 ID 获取歌曲。我认为这是最好的方法。
ArrayList<Song> songs = new ArrayList<>();
String selection = "is_music != 0";
if (albumId > 0) {
selection = selection + " and album_id = " + albumId;
}
String[] projection = {
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.DATA,
MediaStore.Audio.Media.DISPLAY_NAME,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ALBUM_ID
};
final String sortOrder = MediaStore.Audio.AudioColumns.TITLE + " COLLATE LOCALIZED ASC";
Cursor cursor = null;
try {
Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
cursor = getActivity().getContentResolver().query(uri, projection, selection, null, sortOrder);
if (cursor != null) {
cursor.moveToFirst();
int position = 1;
while (!cursor.isAfterLast()) {
Song song = new Song();
song.setTitle(cursor.getString(0));
song.setDuration(cursor.getLong(4));
song.setArtist(cursor.getString(1));
song.setPath(cursor.getString(2));
song.setPosition(position);
song.setAlbumId(cursor.getLong(6));
cursor.moveToNext();
}
}
} catch (Exception e) {
Log.e("Media", e.toString());
} finally {
if (cursor != null) {
cursor.close();
}
}
关于android - 如何从专辑 ID 中获取歌曲和其他媒体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32337949/
我正在学习 zend 框架 2 教程应用程序。我已经设置了我的相册模块目录如下: 当我启动我的 MAMP 服务器时,我遇到了一个错误, fatal error :未捕获的异常“Zend\ModuleM
我想创建一个 Java Swing 相册,但我无法找到正确的方法。我认为应该创建两个ArrayList,一个用于存储照片对象,另一个用于存储按钮。 之后我应该找到一种方法将每个图像分配给按钮并将它们添
我在一个文件夹中备份了所有 mp3 文件。 会不会有一个 bash 命令来自动移动他们自己的即时创建的乐队专辑标题目录中的所有文件? 正如您在图片中看到的,破折号之前的第一个单词是艺术家姓名,然后是专
我想知道我是否可以获取 mp3 文件信息,如专辑名称、艺术家、存储在 mp3 文件中的图像等等?如果有办法做到这一点,请帮忙。顺便说一句:我创建了一个名为 Entagged 的 Java 库,但我
我正在为一个乐队制作一个 iPhone 应用程序,其中列出了该乐队的歌曲。当用户触摸歌曲旁边的按钮时,我想打开 iTunes 并显示该歌曲。目前我正在使用这段代码: [[UIApplication共享
我正在尝试发布到 Facebook 页面上的相册(我可以毫无问题地发布到墙上 - 我拥有所有权限)。 Facebook 图形 API 表示相册 ID 是援助的值(value)。但是网址看起来像:htt
我正在开发一个使用 Vue 构建的供个人使用的 PWA,其功能基本上与 YouTube Music 相同,而无需每月付费。 我设置了一个带有 REST API 的服务器,该服务器可以根据查询搜索 Yo
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 8 年前。
我只想要一段简单的代码,它可以从 mp3 文件中提供作者、专辑、年份、标题和流派。如果可以的话,以变量的形式,以便我可以使用它。我想做的就是让这些信息显示在标签中。例如。 lbl艺术家、lbl专辑、l
通过 1 为谁通过 ffmpeg 我需要合并 2 个音频并向其添加图片(专辑) 1-audio 2-audio output https://superuse
我仅使用 youtube-dl 从 youtube 视频中提取音频. 我想在下载后将元数据(即艺术家姓名和歌曲名称、年份、专辑、持续时间、流派)写入 mp3/m4a 文件。 我的尝试是从以下代码开始的
我是一名优秀的程序员,十分优秀!