안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요. 낭만폭풍입니다.
인터넷에서 무언가 파일을 다운로드 하고 있습니다.
대충 RandomAccessFile를 사용한 이어받기 모듈을 구현했습니다.
근데 이게 그냥 일반적인 파일들은 이어받기가 잘 되고 사용도 잘 됩니다.
근데.... 동영상이라던지..... 음악파일이라던지 하는
뭐 하여튼 좀 민감한(?) 파일들은 좀 이상하게 전송이 되는 것 같습니다.
헤더 정보가 꼬이는지 재생이 안 되는 경우도 있었고, 재생이 되어도 영상의 일부가
손상되는 현상을 목격하였습니다.
프로토콜은 http이며, 브라우저에서 다운로드 테스트를 해 본 결과
파일 자체는 전혀 이상이 없었으며 같은 영상을 스트리밍으로 볼 경우에도 정상적으로 나왔습니다.
아래는 대략의 소스입니다.
RandomAccessFile output = new RandomAccessFile(file.getAbsolutePath(), "rw"); output.seek((fileSize = output.length())); HttpURLConnection conn = (HttpURLConnection) new URL(mUrl) .openConnection(); conn.addRequestProperty("Range", "bytes=" + String.valueOf(fileSize) + '-'); conn.connect(); remains = conn.getContentLength(); lenghtOfFile = remains + fileSize; if (remains <= 0) { output.close(); conn.disconnect(); return; } InputStream input = conn.getInputStream(); if (fileSize < lenghtOfFile) { int readBytes = 0; byte data[] = new byte[1024]; while ((readBytes = input.read(data)) != -1) { try { output.write(data, 0, readBytes); } catch (IOException e) { continue; } } }
초짜인 저로써는 도저히 알 방법이 없네요 ㅠㅠ
마켓에서 Downloader류의 어플을 사용하면 제대로 받아 지네요.
이런 어플들의 원리도 좀 알고 싶네요.
수고하세요.
안드로이드펍 irc에서 동네북을 맡고있는 퐁퐁입니다.
iOS/Android/Python/PHP
타의로 배운 기술은 잘 까먹습니다.. ㅠㅠ