我正在尝试使用fmod播放midi文件。但是有一个错误说:找不到插件所需的资源,(即用于MIDI播放的DLS文件)
我搜索了这样的问题的结果,并引用了fmod.h文件。似乎我需要一个名为“gs_instrument.dls”的文件,但我无法在我的mac以及android模拟器文件系统中找到它。我也搜索了网络上的资源,也没有结果。
那么如果我想使用fmod在android中播放midi文件,该怎么办呢。
希望你能帮助我!
谢谢!
答案 0 :(得分:4)
我不知道fmod,但Android可以直接播放MIDI文件。以下是对我有用的简化版本:
MediaPlayer mediaPlayer = new MediaPlayer();
File f = [... my MIDI file ...];
FileInputStream fis = new FileInputStream(f);
FileDescriptor fd = fis.getFD();
mediaPlayer.setDataSource( fd );
mediaPlayer.prepare();
mediaPlayer.start();
答案 1 :(得分:1)
使用传递到System :: createSound的FMOD_CREATESOUNDEXINFO结构的dlsname成员指定DLS文件的位置。
您必须自己提供实际文件并将其放在SD卡上,以便传递它的位置。在Windows上,默认DLS文件位于“C:\ Windows \ System32 \ drivers \ gm.dls”或“C:\ Windows \ System32 \ drivers \ etc \ gm.dls”。或者在Mac上,它位于“/System/Library/Components/CoreAudio.component/Contents/Resources/gs_instruments.dls”。这就是说我无法谈论在Android项目中使用这些文件的合法性,您可能需要从其他地方获取自己的“免费”dls文件。
答案 2 :(得分:0)
你可以这样使用。您可以调用以下方法来播放midi文件。
public void myRingCtone()
{
Uri path = Uri.parse("android.resource://com.PackageName/raw/MIDI_RingToneName");
RingtoneManager.setActualDefaultRingtoneUri(getApplicationContext(),
RingtoneManager.TYPE_RINGTONE, path);
Log .i("TESTT", "Ringtone Set to Resource: "+ path.toString());
RingtoneManager.getRingtone(getApplicationContext(), path).play();
}