Android 9 USB 获取连接设备
时间: 2023-11-14 16:20:06 浏览: 169
在 Android 9 中,您可以使用以下代码获取 USB 连接的设备:
1. 首先,您需要在 AndroidManifest.xml 文件中添加一个权限声明,以允许您的应用程序访问 USB 设备。在 `<manifest>` 元素中添加以下代码:
```
<uses-permission android:name="android.permission.USB_PERMISSION" />
```
2. 在您的 Activity 类中,创建一个 BroadcastReceiver 对象,以便在 USB 设备连接或断开时接收通知。添加以下代码:
```
private final BroadcastReceiver mUsbReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (UsbManager.ACTION_USB_DEVICE_ATTACHED.equals(action)) {
// USB 设备已连接
UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (device != null) {
// 在这里处理连接设备的代码
}
} else if (UsbManager.ACTION_USB_DEVICE_DETACHED.equals(action)) {
// USB 设备已断开
UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (device != null) {
// 在这里处理断开设备的代码
}
}
}
};
```
3. 在您的 Activity 类中,获取 UsbManager 对象。您可以使用 getSystemService() 方法获取系统服务对象,如下所示:
```
UsbManager usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
```
4. 使用 UsbManager 对象获取已连接的 USB 设备列表。添加以下代码:
```
HashMap<String, UsbDevice> deviceList = usbManager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while (deviceIterator.hasNext()) {
UsbDevice device = deviceIterator.next();
// 在这里处理已连接设备的代码
}
```
注意:如果您的应用程序需要与 USB 设备进行通信,则必须请求权限。您可以使用 requestPermission() 方法请求权限,如下所示:
```
usbManager.requestPermission(device, mPermissionIntent);
```
其中,`mPermissionIntent` 是一个 PendingIntent 对象,用于接收 USB 权限请求的结果。您需要在 `onCreate()` 方法中创建 PendingIntent 对象,如下所示:
```
private static final String ACTION_USB_PERMISSION = "com.example.myapp.USB_PERMISSION";
private PendingIntent mPermissionIntent;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建 PendingIntent 对象
mPermissionIntent = PendingIntent.getBroadcast(this, 0, new Intent(ACTION_USB_PERMISSION), 0);
// 注册 USB BroadcastReceiver
IntentFilter filter = new IntentFilter(UsbManager.ACTION_USB_DEVICE_ATTACHED);
filter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(mUsbReceiver, filter);
}
```
阅读全文