안드로이드 개발 질문/답변
(글 수 45,052)
노래의 총 시간은 MediaStore.Audio.Media.DURATION을 이용해서 받아오면 되겠지만
노래가 현재 플래이 되어져 가고 있는 시간은 어떻게 출력해야 할까요?
안드로이드 기본 뮤직플래이어 소스를 보면 IMediaPlaybackService 클래스의 position() 매서드를 이용해서 받아오고 있더군요.
그런데 IMediaPlaybackService 클래스는 코드는 공개가 되어있지 않더군요.
조언 부탁드립니다.
비 오는 날씨에 감기 조심들 하세요~
노래가 현재 플래이 되어져 가고 있는 시간은 어떻게 출력해야 할까요?
안드로이드 기본 뮤직플래이어 소스를 보면 IMediaPlaybackService 클래스의 position() 매서드를 이용해서 받아오고 있더군요.
그런데 IMediaPlaybackService 클래스는 코드는 공개가 되어있지 않더군요.
조언 부탁드립니다.
비 오는 날씨에 감기 조심들 하세요~
2009.12.11 09:53:53
public long position() throws android.os.RemoteException
{
android.os.Parcel _data = android.os.Parcel.obtain();
android.os.Parcel _reply = android.os.Parcel.obtain();
long _result;
try {
_data.writeInterfaceToken(DESCRIPTOR);
mRemote.transact(Stub.TRANSACTION_position, _data, _reply, 0);
_reply.readException();
_result = _reply.readLong();
}
finally {
_reply.recycle();
_data.recycle();
}
return _result;
}
position 함수 내용입니다 :)
2009.12.13 20:19:45
IMediaPlaybackService는 aidl파일을 만들면 자동적으로 생성해주는 파일입니다.
aidl 파일은 andorid interface description language?의 약자로 RPC(Remote Procedure Call)을 하기 위한 소스를 자동으로 생성해 주는 파일입니다. 구지 사용자가 힘들게 구현할 필요가 없이 aidl파일을 만들면, 자동으로 IMediaPlaybackService를 생성되고, 결국 RPC가 가능하게 됩니다.(뮤직이 백그라운드 서비스가 되는 가장 큰 이유겠죠~~.. )
DESCRIPTOR , mRemote , Stub에 대한 정보는 직접 공부하셔야 합니다. 결국에 binder라는 부분을 공부하셔야 합니다.
binder로 RPC와 깊은 관련이 있습니다. 그 뜻 그래도 묶어준다는 뜻입니다..^^
그리고, 뮤직 기본 소스를 구할 수 있지 싶은데요.. 아니면 우분투에서 풀빌드 한번 하시구요^^
여튼...MediaPlaybackService.java의 refreshNow() 메서드에서 현재 재생시간을 계산하고 화면에 뿌려줍니다..
실제로는 MusicUtil.java에 있는 메서드를 이용해서 현재 시간을 셋팅합니다.
세모군님 께서 쓰신 소스는 아랫단 소스인데...지금 쫑스83님 꼐서 원하시는건 저 부분이 아니라 단지, app단에서 현재 재생시간 셋팅 방법인것 같네요...
마지막으로, 안드로이드 app을 개발하시는 분들께, 부탁드립니다..^^
구글에서 제공하는 기본 app 소스를 보시구, 구글 컨셉을 이해하시구, 소스를 한번 훑어보시면 개발하는데 정말 도움이 많이 됩니다. 오픈소스가 괜히 있는게 아닙니다..^^;;
아까 다른데도 글을 보니깐.."날로 드시는것 같다"는 그런 댓들을 본것 같습니다..ㅋㅋ
저도 그말에 동감합니다...ㅋㅋ
실지 질문하시는 분께서 너무 쉬운 질문을 하셨더라구요..
여튼 개발자분들 홧팅입니다..^^
aidl 파일은 andorid interface description language?의 약자로 RPC(Remote Procedure Call)을 하기 위한 소스를 자동으로 생성해 주는 파일입니다. 구지 사용자가 힘들게 구현할 필요가 없이 aidl파일을 만들면, 자동으로 IMediaPlaybackService를 생성되고, 결국 RPC가 가능하게 됩니다.(뮤직이 백그라운드 서비스가 되는 가장 큰 이유겠죠~~.. )
DESCRIPTOR , mRemote , Stub에 대한 정보는 직접 공부하셔야 합니다. 결국에 binder라는 부분을 공부하셔야 합니다.
binder로 RPC와 깊은 관련이 있습니다. 그 뜻 그래도 묶어준다는 뜻입니다..^^
그리고, 뮤직 기본 소스를 구할 수 있지 싶은데요.. 아니면 우분투에서 풀빌드 한번 하시구요^^
여튼...MediaPlaybackService.java의 refreshNow() 메서드에서 현재 재생시간을 계산하고 화면에 뿌려줍니다..
실제로는 MusicUtil.java에 있는 메서드를 이용해서 현재 시간을 셋팅합니다.
세모군님 께서 쓰신 소스는 아랫단 소스인데...지금 쫑스83님 꼐서 원하시는건 저 부분이 아니라 단지, app단에서 현재 재생시간 셋팅 방법인것 같네요...
마지막으로, 안드로이드 app을 개발하시는 분들께, 부탁드립니다..^^
구글에서 제공하는 기본 app 소스를 보시구, 구글 컨셉을 이해하시구, 소스를 한번 훑어보시면 개발하는데 정말 도움이 많이 됩니다. 오픈소스가 괜히 있는게 아닙니다..^^;;
아까 다른데도 글을 보니깐.."날로 드시는것 같다"는 그런 댓들을 본것 같습니다..ㅋㅋ
저도 그말에 동감합니다...ㅋㅋ
실지 질문하시는 분께서 너무 쉬운 질문을 하셨더라구요..
여튼 개발자분들 홧팅입니다..^^