[英]Android - play different sound on ever second click
如果我想在用戶單擊按鈕時播放聲音,則為:
Button one = (Button) this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v){
mp.start(); }
});
但是,當我有2種聲音並且想要每秒鍾單擊一次播放不同的聲音時該怎么辦?
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
}
}
嘗試這個
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++;
我想每秒鍾單擊一次播放不同的聲音嗎?
為了這 :
1.將所有原始文件ID存儲在Integer Array中,例如:
int arrRawFiles ={R.raw.soho,R.raw.soho2,R.raw.soho3}
2. on Button的onClick
根據數組長度生成一個隨機整數,然后使用該數字從數組獲取原始文件ID:
public void onClick(View v)
{
int index = new Random().nextInt(arrRawFiles.length);
MediaPlayer mp = MediaPlayer.create(this,index);
mp.start();
}
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++;
} });
這很簡單。 查看示例代碼並嘗試...
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();
}
});
您可以將對音頻剪輯的引用放入數組中
int[] audio={R.raw.clip1,R.raw.clip2};
for(i=0;i<audio.length;i++){
//your MediaPlayer Code here
}
我沒有嘗試過,但是您會發現如何播放許多剪輯的想法。 祝好運
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();
}
}
}
然后在代碼中的某處:
Button one = (Button) this.findViewById(R.id.button1);
one.setOnClickListener(new ButtonPlayer(
R.raw.first_composition,
R.raw.second_composition));
您可以稍后通過為構造函數中的每種聲音生成“ n”個媒體播放器來優化此類。 但這是優化的任務,而不是實現的任務。
當然,總是嘗試為小功能創建獨立的類。 不要弄亂活動。
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
}
} });
嘗試像
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;
}
}
});
如果您只想在2種聲音之間切換,我認為您不需要第一次檢查布爾值或int值只需檢查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();
}
}
});
希望這個幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.