2011-12-20 18 views
0

ボタンがあります。そのための3つの機能があります。 最初にクリックして録音を開始します。クリックすると3回目のクリックで停止します。 、音を削除)どのように私はあなたがクラスレベルの変数を設定し、蒸散しているものをクリックして決定する必要があり、このアクション ヘルプボタンを1回押すだけで複数の機能が実現

k=(Button)findViewById(R.id.button1); 
    k.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

     } 
    }); 

答えて

3

を実装することができます。このアプローチの難しさは、いつ値をリセットするかを定義することです。

private int _clicks = 0; 

k = (Button)findViewById(R.id.button1); 
k.setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     int count = ++_clicks; 

     if(count == 1) 
      //do whatever 
     if(count == 2) 
      //do whatever 
     if(count == 3) 
      //do whatever 
    } 
}); 

複数のボタンに複数のハンドラを割り当てて、ボタンに必要なアクションを実行する方がよい場合があります。これにより、1:1の関係を定義することができ、コードをより管理しやすくすることができます。

EDIT:サウンドを録音するには、plenty of examplesがウェブ上にあります。

public class AudioRecorder { 

    final MediaRecorder recorder = new MediaRecorder(); 
    final String path; 

    /** 
    * Creates a new audio recording at the given path (relative to root of SD card). 
    */ 
    public AudioRecorder(String path) { 
    this.path = sanitizePath(path); 
    } 

    private String sanitizePath(String path) { 
    if (!path.startsWith("/")) { 
     path = "/" + path; 
    } 
    if (!path.contains(".")) { 
     path += ".3gp"; 
    } 
    return Environment.getExternalStorageDirectory().getAbsolutePath() + path; 
    } 

    /** 
    * Starts a new recording. 
    */ 
    public void start() throws IOException { 
    String state = android.os.Environment.getExternalStorageState(); 
    if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) { 
     throw new IOException("SD Card is not mounted. It is " + state + "."); 
    } 

    // make sure the directory we plan to store the recording in exists 
    File directory = new File(path).getParentFile(); 
    if (!directory.exists() && !directory.mkdirs()) { 
     throw new IOException("Path to file could not be created."); 
    } 

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
    recorder.setOutputFile(path); 
    recorder.prepare(); 
    recorder.start(); 
    } 

    /** 
    * Stops a recording that has been previously started. 
    */ 
    public void stop() throws IOException { 
    recorder.stop(); 
    recorder.release(); 
    } 

} 
+0

uがどのように私を言うことができます最初のクリックでサウンドを録音する – Ramz

+0

@ user1103284編集録音音に加えて編集 –

+0

再生に感謝します – Ramz

1

別のアプローチは、3つの異なるonClickListenersを持つことです。あなたのonCreateで

:このコードを見てみましょう

... 
button.setOnClickListener(playListener); 
... 

はどこでもあなたの活動のplay()するための方法、stop()、およびshowOption()を作成し、この:

OnClickListener playListener = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      play(); 
      v.setOnClickListener(stopListener); 
     } 
    }; 

    OnClickListener stopListener = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      stop(); 
      v.setOnClickListener(showOptionListener); 
     } 
    }; 

    OnClickListener showOptionListener = new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showOption(); 
     } 
    }; 
関連する問題