mirror of
https://github.com/love2d/love-android.git
synced 2026-08-12 16:41:12 +02:00
62 lines
2.1 KiB
Java
62 lines
2.1 KiB
Java
package org.love2d.android;
|
|
|
|
import java.io.BufferedInputStream;
|
|
import java.io.FileOutputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStream;
|
|
import java.io.OutputStream;
|
|
import java.net.URL;
|
|
import java.net.URLConnection;
|
|
|
|
import android.app.IntentService;
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.os.ResultReceiver;
|
|
import android.util.Log;
|
|
|
|
public class DownloadService extends IntentService {
|
|
public static final int UPDATE_PROGRESS = 8344;
|
|
public DownloadService() {
|
|
super("DownloadService");
|
|
}
|
|
@Override
|
|
protected void onHandleIntent(Intent intent) {
|
|
Log.d ("GameActivity", "service started");
|
|
String urlToDownload = intent.getStringExtra("url");
|
|
ResultReceiver receiver = (ResultReceiver) intent.getParcelableExtra("receiver");
|
|
try {
|
|
URL url = new URL(urlToDownload);
|
|
URLConnection connection = url.openConnection();
|
|
connection.connect();
|
|
// this will be useful so that you can show a typical 0-100% progress bar
|
|
int fileLength = connection.getContentLength();
|
|
|
|
// download the file
|
|
InputStream input = new BufferedInputStream(url.openStream());
|
|
OutputStream output = new FileOutputStream("/sdcard/lovegame/download.love");
|
|
|
|
byte data[] = new byte[1024];
|
|
long total = 0;
|
|
int count;
|
|
while ((count = input.read(data)) != -1) {
|
|
total += count;
|
|
// publishing the progress....
|
|
Bundle resultData = new Bundle();
|
|
resultData.putInt("progress" ,(int) (total * 100 / fileLength));
|
|
receiver.send(UPDATE_PROGRESS, resultData);
|
|
output.write(data, 0, count);
|
|
}
|
|
|
|
output.flush();
|
|
output.close();
|
|
input.close();
|
|
} catch (IOException e) {
|
|
e.printStackTrace();
|
|
}
|
|
|
|
Bundle resultData = new Bundle();
|
|
resultData.putInt("progress" ,100);
|
|
receiver.send(UPDATE_PROGRESS, resultData);
|
|
}
|
|
}
|