From 1b6a6a904df57e44d24df50030d8e067b92c24d0 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Fri, 30 May 2014 11:35:11 -0700 Subject: [PATCH 1/2] Fix #786 delayed tlog upload * Don't upload if username/psw not specified * Reword password description in preferences * If server returns an error on any upload, stop all uploads until next attempt (in droneapi.jar) * Auto cancel notification on pick --- Android/libs/droneapi-java-0.1-SNAPSHOT.jar | Bin 155651 -> 155657 bytes Android/res/xml/preferences.xml | 2 +- .../service/UploaderService.java | 21 +++++++++++++----- 3 files changed, 16 insertions(+), 7 deletions(-) diff --git a/Android/libs/droneapi-java-0.1-SNAPSHOT.jar b/Android/libs/droneapi-java-0.1-SNAPSHOT.jar index b5f1098ff48e3de3e02213602cec2707119ba42f..eaacc7beb69a37c2fb46d1994db4bf006542a12e 100644 GIT binary patch delta 6070 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 delta 6294 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 diff --git a/Android/src/org/droidplanner/android/communication/service/UploaderService.java b/Android/src/org/droidplanner/android/communication/service/UploaderService.java index 4211abea2b..a6441ab751 100644 --- a/Android/src/org/droidplanner/android/communication/service/UploaderService.java +++ b/Android/src/org/droidplanner/android/communication/service/UploaderService.java @@ -36,6 +36,7 @@ public class UploaderService extends IntentService { static final String apiKey = "2d38fb2e.72afe7b3761d5ee6346c178fdd6b680f"; private DroidplannerPrefs prefs; + private int numUploaded = 0; private IUploadListener callback = new IUploadListener() { public void onUploadStart(File f) { @@ -47,6 +48,7 @@ public void onUploadStart(File f) { public void onUploadSuccess(File f, String viewURL) { Log.i(TAG, "Upload success: " + f + " url=" + viewURL); + numUploaded += 1; nBuilder.setContentText("Select to view..."); // FIXME localize // Attach the view URL @@ -73,6 +75,8 @@ public void onUploadSuccess(File f, String viewURL) { nBuilder.addAction(android.R.drawable.ic_menu_share, "Share", PendingIntent.getActivity(UploaderService.this, 0, sendIntent, 0)); + if (numUploaded > 1) + nBuilder.setNumber(numUploaded); nBuilder.setPriority(NotificationCompat.PRIORITY_HIGH); // The user // probably // wants to @@ -92,7 +96,7 @@ public void onUploadFailure(File f, Exception ex) { } }; - private int notifyId = 1; + private int notifyId = 2; private NotificationManager notifyManager; private NotificationCompat.Builder nBuilder; @@ -111,9 +115,9 @@ public void onCreate() { nBuilder.setContentTitle("Droneshare upload") // FIXME - extract for localization .setContentText("Uploading log file") - .setSmallIcon(R.drawable.ic_launcher) + .setSmallIcon(R.drawable.ic_launcher).setAutoCancel(true) // .setProgress(fileSize, 0, false) - .setPriority(NotificationCompat.PRIORITY_LOW); + .setPriority(NotificationCompat.PRIORITY_HIGH); } @Override @@ -135,14 +139,19 @@ private void doUploads() { String login = prefs.getDroneshareLogin(); String password = prefs.getDronesharePassword(); - DirectoryUploader up = new DirectoryUploader(srcDir, destDir, callback, - login, password, prefs.getVehicleId(), apiKey); - up.run(); + if (!login.isEmpty() && !password.isEmpty()) { + DirectoryUploader up = new DirectoryUploader(srcDir, destDir, + callback, login, password, prefs.getVehicleId(), apiKey); + up.run(); + } } private void updateNotification(boolean isForeground) { Notification n = nBuilder.build(); + Log.d(TAG, "Updating notification " + isForeground); + notifyManager.cancel(notifyId); + notifyId += 1; // Generate a new notification for each status change notifyManager.notify(notifyId, n); if (isForeground) startForeground(notifyId, n); From 3dd92a0933e2b63c540217719a8fe64e4f1410a1 Mon Sep 17 00:00:00 2001 From: Kevin Hester Date: Sun, 1 Jun 2014 10:38:52 -0700 Subject: [PATCH 2/2] Server now returns error code 406 for boring flights. In that case, client should just kill the notification and move on. --- .../service/UploaderService.java | 89 ++++++++++--------- 1 file changed, 49 insertions(+), 40 deletions(-) diff --git a/Android/src/org/droidplanner/android/communication/service/UploaderService.java b/Android/src/org/droidplanner/android/communication/service/UploaderService.java index a6441ab751..ead28f3cea 100644 --- a/Android/src/org/droidplanner/android/communication/service/UploaderService.java +++ b/Android/src/org/droidplanner/android/communication/service/UploaderService.java @@ -46,46 +46,55 @@ public void onUploadStart(File f) { } public void onUploadSuccess(File f, String viewURL) { - Log.i(TAG, "Upload success: " + f + " url=" + viewURL); - - numUploaded += 1; - nBuilder.setContentText("Select to view..."); // FIXME localize - - // Attach the view URL - PendingIntent pintent = PendingIntent.getActivity( - UploaderService.this, 0, - new Intent(Intent.ACTION_VIEW, Uri.parse(viewURL)), 0); - nBuilder.setContentIntent(pintent); - - // Attach the google earth link - // val geintent = PendingIntent.getActivity(acontext, 0, new - // Intent(Intent.ACTION_VIEW, Uri.parse(kmzURL)), 0) - // nBuilder.addAction(android.R.drawable.ic_menu_mapmode, - // S(R.string.google_earth), geintent) - - // Attach a web link - nBuilder.addAction(android.R.drawable.ic_menu_set_as, "Web", - pintent); - - // Add a share link - Intent sendIntent = new Intent(Intent.ACTION_SEND); - sendIntent.putExtra(Intent.EXTRA_TEXT, viewURL); - sendIntent.setType("text/plain"); - // val chooser = Intent.createChooser(sendIntent, "Share log to...") - nBuilder.addAction(android.R.drawable.ic_menu_share, "Share", - PendingIntent.getActivity(UploaderService.this, 0, - sendIntent, 0)); - if (numUploaded > 1) - nBuilder.setNumber(numUploaded); - nBuilder.setPriority(NotificationCompat.PRIORITY_HIGH); // The user - // probably - // wants to - // choose us - // now - - // FIXME, include action buttons for sharing - - updateNotification(false); + if (viewURL == null) { + Log.i(TAG, "Server thought flight was boring"); + notifyManager.cancel(notifyId); + } else { + Log.i(TAG, "Upload success: " + f + " url=" + viewURL); + + numUploaded += 1; + nBuilder.setContentText("Select to view..."); // FIXME localize + + // Attach the view URL + PendingIntent pintent = PendingIntent.getActivity( + UploaderService.this, 0, new Intent(Intent.ACTION_VIEW, + Uri.parse(viewURL)), 0); + nBuilder.setContentIntent(pintent); + + // Attach the google earth link + // val geintent = PendingIntent.getActivity(acontext, 0, new + // Intent(Intent.ACTION_VIEW, Uri.parse(kmzURL)), 0) + // nBuilder.addAction(android.R.drawable.ic_menu_mapmode, + // S(R.string.google_earth), geintent) + + // Attach a web link + nBuilder.addAction(android.R.drawable.ic_menu_set_as, "Web", + pintent); + + // Add a share link + Intent sendIntent = new Intent(Intent.ACTION_SEND); + sendIntent.putExtra(Intent.EXTRA_TEXT, viewURL); + sendIntent.setType("text/plain"); + // val chooser = Intent.createChooser(sendIntent, + // "Share log to...") + nBuilder.addAction(android.R.drawable.ic_menu_share, "Share", + PendingIntent.getActivity(UploaderService.this, 0, + sendIntent, 0)); + if (numUploaded > 1) + nBuilder.setNumber(numUploaded); + nBuilder.setPriority(NotificationCompat.PRIORITY_HIGH); // The + // user + // probably + // wants + // to + // choose + // us + // now + + // FIXME, include action buttons for sharing + + updateNotification(false); + } } public void onUploadFailure(File f, Exception ex) {