Play/Pause Butonuna Hızlıca Basıldığında Seç Çalmada Hata
Arkadaşlar merhaba. İlk Android projemi geliştirme aşamasındayım. Lakin bir noktada takıldım, çözemiyorum. Şimdi uygulamayı kısaca anlatayım. Beş tane buton var ve bu butonların her birisine tıklandığında bir tane ses seçiliyor. Bu beş butonun altında da bir tane play/pause butonu var. yukarıdaki butonlardan sesi seçip alttaki play butonuna bastığımda seçmiş olduğum ses çalınıyor. Ama sorun şu ki ben play butonuna hızlı hızlı bastığımda işlem bu hıza yetişemiyor ve ses durması gerekirken durmuyor çalmaya devam ediyor. Tekrar playa basınca da ses çaldığı halde tekrar çalıyor iki defa üç defa aynı anda ses çalıyor. Kodlarım aşağıdaki gibidir. Bu konuda yardımlarınızı bekliyorum, nasıl yapsam bu sorunu aşabilir daha stabil bir hale getirebilirim. Şimdiden teşekkür ederim.
package com.bebekuyutucu;
import android.graphics.Typeface;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.AdView;
public class MainActivity extends AppCompatActivity {
private SoundPool soundPool;
private int soundID;
boolean plays, loaded = false;
float actVolume, maxVolume, volume;
AudioManager audioManager;
int counter;
//String voice = null;
private int selected_voice = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final ImageView iv, anne, muzik, supurge, fon, ninni;
final SeekBar seekBar;
final TextView tv = (TextView) findViewById(R.id.textView);
// AudioManager audio settings for adjusting the volume
audioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
actVolume = (float) audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
maxVolume = (float) audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
volume = actVolume / maxVolume;
//Hardware buttons setting to adjust the media sound
this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
// the counter will help us recognize the stream id of the sound played now
counter = 0;
rekamYukle ();
Typeface cocoFont = Typeface.createFromAsset(getAssets(), "fonts/Cocogoose_trial.otf");
tv.setTypeface(cocoFont);
seekBar = (SeekBar) findViewById(R.id.seekBar);
iv = (ImageView) findViewById(R.id.imageView3);
ninni = (ImageView) findViewById(R.id.imageView4);
anne = (ImageView) findViewById(R.id.imageView5);
supurge = (ImageView) findViewById(R.id.imageView6);
fon = (ImageView) findViewById(R.id.imageView7);
muzik = (ImageView) findViewById(R.id.imageView8);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
tv.setText(progress + " dk");
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
anne.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
anne.setImageResource(R.mipmap.annex);
fon.setImageResource(R.mipmap.fon);
muzik.setImageResource(R.mipmap.muzik);
supurge.setImageResource(R.mipmap.supurge);
ninni.setImageResource(R.mipmap.ninni);
selected_voice = R.raw.annekarni;
soundID = soundPool.load(getApplicationContext(), selected_voice, counter);
soundPool.stop(soundID);
}
});
muzik.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
anne.setImageResource(R.mipmap.anne);
fon.setImageResource(R.mipmap.fon);
muzik.setImageResource(R.mipmap.muzikx);
supurge.setImageResource(R.mipmap.supurge);
ninni.setImageResource(R.mipmap.ninni);
selected_voice = R.raw.muzik_kutusu;
soundID = soundPool.load(getApplicationContext(), selected_voice, counter);
soundPool.stop(soundID);
}
});
supurge.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
muzik.setImageResource(R.mipmap.muzik);
fon.setImageResource(R.mipmap.fon);
anne.setImageResource(R.mipmap.anne);
supurge.setImageResource(R.mipmap.supurgex);
ninni.setImageResource(R.mipmap.ninni);
selected_voice = R.raw.supurge;
soundID = soundPool.load(getApplicationContext(), selected_voice, counter);
soundPool.stop(soundID);
}
});
fon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
anne.setImageResource(R.mipmap.anne);
fon.setImageResource(R.mipmap.fonx);
muzik.setImageResource(R.mipmap.muzik);
supurge.setImageResource(R.mipmap.supurge);
ninni.setImageResource(R.mipmap.ninni);
selected_voice = R.raw.fon_sesi;
soundID = soundPool.load(getApplicationContext(), selected_voice, counter);
soundPool.stop(soundID);
}
});
ninni.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
muzik.setImageResource(R.mipmap.muzik);
fon.setImageResource(R.mipmap.fon);
anne.setImageResource(R.mipmap.anne);
supurge.setImageResource(R.mipmap.supurge);
ninni.setImageResource(R.mipmap.ninnix);
selected_voice = R.raw.ninnisesi;
soundID = soundPool.load(getApplicationContext(), selected_voice, counter);
soundPool.stop(soundID);
}
});
try {
soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC,5);
}catch (Exception hata){
Toast.makeText(MainActivity.this, "Hata: "+hata, Toast.LENGTH_LONG).show();
}
iv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (tv.getText().toString().equals("0 dk")) {
Toast.makeText(MainActivity.this, "Lütfen sesi seçip, süreyi ayarlayınız.", Toast.LENGTH_SHORT).show();
} else if (selected_voice == 0) {
Toast.makeText(MainActivity.this, "Lütfen sesi seçiniz.", Toast.LENGTH_SHORT).show();
}else {
try {
if (!plays) {
soundPool.play(soundID, volume, volume, 1, seekBar.getProgress() * 12, 1f);
counter = counter++;
plays = true;
iv.setImageResource(R.mipmap.butondurdur);
}else if (plays) {
soundPool.stop(soundID);
plays = false;
iv.setImageResource(R.mipmap.butonbaslat);
}
}catch (Exception hata){
Toast.makeText(MainActivity.this, "Hata :"+hata, Toast.LENGTH_SHORT).show();
}
}
}
});
}
private void rekamYukle() {
AdView adView = (AdView) findViewById(R.id.adView);
AdRequest adRequest = new AdRequest.Builder()
.setRequestAgent("android_studio:ad_template").build();
adView.loadAd(adRequest);
}
}