如何编写Android应用程序以接收Yamaha YDP-113电子钢琴的MIDI事件?
当我强制它时,我收到运行时错误:
FATAL EXCEPTION: main
Process: com.example.android.miditest, PID: 19022
java.lang.NoClassDefFoundError: android.media.midi.MidiManager
hasSystemFeature()方法返回false:
if (getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI)) {
// do MIDI stuff
Log.d("MainActivity-onCreate", "has MIDI feature");
TextView info = (TextView) findViewById(R.id.info_text_view);
info.setText("MIDI found!");
MidiManager m = (MidiManager) getSystemService(Context.MIDI_SERVICE);
}
else {
Log.d("MainActivity-onCreate", "cannot find MIDI feature");
TextView info = (TextView) findViewById(R.id.info_text_view);
info.setText("Sorry, no MIDI");
}
这是我的清单:
<uses-feature android:name="android.software.midi" android:required="true"/>
<uses-feature android:name="android.hardware.usb.host"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我确信这一定是可能的,因为我在AppsTransport上安装了“USB Midi Keyboard”,在Google Play商店中有100,000次下载。当我在Yamaha YDP-113上弹奏音符时,该应用程序会显示我按下的钢琴键盘键,甚至可以发出声音!
其他开发人员使用什么,允许他们制作适用于我的键盘,MIDI-USB线和三星平板电脑的应用?我需要在手机上安装一些东西吗?或者我需要告诉gradle一些包或下载?
答案 0 :(得分:1)
MidiManager
仅适用于Android 6+。 和相关功能类在以前的版本中不存在,因此如果您在旧设备上运行该应用程序,则会出现错误。
如果您想支持比Android 6更旧的设备,您将不得不使用某种专有SDK或第三方库。
快速网络搜索建议kshoji/USB-MIDI-Driver可以为您提供帮助。
请注意,如果您指定
<uses-feature android:name="android.software.midi" android:required="true"/>
对于不支持MIDI API的旧设备,该应用不会出现在Play商店中。
来源:https://developer.android.com/reference/android/media/midi/package-summary.html
您可能想删除该行。