-1

1つに複数を作成するにはどうすればよいOnClickListenerですかButton。最初のクリックでオーディオの録音を開始し、次のクリックで録音を停止するアプリケーションがあるとします。どうすればそれを行うことができますか?

2つ使ってみOnClickListenersましたが、うまくいきませんでした。

編集

現在のアプリにさらにいくつかの実装を作成しようとしています。オーディオが録音されている場合、実行時にボタンのテキストを変更しようとしています。ボタンのテキストに「録音」と表示したいのですが、1秒後に「録音」と表示されます。これは、オーディオが録音されている間ずっと発生するはずです。これを実装しようとしましたが、動作させることができませんでした。これが私のコードです:

audio.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        
        
 if(audioRecording == false){
     audio.setText("Recording..");
     startRecording(); 
     audioRecording = true;
     
        while(!audio.isPressed()){
          audio.setText("Recording...");
         try {
            Thread.sleep(2000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        attachVoice.setText("Recording..");
          }

     
 }
 
 else{
     audio.setText("Press to Record");
     stopRecording(); 
     audioRecording = false;
     
 }
    
            
    }
});
4

3 に答える 3

7

あなたはそれをたくさんの方法で行うことができます、要点はあなたがどういうわけかあなたのアプリケーションの状態を保存しなければならないということです。簡単な例を次に示します。

boolean audioRecording = false;

public void onButtonClick(View v){
     if(audioRecording){
         stopRecording();
         audioRecording = false;
     } else {
         recordAudio();
         audioRecording = true;
     }
}
于 2012-06-08T20:02:31.143 に答える
5

フラグを実装するだけで、自分がどのような状態にあるかがわかります。

boolean status = true;
//...

//the Button OnCLickListener callback
public void onClick(View v) {
     if (status) {
        //start the player
        status = false;
     } else {
        // stop the player
        status = true;
     }
}

編集 :

以下のコードが役立つかどうかを確認してください。

boolean playerStatus = true;
boolean updaterStatus = true;
String[] recStrings = { "Recording..", "Recording.........." };
int i = 0;

// ...
b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                final Button b = (Button) v;
                if (playerStatus) {
                    playerStatus = false;
                    // start player
                    updaterStatus = true;
                    updateButton(b);
                } else {
                    // end player
                    playerStatus = true;
                    updaterStatus = false;
                    b.setText("Not recording");
                }
            }
        });

updateButton方法:

private void updateButton(final Button btn) {
        if (updaterStatus) {
            btn.setText(recStrings[i % 2]);
            i++;
            btn.postDelayed(new Runnable() {

                @Override
                public void run() {
                    updateButton(btn);
                }

            }, 1000);
        }
    }
于 2012-06-08T20:01:43.320 に答える
0

ボタンはチェックボックスのような2つの状態のボタンである必要があると説明したので、チェックボックスに関連付けられたドローアブルを変更できます。ここでそれを探してください。

http://www.anddev.org/tutorial_change_look_of_checkbox-t4553.html

基本的に、onClickメソッドのチェックボックスを使用して、チェックボックスがクリックされているかどうかをチェックし、一方のメソッドを実行し、もう一方のメソッドを実行します

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(((CheckBox)v).isChecked())
            method1();
        else
            method2();
    }

    private void method2() {
        // TODO Auto-generated method stub

    }

    private void method1() {
        // TODO Auto-generated method stub

    }
于 2012-06-08T20:14:43.497 に答える