init
This commit is contained in:
56
README.md
Normal file
56
README.md
Normal file
@@ -0,0 +1,56 @@
|
||||
# 通过游戏控制器
|
||||
我测试通过[官方文档](https://developer.android.com/develop/ui/views/touch-and-input/game-controllers/controller-input?hl=zh-cn)方式检查设备是无法获取到相关设备的
|
||||
|
||||
```java
|
||||
val deviceIds = InputDevice.getDeviceIds()
|
||||
deviceIds.forEach { it->
|
||||
run {
|
||||
InputDevice.getDevice(it)?.let { device ->
|
||||
run {
|
||||
Log.e("USB", "设备ID:${device.id} , 设备vid:${device.vendorId} , 设备pid:${device.productId}")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
这里通过插拔设备打印的设备信息列表都是一致的。且没有弹窗申请。
|
||||
|
||||
# 通过USB设备获取
|
||||
|
||||
通过Steam Link 观察到它的连接方式是用USB Host模式
|
||||
可以参考[官方文档](https://developer.android.com/develop/connectivity/usb/host?hl=zh-cn)
|
||||
|
||||
通过Demo的`通过USB设备获取`按钮可以观察到能在插拔USB设备的情况下打印不同的列表
|
||||
|
||||

|
||||
|
||||
```java
|
||||
usbManager = getSystemService(USB_SERVICE) as UsbManager
|
||||
usbManager.deviceList?.forEach { it ->
|
||||
run {
|
||||
Log.d("USB", "设备ID:${it.value.deviceName} , 设备vid:${it.value.vendorId} , 设备pid:${it.value.productId}")
|
||||
sb.append("设备ID:${it.value.deviceName} , 设备vid:${it.value.vendorId} , 设备pid:${it.value.productId}\n")
|
||||
if (it.value.productId == pid && it.value.vendorId == vid) {
|
||||
requestPermission(it.value)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun requestPermission(device: UsbDevice) {
|
||||
val permissionIntent = PendingIntent.getBroadcast(
|
||||
this,
|
||||
0,
|
||||
Intent(ACTION_USB_PERMISSION),
|
||||
PendingIntent.FLAG_IMMUTABLE
|
||||
)
|
||||
if (usbManager.hasPermission(device)) {
|
||||
connectUsb(device)
|
||||
} else {
|
||||
usbManager.requestPermission(device, permissionIntent)
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
## 总结
|
||||
建议新增使用USB方式获取手柄信息,我估计SteamLink能响应我之前反馈的PS手柄的PS按键也是采用该方案。
|
||||
Reference in New Issue
Block a user