2017-02-17 8 views
-3

Прошу прощения, я недавно задал вопрос, который не получил должным образом из-за неточности описания моей проблемы. Я отредактировал мой вопрос.Android-режим usb-хоста

Я начинаю пытаться разработать приложение, которое использует usb-хост. Я прочитал учебник по USB Host | Android Developer, но я по-прежнему теряю то, как он изначально настроен.

Мое намерение заключается в том, чтобы приложение использовало процесс Enumeration, чтобы найти устройство, так как я не знаю, что такое идентификатор или идентификатор продукта моего подключенного устройства. Я получаю ошибку Fatal Exception: основная ошибка, когда я пытаюсь запустить то, что у меня есть.

Ниже приведен мой код. Любая помощь будет принята с благодарностью.

Основная деятельность класса

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.hardware.usb.UsbManager; 
import android.hardware.usb.UsbDevice; 
import android.content.Context; 
import java.util.HashMap; 
import java.lang.Object; 
import android.content.Intent; 
import android.util.Log; 
import java.util.Iterator; 
import java.util.Collection; 
import android.view.View; 
import android.widget.EditText; 


public class MainActivity extends AppCompatActivity { 




    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

    } 

    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); 

    HashMap <String, UsbDevice> deviceList = manager.getDeviceList(); 
    UsbDevice device = deviceList.get("deviceName"); 

} 

файл манифеста

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.example.trapperdavis.ircontprototype2"> 

    <uses-sdk android:minSdkVersion="12" /> 

    <uses-feature android:name="android.hardware.usb.host" /> 



    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
      <meta-data 
       android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" 
       android:resource="@xml/device_filter" /> 
     </activity> 
    </application> 
</manifest> 
+1

Вы не можете просто спросить для полного кода. Есть не так много людей, желающих пойти на это. Вы можете найти ресурсы там, чтобы вы начали. Затем следуйте небольшим вопросам по конкретным проблемам. Вот как вы сможете получить обратную связь от людей. –

+0

Спасибо, я в основном имел в виду открытую часть кода, чтобы начать работу. Я уточню вопрос, который будет более конкретным. –

ответ

0

на https://developer.android.com/guide/topics/connectivity/usb/host.html говорят, в основном, что есть две возможности получить информацию о USB-устройствах, подключенных к андроида

  • когда устройство подключено, os (операционная система) отправляет событие, который может быть захвачен IntentFilter (программирование на основе событий)

  • приложение может запросить для устройств, которые уже подключены

я думаю, вы хотите, чтобы запросить уже подключенных USB-устройств и получать информацию об устройствах. с вашим кодом вы можете перечислить все подключенные USB-устройства, но не можете получить информацию о них. следующий код будет печатать больше информации о подключенных устройствах, я справлялся его от http://android-er.blogspot.de/2013/10/list-attached-usb-devices-in-usb-host.html

private void checkInfo() { 
    UsbManager manager = (UsbManager) getSystemService(Context.USB_SERVICE); 
    HashMap<String, UsbDevice> deviceList = manager.getDeviceList(); 
    Iterator<UsbDevice> deviceIterator = deviceList.values().iterator(); 

    String i = ""; 
    while (deviceIterator.hasNext()) { 
    UsbDevice device = deviceIterator.next(); 
    i += "\n" + 
    "DeviceID: " + device.getDeviceId() + "\n" + 
    "DeviceName: " + device.getDeviceName() + "\n" + 
    "DeviceClass: " + device.getDeviceClass() + " - " 
    + translateDeviceClass(device.getDeviceClass()) + "\n" + 
    "DeviceSubClass: " + device.getDeviceSubclass() + "\n" + 
    "VendorID: " + device.getVendorId() + "\n" + 
    "ProductID: " + device.getProductId() + "\n"; 
    } 

    textInfo.setText(i); 
} 

полного исходного кода на http://android-er.blogspot.de/2013/10/list-attached-usb-devices-in-usb-host.html

код использует и Iterator класса, который обращается все USB-устройство в deviceList, который был создан с помощью USB-менеджера. Затем информация (vendorID, ...) извлекается из класса device путем доступа к его полям (поля класса device встроены внутри os с помощью собственных C-функций (JNI))