2011-01-17 2 views
1

대부분의 미디어 플레이어가 갖고있는 것을 강조하려고합니다. 오디오 트랙의 총 시간과 현재 재생중인 시간을 표시하는 방법입니다. 매 초마다 증가 함). 나는 꽤 쓰레드를 사용해야한다고 확신하지만 어떻게 쓰는지 모르겠습니다. 오디오 트랙을 SD 카드에 저장하고 모든 데이터를 재생할 때 짧은 배열에 넣습니다.AudioTrack을 사용하여 재생할 트랙의 길이 (초)를 반환합니다.

이상적으로 progressBar를 사용하여 진행 상황을 표시하고 싶습니다. TextViews에서 진행률 표시 줄로 이동하는 것부터 시작하는 것이 중요하지 않다고 생각합니다. 나는 InternetPlayer를 사용했지만 오디오 트랙을 사용함에 따라 훨씬 어려워진다. 내 응용 프로그램에는 MediaPlayer를 사용하여 오디오로하고 싶은 것을 할 수있는 방법이 없습니다.

누구든지 나를 도와 주거나 올바른 방향으로 나를 가리킬 수 있습니까?

답변

2

아무에게도 대답이 없다는 것을 알면서 나는 오디오 트랙의 초 단위로 시간을 찾기 위해 원시 방법을 사용했습니다. 내가 설정 한 설정으로 트랙을 직접 녹음했다는 것을 알고, 나는 비트 전송률을 알고 파일 크기도 알 수있었습니다.

그래서 File 객체를 만든 다음 시간 (초)을 얻기 위해 스토리지의 파일로 해당 개체를 설정 사용 : 22,050 샘플 속도입니다

float time = (float)file.length()/22050/2; 

, 나는 생각한다, 녹음 및 2 I의 그것이 스테레오로 녹음했기 때문이라고 생각합니다.

어쨌든 이것이 앞으로 누군가에게 도움이 되길 바라며, 내가 틀렸다면 나를 바로 잡기를 바랍니다.

0

float time = (float) file.length()/playbacksamplerate/2;

2는 바이트로 축약됩니다. 샘플 속도는 오디오 트랙 개체에서 재생할 때 설정 한 양이어야합니다.

관련 문제