참고)
브로드케스트 코드는 다음과 같습니다..
/***********USB broadcast receiver*******************************************/
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent)
{
String action = intent.getAction();
if (ACTION_USB_PERMISSION.equals(action))
{
synchronized (this)
{
UsbAccessory accessory = (UsbAccessory) intent.getParcelableExtra(UsbManager.EXTRA_ACCESSORY);
if (intent.getBooleanExtra(UsbManager.EXTRA_PERMISSION_GRANTED, false))
{
Toast.makeText(global_context, "Allow USB Permission", Toast.LENGTH_SHORT).show();
OpenAccessory(accessory);
}
else
{
Toast.makeText(global_context, "Deny USB Permission", Toast.LENGTH_SHORT).show();
Log.d("LED", "permission denied for accessory "+ accessory);
}
mPermissionRequestPending = false;
}
}
else if (UsbManager.ACTION_USB_ACCESSORY_DETACHED.equals(action))
{
CloseAccessory();
}else
{
Log.d("LED", "....");
}
}
};
안녕하세요.
현재 odroid x2+ 보드를 사용하고 있습니다.( 4.1.2 )
현재 USB 포트에 연결된 장치 리스트를 가져오는 프로그램을 개발하고 있습니다.
하지만, 장치 리스트를 가져오지 못하고 계속 null이 출력되고 있습니다.
(장치가 인식되는 브로드케스트를 타지 않아 리스트를 가져오지 못합니다. )
다음과 같은 질문 2가지를 작성했습니다. ㅠ_ㅠ
1.
USB 포트에 연결된 장치 리스트(ex. 지문인식스케너, 카드리더기 )를 가져오는데, permission 안에 아래 2가지 중, 어떤걸 사용해야 하나요?
ㄱ. <action android:name='android.hardware.usb.action.USB_DEVICE_ATTACHED" />
ㄴ. <action android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED" />
2.
USB 포트에 연결된 장치 리스트를 가져오는데, android.hardware.usb 패키지를 사용하게 되는데,
제가 사용하고 있는 odroid x2(4.1.2)에서도 사용가능하도록 지원되는게 맞나요?
ㄱ. android.hardware.usb API :
http://developer.android.com/guide/topics/connectivity/usb/host.html
3.
인식할 장비의 정보를 입력하는, res -> xml -> accessory_filter.xml을 추가하게 됩니다.
그 안의 내용에는 "제조사:manufacturer, 모델:model, 버전:version"이 입력되게 되는데,
이 곳에 임의의 값을 넣어도 장치를 인식하게 되나요?
아니면, USB 포트에 연결된 장치를 인식할 "제조사, 모델, 버전"이 무조건 장치의 내용과 동일해야 인식이 되나요?
( 하지만, 현재 IC를 탑재한 USB 보드 정보를 가져오려면, 인식이 되야 제조자,모델,버전을 알 수 있습니다.. )
<resources>
<usb-accessory model="Demo" manufacturer="AI" version="1.0" />
</resources>
혹은, usb-device로 해야 된다면, vendor-id와 manufacturer 역시 임의의 값을 넣어도 장치가 인식되나요?
<resources>
<usb-device vendor-id="1234" manufacturer="5678" />
</resources>
4.
Manifest에 아래의 내용이 꼭 필요할가요?
(제가 찾아본 내용으로는 아래의 내용은 특정 장치를 인식 할 때 사용 된다고 나와있는데,
USB 장치를 인식하는 내용의 자료에는 모두 포함이 되어 있어서요.. )
그럼 아래의 내용을 작성하지 않으면 USB 포트에 연결된 모든 장치가 출력이 되어야 하는거 아닌가요?
UsbAccessory[] accessories = usbmanager.getAccessoryList(); 를 호출하면 null이 출력됩니다.
<meta-data
android:name="android.hardware.usb.action.USB_ACCESSORY_ATTACHED"
android:resource="@xml/accessory_filter" >
</meta-data>
답변 기다리겠습니다. ㅠ