Я работаю над приложением Android, в котором я использую функцию записи голоса. Для этого я нажимаю кнопку для записи, например, если пользователь удерживает кнопку более 3 секунд, тогда она позволит записывать.Одиночный клик на кнопке для записи голоса
Для этого я использую сенсорный прослушиватель, но проблема в том, что если пользователь просто нажимает кнопку, не удерживая ее, происходит вызов или функция. Мой код приведен ниже:
mBtnSendAudio.setOnTouchListener(new OnTouchListener() {
boolean shouldRecord = true;
@Override
public boolean onTouch(View v, MotionEvent event) {
if(!canChat) {
Toast.makeText(getBaseContext(), "Turned Off Chat", Toast.LENGTH_SHORT).show();
return true;
}
if (event.getAction() == MotionEvent.ACTION_DOWN) {
mLastDown = System.currentTimeMillis();
shouldRecord = true;
startRecording();
mLLAudioRecordingHover.setVisibility(View.VISIBLE);
rectAudioButton = new Rect(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
mStartTime = System.currentTimeMillis();
mRecordHandler.removeCallbacks(mUpdateTimeTask);
mRecordHandler.postDelayed(mUpdateTimeTask, 100);
} else if (event.getAction() == MotionEvent.ACTION_UP) {
if (shouldRecord) {
mLLAudioRecordingHover.setVisibility(View.GONE);
mLastDuration = System.currentTimeMillis() - mLastDown;
mRecordHandler.removeCallbacks(mUpdateTimeTask);
mLLAudioRecordingHover.setVisibility(View.GONE);
stopRecording(true, mLastDuration);
}
}
if (event.getAction() == MotionEvent.ACTION_MOVE) {
// finger move outside of button's bounds
if (!rectAudioButton.contains(v.getLeft() + (int) event.getX(), v.getTop()+ (int) event.getY()) && shouldRecord) {
mRecordHandler.removeCallbacks(mUpdateTimeTask);
shouldRecord = false;
stopRecording(shouldRecord, 0);
mLLAudioRecordingHover.setVisibility(View.GONE);
}
}
return v.onTouchEvent(event);
}
});
благодарит за ваш ответ. С нажатием кнопки он работает, но если я просто нажму кнопку, это не сработает. Пожалуйста, помогите мне в этом. Спасибо –
что вы хотите сделать, если пользователь нажмет на кнопку? –
@UKhan обновляется за один клик после попытки. –