Имею задачу синхронизировать метод. Пробовал с wait()/notify() и семафорами. В итоге, блокировка срабатывает как надо, но при этом метод onCompletion() не вызывается и, как следствие, блокировка не снимается. Как быть?
Object lock = new Object();
public void playSound(String path) {
Uri myUri = Uri.parse(path);
MediaPlayer mp = MediaPlayer.create(context, myUri);
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.stop();
mp.release();
lock.notifyAll();
}
});
mp.start();
try {
lock.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}