Как использовать USB-устройство в более низкой версии Android, например Android 2.2?

Я работаю с устройством чтения магнитных карт Magtek и подключил этот MCR к устройству Android через USB. Когда я использую API 12 и более поздних версий, он работает нормально, но когда я изменил версию API на 8, он разбился и показал следующий результат в Log cat:

   04-12 11:39:39.560: E/AndroidRuntime(276): java.lang.NoClassDefFoundError: android.hardware.usb.UsbManager
    04-12 11:39:39.560: E/AndroidRuntime(276):  at com.magtek.mobile.android.libDynamag.MagTeklibDynamag.openDevice(MagTeklibDynamag.java:98)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at com.magtek.mobile.android.MagTekDemo.Dynamag.MagTekDemo.onResume(MagTekDemo.java:119)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.app.Activity.performResume(Activity.java:3823)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.os.Handler.dispatchMessage(Handler.java:99)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.os.Looper.loop(Looper.java:123)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at android.app.ActivityThread.main(ActivityThread.java:4627)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at java.lang.reflect.Method.invokeNative(Native Method)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at java.lang.reflect.Method.invoke(Method.java:521)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
    04-12 11:39:39.560: E/AndroidRuntime(276):  at dalvik.system.NativeStart.main(Native Method)

Можем ли мы сделать так, чтобы Android 2.2 USB включал и использовал USB-устройства?


person Naresh Sharma    schedule 12.04.2013    source источник


Ответы (2)


Вы не можете. API, который вы хотите использовать, не существовал в версии 2.2. Это не тот случай, когда они изменили API, это добавленная ими функция, которой раньше не было. И учитывая, что это связано с аппаратным обеспечением, это не вопрос написания кода для его эмуляции. Вам просто придется жить с API 12+

person Gabe Sechan    schedule 12.04.2013

Я хочу поделиться тем, что мы также можем использовать USB-устройство в более ранней версии, просто преобразовав USB-устройства HID в тип клавиатуры. Ввод с USB-устройства HID обрабатывается так же, как ввод с клавиатуры. Я должен использовать Magtek MSR, чтобы провести CC и получить информацию о CC. Но устройство не поддерживает USB-соединение из-за более низкой версии.

Затем я просто изменил USB HID на тип клавиатуры, и теперь все в порядке. Но для этого это устройство может быть сменным. Вот как я использую USB-устройство в своем приложении.

person Naresh Sharma    schedule 07.05.2013