Merge branch 'master' into feature-weather

here
Andreas Shimokawa 2016-12-12 09:05:19 +01:00
commit f74bb4e3f3
12 changed files with 241 additions and 81 deletions

View File

@ -86,6 +86,7 @@ For more information read [this wiki article](https://github.com/Freeyourgadget/
* Generic Android notifications
* Synchronize the time to the Mi Band 2
* Display firmware version
* Firmware update (beta)
* Heart rate measurement on demand and during sleep
* Synchronize activity data (alpha)
* Set alarms on the Mi Band 2

View File

@ -56,6 +56,9 @@ public class MiBand2FWHelper extends AbstractMiBandFWHelper {
@Override
protected void determineFirmwareInfo(byte[] wholeFirmwareBytes) {
firmwareInfo = new Mi2FirmwareInfo(wholeFirmwareBytes);
if (!firmwareInfo.isHeaderValid()) {
throw new IllegalArgumentException("Not a Mi Band 2 firmware");
}
}
@Override

View File

@ -190,16 +190,19 @@ public class NotificationListener extends NotificationListenerService {
if (!prefs.getBoolean("notifications_generic_whenscreenon", false)) {
PowerManager powermanager = (PowerManager) getSystemService(POWER_SERVICE);
if (powermanager.isScreenOn()) {
LOG.info("Not forwarding notification, screen seems to be on and settings do not allow this");
return;
}
}
//don't forward group summary notifications to the wearable, they are meant for the android device only
if ((notification.flags & Notification.FLAG_GROUP_SUMMARY) == Notification.FLAG_GROUP_SUMMARY) {
LOG.info("Not forwarding notification, FLAG_GROUP_SUMMARY is set");
return;
}
if ((notification.flags & Notification.FLAG_ONGOING_EVENT) == Notification.FLAG_ONGOING_EVENT) {
LOG.info("Not forwarding notification, FLAG_ONGOING_EVENT is set");
return;
}
@ -212,6 +215,7 @@ public class NotificationListener extends NotificationListenerService {
source.equals("com.android.systemui") ||
source.equals("com.android.dialer") ||
source.equals("com.cyanogenmod.eleven")) {
LOG.info("Not forwarding notification, is a system event");
return;
}
@ -232,6 +236,7 @@ public class NotificationListener extends NotificationListenerService {
}
if (GBApplication.blacklist != null && GBApplication.blacklist.contains(source)) {
LOG.info("Not forwarding notification, application is blacklisted");
return;
}

View File

@ -41,10 +41,12 @@ public abstract class AbstractMi1FirmwareInfo extends AbstractMiFirmwareInfo {
return 0;
}
@Override
public int getFirmwareLength() {
return wholeFirmwareBytes.length;
}
@Override
public int getFirmwareVersion() {
return (wholeFirmwareBytes[getOffsetFirmwareVersionMajor()] << 24)
| (wholeFirmwareBytes[getOffsetFirmwareVersionMinor()] << 16)
@ -89,9 +91,10 @@ public abstract class AbstractMi1FirmwareInfo extends AbstractMiFirmwareInfo {
return false;
}
@Override
protected boolean isHeaderValid() {
// TODO: not sure if this is a correct check!
return ArrayUtils.equals(SINGLE_FW_HEADER, wholeFirmwareBytes, SINGLE_FW_HEADER_OFFSET, SINGLE_FW_HEADER_OFFSET + SINGLE_FW_HEADER.length);
return ArrayUtils.equals(wholeFirmwareBytes, SINGLE_FW_HEADER, SINGLE_FW_HEADER_OFFSET);
}
@Override

View File

@ -38,9 +38,10 @@ public class Mi1SFirmwareInfo extends CompositeMiFirmwareInfo {
return false;
}
@Override
protected boolean isHeaderValid() {
// TODO: not sure if this is a correct check!
return ArrayUtils.equals(DOUBLE_FW_HEADER, wholeFirmwareBytes, DOUBLE_FW_HEADER_OFFSET, DOUBLE_FW_HEADER_OFFSET + DOUBLE_FW_HEADER.length);
return ArrayUtils.equals(wholeFirmwareBytes, DOUBLE_FW_HEADER, DOUBLE_FW_HEADER_OFFSET);
}
@Nullable

View File

@ -57,9 +57,9 @@ public class Mi2FirmwareInfo {
return isHeaderValid() && device.getType() == DeviceType.MIBAND2;
}
protected boolean isHeaderValid() {
// TODO: not sure if this is a correct check!
return ArrayUtils.equals(FW_HEADER, bytes, FW_HEADER_OFFSET, FW_HEADER_OFFSET + FW_HEADER.length);
public boolean isHeaderValid() {
// TODO: this is certainly not a correct validation, but it works for now
return ArrayUtils.equals(bytes, FW_HEADER, FW_HEADER_OFFSET);
}
public void checkValid() throws IllegalArgumentException {

View File

@ -218,7 +218,7 @@ public class FetchActivityOperation extends AbstractMiBand2Operation {
private void handleActivityMetadata(byte[] value) {
if (value.length == 15) {
// first two bytes are whether our request was accepted
if (ArrayUtils.equals(MiBand2Service.RESPONSE_ACTIVITY_DATA_START_DATE_SUCCESS, value, 0, 2)) {
if (ArrayUtils.equals(value, MiBand2Service.RESPONSE_ACTIVITY_DATA_START_DATE_SUCCESS, 0)) {
// the third byte (0x01 on success) = ?
// the 4th - 7th bytes probably somehow represent the number of bytes/packets to expect

View File

@ -4,35 +4,31 @@ import java.util.Collection;
public class ArrayUtils {
/**
* Checks the two given arrays for equality, but comparing only a subset of the second
* array with the whole first array.
* Checks the two given arrays for equality, but comparing the second array with a specified
* subset of the first array.
*
* @param first the whole array to compare against
* @param second the array, of which a subset shall be compared against the whole first array
* @param secondStartIndex the start index (inclusive) of the second array from which to start the comparison
* @param secondEndIndex the end index (exclusive) of the second array until which to compare
* @return whether the first byte array is equal to the specified subset of the second byte array
* @throws IllegalArgumentException when one of the arrays is null or start and end index are wrong
* @param first the array in which to look for the second array
* @param second the data to look for inside the first array
* @param startIndex the start index (inclusive) inside the first array from which to start the comparison
* @return whether the second byte array is equal to the specified subset of the first byte array
* @throws IllegalArgumentException when one of the arrays is null or start index/length are wrong
*/
public static boolean equals(byte[] first, byte[] second, int secondStartIndex, int secondEndIndex) {
public static boolean equals(byte[] first, byte[] second, int startIndex) {
if (first == null) {
throw new IllegalArgumentException("first must not be null");
}
if (second == null) {
throw new IllegalArgumentException("second must not be null");
}
if (secondStartIndex >= secondEndIndex) {
throw new IllegalArgumentException("secondStartIndex must be smaller than secondEndIndex");
if (startIndex < 0) {
throw new IllegalArgumentException("startIndex must be >= 0");
}
if (second.length < secondEndIndex) {
throw new IllegalArgumentException("secondStartIndex must be smaller than secondEndIndex");
}
int len = secondEndIndex - secondStartIndex;
if (first.length != len) {
if (second.length + startIndex > first.length) {
return false;
}
for (int i = 0; i < len; i++) {
if (first[i] != second[secondStartIndex + i]) {
for (int i = 0; i < second.length; i++) {
if (first[startIndex + i] != second[i]) {
return false;
}
}

View File

@ -36,7 +36,7 @@
<string name="fw_upgrade_notice">Estás a punto de instalar el firmware %s en lugar del que está en tu MiBand.</string>
<string name="fw_multi_upgrade_notice">Estás a punto de instalar los firmwares %1$s y %2$s en lugar de los que están en tu MiBand.</string>
<string name="miband_firmware_known">Este firmware ha sido probado y se sabe que es compatible con Gadgetbridge.</string>
<string name="miband_firmware_unknown_warning">Este firmware no ha sido probado y puede no sea compatible con Gadgetbridge.\n\nNO se recomienda la instalación en tu MiBand!.</string>
<string name="miband_firmware_unknown_warning">Este firmware no ha sido probado y puede que no sea compatible con Gadgetbridge.\n\nNO se recomienda la instalación en tu MiBand!.</string>
<string name="miband_firmware_suggest_whitelist">Si aún así quieres seguir y las cosas continúan funcionando correctamente después de esto, por favor indícales a los desarrolladores de Gadgetbridge que la versión del firmware: %s funciona bien.</string>
<!--Strings related to Settings-->
<string name="title_activity_settings">Ajustes</string>
@ -49,15 +49,16 @@
<string name="pref_title_datetime_syctimeonconnect">Sincronizar hora</string>
<string name="pref_summary_datetime_syctimeonconnect">Sincroniza la hora en el dispositivo cuando se conecte o se cambie la hora o zona horaria en Android</string>
<string name="pref_title_theme">Tema</string>
<string name="pref_theme_light">Ligero</string>
<string name="pref_theme_light">Claro</string>
<string name="pref_theme_dark">Oscuro</string>
<string name="pref_title_language">Lenguaje</string>
<string name="pref_title_language">Idioma</string>
<string name="pref_header_notifications">Notificaciones</string>
<string name="pref_title_notifications_repetitions">Repeticiones</string>
<string name="pref_title_notifications_call">Llamadas telefónicas</string>
<string name="pref_title_notifications_sms">SMS</string>
<string name="pref_title_notifications_k9mail">K9-Mail</string>
<string name="pref_title_notifications_pebblemsg">Mensajes de Pebble</string>
<string name="pref_summary_notifications_pebblemsg">Soporte para aplicaciones que envían notificaciones a Pebble a través de PebbleKit.</string>
<string name="pref_title_notifications_generic">Soporte para notificaciones genéricas</string>
<string name="pref_title_whenscreenon">… también con pantalla encendida</string>
<string name="pref_title_notification_filter">No Molestar</string>
@ -66,7 +67,7 @@
<string name="when_screen_off">cuando la pantalla está apagada</string>
<string name="never">nunca</string>
<string name="pref_blacklist">Excluir aplicaciones</string>
<string name="pref_header_cannned_messages">Mensajes preservados</string>
<string name="pref_header_cannned_messages">Mensajes predeterminados</string>
<string name="pref_title_canned_replies">Respuestas</string>
<string name="pref_title_canned_reply_suffix">Sufijo habitual</string>
<string name="pref_title_canned_messages_dismisscall">Rechazar llamada</string>
@ -81,8 +82,8 @@
<string name="pref_title_pebble_sync_morpheuz">Sincronizar con Morpheuz</string>
<string name="pref_title_enable_pebblekit">Permitir el acceso a aplicaciones Android de terceros</string>
<string name="pref_summary_enable_pebblekit">Permitir el soporte experimental para aplicaciones Android que usan PebbleKit</string>
<string name="pref_title_sunrise_sunset">Salida y Puesta de Sol</string>
<string name="pref_summary_sunrise_sunset">Enviar los tiempos de Salida y Puesta del sol basándose en la localización a la línea cronológica del Pebble</string>
<string name="pref_title_sunrise_sunset">Salida y puesta de Sol</string>
<string name="pref_summary_sunrise_sunset">Enviar las horas de salida y puesta de Sol basándose en la localización a la línea cronológica del Pebble</string>
<string name="pref_header_location">Localización</string>
<string name="pref_title_location_aquire">Buscar localización</string>
<string name="pref_title_location_latitude">Latitud</string>
@ -96,6 +97,7 @@
<string name="pref_title_pebble_forceuntested">Habilitar características no probadas</string>
<string name="pref_summary_pebble_forceuntested">Habilita características que no han sido probadas. ¡HABILÍTALO SOLO SI SABES LO QUE ESTÁS HACIENDO!</string>
<string name="pref_title_pebble_forcele">Preferir siempre BLE</string>
<string name="pref_summary_pebble_forcele">Usar el soporte experimental de Pebble LE para todos los Pebble en lugar del bluetooth clásico. Requiere vincular \"Pebble LE\" si un Pebble no-LE ha sido vinculado antes.</string>
<string name="pref_title_pebble_enable_applogs">Activar crear registros de la App del Reloj</string>
<string name="pref_summary_pebble_enable_applogs">Producirá registros de las apps del reloj que Gadgetbridge guardará (necesita reconexión)</string>
<string name="pref_title_pebble_reconnect_attempts">Intentos de reconexión</string>
@ -109,8 +111,8 @@
<string name="test">Probar</string>
<string name="test_notification">Probar notificación</string>
<string name="this_is_a_test_notification_from_gadgetbridge">Notificación de prueba desde Gadgetbridge</string>
<string name="bluetooth_is_not_supported_">Bluetooth no está soportado.</string>
<string name="bluetooth_is_disabled_">Bluetooth está desactivado.</string>
<string name="bluetooth_is_not_supported_">El Bluetooth no está soportado.</string>
<string name="bluetooth_is_disabled_">El Bluetooth está desactivado.</string>
<string name="tap_connected_device_for_app_mananger">Pulsa el dispositivo conectado para Gestión de App</string>
<string name="tap_connected_device_for_activity">Pulsa el dispositivo conectado para Actividad</string>
<string name="tap_connected_device_for_vibration">Pulsa el dispositivo conectado para Vibración</string>
@ -119,14 +121,14 @@
<string name="gadgetbridge_running">Gadgetbridge funcionando</string>
<string name="installing_binary_d_d">instalando binario %1$d/%2$d</string>
<string name="installation_failed_">¡La instalación ha fallado!</string>
<string name="installation_successful">instalación satisfactoria</string>
<string name="installation_successful">instalación correcta</string>
<string name="firmware_install_warning">ESTÁS INTENTANDO INSTALAR UN FIRMWARE, CONTINÚA BAJO TU RESPONSABILIDAD.\n\n\n Este firmware es para la revisión de HW: %s</string>
<string name="app_install_info">Estás a punto de instalar la siguiente app:\n\n\n%1$s Versión %2$s de %3$s\n</string>
<string name="n_a">N/A</string>
<string name="initialized">iniciado</string>
<string name="appversion_by_creator">%1$s de %2$s</string>
<string name="title_activity_discovery">Detección de dispositivos</string>
<string name="discovery_stop_scanning">Finalizar el escaneo</string>
<string name="discovery_stop_scanning">Detener el escaneo</string>
<string name="discovery_start_scanning">Comenzar la detección</string>
<string name="action_discover">Conectar un nuevo dispositivo</string>
<string name="device_with_rssi">%1$s (%2$s)</string>
@ -136,20 +138,20 @@
<string name="pairing">Emparejando con %s...</string>
<string name="pairing_creating_bond_with">Creando emparejamiento con %1$s (%2$s)</string>
<string name="pairing_unable_to_pair_with">No se ha podido emparejar con %1$s (%2$s)</string>
<string name="pairing_in_progress">Emparejamiento en progreso: %1$s (%2$s)</string>
<string name="pairing_in_progress">Emparejamiento en curso: %1$s (%2$s)</string>
<string name="pairing_already_bonded">Emparejado con %1$s (%2$s), conectando…</string>
<string name="message_cannot_pair_no_mac">Ninguna dirección MAC aprobada, no se puede emparejar.</string>
<string name="message_cannot_pair_no_mac">Ninguna dirección MAC proporcionada, no se puede emparejar.</string>
<string name="preferences_category_device_specific_settings">Ajustes específicos del dispositivo</string>
<string name="preferences_miband_settings">Ajustes de MiBand</string>
<string name="male">masculino</string>
<string name="female">femenino</string>
<string name="other">otro</string>
<string name="male">Hombre</string>
<string name="female">Mujer</string>
<string name="other">Otro</string>
<string name="left">izquierda</string>
<string name="right">derecha</string>
<string name="miband_pairing_using_dummy_userdata">No se han proporcionado datos de usuario válidos, se usarán datos de usuario por defecto.</string>
<string name="miband_pairing_tap_hint">Cuando tu MiBand vibre y parpadee, púlsala repetidas veces.</string>
<string name="appinstaller_install">Instalar</string>
<string name="discovery_connected_devices_hint">Haga su dispositivo detectable. Actualmente los dispositivos conectados no serán detectables. En Android 6 o superior, necesita activar la localización (ej. GPS). Si su dispositivo no aparece en dos minutos, vuelva a intentarlo tras reiniciar su teléfono.</string>
<string name="discovery_connected_devices_hint">Haga su dispositivo detectable. Los dispositivos conectados no serán detectables. En Android 6 o superior, necesita activar la localización (ej. GPS). Si su dispositivo no aparece en dos minutos, vuelva a intentarlo tras reiniciar su teléfono.</string>
<string name="discovery_note">Nota:</string>
<string name="candidate_item_device_image">Imagen del dispositivo</string>
<string name="miband_prefs_alias">Nombre/Apodo</string>
@ -169,7 +171,7 @@
<string name="vibration_profile_ring">Ring</string>
<string name="vibration_profile_alarm_clock">Alarma</string>
<string name="miband_prefs_vibration">Vibración</string>
<string name="vibration_try">Intentar</string>
<string name="vibration_try">Probar</string>
<string name="pref_screen_notification_profile_sms">Notificación de SMS</string>
<string name="pref_header_vibration_settings">Ajustes de vibración</string>
<string name="pref_screen_notification_profile_generic">Notificación genérica</string>
@ -191,7 +193,7 @@
<string name="alarm_thu_short">Jue</string>
<string name="alarm_fri_short">Vie</string>
<string name="alarm_sat_short">Sáb</string>
<string name="alarm_smart_wakeup">Despertar avanzado</string>
<string name="alarm_smart_wakeup">Alarma inteligente</string>
<string name="user_feedback_miband_set_alarms_failed">Hubo un error al configurar las alarmas, ¡Por favor, inténtalo de nuevo!</string>
<string name="user_feedback_miband_set_alarms_ok">¡Alarmas enviadas al dispositivo!</string>
<string name="chart_no_data_synchronize">Sin datos. ¿Sincronizar dispositivo?</string>
@ -219,9 +221,9 @@
<string name="fwappinstaller_connection_state">Conexión al dispositivo: %1$s</string>
<string name="pbw_installhandler_pebble_firmware">Pebble firmware %1$s</string>
<string name="pbwinstallhandler_correct_hw_revision">Revisión de hardware correcta</string>
<string name="pbwinstallhandler_incorrect_hw_revision">La revisión de hardware incorrecta!</string>
<string name="pbwinstallhandler_incorrect_hw_revision">La revisión de hardware es incorrecta!</string>
<string name="pbwinstallhandler_app_item">%1$s (%2$s)</string>
<string name="updatefirmwareoperation_updateproblem_do_not_reboot">Hubo un problema con la transferencia de firmware. NO REINICIES tu MiBand!</string>
<string name="updatefirmwareoperation_updateproblem_do_not_reboot">Hubo un problema con la transferencia de firmware. NO REINICIES tu Mi Band!</string>
<string name="updatefirmwareoperation_metadata_updateproblem">Hubo un problema con la transferencia de metadatos del firmware</string>
<string name="updatefirmwareoperation_update_complete">Instalación del firmware completa</string>
<string name="updatefirmwareoperation_update_complete_rebooting">Instalación del firmware completa, reiniciando dispositivo...</string>
@ -230,8 +232,8 @@
<string name="liveactivity_live_activity">Actividad</string>
<string name="weeksteps_today_steps_description">Pasos hoy, objetivo: %1$s</string>
<string name="pref_title_dont_ack_transfer">No confirmar transferencia</string>
<string name="pref_summary_dont_ack_transfers">Si los datos no son marcados como descargados, no serán borrados de tu MiBand. Útil si Gadgetbridge se usa conjuntamente con otras apps.</string>
<string name="pref_summary_keep_data_on_device">Mantendrá los datos de actividad en la MiBand incluso después de la sincronización. Útil si GB se usa junto con otras apps.</string>
<string name="pref_summary_dont_ack_transfers">Si los datos no son marcados como descargados, no serán borrados de tu Mi Band. Útil si Gadgetbridge se usa conjuntamente con otras apps.</string>
<string name="pref_summary_keep_data_on_device">Mantendrá los datos de actividad en la Mi Band incluso después de la sincronización. Útil si GB se usa junto con otras apps.</string>
<string name="pref_title_low_latency_fw_update">Usa el modo de baja latencia para las actualizaciones de FW</string>
<string name="pref_summary_low_latency_fw_update">Esto podría ayudar en dispositivos donde las actualizaciones de firmware fallan</string>
<string name="live_activity_steps_history">Historial de pasos</string>
@ -279,11 +281,17 @@
<!--Strings related to Onboading Activity-->
<string name="title_activity_onboarding">Importar Base de Datos</string>
<string name="import_old_db_buttonlabel">Importar datos de actividad antiguos</string>
<string name="import_old_db_information">Desde Gadgetbridge 0.12.0 usamos un nuevo formato de base de datos.
Se pueden importar los antiguos datos de actividad y asociarlos con el dispoditivo al que se está conectando (%1$s).\n
\n
Si no importas los antiguos datos de actividad ahora, siempre lo podrás hacer después seleccionando \"MERGE OLD ACTIVITY DATA\" en el apartado de gestión de base de datos de actividad.\n
\n
Por favor, ten en cuenta que puedes importar datos desde Mi Band, Pebble Health y Morpheuz pero NO desde Pebble Misfit.</string>
<string name="pref_title_pebble_health_store_raw">Almacenar datos en bruto en la base de datos </string>
<string name="pref_summary_pebble_health_store_raw">Seleccionado, los datos archivados se guardan en bruto y están disponibles para ser interpretados más tarde. La base de datos será más grande. </string>
<string name="action_db_management">Administración de Bases de Datos</string>
<string name="title_activity_db_management">Administración de Bases de Datos</string>
<string name="activity_db_management_import_export_explanation">La base de datos usa la siguiente ubicación en su dispositivo. \nThis path es accesible a otras aplicaciones Android y a su ordenador. \nExpect para encontrar sus bases de datos exportadas (o ponga la base de datos que quiere importar) ahí:</string>
<string name="activity_db_management_import_export_explanation">La base de datos usa la siguiente ubicación en su dispositivo. \nEsta ubicación está accesible para otras aplicaciones Android y para su ordenador. \nEncontrará sus bases de datos exportadas (o la que quiere importar) aquí:</string>
<string name="activity_db_management_merge_old_explanation">Los datos de actividad grabados con versiones anteriores de Gadgetbridge a 0.12 deben ser convertidos a un nuevo formato. \nPuede hacerlo utilizando el botón de abajo. ¡Tenga en cuenta que debe estar conectado con el dispositivo al que desea asociar los antiguos datos de la actividad! \nSi ya importó sus datos y está satisfecho con el resultado, es posible eliminar la base de datos antigua.</string>
<string name="activity_db_management_merge_old_title">Importar/Borrar Base de Datos Antigua</string>
<string name="dbmanagementactivvity_cannot_access_export_path">No se puede acceder a la ruta para exportar . Por favor, contacta con los desarrolladores.</string>

View File

@ -12,29 +12,32 @@
<string name="controlcenter_disconnect">Szétcsatlakoztatás</string>
<string name="controlcenter_delete_device">Eszköz törlése</string>
<string name="controlcenter_delete_device_name">%1$s törlése</string>
<string name="controlcenter_delete_device_dialogmessage">Az eszköz törlésre és az összes hozzátartozó adat törlésre kerül!</string>
<string name="controlcenter_delete_device_dialogmessage">Az eszköz és az összes hozzátartozó adat törlésre kerül!</string>
<string name="title_activity_debug">Hibakeresés</string>
<!--Strings related to AppManager-->
<string name="title_activity_appmanager">Alkalmazás kezelő</string>
<string name="appmanager_cached_watchapps_watchfaces">Applikációk gyorsítótárban</string>
<string name="appmanager_installed_watchapps">Telepített applikációk</string>
<string name="title_activity_appmanager">Alkalmazáskezelő</string>
<string name="appmanager_cached_watchapps_watchfaces">Gyorsítótárazott alkalmazások</string>
<string name="appmanager_installed_watchapps">Telepített alkalmazások</string>
<string name="appmanager_installed_watchfaces">Telepített számlapok</string>
<string name="appmananger_app_delete">Törlés</string>
<string name="appmananger_app_delete_cache">Törlés és eltávolítás a gyorsítótárból</string>
<string name="appmananger_app_reinstall">Újratelepítés</string>
<string name="appmanager_app_openinstore">Keresés a Pebble alkalmazás-áruházban</string>
<string name="appmanager_health_activate">Aktiválás</string>
<string name="appmanager_health_deactivate">Deaktiválás</string>
<string name="appmanager_hrm_activate">Pulzusmérő aktiválása</string>
<string name="appmanager_hrm_deactivate">Pulzusmérő deaktiválása</string>
<string name="app_configure">Beállítás</string>
<string name="app_move_to_top">A tetejére mozgatás</string>
<!--Strings related to AppBlacklist-->
<string name="title_activity_appblacklist">Értesítés tiltólista</string>
<!--Strings related to FwAppInstaller-->
<string name="title_activity_fw_app_insaller">FW/Alkalmazás telepítő</string>
<string name="fw_upgrade_notice">Firmware-t fogsz telepíteni: %s a mostani helyett a Mi Band-edre.</string>
<string name="fw_multi_upgrade_notice">Firmware-t fogsz telepíteni: %1$s és %2$s a mostani helyett a Mi Band-edre.</string>
<string name="fw_upgrade_notice">A %s firmware-változatot tervezed telepíteni a Mi Band-edre a mostani helyett.</string>
<string name="fw_multi_upgrade_notice">A %1$s és %2$s firmware-változatokat tervezed telepíteni a Mi Band-edre a mostani helyett.</string>
<string name="miband_firmware_known">Ez a firmware tesztelt és ismerten kompatibilis a Gadgetbridge-dzsel.</string>
<string name="miband_firmware_unknown_warning">Ez a firmware nincs tesztelve, lehetséges, hogy nem kompatibilis a Gadgetbridge-dzsel.\n\nNem javasoljuk, hogy feltelepítsd a Mi Band-edre!</string>
<string name="miband_firmware_suggest_whitelist">Ha ennek ellenére is telepíteni szeretnéd, és a dolgok jól működnek, utána kérlek jelezd a Gadgetbridge fejlesztőinek, hogy fehérlistára tehessék a </string>
<string name="miband_firmware_unknown_warning">Ez a firmware nincs tesztelve, lehetséges, hogy nem kompatibilis a Gadgetbridge-dzsel.\n\nNEM javasoljuk, hogy feltelepítsd a Mi Band-edre!</string>
<string name="miband_firmware_suggest_whitelist">Ha ennek ellenére is telepíteni szeretnéd, és a dolgok jól működnek, utána kérlek jelezd a Gadgetbridge fejlesztőinek, hogy fehérlistára tehessék a %s firmware-változatot.</string>
<!--Strings related to Settings-->
<string name="title_activity_settings">Beállítások</string>
<string name="pref_header_general">Általános beállítások</string>
@ -54,8 +57,8 @@
<string name="pref_title_notifications_call">Telefonhívások</string>
<string name="pref_title_notifications_sms">SMS</string>
<string name="pref_title_notifications_k9mail">K9-Mail</string>
<string name="pref_title_notifications_pebblemsg">Pebble Üzenetek</string>
<string name="pref_summary_notifications_pebblemsg">Támogatás az alkalmazásoknak, amik értesítést küldenek a Pebble-nek Intent-en keresztül. Ez beszélgetésre használható.</string>
<string name="pref_title_notifications_pebblemsg">Pebble üzenetek</string>
<string name="pref_summary_notifications_pebblemsg">Támogatás az alkalmazásoknak, amik értesítéseket küldenek a Pebble-nek a PebbleKit-en keresztül.</string>
<string name="pref_title_notifications_generic">Általános értesítési támogatás</string>
<string name="pref_title_whenscreenon">… és amikor a kijelző be van kapcsolva</string>
<string name="pref_title_notification_filter">Ne zavarj mód</string>
@ -64,13 +67,16 @@
<string name="when_screen_off">amikor a kijelző ki van kapcsolva</string>
<string name="never">soha</string>
<string name="pref_blacklist">Tiltott alkalmazások</string>
<string name="pref_header_cannned_messages">Előre beállított üzenetek</string>
<string name="pref_title_canned_replies">Előre megírt válaszok</string>
<string name="pref_title_canned_reply_suffix">Közös előtag</string>
<string name="pref_title_canned_messages_dismisscall">Hívás elutasítás</string>
<string name="pref_title_canned_messages_set">Frissítés a Pebble-n</string>
<string name="pref_header_development">Fejlesztői beállítások</string>
<string name="pref_title_development_miaddr">Mi Band cím</string>
<string name="pref_title_pebble_settings">Pebble beállítások</string>
<string name="pref_header_activitytrackers">Aktivitásmérők</string>
<string name="pref_title_pebble_activitytracker">Preferált Aktivitásmérők</string>
<string name="pref_title_pebble_activitytracker">Preferált Aktivitásmérő</string>
<string name="pref_title_pebble_sync_health">Pebble Health szinkronizálása</string>
<string name="pref_title_pebble_sync_misfit">Misfit szinkronizálás</string>
<string name="pref_title_pebble_sync_morpheuz">Morpheuz szinkronizálás</string>
@ -78,16 +84,22 @@
<string name="pref_summary_enable_pebblekit">Kísérleti támogatás engedélyezése az Android alkalmazások számára a PebbleKit használatára</string>
<string name="pref_title_sunrise_sunset">Napkelte és napnyugta</string>
<string name="pref_summary_sunrise_sunset">A napkelte és napnyugta idejének küldése a Pebble idővonalra a hely és idő alapján</string>
<string name="pref_header_location">Helység</string>
<string name="pref_title_location_aquire">Földrajzi hely</string>
<string name="pref_header_location">Pozició</string>
<string name="pref_title_location_aquire">Pozició meghatározása</string>
<string name="pref_title_location_latitude">Szélesség</string>
<string name="pref_title_location_longitude">Hosszúság</string>
<string name="pref_title_location_keep_uptodate">Pozició frissentartása</string>
<string name="pref_summary_location_keep_uptodate">Aktuális pozició meghatározásának megpróbálása futásidőben, hiba esetén a letárolt pozició használata</string>
<string name="toast_enable_networklocationprovider">Kérlek, engedélyezd a hálózati helymeghatározást.</string>
<string name="toast_aqurired_networklocation">Lokáció megszerezve</string>
<string name="pref_title_pebble_forceprotocol">Erőltetett értesítés protokoll</string>
<string name="pref_summary_pebble_forceprotocol">Ez az opció erőlteti az utolsó értesítési protokollt a firmware verziótól függően. CSAK AKKOR ENGEDÉLYEZD, HA TUDOD MIT CSINÁLSZ!</string>
<string name="toast_aqurired_networklocation">Hely meghatározva</string>
<string name="pref_title_pebble_forceprotocol">Értesítési protokoll erőltetése</string>
<string name="pref_summary_pebble_forceprotocol">Ez az opció a legfrissebb értesítési protokollt erőlteti a firmware verziótól függően. CSAK AKKOR ENGEDÉLYEZD, HA TUDOD MIT CSINÁLSZ!</string>
<string name="pref_title_pebble_forceuntested">Nem tesztelt funkciók engedélyezése</string>
<string name="pref_summary_pebble_forceuntested">Nem tesztelt funkciók engedélyezése. CSAK AKKOR ENGEDÉLYEZD, HA TUDOD MIT CSINÁLSZ!</string>
<string name="pref_title_pebble_forcele">Mindig preferálja a BLE-t</string>
<string name="pref_summary_pebble_forcele">A kísérleti LE támogatás használata minden Pebble-hez a klasszikus BT helyett, párosítani kell hozzá egy \"Pebble LE\"-t, miután a nem-LE-t párosítva lett egyszer.</string>
<string name="pref_title_pebble_enable_applogs">Óraalkalmazás-naplózás engedélyezése</string>
<string name="pref_summary_pebble_enable_applogs">Az óra-alkalmazások naplóit a Gadgetbridge is naplózni fogja (újracsatlakozást igényel)</string>
<string name="pref_title_pebble_reconnect_attempts">Újracsatlakozási kísérletek száma</string>
<string name="not_connected">nincs csatlakozva</string>
<string name="connecting">csatlakozás</string>
@ -101,21 +113,21 @@
<string name="this_is_a_test_notification_from_gadgetbridge">Ez egy tesztértesítés a Gadgetbridge-től</string>
<string name="bluetooth_is_not_supported_">A Bluetooth nem támogatott.</string>
<string name="bluetooth_is_disabled_">A Bluetooth ki van kapcsolva.</string>
<string name="tap_connected_device_for_app_mananger">Érintsd meg az eszközt az alkalmazáskezelőhöz</string>
<string name="tap_connected_device_for_activity">Érintsd meg az eszközt az aktivitáshoz</string>
<string name="tap_connected_device_for_vibration">Érintsd meg az eszközt a rezgéshez.</string>
<string name="tap_a_device_to_connect">Érintsd meg az eszközt a csatlakozáshoz</string>
<string name="tap_connected_device_for_app_mananger">Koppints az eszközre az alkalmazáskezelőhöz</string>
<string name="tap_connected_device_for_activity">Koppints az eszközre az Aktivitáshoz</string>
<string name="tap_connected_device_for_vibration">Koppints az eszközre a rezgetéshez.</string>
<string name="tap_a_device_to_connect">Koppints az eszközre a csatlakozáshoz</string>
<string name="cannot_connect_bt_address_invalid_">Nem lehet csatlakozni. Rossz Bluetooth cím?</string>
<string name="gadgetbridge_running">A Gadgetbridge fut.</string>
<string name="installing_binary_d_d">bináris telepítés %1$d/%2$d</string>
<string name="installing_binary_d_d">%1$d/%2$d bináris telepítése</string>
<string name="installation_failed_">sikertelen telepítés!</string>
<string name="installation_successful">sikeres telepítés</string>
<string name="firmware_install_warning">FIRMWARE-T PRÓBÁLSZ TELEPÍTENI, CSAK SAJÁT FELELŐSSÉGRE TEDD!.\n\n\n Ez a firmware ehhez a hardware-verzióhoz tartozik: %s</string>
<string name="app_install_info">A következő alkalmazást fogod telepíteni:\n\n\n%1$s Verzió %2$s : %3$s\n</string>
<string name="app_install_info">A következő alkalmazást fogod telepíteni:\n\n\n%1$s Verzió %2$s , készítette: %3$s\n</string>
<string name="n_a">N/A</string>
<string name="initialized">inicializált</string>
<string name="appversion_by_creator">%1$s by %2$s</string>
<string name="title_activity_discovery">Eszköz fellelhetőség</string>
<string name="appversion_by_creator">%1$s , készítette: %2$s</string>
<string name="title_activity_discovery">Eszköz keresés</string>
<string name="discovery_stop_scanning">Keresés leállítása</string>
<string name="discovery_start_scanning">Keresés kezdése</string>
<string name="action_discover">Új eszköz csatlakoztatása</string>
@ -123,7 +135,11 @@
<string name="title_activity_android_pairing">Eszköz párosítása</string>
<string name="android_pairing_hint">Használja az Android Bluetooth párosítás ablakot eszköz párosításához.</string>
<string name="title_activity_mi_band_pairing">Párosítsd a Mi Band-ed</string>
<string name="pairing">Párosítás: %s…</string>
<string name="pairing">%s párosítása...</string>
<string name="pairing_creating_bond_with">Összeköttetés létesítése %1$s (%2$s) eszközzel</string>
<string name="pairing_unable_to_pair_with">Sikertelen párosítás %1$s (%2$s) eszközzel</string>
<string name="pairing_in_progress">Összeköttetés folyamatban %1$s (%2$s) eszközzel</string>
<string name="pairing_already_bonded">Meglévő párosítás %1$s (%2$s) eszközzel, kapcsolódás...</string>
<string name="message_cannot_pair_no_mac">Nincs találat a MAC címre, nem lehet párosítani.</string>
<string name="preferences_category_device_specific_settings">Eszközspecifikus beállítások</string>
<string name="preferences_miband_settings">MI Band beállítások</string>
@ -135,7 +151,7 @@
<string name="miband_pairing_using_dummy_userdata">Nem helyes felhasználói adatok vannak megadva, alapértelmezett adatokat fogok használni.</string>
<string name="miband_pairing_tap_hint">Amikor vibrálni kezd a Mi Band-ed, érintsd meg párszor egymás után.</string>
<string name="appinstaller_install">Telepítés</string>
<string name="discovery_connected_devices_hint">Engedélyezd a készüléked láthatóságát. A csatlakoztatott készülékek valószínűleg nem fognak megjelenni. Ha a készüléked nem jelenik meg 2 perc elteltével, próbáld újra, majd indítsd újra a telefonod.</string>
<string name="discovery_connected_devices_hint">Tedd felfedezhetővé az eszközöd. A jelenleg csatlakoztatott eszközök valóüszínűleg nem fognak megjelenni. 6-os és frissebb Androidon engedélyezni kell a helymeghatározást (GPS). Ha az eszköz két perc után sem jelenik meg, próbáld újra a mobileszközöd újraindítása után.</string>
<string name="discovery_note">Megjegyzés:</string>
<string name="candidate_item_device_image">Eszköz kép</string>
<string name="miband_prefs_alias">Név/Alias</string>
@ -144,7 +160,7 @@
<string name="pref_write_logfiles">Naplófájlok írása</string>
<string name="initializing">inicializálás</string>
<string name="busy_task_fetch_activity_data">Aktivitási adatok lekérdezése.</string>
<string name="sleep_activity_date_range">Ettől %1$s eddig %2$s</string>
<string name="sleep_activity_date_range">%1$s és %2$s között</string>
<string name="miband_prefs_wearside">Melyik kezeden hordod?</string>
<string name="pref_screen_vibration_profile">Rezgés profil</string>
<string name="vibration_profile_staccato">Szaggatott</string>
@ -161,6 +177,9 @@
<string name="pref_screen_notification_profile_generic">Általános értesítések</string>
<string name="pref_screen_notification_profile_email">E-Mail értesítés</string>
<string name="pref_screen_notification_profile_incoming_call">Bejővő hívás értesítés</string>
<string name="pref_screen_notification_profile_generic_chat">Csevegés</string>
<string name="pref_screen_notification_profile_generic_navigation">Navigáció</string>
<string name="pref_screen_notification_profile_generic_social">Közösségi háló</string>
<string name="control_center_find_lost_device">Elveszett eszköz keresése</string>
<string name="control_center_cancel_to_stop_vibration">A vibrálás leállításához: Mégse.</string>
<string name="title_activity_charts">Aktivitásod</string>
@ -177,7 +196,7 @@
<string name="alarm_smart_wakeup">Okos ébresztés</string>
<string name="user_feedback_miband_set_alarms_failed">Hiba történt az ébresztések beállításakor, kérlek próbáld újra!</string>
<string name="user_feedback_miband_set_alarms_ok">Ébresztések beállítva!</string>
<string name="chart_no_data_synchronize">Nincs adat. Szinkronizáltál?</string>
<string name="chart_no_data_synchronize">Nincs adat. Szinkronizáljunk?</string>
<string name="user_feedback_miband_activity_data_transfer">Adatok fogadása: %1$s %2$s -tól</string>
<string name="miband_prefs_fitness_goal">Napi céllépésszám</string>
<string name="dbaccess_error_executing">Hiba a futtatáskor: \'%1$s\'</string>
@ -212,10 +231,10 @@
<string name="chart_steps">Lépések</string>
<string name="liveactivity_live_activity">Aktuális aktivitás</string>
<string name="weeksteps_today_steps_description">Lépések ma, cél: %1$s</string>
<string name="pref_title_dont_ack_transfer">Hagyja az aktivitási adatokat a készüléken</string>
<string name="pref_summary_dont_ack_transfers">Az aktivitás adatok a band-en maradnak. Hasznos, ha a GB-t más alkalamzásokkal együtt használod.</string>
<string name="pref_summary_keep_data_on_device">Az adatokat a Mi Band-en fogja tárolni szinkronizálás után is. Hasznos, ha a Gadgetbridge-et együtt használod más alkalmazásokkal.</string>
<string name="pref_title_low_latency_fw_update">Használja a low-latency módot a Firmware frissítésnél</string>
<string name="pref_title_dont_ack_transfer">Ne erősítse meg az aktivitásadatok átvitelét</string>
<string name="pref_summary_dont_ack_transfers">Ha az aktivitásadatok átvitele nincs megerősítve a band felé, az nem kerülnek törlésre. Hasznos, ha a GB-t más alkalmzásokkal együtt használod.</string>
<string name="pref_summary_keep_data_on_device">Az adatokat meghagyja a Mi Band-en szinkronizálás után is. Hasznos, ha a GadgetBridge-et együtt használod más alkalmazásokkal.</string>
<string name="pref_title_low_latency_fw_update">Használja a low-latency módot a firmware frissítésnél</string>
<string name="pref_summary_low_latency_fw_update">Ez segíthet, ha a firmware frissítés sikertelen.</string>
<string name="live_activity_steps_history">Lépésnapló</string>
<string name="live_activity_current_steps_per_minute">Jelenlegi lépés/perc</string>
@ -234,6 +253,11 @@
<string name="miband_prefs_reserve_alarm_calendar">Naptári események számára fentartott riasztások száma</string>
<string name="miband_prefs_hr_sleep_detection">Pulzus szenzor használata az alvás érzékelés javításához</string>
<string name="miband_prefs_device_time_offset_hours">Eszköz időeltolása órákban (Hogy az éjszakai műszakban dolgozók alvását is érzékelje.)</string>
<string name="miband2_prefs_dateformat">Mi2: dátumformátum</string>
<string name="dateformat_time">Idő</string>
<string name="dateformat_date_time"><![CDATA[Time & Date]]></string>
<string name="mi2_prefs_activate_display_on_lift">Kijelző aktiválása felemeléskor</string>
<string name="FetchActivityOperation_about_to_transfer_since">Adatok átvitele %1$s óta</string>
<string name="waiting_for_reconnect">várakozás az újracsatlakozásra</string>
<string name="activity_prefs_about_you">Rólad</string>
<string name="activity_prefs_year_birth">Születési év</string>
@ -259,6 +283,7 @@
<string name="import_old_db_buttonlabel">Régi aktivitásadatok importálása</string>
<string name="import_old_db_information">A Gadgetbridge 0.12.0 verziója óta új adatbázis-formátumot használ. Lehetőség van a régi adatok importálására és azok párosítására a jelenleg csatlakozott eszközödhöz (%1$s) Kérlek, vedd figyelembe, hogy tudsz importálni a Mi Band, Pebble Health és Morpheuz eszközökből, de NEM tudsz a Pebble Misfit-ből. </string>
<string name="pref_title_pebble_health_store_raw">Nyers adatok tárolása az adatbázisban</string>
<string name="pref_summary_pebble_health_store_raw">Ha bejelölöd, az adatok eredeti formában lesznek tárolva későbbi értelmezéshez. Megj.: az adatbázis ebben az esetben nagyobb lesz!</string>
<string name="action_db_management">Adatbáziskezelés</string>
<string name="title_activity_db_management">Adatbáziskezelés</string>
<string name="activity_db_management_import_export_explanation">Az adatbázisművelet ezt a helyet fogja használni. Ez a hely elérhető másik Android-alkalmazások és a számítógép számára. Itt keresd az exportált adatbázist is, illetve ide rakd az importálni kívánt adatbázist is.</string>
@ -290,4 +315,7 @@
<string name="Delete">Törlés</string>
<!--Strings related to Vibration Activity-->
<string name="title_activity_vibration">Rezgés</string>
<!--Strings related to Pebble Pairing Activity-->
<string name="title_activity_pebble_pairing">Pebble párosítása</string>
<string name="pebble_pairing_hint">Egy párosítási párbeszédablaknak kéne megjelennie az Android eszközödön. Ha nem látod, nézd meg az értesítési sávban és fogadd el a párosítási kérelmet. Utána fogadd ela kérelmet a Pebble-n.</string>
</resources>

View File

@ -0,0 +1,117 @@
package nodomain.freeyourgadget.gadgetbridge.test;
import org.junit.Test;
import nodomain.freeyourgadget.gadgetbridge.util.ArrayUtils;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
/**
* Tests ArrayUtils
*/
public class ArrayUtilsTest extends TestBase {
private static final byte[] EMPTY = new byte[0];
private static final byte[] DATA_5 = new byte[] { 1, 2, 3, 4, 5};
public ArrayUtilsTest() throws Exception {
}
@Test
public void testEqualsException1() throws Exception {
try {
ArrayUtils.equals(null, EMPTY, 0);
fail("equals should throw on bad argument");
} catch (IllegalArgumentException ex) {
// expected
}
}
@Test
public void testEqualsException2() throws Exception {
try {
ArrayUtils.equals(EMPTY, null, 0);
fail("equals should throw on bad argument");
} catch (IllegalArgumentException ex) {
// expected
}
}
@Test
public void testEqualsException5() throws Exception {
try {
ArrayUtils.equals(EMPTY, EMPTY, -1);
fail("equals should throw on bad argument");
} catch (IllegalArgumentException ex) {
// expected
}
}
@Test
public void testEqualsEmptyData() throws Exception {
assertFalse(ArrayUtils.equals(EMPTY, DATA_5, 0));
}
@Test
public void testEqualsEmptyTest() throws Exception {
// testing for 0 equal bytes may be senseless, but always true
assertTrue(ArrayUtils.equals(EMPTY, EMPTY, 0));
assertTrue(ArrayUtils.equals(DATA_5, EMPTY, 0));
}
@Test
public void testEquals1() throws Exception {
assertTrue(ArrayUtils.equals(DATA_5, b(1), 0));
}
@Test
public void testEquals2() throws Exception {
assertTrue(ArrayUtils.equals(DATA_5, b(2), 1));
}
@Test
public void testEquals5() throws Exception {
assertTrue(ArrayUtils.equals(DATA_5, b(5), 4));
}
@Test
public void testEqualsOutOfRange() throws Exception {
assertFalse(ArrayUtils.equals(DATA_5, b(5), 5));
}
@Test
public void testEquals123() throws Exception {
assertTrue(ArrayUtils.equals(DATA_5, new byte[] {1, 2, 3}, 0));
}
@Test
public void testEquals234() throws Exception {
assertTrue(ArrayUtils.equals(DATA_5, new byte[] {2, 3, 4}, 1));
}
@Test
public void testEquals345() throws Exception {
assertTrue(ArrayUtils.equals(DATA_5, new byte[] {3, 4, 5}, 2));
}
@Test
public void testEquals12345() throws Exception {
assertTrue(ArrayUtils.equals(DATA_5, DATA_5, 0));
}
@Test
public void testEqualsWrongStart() throws Exception {
assertFalse(ArrayUtils.equals(DATA_5, new byte[] {0, 2, 3}, 0));
}
@Test
public void testEqualsWrongEnd() throws Exception {
assertFalse(ArrayUtils.equals(DATA_5, new byte[] {3, 4, 6}, 2));
}
private byte[] b(int b) {
return new byte[] {(byte) b};
}
}

View File

@ -19,8 +19,6 @@ import static org.junit.Assert.fail;
/**
* Tests dynamic enablement and disablement of file appenders.
* Test is currently disabled because logback-android does not work
* inside a plain junit test.
*/
public class LoggingTest extends TestBase {