我正在尝试使用以下代码加载/播放声音(I have file /res/raw/fx2.wav)
:
MediaPlayer mp = MediaPlayer.create(this, R.raw.fx2);
或
MediaPlayer mp = MediaPlayer.create(getApplicationContext(), R.raw.fx2);
我收到此错误:
java.io.IOException: Prepare failed.: status=0x1
我搜索了这个错误,但没有一个答案有工作代码。 这样的例子还有:
MediaPlayer mediaPlayer = new MediaPlayer();
然后是:FileInputStream
or
mp.setDataSrouce
我正在试验这些,但到目前为止我没有任何工作,我不知道什么方法最适合我或在什么情况下应该使用它们?我只想加载和播放声音。
可能是我只是没有正确理解上下文。或者我的声音文件有问题(但这是一个正常的小方法,所以我认为不是这个)。
有什么想法吗?
您应该具有从AndroidManifest.xml
文件中的外部存储器读取文件的权限。
<manifest ...>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
...
</manifest>
您还应该尝试使用以下代码更改文件的路径(将com.example.myapp
更改为包名称):
MediaPlayer mp = new MediaPlayer();
Uri uri = Uri.parse("android.resource://com.example.myapp/" + R.raw.fx2);
mp.setDataSourceUri(this, uri);
有关详细信息,请参阅此答案。
这对我有用:
MediaPlayer mediaPlayer = MediaPlayer.create(getApplicationContext(), R.raw.beep);
mediaPlayer.start();
确保导入:
import android.media.MediaPlayer;