2011-09-21 19 views
5

Tôi đang cố gắng để có được ứng dụng của tôi để phản ứng với một phím bấm dài trên giảm âm lượng với đoạn mã sau:Đang cố gắng để bắt onKeyLongPress Khối lượng() không làm việc

public boolean onKeyLongPress(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
     Log.w("myApp", "LONG PRESS"); 
    } 
    return super.onKeyLongPress(keyCode, event); 
} 

Tuy nhiên, nó chỉ spam một bó trong số onKeyPress() sự kiện cho giảm âm lượng và onKeyLongPress() không bao giờ được gọi. Ý định của tôi là để lại âm lượng xuống và lên "ngắn" ép một mình, và có ứng dụng của tôi phản ứng khác nhau với khối lượng báo chí dài.
Ai có thể chỉ ra những gì tôi đang thiếu?

Trả lời

12

Bạn sắp hoàn tất. Bạn cần phát hiện cùng một sự kiện quan trọng trong trình xử lý onKeyPress và bắt đầu theo dõi nó để báo chí dài có thể hoạt động. Đây là mã bạn cần:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) { 
     event.startTracking(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 
+0

Bất kỳ ý tưởng nào tôi có thể nắm bắt sự kiện quan trọng này để tiếp tục với Trình quản lý âm lượng Android và thay đổi âm thanh? – Radu

+1

@Radu: không được kiểm tra nhưng: về "trả lại đúng"; trong cuộc gọi lại báo chí dài của bạn? Nên ngăn ngừa sự lan truyền. Nhưng một lần nữa, không chắc chắn điều này thực sự có thể làm việc hay không. –

+0

@BenjaminPiette Bạn đang đúng – Lukas1

Các vấn đề liên quan