녹음 버튼과 토글 버튼이있는 앱을 만들고 있습니다. 녹음 버튼은 소리 녹음을 시작하고 토글 버튼은 녹음 버튼이 녹음을 위해 HELD인지 한 번만 눌러야 하는지를 선언합니다.ToggleButton onCheckChangeListener
touchToRecord.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
saveCheckedState("touchToRecord", isChecked);
if (isChecked)
{
recBtn.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
chTimer.setBase(SystemClock.elapsedRealtime());
chTimer.setText("00:00:00");
chTimer.start();
chTimer.setTextColor(Color.GREEN);
startRecording();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
chTimer.stop();
chTimer.setBase(SystemClock.elapsedRealtime());
chTimer.setText("00:00:00");
chTimer.setTextColor(Color.GRAY);
stopRecording();
nameAlert();
}
return true;
}
});
}
else if (isChecked == false)
{
}
당신이 볼 수 있듯이, 토글 버튼은 'ON'또는 레코드 버튼을, 기록에 아래로 개최하고있다 '확인'하고 경우에 당신이 할 때 OG : 이것은 내가 그것을 달성하기 위해 노력하고있어 어떻게 버튼을 누르면 녹음이 중지됩니다. 이제는 작동하지만 단 하나의 결함 만 있습니다. isChecked 상태를 sharedpreferences에 저장하고 있으므로 토글 버튼을 '켜기'로 설정 한 다음 앱을 다시 시작하면 토글 버튼이 '켜기'상태로 유지되지만 다시 켜고 다시 작동시켜야합니다. 따라서 앱을 다시 시작하면 여전히 '켜져'있지만 작동하지 않습니다.
또한 볼 수 있듯이 토글 버튼이 false 인 경우 코드를 작성하지 않았습니다. 지금
내 코드 :
if (touchToRecord.isChecked() == true)
{
recBtn.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
startTimer();
startRecording();
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
stopTimer();
stopRecording();
nameAlert();
}
return true;
}
});
}
if (touchToRecord.isChecked() == false)
{
recBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
if (recorder == null)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
startTimer();
startRecording();
}
else if (recorder != null)
{
recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
stopTimer();
stopRecording();
nameAlert();
}
}
});
}
OnCheckedChangeListener :
touchToRecord.setOnCheckedChangeListener(new OnCheckedChangeListener(){
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
saveCheckedState("touchToRecord", isChecked);
}
});
공유 환경 설정에서 상태 ToggleButton을 받기는 :
touchToRecord.setChecked(getCheckedState("touchToRecord"));
공유 환경 설정에서 '확인 됨'상태를 저장하는 이유는 무엇입니까? – Namenlos
@ Namenlos 앱이 설정을 기억하기를 원하기 때문에 사용자가 앱을 열 때마다 변경할 필요가 없기 때문입니다. 거기에 문제가 있습니까? – Guy
아니요, 괜찮습니다. 내가 틀렸어 .-) – Namenlos