Кнопка Android onLongClick, как получить прослушиватель при отпускании кнопки при длительном нажатии [дубликат]
-
21-12-2019 - |
Вопрос
я следую этот урок реализовать рекордер в Android, который содержит приведенный ниже код: при удерживании кнопки начинается запись, при отпускании прекращается запись, но я не могу найти прослушиватель при отпускании кнопки, какой-нибудь совет?заранее спасибо
button.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View arg0) {
startRecording();
return false;
}
});
private void startRecording() {
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(voiceFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed");
}
mRecorder.start();
}
private void stopRecording() {
mRecorder.stop();
mRecorder.release();
mRecorder = null;
}
Решение
Вам не следует реализовывать longclicklistener, вам следует реализовать OnTouchListener.
Там у вас будет событие касания, и сделайте следующее:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP){
stopRecording();
return true;
}else{
startRecording();
return true;
}
return false;
}
});
Другие советы
логическое значение «start» управляет этим
private void onRecord(boolean start) {
if (start) {
startRecording();
} else {
stopRecording();
}
}
а потом
class RecordButton extends Button {
boolean mStartRecording = true;
OnClickListener clicker = new OnClickListener() {
public void onClick(View v) {
onRecord(mStartRecording);
if (mStartRecording) {
setText("Stop recording");
} else {
setText("Start recording");
}
mStartRecording = !mStartRecording;
}
};
контролирует это
Не связан с StackOverflow