2013-04-30 19 views
8

OTG aracılığıyla Android tabanlı akıllı telefondan USB cihazı ile iletişim kurmaya çalışıyorum. Android USB Host API kullanarak cihazımla iletişim kurabiliyordum. USB Host API çözümünün problemi performanstır (16384 bytes tarafından sınırlanan tek bir toplu aktarım).Köklenme olmadan Android'de libusb kullanma

Libusb daha büyük isteklerde bulunabilir ve şimdi Android NDK kullanarak tümleştirmeye çalışıyorum. Android ve hatta initUSB() için libusb kaynaklarını derlemeyi başardım, ancak libusb_open(dev, &dev_handle) -3 (Erişim reddedildi) döndürür.

nasıl

int fd = connection.getFileDescriptor() 

Android USB Ana API altında USB_PERMISSION aldıktan sonra LibUSB ve libusb altında USB cihazı erişmek için bir dosya tanıtıcı iletebilirsiniz ?

+0

. Android ekibinden iyi bir açıklama elde etmek için bu – 4ntoine

+0

oyu açık2 (, int fd) işlevi vardır: https://code.google.com/p/android/issues/detail?id=56450 – 4ntoine

cevap

5

Bu sizin aradığınız şeydir.
https://github.com/kuldeepdhaka/libusb/tree/android-open2
Sadece derleyin ve bırakın.
Tam kullanım için "Nasıl Yapılır Android" bölümüne bakın. Tüm gerekli değişiklikleri libusb için yaptım (ve aynı zamanda bunu kullanır)
.
"Android 5.0" + için de SELinux düzeltmesi var. Bu libusb çatalı https://github.com/martinmarinov/rtl_tcp_andro-/tree/master/jni/libusb-andro adresindeki

+1

Bu umut verici görünüyor, ben Github projenize baktım ama nasıl kullanacağımı hala bilmiyorum. Java kodu libusb çağırmak için jni kullanıyor musunuz? – dweebo

+0

@dweebo Evet, Java -> JNI -> libusb –

+0

Teşekkürler! Bu kodu da paylaşabilme şansın var mı? – dweebo

İlgili konular