2017-01-27 11 views
0

У меня есть приложение для Android, которое взаимодействует с USB-накопителями. Он фильтруется только для работы с USB-накопителями моей компании и фильтрует их с помощью PID/VID. Я получаю PID/VID с помощью методов Android UsbDevice getProductId() и getVendorId().UsbDevice getProductId & getVendorID Android 5.1

Одним из примеров является сочетание PID: 1812 VID: 7055 (HEX- PID: 0714 VID: 1B8F)

У меня есть Galaxy Note 4 устройства, которое я тестирую с, и она возвращается PID: 37028 и VID : 1748 для флеш-накопителя с PID: 1812 VID: 7055.

Я тестировал несколько других мобильных устройств, используя тот же USB-накопитель, в том числе несколько телефонов Samsung Galaxy. Я никогда не сталкивался с этой проблемой раньше, и я не понимаю, почему это конкретное устройство возвращает это значение. Может ли кто-нибудь предложить какие-либо идеи здесь?

--Update--

Теперь я получил такое же поведение на Droid Turbo. Оба этих устройства работают под управлением Android 5.1.1, но он все еще не объясняет неправильный идентификатор PID/VID.

+0

возможно связанные с Android ошибки: [# 159529] (https://code.google.com/p/android/issues/detail?id=159529) [# 159897] (https://code.google.com/p/android/issues/detail?id=159897) – petey

ответ

0

исходный код getVendorID()getProductID() находится в https://android.googlesource.com/platform/frameworks/base/+/c6f23e8521dedac7a07119031913235be3ca37c3/core/java/android/hardware/usb/UsbDevice.java он использует собственный код C (JNI) для получения данных из модуля ядра (usb_storage для массового хранения) или USB-хост контроллера

нативных функции:

private native boolean native_open(String deviceName, FileDescriptor pfd); 
private native void native_close(); 
private native int native_get_fd(); 
private native boolean native_claim_interface(int interfaceID, boolean force); 
private native boolean native_release_interface(int interfaceID); 
private native int native_control_request(int requestType, int request, int value, 
     int index, byte[] buffer, int length, int timeout); 
private native int native_bulk_request(int endpoint, byte[] buffer, int length, int timeout); 
private native UsbRequest native_request_wait(); 
private native String native_get_serial(); 
private static native int native_get_device_id(String name); 
private static native String native_get_device_name(int id); 

может быть, это реализовано на Galaxy Note 4 аппаратных немного глючит

если она возвращает всегда же VID и PID у вас есть только небольшая проблема/нет ...

Смежные вопросы