Android MediaPlayer的同步启动可以通过使用CountDownLatch来实现。CountDownLatch是一种同步工具类,它可以使一个线程等待其他线程完成一定的操作后再执行。在这种情况下,我们可以使用CountDownLatch来使主线程等待两个MediaPlayer都准备完成后再启动它们。下面是代码示例:
public class MainActivity extends AppCompatActivity {
private MediaPlayer mediaPlayer1;
private MediaPlayer mediaPlayer2;
private CountDownLatch latch = new CountDownLatch(2);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mediaPlayer1 = MediaPlayer.create(this, R.raw.audio1);
mediaPlayer2 = MediaPlayer.create(this, R.raw.audio2);
mediaPlayer1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
latch.countDown();
}
});
mediaPlayer2.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
latch.countDown();
}
});
try {
latch.await(); // 等待两个MediaPlayer都准备好
} catch (InterruptedException e) {
e.printStackTrace();
}
mediaPlayer1.start();
mediaPlayer2.start();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mediaPlayer1 != null) {
mediaPlayer1.release();
mediaPlayer1 = null;
}
if (mediaPlayer2 != null) {
mediaPlayer2.release();
mediaPlayer2 = null;
}
}
}