1

こんにちは、ここでメディアプレーヤーのチュートリアルを使用しています

メディア パスの場所を raw フォルダー内のすべてのファイルを指すように変更して、自分の曲を APK 内に保持できるようにしたいと考えています。私は何度かこれを試みましたが、成功しませんでした。誰か助けてくれませんか。ここでコードを調整する必要があります。

package com.androidhive.musicplayer;


import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;
import java.util.HashMap;

// Need to redirect the path below to the raw or drawable folder
public class SongsManager {
    // SDCard Path
    final String MEDIA_PATH = new String("/sdcard/");
    private ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();

    // Constructor
    public SongsManager(){

    }

    /**
     * Function to read all mp3 files from sdcard
     * and store the details in ArrayList
     * */
    public ArrayList<HashMap<String, String>> getPlayList(){
        File home = new File(MEDIA_PATH);

        if (home.listFiles(new FileExtensionFilter()).length > 0) {
            for (File file : home.listFiles(new FileExtensionFilter())) {
                HashMap<String, String> song = new HashMap<String, String>();
                song.put("songTitle", file.getName().substring(0, (file.getName().length() - 4)));
                song.put("songPath", file.getPath());

                // Adding each song to SongList
                songsList.add(song);
            }
        }
        // return songs list array
        return songsList;
    }

    /**
     * Class to filter files which are having .mp3 extension
     * */
    class FileExtensionFilter implements FilenameFilter {
        public boolean accept(File dir, String name) {
            return (name.endsWith(".mp3") || name.endsWith(".MP3"));
        }
    }
} 

どんな助けでも大歓迎です。ありがとう

4

2 に答える 2

2

実際、Android の Raw フォルダーはファイルシステムとは少し異なります。たとえば、ファイル パラダイムでは使用しないでください。代わりに、コンテキストの Resources クラスを使用できます。たとえば、openRawResource http://developer.android.com/reference/android/content/res/Resources.html#openRawResource(int )

ただし、このような API を使用してオーディオなどの大きなファイルを保存すると、パフォーマンスが低下し、予測不能になる可能性があります。たとえば、サイズが 1MB を超える場合、/assets/ フォルダーからファイルを開くのに問題がありました。少なくとも当時は、プラットフォームの制限のようです。

したがって、必要に応じて、ネットワークからファイルをダウンロードすることをお勧めします。または、ファイルのサイズが非常に小さい場合は、リソースから内部/外部ストレージに事前にコピーします。

それが役に立てば幸いです、頑張ってください

于 2012-09-02T17:31:46.963 に答える
0

AlexNは正しいです、1 MBは(まだ)ファイルサイズの制限assetsなどresです。

于 2012-09-02T17:49:05.983 に答える