我想在用户点击某些文字时播放声音文件。我的数据库中有声音文件列表,声音文件在我的应用中成功下载。我正在尝试使用MediaPlayer
播放这些文件。问题是我找不到播放MediaPlayer
所需的URI。从而导致无效的媒体播放器对象。我已经尝试了几乎所有互联网上列出的解决方案,但没有解决我的问题。从数据库下载时声音文件的路径是
" /data/user/0/mypackage/files/Sound/diabetes_ur_sound_1_1_1_1.0.0.0.mp3"
我使用的方法之一的屏幕截图附带调试器输出。
代码:
调试器输出:
答案 0 :(得分:0)
您可以使用setDataSource(Context context, Uri uri)
方法。如果您的路径正确,您可以将其作为参数传递。
示例:
try {
mp.setDataSource(getApplicationContext(), myUri1);
} catch (IllegalArgumentException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (SecurityException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (IllegalStateException e) {
Toast.makeText(getApplicationContext(), "You might not set the URI correctly!", Toast.LENGTH_LONG).show();
} catch (IOException e) {
e.printStackTrace();
}
看看这个tutorial
首先尝试使用硬编码,然后尝试动态获取路径。
尝试使用您的路径
mp.setDataSrouce(MainActivity.this, Uri.parse("/data/user/0/mypackage/files/Sound/diabetes_ur_sound_1_1_1_1.0.0.0.mp3"));
答案 1 :(得分:0)
确保您的文件存在于
中getFilesDir()。的getPath()+ “/声音/”
目录。我认为该目录中缺少您的文件。如果您的文件存在于该目录中,那么它应该可以工作。如果找不到文件,则可能会发生MediaPlayer
null
指针异常。在创建MediaPlayer
之前,请尝试检查您的文件是否存在。
如果这不起作用,请在其他目录中创建文件,如
getExternalFilesDir(Environment.DIRECTORY_MUSIC)
答案 2 :(得分:0)
问题出在下载声音文件中。因此,MediaPlayer对象导致null。
现在我正在使用静态文件并使用MediaPlayer中的文件路径下载声音。 解决了问题