diff --git a/CHANGELOG.md b/CHANGELOG.md index c48e4e23..aa4bf7ba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ ###Changelog +####Version 0.7.2 +* Pebble: Allow replying to generic notifications that contain a wearable reply action (tested with Signal) +* Pebble: Support seting up a common suffix for canned replies (defaults to " (canned reply)") +* Mi Band: Avoid NPEs when aborting an erroneous sync #205 +* Mi Band: Fix discovery of Mi Band 1S +* Add a confirmation dialog when performing a db import +* Sort blacklist by package names + ####Version 0.7.1 * Pebble: allow reinstallation of apps in pbw-cache from App Manager (long press menu) * Pebble: Fix regression which freezes Gadgetbridge when disconnecting via long-press menu diff --git a/README.md b/README.md index 0a4d1378..187372dd 100644 --- a/README.md +++ b/README.md @@ -18,9 +18,10 @@ need to create an account and transmit any of your data to the vendor's servers. * Incoming calls notification and display * Outgoing call display * Reject/hangup calls -* SMS notification including experimental support for 16 predefined replies +* SMS notification * K-9 Mail notification support * Support for generic notifications (above filtered out) +* Support for up to 16 predefined replies for SMS and Android Wear compatible notifications (experimental, tested with Signal) * Dismiss individial notifications, mute or open corresponding app on phone from the action menu (generic notifications) * Dismiss all notifications from the action menu (non-generic notifications) * Music playback info (artist, album, track) diff --git a/app/build.gradle b/app/build.gradle index 498f1b8a..8d42d35b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,8 +14,8 @@ android { targetSdkVersion 23 // note: always bump BOTH versionCode and versionName! - versionName "0.7.1" - versionCode 37 + versionName "0.7.2" + versionCode 38 } buildTypes { release { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 60d09124..8d4aacd1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -260,6 +260,7 @@ android:name=".activities.AlarmDetails" android:label="@string/title_activity_alarm_details" android:parentActivityName=".activities.ConfigureAlarms"/> + diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java index 0dd0d461..5150f082 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/activities/SettingsActivity.java @@ -110,6 +110,7 @@ public class SettingsActivity extends AbstractSettingsActivity { "pebble_emu_addr", "pebble_emu_port", "pebble_reconnect_attempts", + "canned_reply_suffix", "canned_reply_1", "canned_reply_2", "canned_reply_3", diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/contentprovider/PebbleContentProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/contentprovider/PebbleContentProvider.java new file mode 100644 index 00000000..a6bf3792 --- /dev/null +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/contentprovider/PebbleContentProvider.java @@ -0,0 +1,62 @@ +package nodomain.freeyourgadget.gadgetbridge.contentprovider; + +import android.content.ContentProvider; +import android.content.ContentValues; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.net.Uri; +import android.support.annotation.NonNull; + +public class PebbleContentProvider extends ContentProvider { + + public static final int COLUMN_CONNECTED = 0; + public static final int COLUMN_APPMSG_SUPPORT = 1; + public static final int COLUMN_DATALOGGING_SUPPORT = 2; + public static final int COLUMN_VERSION_MAJOR = 3; + public static final int COLUMN_VERSION_MINOR = 4; + public static final int COLUMN_VERSION_POINT = 5; + public static final int COLUMN_VERSION_TAG = 6; + + // this is only needed for the MatrixCursor constructor + public static final String[] columnNames = new String[]{"0", "1", "2", "3", "4", "5", "6"}; + + static final String PROVIDER_NAME = "com.getpebble.android.provider"; + static final String URL = "content://" + PROVIDER_NAME + "/state"; + static final Uri CONTENT_URI = Uri.parse(URL); + + @Override + public boolean onCreate() { + return true; + } + + @Override + public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { + if (uri.equals(CONTENT_URI)) { + MatrixCursor mc = new MatrixCursor(columnNames); + mc.addRow(new Object[]{1, 1, 0, 3, 8, 0, "Gadgetbridge"}); + return mc; + } else { + return null; + } + } + + @Override + public String getType(@NonNull Uri uri) { + return null; + } + + @Override + public Uri insert(@NonNull Uri uri, ContentValues values) { + return null; + } + + @Override + public int delete(@NonNull Uri uri, String selection, String[] selectionArgs) { + return 0; + } + + @Override + public int update(@NonNull Uri uri, ContentValues values, String selection, String[] selectionArgs) { + return 0; + } +} \ No newline at end of file diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/AbstractDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/AbstractDeviceSupport.java index 56c9cd81..ad88c179 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/AbstractDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/service/AbstractDeviceSupport.java @@ -6,9 +6,11 @@ import android.app.PendingIntent; import android.bluetooth.BluetoothAdapter; import android.content.Context; import android.content.Intent; +import android.content.SharedPreferences; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; +import android.preference.PreferenceManager; import android.support.v4.content.LocalBroadcastManager; import android.telephony.SmsManager; @@ -20,6 +22,7 @@ import java.io.IOException; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; +import java.util.Objects; import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.R; @@ -243,6 +246,11 @@ public abstract class AbstractDeviceSupport implements DeviceSupport { Intent notificationListenerIntent = new Intent(action); notificationListenerIntent.putExtra("handle", deviceEvent.handle); if (deviceEvent.reply != null) { + SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(GBApplication.getContext()); + String suffix = sharedPrefs.getString("canned_reply_suffix", null); + if (suffix != null && !Objects.equals(suffix, "")) { + deviceEvent.reply += suffix; + } notificationListenerIntent.putExtra("reply", deviceEvent.reply); } LocalBroadcastManager.getInstance(context).sendBroadcast(notificationListenerIntent); diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 5a1697ea..5b57bb31 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -44,6 +44,7 @@ wenn der Bildschirm aus ist niemals Sperre für Apps + Vorgefertigte Antworten Entwickleroptionen Mi Band MAC Adresse Pebble Einstellungen @@ -67,7 +68,7 @@ Bluetooth wird nicht unterstützt. Bluetooth ist abgeschaltet. berühre das verbundene Gerät, um den App Mananger zu starten - berühre ein Gerät zum verbinden + berühre ein Gerät zum Verbinden Verbindung kann nicht aufgebaut werden. BT Adresse ungültig? Gadgetbridge läuft installiere Datei %1$d/%2$d @@ -197,4 +198,6 @@ Aktivitätsdaten auf dem Gerät lassen Inkompatible Firmware Diese Firmware ist nicht mit dem Gerät kompatibel + warte auf eingehende Verbindung + Erneut installieren diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 2c5cd554..ec3a8c8a 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -45,6 +45,7 @@ nunca Excluir aplicaciones Respuestas enlatadas + Sufijo habitual Opciones de desarrollador Dirección de MiBand Ajustes de Pebble @@ -200,4 +201,5 @@ Este firmware no es compatible con tu dispositivo Reserva de alarmas para próximos eventos esperando reconexión + Reinstalar diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index aa95ffc4..9e56849d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -7,6 +7,7 @@ Quitter Synchroniser Moniteur de sommeil (ALPHA) + Trouver l\'appareil Prendre une capture d\'écran Déconnexion Débugger @@ -22,11 +23,13 @@ Paramètre Paramètres généraux Connecter votre appareil quand le Bluetooth est mise en marche + Lecteur audio préféré Date et heure Synchroniser l\'horloge Synchroniser l\'horloge lors de la connexion et quand l\'heure ou lorsque le fuseau horaire change sur Android Notifications Répétitions + Appels téléphoniques SMS K9-Email Message Pebble @@ -39,6 +42,7 @@ Options développeur Adresse Mi Band Paramètres Pebble + Activer le support expérimental pour les applications Android utilisant PebbleKit Protocole des notifications en vigueur Cette option force l\'utilisation du dernier protocole de notification qui dépend de la verrsion du firmware. ACTIVER LA UNIQUEMENT SI VOUS SAVEZ CE QUE VOUS FAITES! Activer les fonctionnalités non testé @@ -141,6 +145,7 @@ Votre activité (ALPHA) Impossible de se connecter: %1$s Impossible de trouver un gestionnaire pour installer ce fichier. + Impossible d\'installer le ficher suivant: %1$s Impossible d\'installer le firmware donnée: il ne correspond pas à la version du matériel de votre Pebble. S\'il vous plait patientez pendant la détermination du status de l\'installation... Gadget batterie Vide! @@ -166,4 +171,19 @@ Installation complète du firmware, redémarrage de l\'appareil Échec lors de l\'écriture du firmware Pas + Activité en direct + Nombre de pas aujourd\'hui, objectif: %1$s + Les données d\'activités ne seront pas effacées du bracelet si elles ne sont pas confirmées. Utile si GB est utilisé avec d\'autres applications. + Nombre total de pas + Démarrer votre activité + Activité + Sommeil léger + Sommeil profond + Non porté + Non connecté. + Conserver les activités sur l\'appareil + Firmware non compatible + Ce firmware n\'est pas compatible avec l\'appareil + Alarmes à réserver pour événements futurs + Attente de reconnexion diff --git a/app/src/main/res/values-ja/strings.xml b/app/src/main/res/values-ja/strings.xml index f652abc1..653dae86 100644 --- a/app/src/main/res/values-ja/strings.xml +++ b/app/src/main/res/values-ja/strings.xml @@ -45,6 +45,7 @@ なし アップのブラックリスト 定型の返信 + 共通の接尾語 開発者用設定 Mi Bandのアドレス Pebbleの設定 diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 18667664..3eed8f85 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -44,6 +44,8 @@ когда экран выключен никогда Нежелательные приложения + Типовые ответы + Общий суффикс Настройки для разработчиков Адрес Mi Band Настройки Pebble @@ -181,6 +183,7 @@ Жизненная активность Шагов сегодня, цель: %1$s Если данные об активности не будут переданы на устройство, оно не будет очищено. Полезно, если GB используется с другими приложениями. + Хранить данные о деятельности на Mi Band, даже после синхронизации. Полезно, если Mi Band используется совместно с другими приложениями. Не передавать данные об активности История шагов Текущие шаги в минуту @@ -191,4 +194,12 @@ Неглубокий сон Глубокий сон Не носилось + Не подключен. + Все будильники отключены + Храните данные о деятельности на устройстве + Несовместимая прошивка + Эта прошивка не совместима с устройством + Резервные сигналы для предстоящих событий + Ожидание переподключения + Переустановка diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a9e8ef3d..78915517 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -56,6 +56,7 @@ Blacklist Apps Canned Replies + Common suffix Developer Options Mi Band address diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml index eaabe972..c553cfe0 100644 --- a/app/src/main/res/xml/preferences.xml +++ b/app/src/main/res/xml/preferences.xml @@ -67,8 +67,12 @@ android:title="@string/pref_blacklist" /> + android:title="@string/pref_title_canned_replies"> +