簡體   English   中英

如何從 Environment.DIRECTORY_DOWNLOADS 播放 mp3 文件

[英]How can I play the mp3 file from Environment.DIRECTORY_DOWNLOADS

我從 Url 下載了 mp3 文件,並通過以下代碼將其保存在 Environment.DIRECTORY_DOWNLOADS 中:

request.setDestinationInExternalFilesDir(MainActivity.this, Environment.DIRECTORY_DOWNLOADS,"d1.mp3");

我檢查了文件可以正確下載。 現在我想播放這個 d1.mp3 文件,但是當我按下播放按鈕時,它沒有開始播放音樂! 當我使用“setDataSource”時,看起來我有問題。 如果您檢查我的代碼並讓我犯錯,我將不勝感激。

private void initMediaPlayer()
{
    String PATH_TO_FILE = Environment.DIRECTORY_DOWNLOADS + "/d1.mp3";
    mp = new  MediaPlayer();

    try {
        mp.setDataSource(PATH_TO_FILE);
        mp.prepare();
        Toast.makeText(this, PATH_TO_FILE, Toast.LENGTH_LONG).show();
        stateMediaPlayer = stateMP_NotStarter;
        textState.setText("- IDLE -");
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
        stateMediaPlayer = stateMP_Error;
        textState.setText("- ERROR!!! -");
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
        stateMediaPlayer = stateMP_Error;
        textState.setText("- ERROR!!! -");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
        Toast.makeText(this, e.toString(), Toast.LENGTH_LONG).show();
        stateMediaPlayer = stateMP_Error;
        textState.setText("- ERROR!!! -");
    }

}

public void play(View view) {
    initMediaPlayer();
    mp.start();           
}

您應該使用getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS) (用於應用程序下載)或Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)作為下載文件的完整路徑。

我知道它遲到了,但我遇到了同樣的問題,我在設置 DataSource 后通過在代碼中添加一行來解決它

mp.setDataSource(PATH_TO_FILE);

添加 PrepareAsync

mp.prepareAsync();

這為我解決了這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM