2016-03-25 15 views
0

メディアプレーヤーアプリを作成しようとしていますが、モバイルデバイスから音楽ファイルにアクセスできません。ユーザーのアクセス権も持っています。 mp3ファイル。私は、ファイル名Download.ButでSDカードからメディアファイルにアクセスしようとしましたが、動作していません。アンドロイドデバイスからすべてのmp3ファイルにアクセスする方法はありますか?ここに私のコードモバイルデバイスのsdカードから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); 
    } 
} 

答えて

0

正しいSDカードのディレクトリを指していません。これは、デバイスのSDカードにダウンロードフォルダの外部ストレージのパスです

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

- あなたSD_PATHは次のようになります。目的のために、このパスに特定のファイル名を追加することができます。

+0

どのようにすべてのmp3ファイルにアクセスできますか? –

+0

MediaStore.Audio.Media.EXTERNAL_CONTENT_URIにオーディオファイルを問い合わせる必要があります。 –

関連する問題