私が構築した USB デバイス (dsPIC33E 電源) を一般的な 7 インチ A13-MID アンドロイドに接続しています。
LogCat を実行して TCPIP 経由で ADB を使用しています。
デバイスを接続すると、LogCat に次のように表示されます。
I/USB3G (90): event { 'add', '/devices/platform/sw_hcd_host0/usb1/1-1', 'usb', '', 189, 7 }
I/USB3G (90): path : '/sys/devices/platform/sw_hcd_host0/usb1/1-1'
I/USB3G (90): VID :size 5,vid_path '/sys/devices/platform/sw_hcd_host0/usb1/1- 1/idVendor',VID '04d8'.
I/USB3G (90): PID :size 5,Pid_path '/sys/devices/platform/sw_hcd_host0/usb1/1-1/idProduct',PID '003f'.
I/USB3G (90): cmd=/system/etc/usb_modeswitch.sh /system/etc/usb_modeswitch.d/04d8_003f &,
I/USB3G (90): excute ret : 0,err:No such file or directory
MissileLauncher Demo をデバッグ モード ADT で実行しています。
Fire にブレークポイントを設定できます。Fire ボタンを押すと、そこでコードが中断されます (デバッグは機能しています)。
device_filter.xml で Product-ID と Vendor-ID を正しい値に設定しました。
次に、ここにブレークポイントを設定します。
UsbDevice device = (UsbDevice)intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
setDevice(device);
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
if (mDevice != null && mDevice.equals(device)) {
setDevice(null);
}
}
休憩の後にコードをステップスルーすると、インテント。行は実行されますが、次の if ステートメントは入力されておらず、setDevice(device)
呼び出されることはありません (どちらもありませんsetDevice(null)
)。
setDevice(device) が呼び出されると思っていました。結局、私はデバイスを接続し、Android は私が接続したことを認識し (上記の LogCat を参照)、device_filter.xml を正しく設定しました。
私は何が欠けていますか?
その他の情報として、「USB デバイス」をインストールしたアプリにデバイスが表示されますが、[Linux] タブに一覧表示されます。それが私にとって悪いニュースでないことを願っています!
ありがとう、デール
デバイスを個別に列挙しようとしましたが、「はい」はありませんでした (実際、HashMap にはデバイスが返されませんでした)。
HashMap<String, UsbDevice> deviceList = mUsbManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while(deviceIterator.hasNext()){
UsbDevice device1 = deviceIterator.next();
//your code
if (device1.getVendorId()==1240) {
savetofile("Yeah!");
}
}
これが関連しているかどうかはわかりませんが、Androidはルート化されており、そのようになりました。