Thank you, rhino! Indeed, working with MediaPlayer turned out to be much more obvious and more convenient. My version that earned:
public class MainActivity extends AppCompatActivity { private MediaPlayer drumLoop; private boolean isDrumsAtTime; private int currentDrumLoop; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); currentDrumLoop = R.raw.medium_slowchina_nofill; isDrumsAtTime = false; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } public void onClick(View view) { switch (view.getId()) { case R.id.buttonPlayCurrentDrums: if (!isDrumsAtTime) { startLoop(); } else { stopLoop(); } } } private void setLoop(int drumLoopFile){ drumLoop = MediaPlayer.create(this, drumLoopFile); drumLoop.setLooping(true); } public void startLoop(){ setLoop(currentDrumLoop); drumLoop.start(); isDrumsAtTime = true; } public void stopLoop() { drumLoop.stop(); drumLoop.release(); isDrumsAtTime = false; }
}
SoundPoolbroke down in Android 4.3 - Vladyslav Matviienkowav- Vladyslav Matviienko