私はアンドロイドを搭載したデバイスがUSB-Device(USBホストではない)として動作するアプリケーションを開発しています。だから私は私のアンドロイドデバイスが接続されているホストを見つける必要があります。ここに私のコードです:GetAccessoryListが呼び出されたときにUsbManagerがnullを返します
btnRefresh.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//UsbAccessory[] usbAccessory = new UsbAccessory[1];
mUsbManager = (UsbManager)getSystemService(Context.USB_SERVICE);
usbAccessory = mUsbManager.getAccessoryList();
List<String> accessoryListTemp= new ArrayList<String>();
if (usbAccessory != null) {
if (usbAccessory.length > 0) {
String hhhh = usbAccessory[0].getModel();
accessoryListTemp.add(hhhh);
}
}
//accessoryListTemp.add("hamed test item");
ArrayAdapter<String> arrayAdapterTemp = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_spinner_item, accessoryListTemp);
arrayAdapterTemp.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinnerHosts.setAdapter(arrayAdapterTemp);
}
});
私はaccessoryListTemp変数でnullを得た理由を理解できません。おそらく、デバイスが見つかりませんでしたが、実際にはデバイスが接続されていて、他のデバイスがデバイスを検出したことを意味します。 具体的には、私はUSB経由で2台のAndroid携帯電話を接続していますが、そのうちの1台はホストで、もう1台はデバイスですが、デバイスはホストを認識しません。
はたぶんあなたのデバイスがUSBアクセサリモードであり、もう一つはホストのような役割を果たします。たぶんそのうちの1人がアクセサリーリストを取得できないのでしょうか? –
実際には本当ですか、そのうちの1つはアクセサリモードで、もう1つはホストモードですが、なぜこのように接続できないのですか? –
私は、USBホストだけがアクセサリリストを取得できることを理解しています。 –