2016-07-13 3 views

答えて

3
int iClicked = 0; 
public void onClick(View v) 
{ 
    iClicked++; 
    if(iClicked % 2==0){ 
     // Do sth, e.g. play sound I 
    } 
    else { // Do sth else, e.g. play sound II 
    } 
} 
0

私は毎秒クリックで切り抜いたサウンドを再生したいこの

private int rId=0;//class member 
    //onclick 
    final int [] music={R.raw.soho,R.raw.other}; 
    int id=music.length%2; 
    final MediaPlayer mp = MediaPlayer.create(this, rId); 
    id++; 
0

を試してみてください?

1.ストア整数Array.like内のすべてのRAWファイルのidの::ボタンのonClick

int arrRawFiles ={R.raw.soho,R.raw.soho2,R.raw.soho3} 

に応じてランダムな整数を生成し、このために

配列の長さを取得し、その番号を使用して配列から未加工ファイルIDを取得します。

public void onClick(View v) 
    { 
    int index = new Random().nextInt(arrRawFiles.length); 
    MediaPlayer mp = MediaPlayer.create(this,index); 
    mp.start(); 
    } 
0
MediaPlayer mp;  
int clickCount=0; 
one.setOnClickListener(new OnClickListener(){ 
public void onClick(View v) 
{ 
if(clickCount %2 ==0){ 
    mp = MediaPlayer.create(this, R.raw.soho); 
} 
else{ 
    mp = MediaPlayer.create(this, R.raw.another); 
} 
mp.start(); 
clickCount++; 
} }); 
1

非常に簡単です。

 final boolean isFirstSound = true; 
     Button one = (Button) this.findViewById(R.id.button1); 
     final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho); 
     final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.second_sound); 
     one.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       isFirstSound = !isFirstSound; 
       if(isFirstSound) 
        mp.start(); 
       else 
        mp2.start(); 
      } 
     }); 
0

あなたは私はこれを試していませんでし

int[] audio={R.raw.clip1,R.raw.clip2}; 
for(i=0;i<audio.length;i++){ 

//your MediaPlayer Code here 

} 

配列にオーディオクリップへの参照を置くことができますが、再生する方法のアイデアを得るでしょう...サンプルコードを見てみてください多くのクリップ。あなたのコード内のどこかに続いて 幸運

0
public class ButtonPlayer implements View.OnClickListener { 
    private final int[] sounds; 
    private int soundIndex = -1; 

    public ButtonPlayer(int... sounds) { 
     this.sounds = sounds; 
    } 

    @Override 
    public void onClick(View view) { 
     if (sounds.length != 0) { 
      soundIndex++; 
      soundIndex = soundIndex % sounds.length; 
      MediaPlayer mp = MediaPlayer.create(this, sounds[soundIndex]); 
      mp.start(); 
     } 
    } 
} 

:あなたは、コンストラクタ内の各サウンドのメディアプレーヤー「N」を生成することにより、後でこのクラスを最適化することができ

Button one = (Button) this.findViewById(R.id.button1); 
one.setOnClickListener(new ButtonPlayer(
          R.raw.first_composition, 
          R.raw.second_composition)); 

。しかし、それは最適化のタスクであり、実装ではありません。

もちろん、小さなフィーチャでも独立したクラスを作成しようとします。活動を混乱させないでください。

0
int count=0; 
    Button one = (Button) this.findViewById(R.id.button1); 
    final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho); 

    one.setOnClickListener(new View.OnClickListener(){ 
     public void onClick(View v) 
     { 
      count++; 

      if(count%2==1) { 
       //play first sound 
      }else{ 
       //play second sound 
      } 

     } }); 
0

あなただけ2つの音色を切り替えたい場合は

boolean playFirst = true; 
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho); 
     final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.second_sound_soho); 
buttonClick.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     if(playFirst == true){ 
      mp.start(); 
      playFirst = false; 
     }else{ 
      mp2.start(); 
      playFirst = true; 
     } 

    } 
}); 
ような何かをしようと私はあなたがSOUND1が再生されている場合だけチェックチェック初めて ためのブールまたは整数値を必要としないと思います - >ストップSOUND1とオープンsound2と反対

final MediaPlayer mp1 = MediaPlayer.create(this, R.raw.soho); 
final MediaPlayer mp2 = MediaPlayer.create(this, R.raw.second_sound); 

buttonClick.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) { 
     if(mp1.isPlaying()){ 
      mp1.stop(); 
      mp2.start(); 
     }else{ 
      mp2.stop(); 
      mp1.start(); 
     } 
    } 
}); 

・ホープ、このヘルプ

+0

このdoesnののロジック意味をなさない。 Sound1(mp1)は決して再生されません.... –

+0

@H.Brooksなぜあなたはサウンドmp1が決して再生されないと思うのですか?私が間違っている場合私を修正してください –

+0

私はそれをテストしました。私は既に正しい答えの一つをマークしましたが、あなたのアプローチを使用したいと思います。 –

関連する問題