0

シンプルなオーディオ ストリーミング Android アプリを開発しています。URL からオーディオを再生している間、アプリにはファイルをダウンロードするオプションもあります。オーディオ ファイルは、Internal Storage/voicesフォルダーにダウンロードされています。ダウンロードしたこのフォルダのすべてのオーディオをアプリで表示するにはどうすればよいですか? ユーザーがファイルを手動で検索する必要がないように、音声フォルダー内のすべてのオーディオにアクセスしてアプリに表示したいと考えています。ガイドしてください。ありがとうございました!

4

2 に答える 2

1
String path = Environment.getExternalStorageDirectory().toString()+"/voices";
Log.d("Files", "Path: " + path);
File directory = new File(path);
File[] files = directory.listFiles();
Log.d("Files", "Size: "+ files.length);
for (int i = 0; i < files.length; i++)
{
    Log.d("Files", "FileName:" + files[i].getName());
}

このようにして、voicesディレクトリに保存されているすべてのファイルをfiles配列に取得します。

于 2016-11-17T08:45:55.927 に答える
0

次のコードを使用して実行しました。

 private ListView mainListView ;
private ArrayAdapter<String> listAdapter ;
private MediaPlayer mp = new MediaPlayer();
private List<String> ListOfFiles = new ArrayList<String>();
String path = Environment.getExternalStorageDirectory().toString()+"/voices";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    // Find the ListView resource.
    mainListView = (ListView) findViewById( R.id.mainListView );


    Log.d("Files", "Path: " + path);
    File directory = new File(path);
    File[] files = directory.listFiles();
    Log.d("Files", "Size: "+ files.length);
    for (int i = 0; i < files.length; i++)
    {
        Log.d("Files", "FileName:" + files[i].getName());
    }

    for (int i = 0; i < files.length; i++) {
        ListOfFiles.add(files[i].getName());
    }


    listAdapter = new ArrayAdapter<String>(this, R.layout.row_layout, ListOfFiles);
    mainListView.setAdapter( listAdapter );


    mainListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                                int position, long id) {
            playSong(path +"/"+ ListOfFiles.get(position));

            Log.d("Path",path + ListOfFiles.get(position));
        }
    });
}

private void playSong(String songPath) {
    try {
        mp.reset();
        mp.setDataSource(songPath);
        mp.prepare();
        mp.start();
    } catch (IOException e) {
        Log.v(getString(R.string.app_name), e.getMessage());
    }
}
于 2016-11-18T03:27:36.700 に答える