1

我正在制作一个简单的 android 应用程序来录制声音。我有一个 startRecording() 和 stopRecording() 方法。现在我实现了一个名为“Touch to record”的 ToggleButton,正如您已经想象的那样,当按钮被选中时,您必须按住录制按钮来录制声音,当按钮处于“关闭”状态时,您必须单击开始并然后单击停止。

这是当前代码:

touchToRecord.setOnCheckedChangeListener(new OnCheckedChangeListener(){

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                boolean 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.start();
                            chTimer.setTextColor(Color.GREEN);
                            startRecording();
                        }
                        else if (event.getAction() == MotionEvent.ACTION_UP)
                        {
                            recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
                            chTimer.stop();
                            stopRecording();
                            nameAlert();
                        }
                        return true;
                    }

                });
            }
            else
            {
                //onClickListener
            }
        }

    });

现在我不确定如何制作 onClickListener。如果我尝试这样做:

recBtn.setOnClickListener(new OnClickListener(){

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        // TODO Auto-generated method stub

                    }

                });

它不起作用,因为它强调了 setOnClickListener 并说:

View 类型中的方法 setOnClickListener (View.OnClickListener) 不适用于参数(new DialogInterface.OnClickListener(){})

另外,在我完成这项工作之后还有一件事;如何使用 if 语句检查该方法是否已在运行?我想做这样的事情:

if (startRecording == isRunning)
{
    stopRecording();
}
4

2 回答 2

1

你可以试试android切换按钮。请查看更多信息:

http://developer.android.com/guide/topics/ui/controls/togglebutton.html

于 2013-08-13T22:34:17.097 回答
1

解决了问题!

我通过在 XML 中设置 onClick 然后只创建方法来避免使用 onClickListener。这是代码:

public void recordBtnClick(View v){
    final ToggleButton touchToRecord = (ToggleButton)findViewById(R.id.tBtn1);
    final ImageButton recBtn = (ImageButton) findViewById(com.whizzappseasyvoicenotepad.R.id.recButton);
    if (touchToRecord.isChecked() == false)
    {
        if (recorder == null)
        {
            recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn_pressed);
            chTimer.start();
            chTimer.setTextColor(Color.GREEN);
            startRecording();
        }
        else if (recorder != null)
        {
            recBtn.setImageResource(com.whizzappseasyvoicenotepad.R.drawable.record_btn);
            chTimer.stop();
            stopRecording();
            nameAlert();
        }
    }
    else
    {
        //DO NOTHING
    }
}
于 2013-08-14T11:43:59.343 回答