Я пытаюсь обработать контроллер ps4 благодаря InputManager на устройстве Android.
Контроллер подключается по Bluetooth к смартфону со встроенным интерфейсом 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);
}
}
Есть ли способ узнать, что вызвало это, и избежать этого?