android java播放歌曲,音频,声音文件(外部SD工作但不能内部存储)

时间:2014-08-12 07:37:50

标签: java android android-mediaplayer android-external-storage

外部存储有效,但不能用于内部存储。我是否从android存储机制中错过了一些基本的东西? 感谢

public static void playSound()
{
    //String path = internalPath + "/www/sounds/" + "SIREN.WAV"; // doesnt work
    //String path = "file:///data/data/com.myproject.d08062014f/files/www/sounds/SIREN.WAV"; // doesnt work
    //String path = "/data/data/com.myproject.d08062014f/files/www/sounds/SIREN.WAV"; // doesnt work
    // all above does not work
    Log.d("command", "command:" + path); // to check path string
    String path = "file:///mnt/sdcard/media/audio/notifications/facebook_ringtone_pop.m4a"; // This one works!
    MediaPlayer mMediaPlayer = new MediaPlayer();
    try {
        mMediaPlayer.setDataSource(path);
    } catch (IllegalArgumentException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


    try {
        mMediaPlayer.prepare();
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    mMediaPlayer.start();
}

2014年9月9日更新

stackoverflow.com/a/4955915/856007 - Abdullah Shoaib 8月12日7:49 感谢下面的参考链接,我能够使用

File file = new File(path); // acquire the file from path string
FileInputStream inputStream = new FileInputStream(file);
mMediaPlayer.setDataSource(inputStream.getFD());
inputStream.close();  

0 个答案:

没有答案