2011-11-18 4 views
4

배경에 큰 파일 (약 50MB)을 다운로드하는 기능을 구현할 예정입니다.Android 마켓과 같은 파일 다운로드

Android 마켓처럼하고 싶습니다. 사용자가 파일을 다운로드하기 시작할 때 상태 표시 줄에 진행률 표시 줄이 나타나고 완료 될 때 내 응용 프로그램에 알립니다.

힌트를 제공해 주시겠습니까? 내 질문에 높은 품질이 아니라는 것을 알고 있지만 전에 연구를 해왔으며 단순히 솔루션을 검색 할 키워드가 없습니다.

답변

7

다음은 몇 가지 키워드를 제공하기위한 간단한 개요입니다.

우선 알림을 만드는 방법은 매우 간단하고 문서화가 잘되어 있어야합니다. 정상적인 알림을 작성하는 방법을 모르는 경우 Status Bar Notifications을 확인하십시오.

다음 단계는 포함 된 사용자 지정 레이아웃 알림을 생성하는 것입니다 ProgressBar또한 same page에 설명되어 있습니다 (이 AFAIK에 대한 사전 구축 된 레이아웃이 없기 때문에). 당신이 그것에 대해 Notification 인스턴스를 생성하면, 당신은 참조를 유지해야하며, 또한 기본적으로 UI-의 RemoteViews.setProgressBar()

을 참조 NotificationManager 참조가 여기에 당신의 ProgressBar를 통해

notification.contentView.setProgressBar(R.id.yourprogressbar, 100, 42, false); 
nm.notify(notificationId, notification); 

nm 업데이트하는 데 사용할 사물의 측면. 실제로 백그라운드에서 파일을 다운로드하려면 AsyncTask을 사용하는 Service을 사용해야합니다 (서비스는 UI 스레드에서 실행되므로 자주 오도하는 경우가 있습니다). AsyncTask.publishProgress()을 사용하여 다운로드 진행률 업데이트를 UI 스레드에 보내고 진행률 표시 줄을 AsyncTask.onProgressUpdate() 안에 업데이트 할 수 있습니다.

+0

고맙습니다. 잘 작동합니다. :-) – hsz

+0

위와 같이했지만 설정 -> 응용 프로그램 -> 응용 프로그램 관리 -> MyApp를 클릭합니다. 강제 종료를 클릭하면 서비스가 중지됩니다. 그 안드로이드 마켓 다운로드에서 일어나지 않습니다. 서비스 안드로이드 마켓을 만드는 방법을 알려줄 수 있습니까? –

+0

@abbas 일반 앱에서는 불가능합니다. 시장은 특별한 권리가있는 시스템 앱입니다. 일반 앱은 보안상의 이유로이 작업을 수행 할 수 없으므로 사용자는 악성 코드가 포함되어있는 경우 언제든지 그러한 앱을 중지 할 수 있어야합니다. –

3

@ alextsc의 답변 외에도 API 레벨 9 이상 만 지원하는 경우 연결 변경 (예 : WiFi-> 3G)과 같은 세부 정보를 포함하여이 모든 것을 처리하는 DownloadManager을 사용할 수 있습니다. 하지만 Android 2.3 이상에서만 사용할 수 있습니다.

+0

API 레벨 7을 사용해야하지만 내 마음에 간직 할 것입니다. 고맙습니다 ! – hsz

관련 문제