Media Player getDuration, setDataSource 관련

Posted by ITPangPang
2016. 12. 27. 23:13 안드로이드(android)/알아두면 좋은것


Media Player

getDuration, setDataSource




ㆍ 오디오 파일의 전체길이를 알기 위해서는 getDuration을

    사용하면 된다.


ㆍ 녹음기나 기타 플레이어를 만들때 플레이 전체시간을

    표시해줄 수 있다.



getDuration 관련



mediaPlayer.getDuration();

을 하면 오디오 파일의 길이를

구할 수 있다.


위치는 setOnPreparedListener

안에 넣어주면 된다.

mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener()
{
@Override
public void onPrepared(MediaPlayer mp)
{
TextView.setText(""+mediaPlayer.getDuration());
}
});


이런식으로 넣어주면 되는데


만약 오디오파일이 3분짜리라면

180 x 1000 = 180000

180000이란 값이 찍힌다.


이 값을 시간, 분, 초로 나눠서

찍어주면 된다.

이런식으로

String Hour = String.format("%02d",(mediaPlayer.getDuration())/1000/3600);
String Min = String.format("%02d",((mediaPlayer.getDuration())/1000/60)%60);
String Sec = String.format("%02d", ((mediaPlayer.getDuration()) / 1000) % 60);



setDataSource 관련


이 부분은

몰라도 될 수 있는데

혹시나 해서 흔적을 남기면..


보통 mediaPlayer에

오디오 파일을 연결할때


mediaPlayer.setDataSorce(파일경로);


이렇게 연결하는데.


어떤 상황에서 갑자기 여기서 에러가 발생할 수 있다

그렇다면 파일경로대신 FileDescriptor를 넣어보자


FileInputStream fis = null;
try
{
fis = new FileInputStream(파일경로);
FileDescriptor fd = fis.getFD();
mediaPlayer.setDataSource(fd);
mediaPlayer.prepare();
}


이런식으로 바꿔서 넣어보자