2013-08-08 19 views
10

Tôi có thể chụp hầu hết các sự kiện được kích hoạt bởi bàn di chuột của kính google bằng cách sử dụng SimpleOnGestureListener trong ứng dụng gốc.Cách chụp sự kiện onSwipeDown trên kính google bằng ứng dụng gốc?

Với đoạn mã sau bạn có thể chụp những sự kiện

MainActivity.java:

private GestureDetector gestureDetector; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    gestureDetector = new GestureDetector(this, new MyGestureListener()); 
} 

@Override 
public boolean onGenericMotionEvent(MotionEvent event) 
{ 
    gestureDetector.onTouchEvent(event); 
    return true; 
} 

MyGestureListener:

public class MyGestureListener extends android.view.GestureDetector.SimpleOnGestureListener 
{ 
    @Override 
    public boolean onFling(MotionEvent start, MotionEvent finish, float velocityX, float velocityY) 
    {  
     // check for velocity direction to identify swipe forward/backward/up and down 
     return true; 
    } 
} 

tôi thấy hai nguồn khác nhau để chế biến cử chỉ tôi đã cố gắng:

  1. Capture Glass D-Pad events in Android
  2. Capturing Gesture Controls for Use in Native Android Glass Apps

Nhưng với ai trong số họ tôi đã có thể nắm bắt những sự kiện swipeDown.

Gọi lại onFling() chỉ được gọi là "vuốt về phía trước", "vuốt lùi" và "vuốt lên" nhưng không bao giờ được gọi khi tôi thực hiện "vuốt xuống".

Bất kỳ gợi ý nào hoặc bạn đã quản lý để bắt đầu vuốt xuống? Tôi thực sự không biết gì ở đây.

Trả lời

9

Đây là giải pháp (lạ).

Dường như swipeDown cử chỉ không phải là thực sự là một cử chỉ nhưng nhiều hơn một nút bấm .

Điều đó có nghĩa là bạn nên sử dụng các phương thức gọi lại của hoạt động của bạn để nắm bắt các sự kiện này.

private static final int KEY_SWIPE_DOWN = 4; 

@Override 
public boolean onKeyUp(int keyCode, KeyEvent event) 
{ 
    if (keyCode == KEY_SWIPE_DOWN) 
    { 
     // there was a swipe down event 
     return true; 
    } 
    return false; 
} 

Tôi nghĩ rằng bạn không cần phải quan tâm đến onKeyDown() gọi lại vì callback này chỉ được kích hoạt trực tiếp trước khi sự kiện onKeyUp() và không phải khi bạn đang bắt đầu những cử chỉ.

0

Thú vị Tôi nghĩ rằng điều này có thể là một số loại lỗi như ít nhất với XE12 cài đặt Glass của tôi dường như để bắt xuống swipe Cử chỉ về một trong mỗi mười lần. Kiểm tra thực tế tôi đã đếm là 5, 15, 3 và 8 Hoạt động onKeyUp tới GestureDetector.SimpleOnGestureListeneronFling.

Vì vậy, tôi đang bắt cả hai và thực hiện cùng một chức năng trong mỗi.

0

Theo tài liệu GDK, đây là cách thực hiện. Vuốt xuống dịch sang KEYCODE_BACK.

public boolean onKeyDown(int keycode, KeyEvent event) { 
      if (keycode == KeyEvent.KEYCODE_BACK) { 
      // Do something here 
       return true; 
      } 
     ... 
     super.onKeyDown(keyCode, event) 
     }