InputManager 自动从列表中删除无线控制器
InputManager automatically removes Wireless Controller from list
由于 Android 设备上的 InputManager,我正在尝试处理 ps4 控制器。
控制器通过蓝牙连接到具有内置 android 接口的智能手机。连接时,将调用 InputDeviceListener 并且日志显示 onInputDeviceAdded: Wireless Controller
这对于以下代码是正常的。但是,在大约 5 秒之后,onInputDeviceRemoved
出于某种原因被调用了!这意味着控制器已从设备列表中删除并阻止智能手机接收任何 KeyEvent
.
控制器似乎只是从 InputManager 列表中删除,因为它仍与智能手机配对。
这是我的代码:
public class activity_test extends AppCompatActivity {
private static final String TAG = activity_test.class.getSimpleName();
private InputManager mInputManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mInputManager = (InputManager)getSystemService(Context.INPUT_SERVICE);
int[] ids = mInputManager.getInputDeviceIds();
mInputManager.registerInputDeviceListener(new InputManager.InputDeviceListener() {
@Override
public void onInputDeviceAdded(int i) {
Log.d(TAG, "onInputDeviceAdded: "+mInputManager.getInputDevice(i));
}
@Override
public void onInputDeviceRemoved(int i) {
Log.d(TAG, "onInputDeviceRemoved: "+mInputManager.getInputDevice(i));
}
@Override
public void onInputDeviceChanged(int i) {
Log.d(TAG, "onInputDeviceChanged: "+mInputManager.getInputDevice(i));
}
}, null);
}
}
有没有办法知道是什么原因造成的并避免它?
实际上代码有效。我用蓝牙键盘试了一下,效果很好。
看起来问题出在不支持 ps4 控制器通过蓝牙的 smartphone/Android 版本(我目前使用的是 Huawei p8 lite 2017,Android 8.0.0)。
所以我找到的解决方案是用 OTG 电缆连接两者。
由于 Android 设备上的 InputManager,我正在尝试处理 ps4 控制器。
控制器通过蓝牙连接到具有内置 android 接口的智能手机。连接时,将调用 InputDeviceListener 并且日志显示 onInputDeviceAdded: Wireless Controller
这对于以下代码是正常的。但是,在大约 5 秒之后,onInputDeviceRemoved
出于某种原因被调用了!这意味着控制器已从设备列表中删除并阻止智能手机接收任何 KeyEvent
.
控制器似乎只是从 InputManager 列表中删除,因为它仍与智能手机配对。
这是我的代码:
public class activity_test extends AppCompatActivity {
private static final String TAG = activity_test.class.getSimpleName();
private InputManager mInputManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mInputManager = (InputManager)getSystemService(Context.INPUT_SERVICE);
int[] ids = mInputManager.getInputDeviceIds();
mInputManager.registerInputDeviceListener(new InputManager.InputDeviceListener() {
@Override
public void onInputDeviceAdded(int i) {
Log.d(TAG, "onInputDeviceAdded: "+mInputManager.getInputDevice(i));
}
@Override
public void onInputDeviceRemoved(int i) {
Log.d(TAG, "onInputDeviceRemoved: "+mInputManager.getInputDevice(i));
}
@Override
public void onInputDeviceChanged(int i) {
Log.d(TAG, "onInputDeviceChanged: "+mInputManager.getInputDevice(i));
}
}, null);
}
}
有没有办法知道是什么原因造成的并避免它?
实际上代码有效。我用蓝牙键盘试了一下,效果很好。 看起来问题出在不支持 ps4 控制器通过蓝牙的 smartphone/Android 版本(我目前使用的是 Huawei p8 lite 2017,Android 8.0.0)。 所以我找到的解决方案是用 OTG 电缆连接两者。