2012-12-25 3 views
1

시각 장애인 용 Android 애플리케이션을 만들고 버튼 메뉴를 사용 중입니다. 사용자가 손가락을 화면 위로 밀면 응용 프로그램이 단추의 캡션을 읽습니다. 이것은 onTouch 이벤트를 사용하여 수행됩니다. 사용자가 버튼을 클릭하면 음성 피드백과 함께 동작이 발생합니다 (동작 변경 또는 다른 동작). 이것은 onClick 이벤트를 사용하여 수행됩니다.onClick을 사용할 때 onTouch 사용 중지

문제는 버튼을 클릭 할 때 events fire (onTouch 및 onClick)가 발생하고 TTS가 onTouch 메시지를 읽기 시작하고 0.5 초 후 멈춰서 onClick 이벤트에 선언 된 새 메시지를 시작한다는 것입니다. onClick을 호출 할 때 onTouch의 실행을 어떻게 비활성화 할 수 있습니까? onTouch가 항상 onClick 앞에 있기 때문에이 문제를 이해할 수 있지만 해결책은 모르겠습니다.

+0

대부분 환영합니다. 대답은 –

답변

1

간단한 대답 사랑하는 피하기 클릭 이벤트 탭의 이벤트를 적용 감사드립니다.

나는 또한 이것을 해결하는 방법을 알고 있으므로 같은 문제에 직면 해있다.

이 코드를 사용하십시오.

먼저 제스처 클래스를 만듭니다.

class MyGestureDetector extends SimpleOnGestureListener 
{ 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) 
    { 
     return false; 
    } 
    @Override 
    public boolean onDoubleTap(MotionEvent e) 
    { 
     return true; 
    } 
    @Override 
    public boolean onSingleTapUp(MotionEvent e) 
    { 
     return true; 
    } 
} 

그런 GestureDetector gestureDetector을 만들;
개체 및.

gestureDetector=new GestureDetector(myContext, new MyGestureDetector()); 

온 터치 이벤트로 등록하십시오.

view.setOnTouchListener(this); 

이와 같은 onTouch 메서드를 재정의하십시오.

@Override 
    public boolean onTouch(View view, MotionEvent event) 
    { 
     Button b=(Button) view; 
     gestureDetector.onTouchEvent(event); 
     return true; 
    } 

여기에 몇 가지 작업은 onSingal tp 및 Double Tap에서 수행하십시오.

+0

하지만 더블 탭은 사용하지 않습니다. 나는 ontouch를 사용하여 화면 위로 이동하고 화면에 표시된 내용에 대한 오디오 피드백을 받고 onclick을 사용하여 화면에 표시된 요소를 활성화합니다. – CaptainNemo

+0

@ me1982 sin-gal 탭을 사용하십시오. –

0
public final OnTouchListener mOnTouchListener = new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent rawEvent) { 
     return false; 
    } 
}; 

또는

객체 .setOnTouchListener(null);

+1

입니다. 내 질문에 대한 답변을 이해할 수 없습니다. 이것은 onTouch를 비활성화하는 반면, 나는 둘 다 필요합니다. – CaptainNemo

관련 문제