Browse Source

Update the progress bar with the install progress.

master
Reece H. Dunn 9 years ago
parent
commit
d19f4fbb5c

+ 6
- 3
android/res/layout/download_voice_data.xml View File

android:padding="16dp" > android:padding="16dp" >


<ProgressBar <ProgressBar
style="?android:attr/progressBarStyleLarge"
android:layout_width="wrap_content"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginBottom="16dp" />
android:layout_marginBottom="16dp"
android:id="@+id/progress"
android:indeterminate="false"
android:longClickable="false" />


<TextView <TextView
android:id="@+id/installing_voice_data" android:id="@+id/installing_voice_data"

+ 19
- 10
android/src/com/reecedunn/espeak/DownloadVoiceData.java View File

import android.os.AsyncTask; import android.os.AsyncTask;
import android.os.Bundle; import android.os.Bundle;
import android.view.accessibility.AccessibilityEvent; import android.view.accessibility.AccessibilityEvent;
import android.widget.ProgressBar;


import java.io.BufferedInputStream; import java.io.BufferedInputStream;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.util.LinkedList;
import java.util.zip.ZipEntry; import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream; import java.util.zip.ZipInputStream;


public static final String BROADCAST_LANGUAGES_UPDATED = "com.reecedunn.espeak.LANGUAGES_UPDATED"; public static final String BROADCAST_LANGUAGES_UPDATED = "com.reecedunn.espeak.LANGUAGES_UPDATED";


private AsyncExtract mAsyncExtract; private AsyncExtract mAsyncExtract;
private ProgressBar mProgress;


@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);


setContentView(R.layout.download_voice_data); setContentView(R.layout.download_voice_data);
mProgress = (ProgressBar)findViewById(R.id.progress);


final File dataPath = CheckVoiceData.getDataPath(this).getParentFile(); final File dataPath = CheckVoiceData.getDataPath(this).getParentFile();


mAsyncExtract = new AsyncExtract(this, R.raw.espeakdata, dataPath) {
mAsyncExtract = new AsyncExtract(this, R.raw.espeakdata, dataPath, mProgress) {
@Override @Override
protected void onPostExecute(Integer result) { protected void onPostExecute(Integer result) {
switch (result) { switch (result) {


private static final int PROGRESS_STARTING = 0; private static final int PROGRESS_STARTING = 0;
private static final int PROGRESS_EXTRACTING = 1; private static final int PROGRESS_EXTRACTING = 1;
private static final int PROGRESS_FINISHED = 2;


private static class ExtractProgress { private static class ExtractProgress {
long total;
long progress = 0;
int total;
int progress = 0;
int state = PROGRESS_STARTING; int state = PROGRESS_STARTING;
File file; File file;


public ExtractProgress(long total) {
public ExtractProgress(int total) {
this.total = total; this.total = total;
} }
} }
private final Context mContext; private final Context mContext;
private final int mRawResId; private final int mRawResId;
private final File mOutput; private final File mOutput;
private final ProgressBar mProgress;


public AsyncExtract(Context context, int rawResId, File output) {
public AsyncExtract(Context context, int rawResId, File output, ProgressBar progress) {
mContext = context; mContext = context;
mRawResId = rawResId; mRawResId = rawResId;
mOutput = output; mOutput = output;
mProgress = progress;
} }


@Override @Override
final File outputFile = new File(mOutput, "espeak-data/version"); final File outputFile = new File(mOutput, "espeak-data/version");


FileUtils.write(outputFile, version); FileUtils.write(outputFile, version);

progress.state = PROGRESS_FINISHED;
publishProgress(progress);
return RESULT_OK; return RESULT_OK;
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();


return RESULT_CANCELED; return RESULT_CANCELED;
} }

@Override
protected void onProgressUpdate(ExtractProgress... progress) {
if (progress[0].state == PROGRESS_STARTING) {
mProgress.setMax(progress[0].total);
} else {
mProgress.setProgress(progress[0].progress);
}
}
} }
} }

Loading…
Cancel
Save