Android USB主机模式
Android usb host mode
抱歉,我最近问了一个问题,由于描述我的问题不准确,所以没有收到很好的回复。我已经编辑了我的问题。
我是一名尝试开发利用 USB 主机的应用程序的初学者。我已经通读了 USB Host|Android 开发人员教程,但我仍然不知道它是如何最初设置的。
我的意图是让应用程序使用枚举过程来定位设备,因为我不知道我连接的设备的供应商 ID 或产品 ID 是什么。当我尝试 运行 我拥有的东西时,我收到 Fatal Exception: main 错误。
下面是我目前的代码。任何帮助将不胜感激。
主要Activityclass
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>
在 https://developer.android.com/guide/topics/connectivity/usb/host.html 上基本上说有两个 pos 功能可以获取有关连接到 android
的 USB 设备的信息
当设备连接时,os(操作系统)发送一个 事件,可以被 IntentFilter
( event-based编程)
应用程序可以查询已连接的设备
我认为您想查询已连接的 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
class 访问 USB 管理器生成的 deviceList
中的所有 USB 设备。然后通过访问 device
class 的字段(device
class 的字段由 os 通过本机 C 函数 (JNI))
抱歉,我最近问了一个问题,由于描述我的问题不准确,所以没有收到很好的回复。我已经编辑了我的问题。
我是一名尝试开发利用 USB 主机的应用程序的初学者。我已经通读了 USB Host|Android 开发人员教程,但我仍然不知道它是如何最初设置的。
我的意图是让应用程序使用枚举过程来定位设备,因为我不知道我连接的设备的供应商 ID 或产品 ID 是什么。当我尝试 运行 我拥有的东西时,我收到 Fatal Exception: main 错误。
下面是我目前的代码。任何帮助将不胜感激。
主要Activityclass
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>
在 https://developer.android.com/guide/topics/connectivity/usb/host.html 上基本上说有两个 pos 功能可以获取有关连接到 android
的 USB 设备的信息当设备连接时,os(操作系统)发送一个 事件,可以被
IntentFilter
( event-based编程)应用程序可以查询已连接的设备
我认为您想查询已连接的 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
class 访问 USB 管理器生成的 deviceList
中的所有 USB 设备。然后通过访问 device
class 的字段(device
class 的字段由 os 通过本机 C 函数 (JNI))