음악 파일의 재생시간을 가져와서 플레이하는데 있어서 getDuration()을 사용하는데 이상하게

제대로 못받아오는거 같아서 질문 드립니다.

1. getDuration() 값은 play() 하고 난 다음에 불러와야 읽어오나요? 왜냐면 플레이리스트에 재생시간을 넣을려고 하는데 자꾸만 이상한 값만 가져오네요?   어떻게하면 리스트에 재생시간을 제대로 표시할 수 있을까요?

2. 첨부한 음악파일을 알송이나 곰오디오로 플레이하면 1분 37초인데 안드로이드 기본 플레이어로 돌리면 1분 20초 음악이 짤립니다.
물론 제가 만들고 있는 소스에서도 1분 20초라고만 나오고 음악이 짤립니다. 어떻게하면 안짤리게 재생시간을 받아 올 수 있을까요?

3. Mp3 파일은 태그를 읽어서 가지고 온다고 하면 그외  Midi  파일이나 그외 지원 확장자의 파일들의 재생시간을 playList에 표시하고자 할때 play() 해 주지 않으면  getDuration()으로 가져 올 수 없나요?