Ya da sürekli olarak yeniden yerleştirmek zorunda mıyım?Aynı kaynaktan birden fazla ses kaynağını (MediaPlayer) aynı anda çalabilmemin bir yolu var mı?
Bir gemi her patladığında patlama yapan bir ses dosyam var, ancak bazen üç veya daha fazla gemi aynı anda patlayabilir, böylece aynı ses klibinin üst üste gelmesini istiyorum. Yeni örnekler oluşturmazsam bunu yapmayacağımı fark ettim. Kaybettiğim bir şey mi var, yoksa bunu yapmanın tek yolu mu?
//declaration
private final MediaPlayer[] explosionSound = new MediaPlayer[5];
//constructor
for (int i = 0; i < 5; i++)
{
explosionSound[i] = MediaPlayer.create(app, R.raw.explosion);
}
//in program where I want to use it (when I want to play the sound)
for (int i = 0; i < 5; i++)
{
if (!explosionSound[i].isPlaying())
{
explosionSound[i].start();
break;
}
}
//onDestroy() method to release the media
for (int i = 0; i < 5; i++)
{
explosionSound[i].release();
}
Ben anonim yenisini örneğini çalıştım ama (Hata kaybolduktan Eğer OnDestroy() yönteminde bırakın iken) onu serbest bırakılması değil şikayet etti. Hemen serbest bırakamam ya da ses hiç çalmıyor. Ben de kendimi 5 patlamayla sınırlamak istemiyorum. Şimdi de bellek sorunları için endişeleniyorum.
Bunu yapmanın daha kolay bir yolu var mı?
SoundPool'u kullanıyorum, API 21 gerektiren AudioAttributes'ı da kullanmalıyım. Şu anda MediaPlayer ile, 8 çalışmamdaki min API'm. SoundPool, API 21 veya üstü olan tek seçenek mi? Uygulamamın eski telefonlarda da çalışmasını istiyorum. –
Tüm SoundPool yöntemleri, çoğudan daha önce API düzeyi 8'den beri kullanılabilir. Bağlandığım dokümanlarda kendiniz için bunu görebilirsiniz. –