2017-02-17 92 views
-3

我很抱歉,我最近問這是不是因爲我的描述問題的不準確性收好問題。我編輯了我的問題。Android的USB主機模式

我試圖開發利用USB主機的應用程序初學者。我已經通過了USB主機閱讀| Android開發者教程,但我還是輸了,以它的初始設置。

我的意圖是,讓應用程式使用枚舉過程來定位設備,因爲我不知道我的連接設備的供應商ID或產品ID爲。我收到致命異常:主要錯誤,當我嘗試運行我有什麼。

下面是我到目前爲止的代碼。任何幫助將不勝感激。

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基本上是說,有兩種可能性,以獲取有關連接到Android

  • USB設備的信息主要活動當一個設備連接時,操作系統(操作系統)發送一個事件可以通過IntentFilter(基於事件的編程)被捕獲

  • 應用程序可以查詢已連接的

設備,我認爲你要查詢已連接的USB設備和獲取有關設備的信息。使用您的代碼,您可以列出所有連接的USB設備,但無法獲取它們的信息。下面的代碼將打印更詳細的信息所連接的設備,I應對它從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

代碼使用和訪問已生成在deviceList所有USB設備Iterator類由USB經理。然後,通過訪問其字段(device類的字段由操作系統通過本地C函數(JNI)在內部構建)從device類中提取信息(vendorID,...)

相關問題