Android InputManager会自动从列表中删除无线控制器
由于安卓设备上的InputManager,我正在尝试处理ps4控制器 控制器通过蓝牙连接到内置android界面的智能手机。连接时,将调用InputDeviceListener,日志将显示onInputDeviceAdded:Wireless ControllerAndroid InputManager会自动从列表中删除无线控制器,android,joystick,Android,Joystick,由于安卓设备上的InputManager,我正在尝试处理ps4控制器 控制器通过蓝牙连接到内置android界面的智能手机。连接时,将调用InputDeviceListener,日志将显示onInputDeviceAdded:Wireless Controller,这对于以下代码来说是正常的。但是,在大约5秒钟之后,onInputDeviceRemoved会因为任何原因被调用!这意味着控制器已从设备列表中删除,并阻止智能手机接收任何KeyEvent 控制器似乎仅从InputManager列表中删
,这对于以下代码来说是正常的。但是,在大约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);
}
}
有没有办法知道是什么导致了这种情况并加以避免?实际上代码是有效的。我用蓝牙键盘试过,效果很好。
问题似乎来自智能手机/Android版本,该版本不支持通过蓝牙的ps4控制器(我目前使用的是华为p8 lite 2017,Android 8.0.0)。
因此,我找到的解决方案是用OTG电缆将两者连接起来