android: Bring back broken unzip progress dialog.

Change-Id: I7c788f4fcbdf15aa4955f3970db045b47207f8de
This commit is contained in:
Thomas Martitz 2012-04-17 07:25:20 +02:00
parent 0d9367744d
commit 3f4be75024
2 changed files with 22 additions and 11 deletions

View file

@ -45,8 +45,8 @@ public class RockboxActivity extends Activity
Intent intent = new Intent(this, RockboxService.class); Intent intent = new Intent(this, RockboxService.class);
intent.setAction(Intent.ACTION_MAIN); intent.setAction(Intent.ACTION_MAIN);
intent.putExtra("callback", new ResultReceiver(new Handler(getMainLooper())) { intent.putExtra("callback", new ResultReceiver(new Handler(getMainLooper())) {
private boolean unzip = false;
private ProgressDialog loadingdialog; private ProgressDialog loadingdialog;
private void createProgressDialog() private void createProgressDialog()
{ {
loadingdialog = new ProgressDialog(RockboxActivity.this); loadingdialog = new ProgressDialog(RockboxActivity.this);
@ -64,16 +64,21 @@ public class RockboxActivity extends Activity
case RockboxService.RESULT_INVOKING_MAIN: case RockboxService.RESULT_INVOKING_MAIN:
if (loadingdialog != null) if (loadingdialog != null)
loadingdialog.dismiss(); loadingdialog.dismiss();
setContentView(new RockboxFramebuffer(RockboxActivity.this));
break; break;
case RockboxService.RESULT_LIB_LOAD_PROGRESS: case RockboxService.RESULT_LIB_LOAD_PROGRESS:
if (loadingdialog == null) if (loadingdialog == null)
createProgressDialog(); createProgressDialog();
loadingdialog.setIndeterminate(false); loadingdialog.setIndeterminate(false);
loadingdialog.setMax(resultData.getInt("max", 100)); loadingdialog.setMax(resultData.getInt("max", 100));
loadingdialog.setProgress(resultData.getInt("value", 0)); loadingdialog.setProgress(resultData.getInt("value", 0));
break; break;
case RockboxService.RESULT_LIB_LOADED:
unzip = resultData.getBoolean("unzip");
break;
case RockboxService.RESULT_SERVICE_RUNNING: case RockboxService.RESULT_SERVICE_RUNNING:
if (!unzip) /* defer to RESULT_INVOKING_MAIN */
setContentView(new RockboxFramebuffer(RockboxActivity.this));
setServiceActivity(true); setServiceActivity(true);
break; break;
case RockboxService.RESULT_ERROR_OCCURED: case RockboxService.RESULT_ERROR_OCCURED:
@ -85,7 +90,6 @@ public class RockboxActivity extends Activity
} }
} }
}); });
setContentView(new RockboxFramebuffer(this));
startService(intent); startService(intent);
} }

View file

@ -121,7 +121,6 @@ public class RockboxService extends Service
if (!rockbox_running) if (!rockbox_running)
startService(); startService();
putResult(RESULT_LIB_LOADED);
if (intent.getAction().equals(Intent.ACTION_MEDIA_BUTTON)) if (intent.getAction().equals(Intent.ACTION_MEDIA_BUTTON))
{ {
@ -163,12 +162,6 @@ public class RockboxService extends Service
String rockboxCreditsPath = "/data/data/org.rockbox/app_rockbox/rockbox/rocks/viewers"; String rockboxCreditsPath = "/data/data/org.rockbox/app_rockbox/rockbox/rocks/viewers";
String rockboxSdDirPath = "/sdcard/rockbox"; String rockboxSdDirPath = "/sdcard/rockbox";
/* load library before unzipping which may take a while */
synchronized (lock) {
System.loadLibrary("rockbox");
lock.notify();
}
/* the following block unzips libmisc.so, which contains the files /* the following block unzips libmisc.so, which contains the files
* we ship, such as themes. It's needed to put it into a .so file * we ship, such as themes. It's needed to put it into a .so file
* because there's no other way to ship files and have access * because there's no other way to ship files and have access
@ -178,7 +171,21 @@ public class RockboxService extends Service
/* use arbitrary file to determine whether extracting is needed */ /* use arbitrary file to determine whether extracting is needed */
File arbitraryFile = new File(rockboxCreditsPath, "credits.rock"); File arbitraryFile = new File(rockboxCreditsPath, "credits.rock");
File rockboxInfoFile = new File(rockboxSdDirPath, "rockbox-info.txt"); File rockboxInfoFile = new File(rockboxSdDirPath, "rockbox-info.txt");
if (!arbitraryFile.exists() || (libMisc.lastModified() > arbitraryFile.lastModified())) /* unzip newer or doesnt exist */
boolean doExtract = !arbitraryFile.exists()
|| (libMisc.lastModified() > arbitraryFile.lastModified());
/* load library before unzipping which may take a while
* but at least tell if unzipping is going to be done before*/
synchronized (lock) {
Bundle bdata = new Bundle();
bdata.putBoolean("unzip", doExtract);
System.loadLibrary("rockbox");
putResult(RESULT_LIB_LOADED, bdata);
lock.notify();
}
if (doExtract)
{ {
boolean extractToSd = false; boolean extractToSd = false;
if(rockboxInfoFile.exists()) { if(rockboxInfoFile.exists()) {