androidでMIDIのNote ON、OFFメッセージを受信するアプリを作っています。  
androidの端末にはmicro USBを介してMIDIケーブルを接続しています。  
そこで、
android.media.midiのAPIを利用して開発しているのですが、MIDIケーブルを認識しません。ただ単に、MIDIケーブルを扱うドライバが入っていないからというのが理由なのかもしれないですが、MIDIを扱うアプリをインストールしたころ、そのアプリではMIDIメッセージを受け取ることができました。

具体的な状況は以下の通りです。

・開発環境:Android Studio  
・携帯端末：Zenfone 2  
・端末の開発者オプション(USB Configration):MIDI  
・Androidのバージョン:6.01(APIレベル23)  
・接続MIDIケーブル：UX16(YAMAHA)

AndroidManifest.xmlに以下を追加しました。

```

    <uses-feature android:name="android.software.midi" android:required="true"/>
    
```

コードの一部示します。

```

    MidiManager m = (MidiManager)context.getSystemService(Context.MIDI_SERVICE);  
    if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_MIDI)) {
        MidiDeviceInfo[] infos = m.getDevices();
    }
    
```

現在の状況としてgetDevices()を実行した際ににinfosのlengthが0(infos[0]がnull)になってしまいます。

また、マニフェストに以下を記述してUSBホストのOTG機能としてアプリを起動した際には  
USBデバイスとして、ケーブルを認識しました。

```

    <uses-feature android:name="android.hardware.usb.host"/> 
    
```

android.media.midiの参考サイトです。  
Android Developers:  
<https://developer.android.com/reference/android/media/midi/package-
summary.html#get_list_of_already_plugged_in_entities>

MIDIケーブルが認識しない理由、また認識させる方法が分りましたらご教授しただけないでしょうか。よろしくお願いします。
CC BY-SA 3.0
2017-04-15T14:41:41.563
34041
2018-01-24T09:30:11.410
22579
question
android usb
androidとMIDIケーブルの接続について
私もそれほどAndroid MIDIに詳しい訳ではないのですが…

私が試した限りでは、以下の2製品はAndroid MIDI APIで認識されました。

  * Roland UM-ONEmk2 (<https://www.roland.com/jp/products/um-one_mk2/>)
  * Mugig UX-16 (<https://www.amazon.co.jp/Mugig-MIDI%E3%82%B1%E3%83%BC%E3%83%96%E3%83%AB-1-95m-USB-MIDI%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9-UX-16/dp/B074YYV8T5>) ※偶然YAMAHAのものと同じ名前ですが別物です。

AndroidでMIDIデバイスを使用する方法には、Android 6.0で標準で搭載されたMIDI APIのほかに、kshojiさんが提供されているUSB
MIDI Driver ( <https://github.com/kshoji/USB-MIDI-Driver>
)があります。感覚的にこちらの方が対応しているデバイスは多く、恐らくインストールしたMIDIアプリはこちらを使っているのではと思われます。

以上、参考までに。
CC BY-SA 3.0
2017-11-01T11:53:43.680
39216
2017-11-01T11:53:43.680
26012
34041
answer