2012-09-09 3 views
2

저는 아직 안드로이드에 익숙하지 않습니다. 그래서 나는 아직도 그것의 라이브러리와 API에 익숙하지 않습니다.안드로이드 분할 다운로드

내 첫 번째 주요 프로젝트는 세그먼트 다운로드를 지원하는 다운로드 관리자입니다. 이미 파일을 다운로드 할 수는 있지만 세그먼트 다운로드를 시작하는 방법이나 위치는 아직 모릅니다.

이미 많은 스레드를 탐색했지만 Android에서 세그먼트 다운로드에 대한 기사 나 스레드를 찾을 수 없습니다.

아무도 도와 줄 수 있습니까?

+0

오픈 소스 안드로이드 토런트 클라이언트를 검색하십시오. –

답변

2

이 스레드는 당신을 도움이 될 것입니다 link

아이디어는 요청의 헤더에있는 콘텐츠 범위 키워드를 사용하는 것입니다

샘플을 (당신이 연락하는 서버를 관리 할 수 ​​있어야한다) 당신이에서 영감을 그릴 수있는 코드 :

public String readFirstChunk(String urlString, int byteCount) { 
    String text = null; 
    if (urlString != null) { 
     org.restlet.Client restletClient = new org.restlet.Client(Protocol.HTTP); 
     Request request = new Request(Method.GET, urlString); 
     List<Range> ranges = Collections.singletonList(new Range(0, byteCount)); 
     request.setRanges(ranges); 
     Response response = restletClient.handle(request); 
     if (Status.SUCCESS_OK.equals(response.getStatus())) { 
      text = processSuccessfulChunkRequest(response); 
     } else if (Status.SUCCESS_PARTIAL_CONTENT .equals(response.getStatus())) { 
      text = processSuccessfulChunkRequest(response); 
     } else { 
      System.err.println("FAILED "+response.getStatus()); 
     } 
    } 
    return text; 
} 

private String processSuccessfulChunkRequest(Response response) { 
    String text = null; 
    try { 
     text = response.getEntity().getText(); 
    } catch (IOException e) { 
     throw new RuntimeException("Cannot download chunk", e); 
    } 
    return text; 
} 
+0

분할 된 다운로드 구현은 Android의 다운로드 관리자 클래스를 사용합니까? – xRev

0

당신은 안드로이드에, 또한 HttpClient 클래스를 Accept-Ranges 헤더를 공부해야한다.

세그먼트 다운로드에는 HttpClient를 사용하여 요청을 통해 Accept-Ranges 헤더에 다른 값을 보내고 부분 콘텐츠를 수신 한 다음 수신 한 모든 콘텐츠를 하나의 파일로 병합하는 작업 만 포함됩니다.