如何在列表视图中显示sd卡的mp3文件?

时间:2012-08-01 10:15:04

标签: android listview audio show sd-card

我创建了一个录制音频并将其存储在SD卡中的应用程序。我做了这个部分 成功。这是将音频文件插入SD卡的代码。

protected void addRecordingToMediaLibrary() {
    ContentValues values = new ContentValues(4);
    long current = System.currentTimeMillis();
    values.put(MediaStore.Audio.Media.TITLE, "audio" + audiofile.getName());
    values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));
    values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/3gpp");
    values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath());
    ContentResolver contentResolver = getContentResolver();

    Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Uri newUri = contentResolver.insert(base, values);

    sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));
    Toast.makeText(this, "Added File " + newUri, Toast.LENGTH_LONG).show();
}

但是现在我想在listView中显示这个音频文件,但我不知道该怎么做 请给我任何参考或提示。

2 个答案:

答案 0 :(得分:0)

尝试使用 android.provider.MediaStore 包中的MediaStore,您可以使用此功能获取SD卡上的音乐文件...

来自stackoverflow.com的下面的教程将是一个很好的帮助...

Android MP3 file Filtering form sdcard

编辑:删除博客网址...博客不再退出...

答案 1 :(得分:0)

首先提取所有mp3文件。

使用我开发的这个方法....获取SD卡的mp3文件

为了详细说明,我还提出了一个问题 Observing changes in android content observer for Audio.Media.EXTERNAL_CONTENT_URI

此代码适用于 mnt / sdcrad extSdCard

在此代码中,我已检索到

  1. 档案名称

  2. 档案路径

  3. 时间

  4. 持续时间

  5. 为每个mp3文件。您可以检索的字段数量很多,请参阅此http://developer.android.com/reference/android/provider/MediaStore.Audio.AudioColumns.html

         private void getAllAudio() {
         Cursor mCursor = null;
    
         try {
             mCursor = context.getContentResolver().query(
                 Audio.Media.EXTERNAL_CONTENT_URI, null, null, null, "_id");
    
             System.out.println("Cursor count is " + mCursor.getCount());
    
             if (mCursor.getCount() != 0) {
    
                 do {
    
    
                     long date = mCursor.getLong(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DATE_ADDED));
    
                     String Duration = mCursor.getString(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DURATION));
                     String DISPLAY_NAME = mCursor.getString(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DISPLAY_NAME));
                     String DATA = mCursor.getString(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DATA));
                     double TIME_STAMP = mCursor.getInt(mCursor
                         .getColumnIndexOrThrow(Audio.Media.DATE_ADDED));
    
    
                     System.out.println("Name:" + DISPLAY_NAME);
                     System.out.println("data " + DATA);
                     System.out.println("time " + TIME_STAMP);
                     System.out.println("time " + Duration);
    
                     //Here you can create data base for recoring entries or may can create ArrayList of Class bean object having this fields for showing in ListView.
    
    
                 } while (mCursor.moveToNext());
    
             }
         } catch (Exception e) {
             e.printStackTrace();
         } finally {
             if (mCursor != null) {
                 mCursor.close();
                 mCursor = null;
             }
         }
    
     }
     }