InputManager автоматически удаляет беспроводной контроллер из списка - PullRequest
0 голосов
/ 24 января 2020

Я пытаюсь обработать контроллер 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);
    }
}

Есть ли способ узнать, что вызвало это, и избежать этого?

1 Ответ

0 голосов
/ 30 января 2020

На самом деле код работает. Я попробовал это с клавиатурой Bluetooth, и она работает просто отлично. Похоже, что проблема скорее связана с версией смартфона / Android, которая не поддерживает контроллер ps4 через Bluetooth (в настоящее время я использую Huawei p8 lite 2017, Android 8.0.0). Таким образом, решение, которое я нашел, соединяет оба кабеля OTG.

...