summaryrefslogtreecommitdiffstats
path: root/picolanginstaller/src
diff options
context:
space:
mode:
authorCharles Chen <clchen@google.com>2009-06-22 17:31:44 -0700
committerCharles Chen <clchen@google.com>2009-06-22 18:33:45 -0700
commit3fc71a14d6c0ca80a5fbc579de14a9a7b422e5c3 (patch)
tree81c9c820dfe19d796c86f01d2c2e08baf9d6e458 /picolanginstaller/src
parent1284d937084a20b457c280259fff59391129509a (diff)
downloadexternal_svox-3fc71a14d6c0ca80a5fbc579de14a9a7b422e5c3.zip
external_svox-3fc71a14d6c0ca80a5fbc579de14a9a7b422e5c3.tar.gz
external_svox-3fc71a14d6c0ca80a5fbc579de14a9a7b422e5c3.tar.bz2
Adding PicoLangInstaller.
Diffstat (limited to 'picolanginstaller/src')
-rwxr-xr-xpicolanginstaller/src/com/svox/langpack/installer/InstallerActivity.java142
1 files changed, 142 insertions, 0 deletions
diff --git a/picolanginstaller/src/com/svox/langpack/installer/InstallerActivity.java b/picolanginstaller/src/com/svox/langpack/installer/InstallerActivity.java
new file mode 100755
index 0000000..1635365
--- /dev/null
+++ b/picolanginstaller/src/com/svox/langpack/installer/InstallerActivity.java
@@ -0,0 +1,142 @@
+package com.svox.langpack.installer;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.res.AssetFileDescriptor;
+import android.content.res.Resources;
+import android.net.Uri;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+
+public class InstallerActivity extends Activity {
+ /** Called when the activity is first created. */
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ runInstaller();
+ }
+
+ private void runInstaller(){
+ try {
+ Resources res = getResources();
+ AssetFileDescriptor langPackFd = res
+ .openRawResourceFd(R.raw.svoxlangpack);
+ InputStream stream = langPackFd.createInputStream();
+
+ (new Thread(new unzipper(stream))).start();
+ } catch (IOException e) {
+ Log.e("PicoLangInstaller", "Unable to open langpack resource.");
+ e.printStackTrace();
+ }
+ setContentView(R.layout.installing);
+ }
+
+ private void uninstall() {
+ Intent intent = new Intent(Intent.ACTION_DELETE);
+ String packageName = getPackageName();
+ Uri data = Uri.fromParts("package", packageName, null);
+ intent.setData(data);
+ startActivity(intent);
+ }
+
+ private boolean unzipLangPack(InputStream stream) {
+ File baseDir = new File("/sdcard/svox");
+ baseDir.mkdir();
+ FileOutputStream out;
+ byte buf[] = new byte[16384];
+ try {
+ ZipInputStream zis = new ZipInputStream(stream);
+ ZipEntry entry = zis.getNextEntry();
+ while (entry != null) {
+ if (entry.isDirectory()) {
+ File newDir = new File("/sdcard/" + entry.getName());
+ newDir.mkdir();
+ } else {
+ String name = entry.getName();
+ File outputFile = new File("/sdcard/" + name);
+ String outputPath = outputFile.getCanonicalPath();
+ name = outputPath
+ .substring(outputPath.lastIndexOf("/") + 1);
+ outputPath = outputPath.substring(0, outputPath
+ .lastIndexOf("/"));
+ File outputDir = new File(outputPath);
+ outputDir.mkdirs();
+ outputFile = new File(outputPath, name);
+ outputFile.createNewFile();
+ out = new FileOutputStream(outputFile);
+
+ int numread = 0;
+ do {
+ numread = zis.read(buf);
+ if (numread <= 0) {
+ break;
+ } else {
+ out.write(buf, 0, numread);
+ }
+ } while (true);
+ out.close();
+ }
+ entry = zis.getNextEntry();
+ }
+ return true;
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+
+ public class unzipper implements Runnable {
+ public InputStream stream;
+
+ public unzipper(InputStream is) {
+ stream = is;
+ }
+
+ public void run() {
+ Log.e("lang pack installer", "Start");
+ boolean succeeded = unzipLangPack(stream);
+ Log.e("lang pack installer", "Done!");
+ if (succeeded) {
+ runOnUiThread(new uninstallDisplayer());
+ } else {
+ runOnUiThread(new retryDisplayer());
+ }
+ }
+ }
+
+ public class uninstallDisplayer implements Runnable {
+ public void run() {
+ setContentView(R.layout.uninstall);
+ Button uninstallButton = (Button) findViewById(R.id.uninstallButton);
+ uninstallButton.setOnClickListener(new OnClickListener() {
+ public void onClick(View arg0) {
+ uninstall();
+ }
+ });
+ }
+ }
+
+ public class retryDisplayer implements Runnable {
+ public void run() {
+ setContentView(R.layout.retry);
+ Button retryButton = (Button) findViewById(R.id.retryButton);
+ retryButton.setOnClickListener(new OnClickListener() {
+ public void onClick(View arg0) {
+ runInstaller();
+ }
+ });
+ }
+ }
+
+}