【问题标题】:Cant able to play an audio file from sdcard Android无法从 sdcard Android 播放音频文件
【发布时间】:2015-04-20 16:21:47
【问题描述】:
MediaPlayer mPlayer;

String path = /storage/emulated/0/Audio/1429167704744.wav;
mPlayer = new MediaPlayer();
mPlayer = MediaPlayer.create(getActivity(), Uri.parse(path));
mPlayer.start();

日志

04-20 13:04:09.667: E/AndroidRuntime(28202): Process: com.abs_ind.audio, PID: 28202 04-20 13:04:09.667: E/AndroidRuntime(28202): java.lang.NullPointerException: Attempt to invoke virtual method 'void android.media.MediaPlayer.start()' on a null object reference 
04-20 13:04:09.667: E/AndroidRuntime(28202):at com.bb_ind.test.Browse_Fragment.show_dialog(Browse_Fragment.java:71)

当我启动 Mediaplayer 时,我收到了 NullPointerException。我确定文件路径正确并且文件没有损坏。提前致谢。

【问题讨论】:

标签: android nullpointerexception android-mediaplayer


【解决方案1】:

尽量不要直接指定路径,使用Environment的helper来获取你的文件路径。在清单文件中声明权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

然后尝试以下代码播放您的音频文件。

    final String path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
            + File.separator + "1429167704744.wav";

    MediaPlayer mediaPlayer = MediaPlayer.create(this, Uri.parse(path));
    try {
        mediaPlayer.prepare();
    } catch (IOException e) {
        e.printStackTrace();
    }
    mediaPlayer.start();

【讨论】:

    【解决方案2】:

    你可以试试这段代码:

    MediaPlayer mp = new MediaPlayer(); mp.setDataSource("/mnt/sdcard/yourdirectory/youraudiofile.wav"); mp.prepare(); mp.start();

    您是否在清单中添加了以下权限行?

    &lt;uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      相关资源
      最近更新 更多