读书人

经过MediaStore浏览音频

发布时间: 2013-04-12 18:33:11 作者: rapoo

通过MediaStore浏览音频

使用MediaStore提供器访问存储的音频文件,将使用android.provider.MediaStore.Audio程序包。

为了使用MediaStore,需要指定想要返回的数据。可以通过使用在android.provider.MediaStore.Audio.Media类中定义的常量创建一个字符串数组来实现该操作。这些常量都是保存在MediaStore中以用于音频的标准字段。

public class AudioBrowser extends ListActivity {Cursor cursor;public static int STATE_SELECT_ALBUM = 0;public static int STATE_SELECT_SONG = 1;int currentState = STATE_SELECT_ALBUM;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);String[] columns = { android.provider.MediaStore.Audio.Albums._ID,android.provider.MediaStore.Audio.Albums.ALBUM };//希望返回的唱片集的名称cursor = managedQuery(MediaStore.Audio.Albums.EXTERNAL_CONTENT_URI,columns, null, null, null);String[] displayFields = new String[] { MediaStore.Audio.Albums.ALBUM };//显示的Cursor对象中的列名int[] displayViews = new int[] { android.R.id.text1 };setListAdapter(new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1, cursor, displayFields,displayViews));//将Cursor对象绑定到ListView对象上}protected void onListItemClick(ListView l, View v, int position, long id) {if (currentState == STATE_SELECT_ALBUM) {//传入在列表中选定唱片集的位置,同时Cursor对象利用该位置,通过moveToPosition获知是哪个唱片集if (cursor.moveToPosition(position)) {String[] columns = { MediaStore.Audio.Media.DATA,//音频文件的实际路径MediaStore.Audio.Media._ID,MediaStore.Audio.Media.TITLE,MediaStore.Audio.Media.DISPLAY_NAME,MediaStore.Audio.Media.MIME_TYPE, };String where = android.provider.MediaStore.Audio.Media.ALBUM+ "=?";                                //字符数组,其中每个字符串对应一个使用的“?”符号String whereVal[] = { cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Albums.ALBUM)) };String orderBy = android.provider.MediaStore.Audio.Media.TITLE;                                //查询只属于特定唱片集的媒体文件cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, columns,where, whereVal, orderBy);String[] displayFields = new String[] { MediaStore.Audio.Media.DISPLAY_NAME };int[] displayViews = new int[] { android.R.id.text1 };setListAdapter(new SimpleCursorAdapter(this,android.R.layout.simple_list_item_1, cursor,displayFields, displayViews));currentState = STATE_SELECT_SONG;}} else if (currentState == STATE_SELECT_SONG) {if (cursor.moveToPosition(position)) {int fileColumn = cursor.getColumnIndex(MediaStore.Audio.Media.DATA);int mimeTypeColumn = cursor.getColumnIndex(MediaStore.Audio.Media.MIME_TYPE);String audioFilePath = cursor.getString(fileColumn);String mimeType = cursor.getString(mimeTypeColumn);Intent intent = new Intent(android.content.Intent.ACTION_VIEW);File newFile = new File(audioFilePath);intent.setDataAndType(Uri.fromFile(newFile), mimeType);startActivity(intent);}}}}







读书人网 >移动开发

热点推荐