1、接入usb midi 設備發現並不能獲取服務
MidiManager midiManager = (MidiManager)getSystemService(Context.MIDI_SERVICE);
獲取到的midiMangager 是空的。跟蹤源碼發現 frameworks/base/services/java/com/android/server/SystemServer.java
並沒有打開相關服務 打開相關服
PackageManager本身就是個抽象類,裏面的hasSystemFeature方法就是個尚未實現的抽象方法。接下來尋找實現的該方法的派生類 找到 PackageManger 的實現類 frameworks/base/core/java/android/app/ApplicationPackageManager.java
IPackageManager 的類frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java
mAvailableFeature 是在SystemConfig 的一個成員變量
/android/frameworks/base/services/core/java/com/android/server/SystemConfig.java
在SystemConfig的構造函數中,發現mAvailableFeature其實是讀取的/system/etc/permissions/ 裏面的xml配置文件
現在我們就要看看這個xml配置文件是在哪裏被複制過去的。
在項目的nfc.mk文件中,我似乎找到了複製文件的蹤影
於是乎我們在device/rockchip/rk3288/device.mk 添加
PRODUCT_COPY_FILES +=frameworks/native/data/etc/android.software.midi.xml:system/etc/permissions/android.software.midi.xml
重新打包燒寫固件,大功告成
2、不能進行通信 檢測接入設備是否有生成節點,rk3288 usb 默認回有節點