Android wear — как фиксировать события касания

#touch #wear-os

#коснитесь #wear-ос

Вопрос:

Я хочу фиксировать события касания на Android wear (я использую Samsung Gear Live), чтобы нарисовать траекторию касания. Я попытался зафиксировать событие onTouch и событие onGenericMotionEvent в виде следующего кода, но событие запускается только один раз или иногда не происходит, когда я провожу пальцем по экрану. Мне нужно больше событий касания (по крайней мере, 5-6 событий, когда я провожу пальцем слева направо), чтобы нарисовать траекторию. Как я могу фиксировать достаточное количество событий касания на экране Android Wear?

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_my);
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub);
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {
            ViewGroup container = (ViewGroup) findViewById(R.id.container);
            container.setOnTouchListener(new View.OnTouchListener() {
                @Override
                public boolean onTouch(View view, MotionEvent event) {
                    String s = "";
                    s  = "action="   event.getAction();
                    s  = ", X="   event.getX();
                    s  = ", Y="   event.getY();
                    Log.d(TAG, s);
                    return false;
                }
            });
            container.setOnGenericMotionListener(new View.OnGenericMotionListener() {
                @Override
                public boolean onGenericMotion(View view, MotionEvent event) {
                    String s = "";
                    s  = "action="   event.getAction();
                    s  = ", X="   event.getX();
                    s  = ", Y="   event.getY();
                    Log.d(TAG, s);
                    return false;
                }
            });
        }
    });
}
 

Ответ №1:

Можете ли вы попробовать использовать только:

 container.setOnTouchListener(new View.OnTouchListener() {
 

и return true оттуда? Вам необходимо сообщить View , что вы использовали событие.

Ответ №2:

Если вы хотите выполнять отладку в автономном режиме, вы можете получить координаты касания из adb:-

 adb shell getevent