Я пытаюсь воспроизвести SoundPool, пока щелкают объект просмотра.
Я успешно реализовал это, но обнаружил, что звук щелчка будет отставать.
Я искал решения в StackOverFlow и в Интернете, и, похоже, лучшим решением было бы иметь SoundPool в отдельном потоке.
Я очень новичок во всей этой теме, поэтому я действительно не знаю, что делать в данный момент.
Я следовал ЭТОМУ руководству по созданию потока SoundPool, однако я не знаю, как получить к нему доступ или даже назначить клипы, которые я хотел воспроизвести.
Может кто-нибудь, пожалуйста, дайте мне пример того, как я должен вызвать поток SoundPool для воспроизведения моего клипа, когда нажимается объект в представлении.
Пожалуйста, найдите мой код onClick ниже:
@Override
public boolean onTouch(View v, MotionEvent event) {
int actionPerformed = event.getAction();
switch(actionPerformed) {
case MotionEvent.ACTION_DOWN: {
if (Math.pow((event.getX() - a_Ball.getX()),2)
+ Math.pow((event.getY() - a_Ball.getY()), 2)
<= Math.pow(a_Ball.getDiameter(),2)) {
//pCheck = !pCheck;
if (pauseBall == false) {
SoundPool soundPool = new SoundPool(1,AudioManager.STREAM_MUSIC,1);
clickSound = soundPool.load(MainActivity.this, R.raw.click, 1);
/*soundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {
public void onLoadComplete(SoundPool soundPool, int sampleId,int status) {
soundPool.play(clickSound,1.0f, 1.0f, 0, 0, 1.0f);
}
});*/
//Increase Ball Speed
sIncrease = true;
}
} else {
if (pauseBall == false) {
//set minus health when not touch on ball
health--;
TextView txtHealth = (TextView)findViewById(R.id.health);
String tempHealth = txtHealth.getText().toString();
tempHealth = getResources().getString(R.string.health) + String.valueOf(health);
txtHealth.setText(tempHealth);
}
}
break;
}
default:
return false;
}
return true;
} //onTouch end
Заранее спасибо.