Gesture 기능



Gesture 기능을 브라우저에서 쓰고 싶다....

돌핀 브라우저의 경우 별도의 panel 을 띄우기 때문에 불편하다..

그냥 Webview 화면 위에서 gesture 를 해보려고 했으나.. 이렇게 하려면 gesture 인식하는 것을 따로 구현해야 하는듯..

그리고 브라우징을 위한 touch, zoom 을 위한 멀티 터치와 구분하는 것이 쉽지 않아 보인다.


android 에서 친절하게 제공하는 gesture 관련 라이브러리를 사용하기 힘든 것 같다.




그래서 일단

GestureOverlayView 를 사용할 수 있는 Activity 를 만들었다.. 그래야 쓰기 편하니까...

참고로 sdcard 에 있는 gesture 파일은 gesture builder 를 통해서 만들어 지는 것이다. development 폴더에 보면 있음...


private GestureLibrary gLib;

 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.browser_gesture);
 
  gLib = GestureLibraries.fromFile("/sdcard/gestures");  // Gesture builder 에서 만들어 놓은 넘을 읽어 온다.
  if (!gLib.load()) {
   finish();
  }


  GestureOverlayView gestures = (GestureOverlayView) findViewById(R.id.gestures);
  gestures.addOnGesturePerformedListener(handleGestureListener);
 }


 private OnGesturePerformedListener handleGestureListener = new OnGesturePerformedListener() {

  public void onGesturePerformed(GestureOverlayView gestureView,
    Gesture gesture) {
 
   ArrayList<Prediction> predictions = gLib.recognize(gesture);
 
   if (predictions.size() > 0) {
    Prediction prediction = predictions.get(0);

    
    if (prediction.score > 7.0) {
   
     String action = prediction.name;
     Intent resultIntent = null;
           if ("a".equals(action)) {
               //Toast.makeText(this, "Adding a contact", Toast.LENGTH_SHORT).show();
               resultIntent = new Intent("FORWARD");
           } else if ("b".equals(action)) {
               //Toast.makeText(this, "Removing a contact", Toast.LENGTH_SHORT).show();
               resultIntent = new Intent("BACKWARD");
           } else if ("c".equals(action)) {
               //Toast.makeText(this, "Reloading contacts", Toast.LENGTH_SHORT).show();
               resultIntent = new Intent("HOME");
           }else{
            // do nothing..
      resultIntent = new Intent();
           }

     setResult(RESULT_OK, resultIntent);  // BrowserActivity 쪽으로 result 를 날려서 각각 기능을 수행하도록 한다.

     finish();
    }else{

     Toast.makeText(GestureActivity.this, "unable to recognize this gesture",
       Toast.LENGTH_SHORT).show();

    }
   }
 
  }
 };

by 수영사랑 | 2010/11/30 18:17 | Browser Application 관련 | 트랙백 | 덧글(0)

트랙백 주소 : http://skyswim42.egloos.com/tb/3908540
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

◀ 이전 페이지다음 페이지 ▶