Merge remote-tracking branch 'origin/master' into feature-weather

This commit is contained in:
danielegobbetti 2016-01-22 20:48:26 +01:00
commit 11297cd855
14 changed files with 129 additions and 6 deletions

View File

@ -1,5 +1,13 @@
###Changelog ###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 ####Version 0.7.1
* Pebble: allow reinstallation of apps in pbw-cache from App Manager (long press menu) * 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 * Pebble: Fix regression which freezes Gadgetbridge when disconnecting via long-press menu

View File

@ -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 * Incoming calls notification and display
* Outgoing call display * Outgoing call display
* Reject/hangup calls * Reject/hangup calls
* SMS notification including experimental support for 16 predefined replies * SMS notification
* K-9 Mail notification support * K-9 Mail notification support
* Support for generic notifications (above filtered out) * 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 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) * Dismiss all notifications from the action menu (non-generic notifications)
* Music playback info (artist, album, track) * Music playback info (artist, album, track)

View File

@ -14,8 +14,8 @@ android {
targetSdkVersion 23 targetSdkVersion 23
// note: always bump BOTH versionCode and versionName! // note: always bump BOTH versionCode and versionName!
versionName "0.7.1" versionName "0.7.2"
versionCode 37 versionCode 38
} }
buildTypes { buildTypes {
release { release {

View File

@ -260,6 +260,7 @@
android:name=".activities.AlarmDetails" android:name=".activities.AlarmDetails"
android:label="@string/title_activity_alarm_details" android:label="@string/title_activity_alarm_details"
android:parentActivityName=".activities.ConfigureAlarms"/> android:parentActivityName=".activities.ConfigureAlarms"/>
<provider android:authorities="com.getpebble.android.provider" android:exported="true" android:name=".contentprovider.PebbleContentProvider" />
</application> </application>
</manifest> </manifest>

View File

@ -110,6 +110,7 @@ public class SettingsActivity extends AbstractSettingsActivity {
"pebble_emu_addr", "pebble_emu_addr",
"pebble_emu_port", "pebble_emu_port",
"pebble_reconnect_attempts", "pebble_reconnect_attempts",
"canned_reply_suffix",
"canned_reply_1", "canned_reply_1",
"canned_reply_2", "canned_reply_2",
"canned_reply_3", "canned_reply_3",

View File

@ -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;
}
}

View File

@ -6,9 +6,11 @@ import android.app.PendingIntent;
import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothAdapter;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.BitmapFactory; import android.graphics.BitmapFactory;
import android.net.Uri; import android.net.Uri;
import android.preference.PreferenceManager;
import android.support.v4.content.LocalBroadcastManager; import android.support.v4.content.LocalBroadcastManager;
import android.telephony.SmsManager; import android.telephony.SmsManager;
@ -20,6 +22,7 @@ import java.io.IOException;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.util.Objects;
import nodomain.freeyourgadget.gadgetbridge.GBApplication; import nodomain.freeyourgadget.gadgetbridge.GBApplication;
import nodomain.freeyourgadget.gadgetbridge.R; import nodomain.freeyourgadget.gadgetbridge.R;
@ -243,6 +246,11 @@ public abstract class AbstractDeviceSupport implements DeviceSupport {
Intent notificationListenerIntent = new Intent(action); Intent notificationListenerIntent = new Intent(action);
notificationListenerIntent.putExtra("handle", deviceEvent.handle); notificationListenerIntent.putExtra("handle", deviceEvent.handle);
if (deviceEvent.reply != null) { 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); notificationListenerIntent.putExtra("reply", deviceEvent.reply);
} }
LocalBroadcastManager.getInstance(context).sendBroadcast(notificationListenerIntent); LocalBroadcastManager.getInstance(context).sendBroadcast(notificationListenerIntent);

View File

@ -44,6 +44,7 @@
<string name="when_screen_off">wenn der Bildschirm aus ist</string> <string name="when_screen_off">wenn der Bildschirm aus ist</string>
<string name="never">niemals</string> <string name="never">niemals</string>
<string name="pref_blacklist">Sperre für Apps</string> <string name="pref_blacklist">Sperre für Apps</string>
<string name="pref_title_canned_replies">Vorgefertigte Antworten</string>
<string name="pref_header_development">Entwickleroptionen</string> <string name="pref_header_development">Entwickleroptionen</string>
<string name="pref_title_development_miaddr">Mi Band MAC Adresse</string> <string name="pref_title_development_miaddr">Mi Band MAC Adresse</string>
<string name="pref_title_pebble_settings">Pebble Einstellungen</string> <string name="pref_title_pebble_settings">Pebble Einstellungen</string>
@ -67,7 +68,7 @@
<string name="bluetooth_is_not_supported_">Bluetooth wird nicht unterstützt.</string> <string name="bluetooth_is_not_supported_">Bluetooth wird nicht unterstützt.</string>
<string name="bluetooth_is_disabled_">Bluetooth ist abgeschaltet.</string> <string name="bluetooth_is_disabled_">Bluetooth ist abgeschaltet.</string>
<string name="tap_connected_device_for_app_mananger">berühre das verbundene Gerät, um den App Mananger zu starten</string> <string name="tap_connected_device_for_app_mananger">berühre das verbundene Gerät, um den App Mananger zu starten</string>
<string name="tap_a_device_to_connect">berühre ein Gerät zum verbinden</string> <string name="tap_a_device_to_connect">berühre ein Gerät zum Verbinden</string>
<string name="cannot_connect_bt_address_invalid_">Verbindung kann nicht aufgebaut werden. BT Adresse ungültig?</string> <string name="cannot_connect_bt_address_invalid_">Verbindung kann nicht aufgebaut werden. BT Adresse ungültig?</string>
<string name="gadgetbridge_running">Gadgetbridge läuft</string> <string name="gadgetbridge_running">Gadgetbridge läuft</string>
<string name="installing_binary_d_d">installiere Datei %1$d/%2$d</string> <string name="installing_binary_d_d">installiere Datei %1$d/%2$d</string>
@ -197,4 +198,6 @@
<string name="pref_title_keep_data_on_device">Aktivitätsdaten auf dem Gerät lassen</string> <string name="pref_title_keep_data_on_device">Aktivitätsdaten auf dem Gerät lassen</string>
<string name="miband_fwinstaller_incompatible_version">Inkompatible Firmware</string> <string name="miband_fwinstaller_incompatible_version">Inkompatible Firmware</string>
<string name="fwinstaller_firmware_not_compatible_to_device">Diese Firmware ist nicht mit dem Gerät kompatibel</string> <string name="fwinstaller_firmware_not_compatible_to_device">Diese Firmware ist nicht mit dem Gerät kompatibel</string>
<string name="waiting_for_reconnect">warte auf eingehende Verbindung</string>
<string name="appmananger_app_reinstall">Erneut installieren</string>
</resources> </resources>

View File

@ -45,6 +45,7 @@
<string name="never">nunca</string> <string name="never">nunca</string>
<string name="pref_blacklist">Excluir aplicaciones</string> <string name="pref_blacklist">Excluir aplicaciones</string>
<string name="pref_title_canned_replies">Respuestas enlatadas</string> <string name="pref_title_canned_replies">Respuestas enlatadas</string>
<string name="pref_title_canned_reply_suffix">Sufijo habitual</string>
<string name="pref_header_development">Opciones de desarrollador</string> <string name="pref_header_development">Opciones de desarrollador</string>
<string name="pref_title_development_miaddr">Dirección de MiBand</string> <string name="pref_title_development_miaddr">Dirección de MiBand</string>
<string name="pref_title_pebble_settings">Ajustes de Pebble</string> <string name="pref_title_pebble_settings">Ajustes de Pebble</string>
@ -200,4 +201,5 @@
<string name="fwinstaller_firmware_not_compatible_to_device">Este firmware no es compatible con tu dispositivo</string> <string name="fwinstaller_firmware_not_compatible_to_device">Este firmware no es compatible con tu dispositivo</string>
<string name="miband_prefs_reserve_alarm_calendar">Reserva de alarmas para próximos eventos</string> <string name="miband_prefs_reserve_alarm_calendar">Reserva de alarmas para próximos eventos</string>
<string name="waiting_for_reconnect">esperando reconexión</string> <string name="waiting_for_reconnect">esperando reconexión</string>
<string name="appmananger_app_reinstall">Reinstalar</string>
</resources> </resources>

View File

@ -7,6 +7,7 @@
<string name="action_quit">Quitter</string> <string name="action_quit">Quitter</string>
<string name="controlcenter_fetch_activity_data">Synchroniser</string> <string name="controlcenter_fetch_activity_data">Synchroniser</string>
<string name="controlcenter_start_sleepmonitor">Moniteur de sommeil (ALPHA)</string> <string name="controlcenter_start_sleepmonitor">Moniteur de sommeil (ALPHA)</string>
<string name="controlcenter_find_device">Trouver l\'appareil</string>
<string name="controlcenter_take_screenshot">Prendre une capture d\'écran</string> <string name="controlcenter_take_screenshot">Prendre une capture d\'écran</string>
<string name="controlcenter_disconnect">Déconnexion</string> <string name="controlcenter_disconnect">Déconnexion</string>
<string name="title_activity_debug">Débugger</string> <string name="title_activity_debug">Débugger</string>
@ -22,11 +23,13 @@
<string name="title_activity_settings">Paramètre</string> <string name="title_activity_settings">Paramètre</string>
<string name="pref_header_general">Paramètres généraux</string> <string name="pref_header_general">Paramètres généraux</string>
<string name="pref_title_general_autoconnectonbluetooth">Connecter votre appareil quand le Bluetooth est mise en marche</string> <string name="pref_title_general_autoconnectonbluetooth">Connecter votre appareil quand le Bluetooth est mise en marche</string>
<string name="pref_title_audo_player">Lecteur audio préféré</string>
<string name="pref_header_datetime">Date et heure</string> <string name="pref_header_datetime">Date et heure</string>
<string name="pref_title_datetime_syctimeonconnect">Synchroniser l\'horloge</string> <string name="pref_title_datetime_syctimeonconnect">Synchroniser l\'horloge</string>
<string name="pref_summary_datetime_syctimeonconnect">Synchroniser l\'horloge lors de la connexion et quand l\'heure ou lorsque le fuseau horaire change sur Android</string> <string name="pref_summary_datetime_syctimeonconnect">Synchroniser l\'horloge lors de la connexion et quand l\'heure ou lorsque le fuseau horaire change sur Android</string>
<string name="pref_header_notifications">Notifications</string> <string name="pref_header_notifications">Notifications</string>
<string name="pref_title_notifications_repetitions">Répétitions</string> <string name="pref_title_notifications_repetitions">Répétitions</string>
<string name="pref_title_notifications_call">Appels téléphoniques</string>
<string name="pref_title_notifications_sms">SMS</string> <string name="pref_title_notifications_sms">SMS</string>
<string name="pref_title_notifications_k9mail">K9-Email</string> <string name="pref_title_notifications_k9mail">K9-Email</string>
<string name="pref_title_notifications_pebblemsg">Message Pebble</string> <string name="pref_title_notifications_pebblemsg">Message Pebble</string>
@ -39,6 +42,7 @@
<string name="pref_header_development">Options développeur</string> <string name="pref_header_development">Options développeur</string>
<string name="pref_title_development_miaddr">Adresse Mi Band</string> <string name="pref_title_development_miaddr">Adresse Mi Band</string>
<string name="pref_title_pebble_settings">Paramètres Pebble</string> <string name="pref_title_pebble_settings">Paramètres Pebble</string>
<string name="pref_summary_enable_pebblekit">Activer le support expérimental pour les applications Android utilisant PebbleKit</string>
<string name="pref_title_pebble_forceprotocol">Protocole des notifications en vigueur</string> <string name="pref_title_pebble_forceprotocol">Protocole des notifications en vigueur</string>
<string name="pref_summary_pebble_forceprotocol">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!</string> <string name="pref_summary_pebble_forceprotocol">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!</string>
<string name="pref_title_pebble_forceuntested">Activer les fonctionnalités non testé</string> <string name="pref_title_pebble_forceuntested">Activer les fonctionnalités non testé</string>
@ -141,6 +145,7 @@
<string name="controlcenter_start_activitymonitor">Votre activité (ALPHA)</string> <string name="controlcenter_start_activitymonitor">Votre activité (ALPHA)</string>
<string name="cannot_connect">Impossible de se connecter: %1$s</string> <string name="cannot_connect">Impossible de se connecter: %1$s</string>
<string name="installer_activity_unable_to_find_handler">Impossible de trouver un gestionnaire pour installer ce fichier.</string> <string name="installer_activity_unable_to_find_handler">Impossible de trouver un gestionnaire pour installer ce fichier.</string>
<string name="pbw_install_handler_unable_to_install">Impossible d\'installer le ficher suivant: %1$s</string>
<string name="pbw_install_handler_hw_revision_mismatch">Impossible d\'installer le firmware donnée: il ne correspond pas à la version du matériel de votre Pebble.</string> <string name="pbw_install_handler_hw_revision_mismatch">Impossible d\'installer le firmware donnée: il ne correspond pas à la version du matériel de votre Pebble.</string>
<string name="installer_activity_wait_while_determining_status">S\'il vous plait patientez pendant la détermination du status de l\'installation...</string> <string name="installer_activity_wait_while_determining_status">S\'il vous plait patientez pendant la détermination du status de l\'installation...</string>
<string name="notif_battery_low_title">Gadget batterie Vide!</string> <string name="notif_battery_low_title">Gadget batterie Vide!</string>
@ -166,4 +171,19 @@
<string name="updatefirmwareoperation_update_complete_rebooting">Installation complète du firmware, redémarrage de l\'appareil</string> <string name="updatefirmwareoperation_update_complete_rebooting">Installation complète du firmware, redémarrage de l\'appareil</string>
<string name="updatefirmwareoperation_write_failed">Échec lors de l\'écriture du firmware</string> <string name="updatefirmwareoperation_write_failed">Échec lors de l\'écriture du firmware</string>
<string name="chart_steps">Pas</string> <string name="chart_steps">Pas</string>
<string name="liveactivity_live_activity">Activité en direct</string>
<string name="weeksteps_today_steps_description">Nombre de pas aujourd\'hui, objectif: %1$s</string>
<string name="pref_summary_dont_ack_transfers">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.</string>
<string name="live_activity_total_steps">Nombre total de pas</string>
<string name="live_activity_start_your_activity">Démarrer votre activité</string>
<string name="abstract_chart_fragment_kind_activity">Activité</string>
<string name="abstract_chart_fragment_kind_light_sleep">Sommeil léger</string>
<string name="abstract_chart_fragment_kind_deep_sleep">Sommeil profond</string>
<string name="abstract_chart_fragment_kind_not_worn">Non porté</string>
<string name="device_not_connected">Non connecté.</string>
<string name="pref_title_keep_data_on_device">Conserver les activités sur l\'appareil</string>
<string name="miband_fwinstaller_incompatible_version">Firmware non compatible</string>
<string name="fwinstaller_firmware_not_compatible_to_device">Ce firmware n\'est pas compatible avec l\'appareil</string>
<string name="miband_prefs_reserve_alarm_calendar">Alarmes à réserver pour événements futurs</string>
<string name="waiting_for_reconnect">Attente de reconnexion</string>
</resources> </resources>

View File

@ -45,6 +45,7 @@
<string name="never">なし</string> <string name="never">なし</string>
<string name="pref_blacklist">アップのブラックリスト</string> <string name="pref_blacklist">アップのブラックリスト</string>
<string name="pref_title_canned_replies">定型の返信</string> <string name="pref_title_canned_replies">定型の返信</string>
<string name="pref_title_canned_reply_suffix">共通の接尾語</string>
<string name="pref_header_development">開発者用設定</string> <string name="pref_header_development">開発者用設定</string>
<string name="pref_title_development_miaddr">Mi Bandのアドレス</string> <string name="pref_title_development_miaddr">Mi Bandのアドレス</string>
<string name="pref_title_pebble_settings">Pebbleの設定</string> <string name="pref_title_pebble_settings">Pebbleの設定</string>

View File

@ -44,6 +44,8 @@
<string name="when_screen_off">когда экран выключен</string> <string name="when_screen_off">когда экран выключен</string>
<string name="never">никогда</string> <string name="never">никогда</string>
<string name="pref_blacklist">Нежелательные приложения</string> <string name="pref_blacklist">Нежелательные приложения</string>
<string name="pref_title_canned_replies">Типовые ответы</string>
<string name="pref_title_canned_reply_suffix">Общий суффикс</string>
<string name="pref_header_development">Настройки для разработчиков</string> <string name="pref_header_development">Настройки для разработчиков</string>
<string name="pref_title_development_miaddr">Адрес Mi Band</string> <string name="pref_title_development_miaddr">Адрес Mi Band</string>
<string name="pref_title_pebble_settings">Настройки Pebble</string> <string name="pref_title_pebble_settings">Настройки Pebble</string>
@ -181,6 +183,7 @@
<string name="liveactivity_live_activity">Жизненная активность</string> <string name="liveactivity_live_activity">Жизненная активность</string>
<string name="weeksteps_today_steps_description">Шагов сегодня, цель: %1$s</string> <string name="weeksteps_today_steps_description">Шагов сегодня, цель: %1$s</string>
<string name="pref_summary_dont_ack_transfers">Если данные об активности не будут переданы на устройство, оно не будет очищено. Полезно, если GB используется с другими приложениями.</string> <string name="pref_summary_dont_ack_transfers">Если данные об активности не будут переданы на устройство, оно не будет очищено. Полезно, если GB используется с другими приложениями.</string>
<string name="pref_summary_keep_data_on_device">Хранить данные о деятельности на Mi Band, даже после синхронизации. Полезно, если Mi Band используется совместно с другими приложениями.</string>
<string name="pref_title_dont_ack_transfer">Не передавать данные об активности</string> <string name="pref_title_dont_ack_transfer">Не передавать данные об активности</string>
<string name="live_activity_steps_history">История шагов</string> <string name="live_activity_steps_history">История шагов</string>
<string name="live_activity_current_steps_per_minute">Текущие шаги в минуту</string> <string name="live_activity_current_steps_per_minute">Текущие шаги в минуту</string>
@ -191,4 +194,12 @@
<string name="abstract_chart_fragment_kind_light_sleep">Неглубокий сон</string> <string name="abstract_chart_fragment_kind_light_sleep">Неглубокий сон</string>
<string name="abstract_chart_fragment_kind_deep_sleep">Глубокий сон</string> <string name="abstract_chart_fragment_kind_deep_sleep">Глубокий сон</string>
<string name="abstract_chart_fragment_kind_not_worn">Не носилось</string> <string name="abstract_chart_fragment_kind_not_worn">Не носилось</string>
<string name="device_not_connected">Не подключен.</string>
<string name="user_feedback_all_alarms_disabled">Все будильники отключены</string>
<string name="pref_title_keep_data_on_device">Храните данные о деятельности на устройстве</string>
<string name="miband_fwinstaller_incompatible_version">Несовместимая прошивка</string>
<string name="fwinstaller_firmware_not_compatible_to_device">Эта прошивка не совместима с устройством</string>
<string name="miband_prefs_reserve_alarm_calendar">Резервные сигналы для предстоящих событий</string>
<string name="waiting_for_reconnect">Ожидание переподключения</string>
<string name="appmananger_app_reinstall">Переустановка</string>
</resources> </resources>

View File

@ -56,6 +56,7 @@
<string name="pref_blacklist">Blacklist Apps</string> <string name="pref_blacklist">Blacklist Apps</string>
<string name="pref_title_canned_replies">Canned Replies</string> <string name="pref_title_canned_replies">Canned Replies</string>
<string name="pref_title_canned_reply_suffix">Common suffix</string>
<string name="pref_header_development">Developer Options</string> <string name="pref_header_development">Developer Options</string>
<string name="pref_title_development_miaddr">Mi Band address</string> <string name="pref_title_development_miaddr">Mi Band address</string>

View File

@ -67,8 +67,12 @@
android:title="@string/pref_blacklist" /> android:title="@string/pref_blacklist" />
<PreferenceScreen <PreferenceScreen
android:key="pref_key_canned_replies" android:key="pref_key_canned_replies"
android:title="@string/pref_title_canned_replies" android:title="@string/pref_title_canned_replies">
android:dependency="pebble_force_untested" > <EditTextPreference
android:defaultValue=" (canned reply)"
android:key="canned_reply_suffix"
android:maxLength="64"
android:title="@string/pref_title_canned_reply_suffix" />
<EditTextPreference <EditTextPreference
android:key="canned_reply_1" android:key="canned_reply_1"
android:maxLength="64" /> android:maxLength="64" />