分享

android通过MP3路径获取MP3的album

 了吧了 2014-11-25

android通过MP3路径获取MP3的album

http://blog.csdn.net/piaozhiye/article/details/6286665
多媒体的信息都保存在数据库中,我们可以通过MediaStore类来进行操作

具体的MediaStore可以查看资料:http://blog.csdn.net/vrix/archive/2010/08/04/5788955.aspx

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

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

如下:

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

  1. /** 
  2.  * 通过MP3路径得到指向当前MP3的Cursor 
  3.  *  
  4.  * @param filePath 
  5.  *            MP3路径 
  6.  *  
  7.  * @return Cursor 返回的Cursor指向当前MP3 
  8.  */  
  9. private Cursor getCursorfromPath(String filePath) {  
  10.     String path = null;  
  11.     Cursor c = getContentResolver().query(  
  12.             MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, nullnullnull,  
  13.             MediaStore.Audio.Media.DEFAULT_SORT_ORDER);  
  14.     // System.out.println(c.getString(c.getColumnIndex("_data")));  
  15.     if (c.moveToFirst()) {  
  16.         do {  
  17.             // 通过Cursor 获取路径,如果路径相同则break;  
  18.             path = c.getString(c  
  19.                     .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));  
  20.             // 查找到相同的路径则返回,此时cursorPosition 便是指向路径所指向的Cursor 便可以返回了  
  21.             if (path.equals(filePath)) {  
  22.                 // System.out.println("audioPath = " + path);  
  23.                 // System.out.println("filePath = " + filePath);  
  24.                 // cursorPosition = c.getPosition();  
  25.                 break;  
  26.             }  
  27.         } while (c.moveToNext());  
  28.     }  
  29.     // 这两个没有什么作用,调试的时候用  
  30.     // String audioPath = c.getString(c  
  31.     // .getColumnIndexOrThrow(MediaStore.Audio.Media.DATA));  
  32.     //  
  33.     // System.out.println("audioPath = " + audioPath);  
  34.     return c;  
  35. }  
 

2.获取album_id

  1. int album_id = currentCursor.getInt(currentCursor  
  2.                 .getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID))  
 

 

3.通过album_id查找 album_art

  1. /** 
  2.  *  
  3.  * 功能 通过album_id查找 album_art 如果找不到返回null 
  4.  *  
  5.  * @param album_id 
  6.  * @return album_art 
  7.  */  
  8. private String getAlbumArt(int album_id) {  
  9.     String mUriAlbums = "content://media/external/audio/albums";  
  10.     String[] projection = new String[] { "album_art" };  
  11.     Cursor cur = this.getContentResolver().query(  
  12.             Uri.parse(mUriAlbums + "/" + Integer.toString(album_id)),  
  13.             projection, nullnullnull);  
  14.     String album_art = null;  
  15.     if (cur.getCount() > 0 && cur.getColumnCount() > 0) {  
  16.         cur.moveToNext();  
  17.         album_art = cur.getString(0);  
  18.     }  
  19.     cur.close();  
  20.     cur = null;  
  21.     return album_art;  
  22. }  
 

4.使用

  1. Bitmap bm = null;  
  2. String albumArt = getAlbumArt(album_id);  
  3. if (albumArt == null) {  
  4.     albumImage.setBackgroundResource(R.drawable.audio_default_bg);  
  5. else {  
  6.     bm = BitmapFactory.decodeFile(albumArt);  
  7.     BitmapDrawable bmpDraw = new BitmapDrawable(bm);  
  8.     albumImage.setImageDrawable(bmpDraw);  
  9. }  
 

到这里就可以完成了。


    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多