找不到媒体播放器的声音文件 URI
Unable to find sound files URI for Media Player
我想在用户点击特定文本时播放声音文件。我的 数据库 中有声音文件列表,声音文件在我的应用程序中 下载 成功。我正在尝试使用 MediaPlayer
播放这些文件。问题是我 找不到播放 MediaPlayer
所需的 URI。从而导致空媒体播放器对象。我已经尝试了互联网上列出的几乎所有解决方案,但都没有解决我的问题。从数据库下载声音文件的路径是
"/data/user/0/mypackage/files/Sound/diabetes_ur_sound_1_1_1_1.0.0.0.mp3".
调试器输出附有我使用的其中一种方法的屏幕截图。
代码:
调试器输出:
您可以使用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"));
确保您的文件存在于
getFilesDir().getPath()+"/Sound/"
目录。我认为该目录中缺少您的文件。如果您的文件存在于该目录中,那么它应该可以工作。 MediaPlayer
null
如果找不到文件,可能会出现指针异常。在创建 MediaPlayer
之前尝试检查您的文件是否存在。
如果这不起作用,请在其他目录中创建文件,例如
getExternalFilesDir(Environment.DIRECTORY_MUSIC)
问题出在下载 声音文件中。因此 MediaPlayer 对象的结果为 null。
现在我在静态文件的帮助下下载声音并使用 MediaPlayer 中的文件路径。 问题已解决
我想在用户点击特定文本时播放声音文件。我的 数据库 中有声音文件列表,声音文件在我的应用程序中 下载 成功。我正在尝试使用 MediaPlayer
播放这些文件。问题是我 找不到播放 MediaPlayer
所需的 URI。从而导致空媒体播放器对象。我已经尝试了互联网上列出的几乎所有解决方案,但都没有解决我的问题。从数据库下载声音文件的路径是
"/data/user/0/mypackage/files/Sound/diabetes_ur_sound_1_1_1_1.0.0.0.mp3".
调试器输出附有我使用的其中一种方法的屏幕截图。
代码:
调试器输出:
您可以使用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"));
确保您的文件存在于
getFilesDir().getPath()+"/Sound/"
目录。我认为该目录中缺少您的文件。如果您的文件存在于该目录中,那么它应该可以工作。 MediaPlayer
null
如果找不到文件,可能会出现指针异常。在创建 MediaPlayer
之前尝试检查您的文件是否存在。
如果这不起作用,请在其他目录中创建文件,例如
getExternalFilesDir(Environment.DIRECTORY_MUSIC)
问题出在下载 声音文件中。因此 MediaPlayer 对象的结果为 null。
现在我在静态文件的帮助下下载声音并使用 MediaPlayer 中的文件路径。 问题已解决