diff options
author | 2012-08-02 20:22:29 -0700 | |
---|---|---|
committer | 2012-08-05 00:55:58 -0700 | |
commit | 838e6c1e5b734ed2d7b68a082f61b723d1aa35a2 (patch) | |
tree | 1ba16b47aafdf01e9a2e497aa076dea0916f37e5 /java/src/com/android/inputmethod/research/ResearchLogUploader.java | |
parent | 5400f24bed28cf429eed7cf7063d6813a373f392 (diff) | |
download | latinime-838e6c1e5b734ed2d7b68a082f61b723d1aa35a2.tar.gz latinime-838e6c1e5b734ed2d7b68a082f61b723d1aa35a2.tar.xz latinime-838e6c1e5b734ed2d7b68a082f61b723d1aa35a2.zip |
ResearchLogging capture full n-gram data
- Captures complete motion data for all words in an n-gram.
- Also filters n-grams properly; if any word in the n-gram is not
in the dictionary, it is not included.
- Simplify ResearchLog to not require explicit state
- Added LogBuffer class MainLogBuffer class to allow n-gram-level decisions
about privacy.
- Moved LogUnit out from ResearchLogger
multi-project change with Id997fb6572daa3ff55591afa1676953bb204f33a
Because of a strange Gerrit interaction, earlier patchsets were recorded
as the following separate changes (to soon be abandoned):
- I59d86ae28123890ddb7aabc7dc9a73a75eecbca4
- I9cc95266fa4500d019e09ec53ec00e5dea7ffd38
- Ie6f23a2035e160f231406df1388a43725380df1d
- Id87909e96fa7fa91174c86395a964404f3490fe1
- I57c5cbde0425c42538d589fa4d1802b3e5688f7c
- Ic1f9d7727e416da1b6c4f1a45b53750cd4088dcf
- I20a72ccc4ba1bc08ed3ee39bff71d2adb376588c
- I417f6f364144b90085f5fef4bd2de1a40b5dfa79
Bug: 6188932
Change-Id: I771e57e3b8c0eb6721c2022e775cb0b528bdff93
Diffstat (limited to 'java/src/com/android/inputmethod/research/ResearchLogUploader.java')
-rw-r--r-- | java/src/com/android/inputmethod/research/ResearchLogUploader.java | 37 |
1 files changed, 27 insertions, 10 deletions
diff --git a/java/src/com/android/inputmethod/research/ResearchLogUploader.java b/java/src/com/android/inputmethod/research/ResearchLogUploader.java index 3b1213009..9904a1de2 100644 --- a/java/src/com/android/inputmethod/research/ResearchLogUploader.java +++ b/java/src/com/android/inputmethod/research/ResearchLogUploader.java @@ -27,7 +27,6 @@ import android.os.BatteryManager; import android.util.Log; import com.android.inputmethod.latin.R; -import com.android.inputmethod.latin.R.string; import java.io.BufferedReader; import java.io.File; @@ -48,6 +47,7 @@ public final class ResearchLogUploader { private static final String TAG = ResearchLogUploader.class.getSimpleName(); private static final int UPLOAD_INTERVAL_IN_MS = 1000 * 60 * 15; // every 15 min private static final int BUF_SIZE = 1024 * 8; + protected static final int TIMEOUT_IN_MS = 1000 * 4; private final boolean mCanUpload; private final Context mContext; @@ -55,8 +55,6 @@ public final class ResearchLogUploader { private final URL mUrl; private final ScheduledExecutorService mExecutor; - private Runnable doUploadRunnable = new UploadRunnable(null, false); - public ResearchLogUploader(final Context context, final File filesDir) { mContext = context; mFilesDir = filesDir; @@ -93,11 +91,15 @@ public final class ResearchLogUploader { public void start() { if (mCanUpload) { - Log.d(TAG, "scheduling regular uploading"); - mExecutor.scheduleWithFixedDelay(doUploadRunnable, UPLOAD_INTERVAL_IN_MS, - UPLOAD_INTERVAL_IN_MS, TimeUnit.MILLISECONDS); - } else { - Log.d(TAG, "no permission to upload"); + mExecutor.scheduleWithFixedDelay(new UploadRunnable(null /* logToWaitFor */, + null /* callback */, false /* forceUpload */), + UPLOAD_INTERVAL_IN_MS, UPLOAD_INTERVAL_IN_MS, TimeUnit.MILLISECONDS); + } + } + + public void uploadAfterCompletion(final ResearchLog researchLog, final Callback callback) { + if (mCanUpload) { + mExecutor.submit(new UploadRunnable(researchLog, callback, true /* forceUpload */)); } } @@ -106,7 +108,8 @@ public final class ResearchLogUploader { // another upload happening right now, as it may have missed the latest changes. // TODO: Reschedule regular upload tests starting from now. if (mCanUpload) { - mExecutor.submit(new UploadRunnable(callback, true)); + mExecutor.submit(new UploadRunnable(null /* logToWaitFor */, callback, + true /* forceUpload */)); } } @@ -130,19 +133,33 @@ public final class ResearchLogUploader { } class UploadRunnable implements Runnable { + private final ResearchLog mLogToWaitFor; private final Callback mCallback; private final boolean mForceUpload; - public UploadRunnable(final Callback callback, final boolean forceUpload) { + public UploadRunnable(final ResearchLog logToWaitFor, final Callback callback, + final boolean forceUpload) { + mLogToWaitFor = logToWaitFor; mCallback = callback; mForceUpload = forceUpload; } @Override public void run() { + if (mLogToWaitFor != null) { + waitFor(mLogToWaitFor); + } doUpload(); } + private void waitFor(final ResearchLog researchLog) { + try { + researchLog.awaitTermination(TIMEOUT_IN_MS, TimeUnit.MILLISECONDS); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + private void doUpload() { if (!mForceUpload && (!isExternallyPowered() || !hasWifiConnection())) { return; |