Документация:
«In order to receive the respective callback associated with these listeners, applications are required to create MediaPlayer objects on a thread with its own Looper running»
Если в этом предложении есть незнакомые слова — советую все изучить, тогда будет понятно почему не работает.
Скорее всего lock.wait(); блокирует поток и сообщения больше не обрабатываются, поэтому никаких колбеков бы больше не получаете (если у вас вообще есть Looper в потоке, покажите в каком потоке вы создаете плеер). Если у вас нет Looper'a в потоке, то даже без блокировок никаких колбеков вы не получите назад.