如何从移动设备的SD卡访问mp3文件

时间:2016-03-25 21:40:00

标签: android media-player

我正在尝试制作媒体播放器应用但我无法从我的移动设备访问音乐文件我也获得了用户权限。我可以访问mp3文件。我试图访问媒体文件来自SD卡的文件名为Download.But它无法正常工作。有没有办法从Android设备访问所有的mp3文件?这是我的代码

public class MainActivity extends ListActivity {
private static final String SD_PATH =new String("/Download/");
private List<String> songs =new ArrayList<String>();
private MediaPlayer mp =new MediaPlayer();
class Mp3Filter implements FilenameFilter{

    @Override
    public boolean accept(File dir, String filename) {
        return (filename.endsWith(".mp3"));
    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    updatePlaylist();
    Button button =(Button)findViewById(R.id.button);
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            mp.stop();
        }
    });

}
protected void onListItemClick(ListView list,View view,int position,long id){
    try{
        mp.reset();
        mp.setDataSource(SD_PATH + songs.get(position));
        mp.prepare();
        mp.start();
    } catch (IOException e) {
        Log.v(getString(R.string.app_name),e.getMessage());
    }
}

private void updatePlaylist() {
   File home =new File(SD_PATH);
    if (home.listFiles(new Mp3Filter()).length > 0) {

        for(
                File file:home.listFiles(new Mp3Filter())
                ) {
            songs.add(file.getName());
        }
        ArrayAdapter<String>songlist =new ArrayAdapter<String>(this,R.layout.text,songs);
        setListAdapter(songlist);
    }
}

1 个答案:

答案 0 :(得分:0)

您没有指向正确的SD卡目录。 您的SD_PATH应该是 -

String SD_PATH = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).toString();

这是设备SD卡上的Downloads文件夹的外部存储路径。您可以将特定文件名附加到此路径中。