Tôi đang phát triển ứng dụng Trình mô phỏng truyền hình từ xa trong Android bằng cách sử dụng phần mềm trung gian cụ thể (không quan trọng).Làm thế nào để làm điều gì đó nhiều lần trong khi nhấn một nút?
Trong trường hợp các nút âm lượng (Âm lượng + và Âm lượng), những gì tôi đang cố làm là gửi tín hiệu "Tăng âm lượng" liên tục trong khi nhấn nút.
Đó là những gì tôi đã cố gắng cuối cùng (mã cho một trong các nút, người kia phải giống hệt nhau ngoại trừ tên):
khai báo một boolean biến
boolean pressedUp = false;
khai báo một lớp bên trong với AsyncTask sau:
class SendVolumeUpTask extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... arg0) { while(pressedUp) { SendVolumeUpSignal(); } return null; }
}
Thêm người nghe vào nút:
final Button buttonVolumeUp = (Button) findViewById(R.id.volup); buttonVolumeUp.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: if(pressedUp == false){ pressedUp = true; new SendVolumeUpTask().execute(); } case MotionEvent.ACTION_UP: pressedUp = false; } return true; } });
Tôi cũng đã thử với chủ đề đơn giản như trong Increment-Decrement counter while button is pressed nhưng không phải làm việc. Ứng dụng hoạt động tốt cho các nút còn lại (kênh, v.v.), nhưng thay đổi âm lượng hoàn toàn bị bỏ qua.
Cảm ơn, bây giờ tín hiệu được gửi đi. Tuy nhiên, nó sẽ gửi rất nhiều tín hiệu trong một khoảng thời gian ngắn. Có lẽ một bộ đếm nên hoạt động. – Truncarlos
Tôi khuyên bạn nên có khoảng thời gian giữa các cuộc gọi đến SendVolumeUpSignal(); Ví dụ: hãy thử: 'while (pressedUp) { SendVolumeUpSignal(); Thread.sleep (100);} ' –
Hữu ích. Cảm ơn: D – Truncarlos