【问题标题】:How to access downloaded audios folder in android app如何在Android应用程序中访问下载的音频文件夹
【发布时间】:2016-11-17 08:42:04
【问题描述】:

我正在开发一个简单的音频流安卓应用。在播放来自 URL 的音频时,该应用程序还可以选择下载文件。音频文件正在 Internal Storage/voices 文件夹中下载。如何在我的应用程序中显示此文件夹的所有下载音频?我想访问 voices 文件夹中的所有音频并显示在我的应用程序中,这样用户就不需要手动搜索文件。请指导。谢谢!

【问题讨论】:

    标签: android audio audio-streaming android-internal-storage


    【解决方案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数组中。

    【讨论】:

    • 感谢您的解决方案。它帮助我获取文件的名称并填充到列表视图中。对自定义数组适配器在列表视图中填充音频文件以便也可以播放它们有任何帮助吗?
    • @Noor,这是另一个问题。你可以问一个,但首先在互联网上搜索。
    【解决方案2】:

    我是使用以下代码完成的:

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

    【讨论】:

    • 一个for循环就够了
    猜你喜欢
    • 1970-01-01
    • 2021-12-04
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多