mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-03 17:02:13 +01:00
Improve code, add notification
This commit is contained in:
parent
254afafa3e
commit
58e504e299
@ -57,6 +57,7 @@ import nodomain.freeyourgadget.gadgetbridge.devices.miband.MiBandPreferencesActi
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
|
import nodomain.freeyourgadget.gadgetbridge.model.CannedMessagesSpec;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
import nodomain.freeyourgadget.gadgetbridge.util.FileUtils;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.util.GBPrefs;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||||
|
|
||||||
import static nodomain.freeyourgadget.gadgetbridge.model.ActivityUser.PREF_USER_HEIGHT_CM;
|
import static nodomain.freeyourgadget.gadgetbridge.model.ActivityUser.PREF_USER_HEIGHT_CM;
|
||||||
@ -351,15 +352,14 @@ public class SettingsActivity extends AbstractSettingsActivity {
|
|||||||
|
|
||||||
Cursor cursor = getContentResolver().query(
|
Cursor cursor = getContentResolver().query(
|
||||||
uri,
|
uri,
|
||||||
new String[] { DocumentsContract.Document.COLUMN_DISPLAY_NAME, DocumentsContract.Document.COLUMN_SUMMARY },
|
new String[] { DocumentsContract.Document.COLUMN_DISPLAY_NAME },
|
||||||
null, null, null, null
|
null, null, null, null
|
||||||
);
|
);
|
||||||
if (cursor == null || ! cursor.moveToFirst()) {
|
if (cursor == null || ! cursor.moveToFirst()) {
|
||||||
|
LOG.warn("Unable to fetch information on URI " + uri.toString());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
|
String displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));
|
||||||
String summary = cursor.getString(cursor.getColumnIndex(DocumentsContract.Document.COLUMN_SUMMARY));
|
|
||||||
LOG.info(displayName + " " + summary);
|
|
||||||
findPreference("export_location").setSummary(displayName);
|
findPreference("export_location").setSummary(displayName);
|
||||||
boolean autoExportEnabled = GBApplication
|
boolean autoExportEnabled = GBApplication
|
||||||
.getPrefs().getBoolean("auto_export_enabled", false);
|
.getPrefs().getBoolean("auto_export_enabled", false);
|
||||||
|
@ -14,6 +14,8 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.io.OutputStream;
|
import java.io.OutputStream;
|
||||||
|
|
||||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.util.GB;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by maufl on 1/4/18.
|
* Created by maufl on 1/4/18.
|
||||||
@ -31,7 +33,7 @@ public class PeriodicExporter extends BroadcastReceiver {
|
|||||||
if (!autoExportEnabled) {
|
if (!autoExportEnabled) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
int exportPeriod = autoExportPeriod * 1000;// * 60 * 60 * 1000;
|
int exportPeriod = autoExportPeriod * 60 * 60 * 1000;
|
||||||
if (exportPeriod == 0) {
|
if (exportPeriod == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -51,13 +53,14 @@ public class PeriodicExporter extends BroadcastReceiver {
|
|||||||
DBHelper helper = new DBHelper(context);
|
DBHelper helper = new DBHelper(context);
|
||||||
String dst = GBApplication.getPrefs().getString("export_location", null);
|
String dst = GBApplication.getPrefs().getString("export_location", null);
|
||||||
if (dst == null) {
|
if (dst == null) {
|
||||||
LOG.info("Unable to export DB, export locatio not set");
|
LOG.info("Unable to export DB, export location not set");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Uri dstUri = Uri.parse(dst);
|
Uri dstUri = Uri.parse(dst);
|
||||||
OutputStream out = context.getContentResolver().openOutputStream(dstUri);
|
OutputStream out = context.getContentResolver().openOutputStream(dstUri);
|
||||||
helper.exportDB(dbHandler, out);
|
helper.exportDB(dbHandler, out);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
|
GB.updateExportFailedNotification(context.getString(R.string.notif_export_failed_title), context);
|
||||||
LOG.info("Exception while exporting DB: ", ex);
|
LOG.info("Exception while exporting DB: ", ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,6 +85,12 @@ public class FileUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copies the contents of the given file to the destination output stream.
|
||||||
|
* @param src the file from which to read.
|
||||||
|
* @param dst the output stream that is written to. Note: the caller has to close the output stream!
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
public static void copyFileToStream(File src, OutputStream dst) throws IOException {
|
public static void copyFileToStream(File src, OutputStream dst) throws IOException {
|
||||||
try (FileInputStream in = new FileInputStream(src)) {
|
try (FileInputStream in = new FileInputStream(src)) {
|
||||||
byte[] buf = new byte[4096];
|
byte[] buf = new byte[4096];
|
||||||
@ -111,6 +117,14 @@ public class FileUtils {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copies the content of a file to an uri,
|
||||||
|
* which for example was retrieved using the storage access framework.
|
||||||
|
* @param context the application context.
|
||||||
|
* @param src the file from which the content should be copied.
|
||||||
|
* @param dst the destination uri.
|
||||||
|
* @throws IOException
|
||||||
|
*/
|
||||||
public static void copyFileToURI(Context context, File src, Uri dst) throws IOException {
|
public static void copyFileToURI(Context context, File src, Uri dst) throws IOException {
|
||||||
OutputStream out = context.getContentResolver().openOutputStream(dst);
|
OutputStream out = context.getContentResolver().openOutputStream(dst);
|
||||||
if (out == null) {
|
if (out == null) {
|
||||||
@ -118,8 +132,8 @@ public class FileUtils {
|
|||||||
}
|
}
|
||||||
try (OutputStream bufOut = new BufferedOutputStream(out)) {
|
try (OutputStream bufOut = new BufferedOutputStream(out)) {
|
||||||
copyFileToStream(src, bufOut);
|
copyFileToStream(src, bufOut);
|
||||||
bufOut.close();
|
|
||||||
}
|
}
|
||||||
|
out.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -44,6 +44,7 @@ import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
|||||||
import nodomain.freeyourgadget.gadgetbridge.GBEnvironment;
|
import nodomain.freeyourgadget.gadgetbridge.GBEnvironment;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2;
|
import nodomain.freeyourgadget.gadgetbridge.activities.ControlCenterv2;
|
||||||
|
import nodomain.freeyourgadget.gadgetbridge.activities.SettingsActivity;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventScreenshot;
|
import nodomain.freeyourgadget.gadgetbridge.deviceevents.GBDeviceEventScreenshot;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||||
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
import nodomain.freeyourgadget.gadgetbridge.model.DeviceService;
|
||||||
@ -54,6 +55,7 @@ public class GB {
|
|||||||
public static final int NOTIFICATION_ID_INSTALL = 2;
|
public static final int NOTIFICATION_ID_INSTALL = 2;
|
||||||
public static final int NOTIFICATION_ID_LOW_BATTERY = 3;
|
public static final int NOTIFICATION_ID_LOW_BATTERY = 3;
|
||||||
public static final int NOTIFICATION_ID_TRANSFER = 4;
|
public static final int NOTIFICATION_ID_TRANSFER = 4;
|
||||||
|
public static final int NOTIFICATION_ID_EXPORT_FAILED = 5;
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(GB.class);
|
private static final Logger LOG = LoggerFactory.getLogger(GB.class);
|
||||||
public static final int INFO = 1;
|
public static final int INFO = 1;
|
||||||
@ -420,6 +422,37 @@ public class GB {
|
|||||||
removeNotification(NOTIFICATION_ID_LOW_BATTERY, context);
|
removeNotification(NOTIFICATION_ID_LOW_BATTERY, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Notification createExportFailedNotification(String text, Context context) {
|
||||||
|
Intent notificationIntent = new Intent(context, SettingsActivity.class);
|
||||||
|
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
|
||||||
|
| Intent.FLAG_ACTIVITY_CLEAR_TASK);
|
||||||
|
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
|
||||||
|
notificationIntent, 0);
|
||||||
|
|
||||||
|
NotificationCompat.Builder nb = new NotificationCompat.Builder(context)
|
||||||
|
.setContentTitle(context.getString(R.string.notif_export_failed_title))
|
||||||
|
.setContentText(text)
|
||||||
|
.setContentIntent(pendingIntent)
|
||||||
|
.setSmallIcon(R.drawable.ic_notification)
|
||||||
|
.setPriority(Notification.PRIORITY_HIGH)
|
||||||
|
.setOngoing(false);
|
||||||
|
|
||||||
|
return nb.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void updateExportFailedNotification(String text, Context context) {
|
||||||
|
if (GBEnvironment.env().isLocalTest()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Notification notification = createExportFailedNotification(text, context);
|
||||||
|
updateNotification(notification, NOTIFICATION_ID_EXPORT_FAILED, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void removeExportFailedNotification(Context context) {
|
||||||
|
removeNotification(NOTIFICATION_ID_EXPORT_FAILED, context);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void assertThat(boolean condition, String errorMessage) {
|
public static void assertThat(boolean condition, String errorMessage) {
|
||||||
if (!condition) {
|
if (!condition) {
|
||||||
throw new AssertionError(errorMessage);
|
throw new AssertionError(errorMessage);
|
||||||
|
@ -311,6 +311,7 @@
|
|||||||
<string name="notif_battery_low_percent">%1$s battery left: %2$s%%</string>
|
<string name="notif_battery_low_percent">%1$s battery left: %2$s%%</string>
|
||||||
<string name="notif_battery_low_bigtext_last_charge_time">Last charge: %s \n</string>
|
<string name="notif_battery_low_bigtext_last_charge_time">Last charge: %s \n</string>
|
||||||
<string name="notif_battery_low_bigtext_number_of_charges">Number of charges: %s</string>
|
<string name="notif_battery_low_bigtext_number_of_charges">Number of charges: %s</string>
|
||||||
|
<string name="notif_export_failed_title">Export database failed! Please check your settings.</string>
|
||||||
<string name="sleepchart_your_sleep">Your sleep</string>
|
<string name="sleepchart_your_sleep">Your sleep</string>
|
||||||
<string name="weeksleepchart_sleep_a_week">Sleep a week</string>
|
<string name="weeksleepchart_sleep_a_week">Sleep a week</string>
|
||||||
<string name="weeksleepchart_today_sleep_description">Sleep today, target: %1$s</string>
|
<string name="weeksleepchart_today_sleep_description">Sleep today, target: %1$s</string>
|
||||||
|
Loading…
Reference in New Issue
Block a user