android如何获得歌曲的路径,android通过MP3路径获取MP3的album

由于开始的时候是传文件路径到Activity的,在网上也没有找到通过文件的路径来获取MP3的album。

其实思路也简单的,因为数据库中也保存有文件的路径,因此呢我用文件的路径去查找数据,匹配则返回cursor。此时cursor指向当前的MP3文件。因此呢,我们就可以获取MP3的基本信息了。我原本是想直接获取album可是一直出错,只好绕开,在这里我获取album_id,然后再通过album_id查找album_art,最后通过album_art得到album。

如下:

1.通过MP3路径得到指向当前MP3的Cursor

/**

* 通过MP3路径得到指向当前MP3的Cursor

*

* @param filePath

*            MP3路径

*

* @return Cursor 返回的Cursor指向当前MP3

*/

privateCursor getCursorfromPath(String filePath) {

String path = null;

Cursor c = getContentResolver().query(

MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null,null,null,

MediaStore.Audio.Media.DEFAULT_SORT_ORDER);

// System.out.println(c.getString(c.getColumnIndex("_data")));

if(c.moveToFirst()) {

do{

// 通过Cursor 获取路径,如果路径相同则break;

path = c.getString(c

.getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));

// 查找到相同的路径则返回,此时cursorPosition 便是指向路径所指向的Cursor 便可以返回了

if(path.equals(filePath)) {

// System.out.println("audioPath = " + path);

// System.out.println("filePath = " + filePath);

// cursorPosition = c.getPosition();

break;

}

} while(c.moveToNext());

}

// 这两个没有什么作用,调试的时候用

// String audioPath = c.getString(c

// .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));

//

// System.out.println("audioPath = " + audioPath);

returnc;

}

2.获取album_id

intalbum_id = currentCursor.getInt(currentCursor

.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID))

3.通过album_id查找 album_art

/**

*

* 功能 通过album_id查找 album_art 如果找不到返回null

*

* @param album_id

* @return album_art

*/

privateString getAlbumArt(intalbum_id) {

String mUriAlbums = "content://media/external/audio/albums";

String[] projection = newString[] {"album_art"};

Cursor cur = this.getContentResolver().query(

Uri.parse(mUriAlbums + "/"+ Integer.toString(album_id)),

projection, null,null,null);

String album_art = null;

if(cur.getCount() >0&& cur.getColumnCount() >0) {

cur.moveToNext();

album_art = cur.getString(0);

}

cur.close();

cur = null;

returnalbum_art;

}

4.使用

Bitmap bm =null;

String albumArt = getAlbumArt(album_id);

if(albumArt ==null) {

albumImage.setBackgroundResource(R.drawable.audio_default_bg);

} else{

bm = BitmapFactory.decodeFile(albumArt);

BitmapDrawable bmpDraw = newBitmapDrawable(bm);

albumImage.setImageDrawable(bmpDraw);

}

到这里就可以完成了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值