0

音声を録音してSDカードに保存するアプリケーションを1つ作成します。私はこの部分
をうまくやりました。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に表示したいのですが、これを行う方法がわかりません。
参考資料やヒントを教えてください。

4

2 に答える 2

0

android.provider.MediaStoreMediaStoreパッケージから使用してみてください、これを使用してsdcard上の音楽ファイルを取得できます...

そして、stackoverflow.comからのこの以下のチュートリアルは大きな助けになります...

AndroidMP3ファイルフィルタリングフォームSDカード

編集:ブログのURLを削除しました...ブログはもう終了しません...

于 2012-08-01T10:33:24.993 に答える
0

まず、すべての mp3 ファイルを抽出します。

私が開発したこの方法を使用してください.... SDカードのmp3ファイルを取得するために

詳細を取得するために、Audio.Media.EXTERNAL_CONTENT_URI の Android コンテンツ オブザーバーの変更を観察するという質問もしました。

このコードは、mnt/sdcradextSdCardの両方で機能します。

このコードでは、取得しました

  1. ファイル名

  2. ファイルパス

  3. 時間

  4. 間隔

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;
         }
     }

 }
 }
于 2013-05-18T11:07:46.123 に答える