2011-09-19 1 views
7

Android 응용 프로그램 (Java GUI + 기본 (C++) 코어)에서 libusb를 사용하고 싶습니다. 이미 libusb를 컴파일하고 함수 호출을 시도했지만 libusb_open은 LIBUSB_ERROR_ACCESS를 반환합니다. USB 액세스 권한에 문제가 있다고 생각되지만 문제를 해결하는 방법을 모르겠습니다. 그럼, 여기에 2 개의 질문 : 1) 뿌리 안드로이드 3.1 장치에서 libusb를 실행하는 방법? 2) 루어지지 않은 공장 출하시 기본 장치에 libusb를 사용할 수 있습니까?안드로이드 응용 프로그램에서 libusb 사용 : 응용 프로그램에서 USB에 액세스 할 수있게하는 방법

미리 감사드립니다.

P. S. 질문 1과 같이, 나는 chmod 666을/dev/bus/usb에 시도했지만 "권한이 거부되었습니다"라고 말합니다 (내 장치가 루팅 됨).

P.P.S. mount usbfs none/proc/bus/usb -o devmode = 0666 뭔가 잘못 쓴 것처럼 (심지어 나는하지 않았다.


나는 확실히는 USB 호스트와 뿌리 안드로이드 장치에 작업 LIBUSB 얻을 수 알고,하지만 난 그것을 관리하지, 그래서 3.1 안드로이드 응용 프로그램을 제한하고 USB API를 사용했다.

+0

당신은 분명히 안드로이드 3.1 작업으로, 당신은 [USB API를]를 사용하여 고려가 (http://developer.android.com/ : https://gitlab.com/madresistor/libusb/blob/android/README

OLD LINK 여기 (DEAD LINK) 솔루션을 참조 guide/topics/usb/index.html)을 Android SDK에 포함 시키시겠습니까? – Frxstrem

+0

@Frxstrem : 예, 그 해결책에 의지해야했습니다. 나는 그것에 만족하지 않고 있지만, 작동하고 그것은 안드로이드에서 USB를 사용하는 표준 방법입니다, 그래서 나는 질문을 닫아야한다고 생각합니다. –

+2

그것을 닫지 마십시오. 그냥 대답하십시오. –

답변

0

안드로이드에서는 libusb를 사용하여 USB 장치를 직접 열 수 없습니다 (이것은 결론입니다).

왜 열 수 없습니까?

기기를 열려면 Android 시스템 (! = Kernel)의 허가를 받아야합니다.

는 자바를 수행하십시오 요청할 때

는 팝업이 승인 또는 거부 할 사용자에게 표시됩니다. 그래서 장치를 java에서 열고 java를 사용하여 fd를 추출하고 libusb로 전달하여 장치와 통신 할 수 있도록해야합니다.

이제 libusb가 fd에서 핸들을 빌드하는 방법은 무엇입니까?

업데이트 : 저는 Android 용으로 수정 된 libusb 버전을 유지합니다 (더 많은 수정 프로그램 - Android 5.1 이하에서 작동/테스트 됨). https://github.com/martinmarinov/rtl_tcp_andro-/blob/master/jni/libusb-andro/libusb/core.c#L993

+0

링크가 끊어졌습니다. – jayeffkay

+0

@jayeffkay 업데이트 된 링크. 감사. –

관련 문제