您的位置:首页 > 移动开发 > Android开发

android通过MP3路径获取MP3的album

2011-03-29 17:07 253 查看
多媒体的信息都保存在数据库中,我们可以通过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

/**
	 * 通过MP3路径得到指向当前MP3的Cursor
	 * 
	 * @param filePath
	 *            MP3路径
	 * 
	 * @return Cursor 返回的Cursor指向当前MP3
	 */
	private Cursor 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);
		return c;
	}


2.获取album_id

int album_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
	 */
	private String getAlbumArt(int album_id) {
		String mUriAlbums = "content://media/external/audio/albums";
		String[] projection = new String[] { "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;
		return album_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 = new BitmapDrawable(bm);
			albumImage.setImageDrawable(bmpDraw);
		}


到这里就可以完成了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: