Merge branch 'dev' into New/AddCorrPercentInWizard

This commit is contained in:
Milos Kozak 2021-12-11 12:05:32 +01:00
commit 484c95ea89
15 changed files with 71 additions and 63 deletions

View file

@ -109,7 +109,7 @@ android {
defaultConfig { defaultConfig {
multiDexEnabled true multiDexEnabled true
versionCode 1500 versionCode 1500
version "2.8.2.14-dev" version "2.8.2.15-dev"
buildConfigField "String", "VERSION", '"' + version + '"' buildConfigField "String", "VERSION", '"' + version + '"'
buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"' buildConfigField "String", "BUILDVERSION", '"' + generateGitBuild() + '-' + generateDate() + '"'
buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"' buildConfigField "String", "REMOTE", '"' + generateGitRemote() + '"'

View file

@ -82,7 +82,7 @@
<string name="configbuilder_profile">Perfil</string> <string name="configbuilder_profile">Perfil</string>
<string name="configbuilder_profile_description">¿Qué perfil debe usar AndroidAPS?</string> <string name="configbuilder_profile_description">¿Qué perfil debe usar AndroidAPS?</string>
<string name="configbuilder_aps">APS</string> <string name="configbuilder_aps">APS</string>
<string name="configbuilder_aps_description">¿Que algoritmo debe usar APS en los ajustes de su tratamiento?</string> <string name="configbuilder_aps_description">¿Qué algoritmo APS quieres usar para ajustar tu tratamiento?</string>
<string name="configbuilder_general">Ajustes generales</string> <string name="configbuilder_general">Ajustes generales</string>
<string name="configbuilder_general_description">Algunos ajustes generales que pueden ser de utilidad</string> <string name="configbuilder_general_description">Algunos ajustes generales que pueden ser de utilidad</string>
<string name="configbuilder_constraints_description">¿Qué restricciones se aplican?</string> <string name="configbuilder_constraints_description">¿Qué restricciones se aplican?</string>
@ -112,7 +112,7 @@
<string name="closedloop">Lazo cerrado</string> <string name="closedloop">Lazo cerrado</string>
<string name="openloop">Lazo abierto</string> <string name="openloop">Lazo abierto</string>
<string name="lowglucosesuspend">Suspensión por glucosa baja</string> <string name="lowglucosesuspend">Suspensión por glucosa baja</string>
<string name="disabledloop">Lazo Inactivo</string> <string name="disabledloop">Lazo desactivado</string>
<string name="openloop_newsuggestion">Nueva propuesta disponible</string> <string name="openloop_newsuggestion">Nueva propuesta disponible</string>
<string name="carbssuggestion">Sugerencia de carbohidratos</string> <string name="carbssuggestion">Sugerencia de carbohidratos</string>
<string name="unsupportednsversion">Versión no aceptada de Nightscout</string> <string name="unsupportednsversion">Versión no aceptada de Nightscout</string>
@ -151,7 +151,7 @@
<string name="old_master_password">Contraseña Maestra antigua</string> <string name="old_master_password">Contraseña Maestra antigua</string>
<string name="different_password_used">Este archivo se ha exportado y cifrado con una contraseña maestra diferente. Insertar contraseña maestra antigua para descifrar el archivo.</string> <string name="different_password_used">Este archivo se ha exportado y cifrado con una contraseña maestra diferente. Insertar contraseña maestra antigua para descifrar el archivo.</string>
<string name="master_password_will_be_replaced">Como resultado de la importación correcta, la contraseña maestra actual SE SUSTITUIRÁ por la contraseña maestra antigua!</string> <string name="master_password_will_be_replaced">Como resultado de la importación correcta, la contraseña maestra actual SE SUSTITUIRÁ por la contraseña maestra antigua!</string>
<string name="check_preferences_before_import">Por favor, compruebe las preferencias antes de importar:</string> <string name="check_preferences_before_import">Por favor, comprueba los ajustes antes de importar:</string>
<string name="check_preferences_cannot_import">¡Las preferencias no se pueden importar!</string> <string name="check_preferences_cannot_import">¡Las preferencias no se pueden importar!</string>
<string name="check_preferences_dangerous_import">¡Las preferencias no se deben importar!</string> <string name="check_preferences_dangerous_import">¡Las preferencias no se deben importar!</string>
<string name="check_preferences_details_btn">Explicar problemas de importación…</string> <string name="check_preferences_details_btn">Explicar problemas de importación…</string>
@ -159,8 +159,8 @@
<string name="check_preferences_import_btn">Importar</string> <string name="check_preferences_import_btn">Importar</string>
<string name="check_preferences_import_anyway_btn">Importar de todos modos (¡PELIGROSO!)</string> <string name="check_preferences_import_anyway_btn">Importar de todos modos (¡PELIGROSO!)</string>
<string name="end_user_license_agreement">Acuerdo de licencia de usuario final</string> <string name="end_user_license_agreement">Acuerdo de licencia de usuario final</string>
<string name="end_user_license_agreement_text">NO DEBE UTILIZARSE PARA TOMAR DECISIONES MÉDICAS. NO HAY NINGUNA GARANTÍA PARA EL PROGRAMA, EN LA MEDIDA PERMITIDA POR LA LEY APLICABLE. EXCEPTO CUANDO SE INDIQUE LO CONTRARIO POR ESCRITO, LOS TITULARES DE LOS DERECHOS DE AUTOR Y/O OTRAS PARTES PROPORCIONAN EL PROGRAMA \"TAL CUAL\" SIN GARANTÍA DE NINGÚN TIPO, YA SEA EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y ADECUACIÓN PARA UN PROPÓSITO EN PARTICULAR. TODO EL RIESGO EN CUANTO A LA CALIDAD Y EL RENDIMIENTO DEL PROGRAMA ES SUYA. SI EL PROGRAMA TUVIERA UN ERROR, USTED ASUME EL COSTE DE TODO SERVICIO, REPARACIÓN O CORRECCIÓN NECESARIOS.</string> <string name="end_user_license_agreement_text">NO DEBE UTILIZARSE PARA TOMAR DECISIONES MÉDICAS. NO HAY NINGUNA GARANTÍA EN EL PROGRAMA, EN LA MEDIDA PERMITIDA POR LA LEY APLICABLE. EXCEPTO CUANDO SE INDIQUE LO CONTRARIO POR ESCRITO, LOS TITULARES DE LOS DERECHOS DE AUTOR Y/O OTRAS PARTES, PROPORCIONAN EL PROGRAMA \"TAL CUAL\", SIN GARANTÍA DE NINGÚN TIPO, YA SEA EXPRESA O IMPLÍCITA, INCLUIDAS, ENTRE OTRAS, LAS GARANTÍAS IMPLÍCITAS DE COMERCIABILIDAD Y ADECUACIÓN PARA UN PROPÓSITO EN PARTICULAR. TODO EL RIESGO EN CUANTO A LA CALIDAD Y EL RENDIMIENTO DEL PROGRAMA ES SUYA. SI EL PROGRAMA TUVIERA UN ERROR, USTED ASUME EL COSTE DE TODOS LOS SERVICIOS, REPARACIONES O CORRECCIONES NECESARIAS.</string>
<string name="end_user_license_agreement_i_understand">ENTIENDO Y ACEPTO</string> <string name="end_user_license_agreement_i_understand">LO ENTIENDO Y ACEPTO</string>
<string name="save">Guardar</string> <string name="save">Guardar</string>
<string name="reloadprofile">Recargar Perfil</string> <string name="reloadprofile">Recargar Perfil</string>
<string name="smscommunicator">Comunicador SMS</string> <string name="smscommunicator">Comunicador SMS</string>
@ -200,9 +200,9 @@
<string name="smscommunicator_carbsreplywithcode">Para introducir %1$dg en %2$s responder con código %3$s</string> <string name="smscommunicator_carbsreplywithcode">Para introducir %1$dg en %2$s responder con código %3$s</string>
<string name="smscommunicator_basalpctreplywithcode">Para iniciar una basal de %1$d%% durante %2$d min, responder con el código %3$s</string> <string name="smscommunicator_basalpctreplywithcode">Para iniciar una basal de %1$d%% durante %2$d min, responder con el código %3$s</string>
<string name="smscommunicator_suspendreplywithcode">Para cancelar lazo por %1$d minutos responde con código %2$s</string> <string name="smscommunicator_suspendreplywithcode">Para cancelar lazo por %1$d minutos responde con código %2$s</string>
<string name="smscommunicator_loopresumereplywithcode">Para retomar el lazo responder con código %1$s</string> <string name="smscommunicator_loopresumereplywithcode">Para reanudar el lazo, responder con código %1$s</string>
<string name="smscommunicator_loopenablereplywithcode">Para activar el lazo responder con código %1$s</string> <string name="smscommunicator_loopenablereplywithcode">Para activar el lazo, responder con código %1$s</string>
<string name="smscommunicator_loopdisablereplywithcode">Para desactivar el lazo responder con código %1$s</string> <string name="smscommunicator_loopdisablereplywithcode">Para desactivar el lazo, responder con código %1$s</string>
<string name="smscommunicator_tempbasalset">Basal temporal %1$.2fU/h para %2$d min iniciada correctamente</string> <string name="smscommunicator_tempbasalset">Basal temporal %1$.2fU/h para %2$d min iniciada correctamente</string>
<string name="smscommunicator_extendedset">Bolo ampliado de %1$.2fU durante %2$d min se inició correctamente</string> <string name="smscommunicator_extendedset">Bolo ampliado de %1$.2fU durante %2$d min se inició correctamente</string>
<string name="smscommunicator_carbsset">Carbohidratos %1$d g ingresados correctamente</string> <string name="smscommunicator_carbsset">Carbohidratos %1$d g ingresados correctamente</string>
@ -332,12 +332,12 @@
<string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Usuario</string> <string name="patient_name_default" comment="This is default patient display name, when user does not provide real one">Usuario</string>
<string name="Glimp">Glimp</string> <string name="Glimp">Glimp</string>
<string name="needwhitelisting">%1$s necesita una optimización de la batería para funcionar óptimamente</string> <string name="needwhitelisting">%1$s necesita una optimización de la batería para funcionar óptimamente</string>
<string name="loopsuspended">Loop desactivado</string> <string name="loopsuspended">Lazo suspendido</string>
<string name="loopsuspendedfor">Desactivado (%1$d m)</string> <string name="loopsuspendedfor">Desactivado (%1$d m)</string>
<string name="suspendloopfor1h">Desactivar lazo por 1h</string> <string name="suspendloopfor1h">Suspender lazo durante 1 hora</string>
<string name="suspendloopfor2h">Desactivar lazo por 2h</string> <string name="suspendloopfor2h">Suspender lazo durante 2 horas</string>
<string name="suspendloopfor3h">Desactivar lazo por 3h</string> <string name="suspendloopfor3h">Suspender lazo durante 3 horas</string>
<string name="suspendloopfor10h">Desactivar lazo por 10 h</string> <string name="suspendloopfor10h">Suspender lazo durante 10 horas</string>
<string name="disconnectpump">Desconectar bomba</string> <string name="disconnectpump">Desconectar bomba</string>
<string name="disconnectpumpfor15m">Desconectar bomba por 15 min</string> <string name="disconnectpumpfor15m">Desconectar bomba por 15 min</string>
<string name="disconnectpumpfor30m">Desconectar bomba por 30 min</string> <string name="disconnectpumpfor30m">Desconectar bomba por 30 min</string>
@ -353,14 +353,14 @@
<string name="resume">Reanudar</string> <string name="resume">Reanudar</string>
<string name="reconnect">Vuelva a conectar la bomba</string> <string name="reconnect">Vuelva a conectar la bomba</string>
<string name="smscommunicator_wrongduration">Duración incorrecta</string> <string name="smscommunicator_wrongduration">Duración incorrecta</string>
<string name="smscommunicator_loopsuspended">Lazo desactivado</string> <string name="smscommunicator_loopsuspended">Lazo suspendido</string>
<string name="smscommunicator_loopresumed">Lazo reiniciado</string> <string name="smscommunicator_loopresumed">Lazo reanudado</string>
<string name="treatments_wizard_bgtrend_label">Tend. 15 min</string> <string name="treatments_wizard_bgtrend_label">Tend. 15 min</string>
<string name="treatments_wizard_cob_label">COB</string> <string name="treatments_wizard_cob_label">COB</string>
<string name="superbolus">Superbolo</string> <string name="superbolus">Superbolo</string>
<string name="ns_logappstartedevent">Registrar el inicio de la aplicación en NS</string> <string name="ns_logappstartedevent">Registrar el inicio de la aplicación en NS</string>
<string name="restartingapp">Saliendo de la aplicación para aplicar ajustes.</string> <string name="restartingapp">Saliendo de la aplicación para aplicar los ajustes.</string>
<string name="configbuilder_insulin_description">¿Qué tipo de insulina está utilizando?</string> <string name="configbuilder_insulin_description">¿Qué tipo de insulina estás utilizando?</string>
<string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string> <string name="fastactinginsulincomment">Novorapid, Novolog, Humalog</string>
<string name="ultrafastactinginsulincomment">Fiasp</string> <string name="ultrafastactinginsulincomment">Fiasp</string>
<string name="insulin_shortname">INS</string> <string name="insulin_shortname">INS</string>
@ -562,7 +562,7 @@
<string name="overview_show_basals">Basales</string> <string name="overview_show_basals">Basales</string>
<string name="no_action_selected">Ninguna acción seleccionada, nada sucederá</string> <string name="no_action_selected">Ninguna acción seleccionada, nada sucederá</string>
<string name="start_hypo_tt">Iniciar OT Hipo</string> <string name="start_hypo_tt">Iniciar OT Hipo</string>
<string name="closed_loop_disabled_on_dev_branch">Ejecutando versión dev. Lazo cerrado no disponible.</string> <string name="closed_loop_disabled_on_dev_branch">Ejecutando la versión dev. Lazo cerrado no disponible.</string>
<string name="engineering_mode_enabled">Modo de ingeniería activado</string> <string name="engineering_mode_enabled">Modo de ingeniería activado</string>
<string name="profileswitch_ismissing">Falta Cambio de Perfil. Haga un Cambio de Perfil o presione \"Activar perfil\" en PerfilLocal.</string> <string name="profileswitch_ismissing">Falta Cambio de Perfil. Haga un Cambio de Perfil o presione \"Activar perfil\" en PerfilLocal.</string>
<string name="pumpisnottempbasalcapable">La bomba no tiene capacidad basal temporal</string> <string name="pumpisnottempbasalcapable">La bomba no tiene capacidad basal temporal</string>
@ -593,7 +593,7 @@
<string name="absorption_cutoff_summary">Tiempo en el que cualquier comida se considera absorbida. Los carbohidratos restantes serán cortados. </string> <string name="absorption_cutoff_summary">Tiempo en el que cualquier comida se considera absorbida. Los carbohidratos restantes serán cortados. </string>
<string name="overview_show_notes_field_in_dialogs_title">Mostrar el campo notas en diálogos de tratamientos</string> <string name="overview_show_notes_field_in_dialogs_title">Mostrar el campo notas en diálogos de tratamientos</string>
<string name="next_button">Siguiente</string> <string name="next_button">Siguiente</string>
<string name="previous_button">Ant</string> <string name="previous_button">Anterior</string>
<string name="nav_setupwizard">Asistente de configuración</string> <string name="nav_setupwizard">Asistente de configuración</string>
<string name="setupwizard_finish">FINALIZAR</string> <string name="setupwizard_finish">FINALIZAR</string>
<string name="firstinsulinincrement">Primer incremento de insulina</string> <string name="firstinsulinincrement">Primer incremento de insulina</string>
@ -623,7 +623,7 @@
<string name="wear_display_settings">Ajustes de pantalla</string> <string name="wear_display_settings">Ajustes de pantalla</string>
<string name="wear_general_settings">Configuración general</string> <string name="wear_general_settings">Configuración general</string>
<string name="enable_nsclient">Activar NSClient</string> <string name="enable_nsclient">Activar NSClient</string>
<string name="welcometosetupwizard">Bienvenido al asistente de instalación. Le guiará a través del proceso de configuración\n</string> <string name="welcometosetupwizard">Bienvenido al asistente de instalación, que te guiará en el proceso de configuración\n</string>
<string name="readstatus">Leer estado</string> <string name="readstatus">Leer estado</string>
<string name="exitwizard">Saltar asistente de configuración</string> <string name="exitwizard">Saltar asistente de configuración</string>
<string name="setupwizard_loop_description">Presiona el botón de abajo para permitir que AndroidAPS pueda sugerir/realizar cambios en las basales</string> <string name="setupwizard_loop_description">Presiona el botón de abajo para permitir que AndroidAPS pueda sugerir/realizar cambios en las basales</string>
@ -637,7 +637,7 @@
<string name="startobjective">Comienza tu primer objetivo</string> <string name="startobjective">Comienza tu primer objetivo</string>
<string name="permission">Permiso</string> <string name="permission">Permiso</string>
<string name="askforpermission">Pedir permiso</string> <string name="askforpermission">Pedir permiso</string>
<string name="needsystemwindowpermission">La aplicación necesita permiso de ventana del sistema para las notificaciones</string> <string name="needsystemwindowpermission">La aplicación necesita permisos del sistema para poder mostrarse sobre otras aplicaciones, para las notificaciones</string>
<string name="needlocationpermission">La aplicación necesita permiso de ubicación para poder buscar dispositivos Bluetooth y redes WiFi</string> <string name="needlocationpermission">La aplicación necesita permiso de ubicación para poder buscar dispositivos Bluetooth y redes WiFi</string>
<string name="needstoragepermission">La aplicación necesita permiso de almacenamiento para poder almacenar archivos de registro y valores de exportación</string> <string name="needstoragepermission">La aplicación necesita permiso de almacenamiento para poder almacenar archivos de registro y valores de exportación</string>
<string name="request">Solicitar</string> <string name="request">Solicitar</string>
@ -660,7 +660,7 @@
<string name="resistance_lowers_target_summary">Cuando se detecta resistencia a la insulina, disminuye el objetivo de glucosa</string> <string name="resistance_lowers_target_summary">Cuando se detecta resistencia a la insulina, disminuye el objetivo de glucosa</string>
<string name="sensitivity_raises_target_title">Sensibilidad aumenta el objetivo</string> <string name="sensitivity_raises_target_title">Sensibilidad aumenta el objetivo</string>
<string name="sensitivity_raises_target_summary">Cuando se detecta sensibilidad a la insulina, aumenta el objetivo de glucosa</string> <string name="sensitivity_raises_target_summary">Cuando se detecta sensibilidad a la insulina, aumenta el objetivo de glucosa</string>
<string name="careportal_removestartedevents">Limpiar eventos AndroidAPS iniciado</string> <string name="careportal_removestartedevents">Comenzó la limpieza de AndroidAPS</string>
<string name="storedsettingsfound">Encontrados ajustes de configuración</string> <string name="storedsettingsfound">Encontrados ajustes de configuración</string>
<string name="allow_hardware_pump_text">Atención: si activas y conectas la bomba con AndroidAPS, AndroidAPS sobrescribirá los ajustes de basales del perfil de la bomba, con los establecidos en el perfil de AndroidAPS. Comprueba que tengas el perfil basal correcto en AndroidAPS. Si no estás seguro, o no quieres sobrescribir los ajustes basales en la bomba, presiona cancelar y repite la vinculación más adelante.</string> <string name="allow_hardware_pump_text">Atención: si activas y conectas la bomba con AndroidAPS, AndroidAPS sobrescribirá los ajustes de basales del perfil de la bomba, con los establecidos en el perfil de AndroidAPS. Comprueba que tengas el perfil basal correcto en AndroidAPS. Si no estás seguro, o no quieres sobrescribir los ajustes basales en la bomba, presiona cancelar y repite la vinculación más adelante.</string>
<string name="error_adding_treatment_title">Datos de tratamiento incompletos</string> <string name="error_adding_treatment_title">Datos de tratamiento incompletos</string>
@ -719,7 +719,7 @@
<string name="old_version">versión antigua</string> <string name="old_version">versión antigua</string>
<string name="very_old_version">versión muy antigua</string> <string name="very_old_version">versión muy antigua</string>
<string name="application_expired">Aplicación caducada</string> <string name="application_expired">Aplicación caducada</string>
<string name="new_version_warning">Nueva versión desde al menos %1$d dias disponible! Respaldo a LGS después de %2$d días, se deshabilitará el lazo después de %3$d días</string> <string name="new_version_warning">Nueva versión disponible de al menos %1$d días. Soporte a función de suspensión por glucosa baja (LGS) durante %2$d días. Después se deshabilitará el lazo en %3$d días</string>
<string name="twohours">2h</string> <string name="twohours">2h</string>
<string name="dexcom_app_patched">Dexcom (BYODA)</string> <string name="dexcom_app_patched">Dexcom (BYODA)</string>
<string name="dexcom_short">BYODA</string> <string name="dexcom_short">BYODA</string>
@ -902,6 +902,6 @@
<string name="recalculated_data_used">Datos recalculados utilizados</string> <string name="recalculated_data_used">Datos recalculados utilizados</string>
<string name="bg_too_close">Datos de glucosa demasiado cercanos:\n%1$s\n%2$s</string> <string name="bg_too_close">Datos de glucosa demasiado cercanos:\n%1$s\n%2$s</string>
<string name="identification">Identificación (correo electrónico, FB, nick de Discord, etc.)</string> <string name="identification">Identificación (correo electrónico, FB, nick de Discord, etc.)</string>
<string name="identification_not_set">Identificación no establecida en modo dev</string> <string name="identification_not_set">Identificación no establecida en el modo dev</string>
<string name="not_available_full">No disponible</string> <string name="not_available_full">No disponible</string>
</resources> </resources>

View file

@ -4,6 +4,8 @@
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<application> <application>
<service <service
android:name="info.nightscout.androidaps.services.LocationService" android:name="info.nightscout.androidaps.services.LocationService"

View file

@ -1,24 +1,25 @@
package info.nightscout.androidaps.plugins.general.automation.triggers package info.nightscout.androidaps.plugins.general.automation.triggers
import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothManager
import android.content.Context import android.content.Context
import android.widget.LinearLayout import android.widget.LinearLayout
import com.google.common.base.Optional import com.google.common.base.Optional
import dagger.android.HasAndroidInjector import dagger.android.HasAndroidInjector
import info.nightscout.androidaps.automation.R import info.nightscout.androidaps.automation.R
import info.nightscout.androidaps.events.EventBTChange import info.nightscout.androidaps.events.EventBTChange
import info.nightscout.shared.logging.LTag
import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin import info.nightscout.androidaps.plugins.general.automation.AutomationPlugin
import info.nightscout.androidaps.plugins.general.automation.elements.ComparatorConnect import info.nightscout.androidaps.plugins.general.automation.elements.ComparatorConnect
import info.nightscout.androidaps.plugins.general.automation.elements.InputDropdownMenu import info.nightscout.androidaps.plugins.general.automation.elements.InputDropdownMenu
import info.nightscout.androidaps.plugins.general.automation.elements.LayoutBuilder import info.nightscout.androidaps.plugins.general.automation.elements.LayoutBuilder
import info.nightscout.androidaps.plugins.general.automation.elements.StaticLabel import info.nightscout.androidaps.plugins.general.automation.elements.StaticLabel
import info.nightscout.androidaps.utils.JsonHelper import info.nightscout.androidaps.utils.JsonHelper
import info.nightscout.shared.logging.LTag
import org.json.JSONObject import org.json.JSONObject
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
class TriggerBTDevice(injector: HasAndroidInjector) : Trigger(injector) { class TriggerBTDevice(injector: HasAndroidInjector) : Trigger(injector) {
@Inject lateinit var context: Context @Inject lateinit var context: Context
@Inject lateinit var automationPlugin: AutomationPlugin @Inject lateinit var automationPlugin: AutomationPlugin
@ -73,7 +74,7 @@ class TriggerBTDevice(injector: HasAndroidInjector) : Trigger(injector) {
// Get the list of paired BT devices to use in dropdown menu // Get the list of paired BT devices to use in dropdown menu
private fun devicesPaired(): ArrayList<CharSequence> { private fun devicesPaired(): ArrayList<CharSequence> {
val s = ArrayList<CharSequence>() val s = ArrayList<CharSequence>()
BluetoothAdapter.getDefaultAdapter()?.bondedDevices?.forEach { s.add(it.name) } (context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager).adapter?.bondedDevices?.forEach { s.add(it.name) }
return s return s
} }

View file

@ -3,19 +3,19 @@
buildscript { buildscript {
ext { ext {
kotlin_version = '1.6.0' kotlin_version = '1.6.0'
coreVersion = '1.7.0' coreVersion = '1.6.0'
rxjava_version = '2.2.21' rxjava_version = '2.2.21'
rxandroid_version = '2.1.1' rxandroid_version = '2.1.1'
rxkotlin_version = '2.4.0' rxkotlin_version = '2.4.0'
room_version = '2.3.0' room_version = '2.3.0'
lifecycle_version = '2.4.0' lifecycle_version = '2.3.1'
dagger_version = '2.40.5' dagger_version = '2.40.5'
coroutinesVersion = '1.4.1' coroutinesVersion = '1.4.1'
activityVersion = '1.3.1' activityVersion = '1.3.1'
fragmentktx_version = '1.3.6' fragmentktx_version = '1.3.6'
ormLiteVersion = '4.46' ormLiteVersion = '4.46'
nav_version = '2.3.5' nav_version = '2.3.5'
appcompat_version = '1.4.0' appcompat_version = '1.3.1'
material_version = '1.4.0' material_version = '1.4.0'
constraintlayout_version = '2.1.0' constraintlayout_version = '2.1.0'
preferencektx_version = '1.1.1' preferencektx_version = '1.1.1'
@ -26,7 +26,7 @@ buildscript {
tink_version = '1.5.0' tink_version = '1.5.0'
junit_version = '4.13.2' junit_version = '4.13.2'
mockitoVersion = '3.12.4' mockitoVersion = '4.1.0'
dexmakerVersion = "1.2" dexmakerVersion = "1.2"
retrofit2Version = '2.9.0' retrofit2Version = '2.9.0'
okhttp3Version = '4.9.0' okhttp3Version = '4.9.0'

View file

@ -1,7 +1,7 @@
package info.nightscout.androidaps.plugins.pump.common.ble package info.nightscout.androidaps.plugins.pump.common.ble
import android.Manifest import android.Manifest
import android.bluetooth.BluetoothAdapter import android.bluetooth.BluetoothManager
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager import android.content.pm.PackageManager
@ -18,6 +18,7 @@ import javax.inject.Singleton
@Singleton @Singleton
class BlePreCheck @Inject constructor( class BlePreCheck @Inject constructor(
val context: Context,
val rh: ResourceHelper val rh: ResourceHelper
) { ) {
@ -37,7 +38,7 @@ class BlePreCheck @Inject constructor(
ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), PERMISSION_REQUEST_COARSE_LOCATION) ActivityCompat.requestPermissions(activity, arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION), PERMISSION_REQUEST_COARSE_LOCATION)
} }
val bluetoothAdapter = BluetoothAdapter.getDefaultAdapter() val bluetoothAdapter = (context.getSystemService(Context.BLUETOOTH_SERVICE) as BluetoothManager).adapter
// Ensures Bluetooth is available on the device and it is enabled. If not, // Ensures Bluetooth is available on the device and it is enabled. If not,
// displays a dialog requesting user permission to enable Bluetooth. // displays a dialog requesting user permission to enable Bluetooth.
if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled) { if (bluetoothAdapter == null || !bluetoothAdapter.isEnabled) {

View file

@ -55,6 +55,7 @@ object ToastUtils {
lastToast?.cancel() lastToast?.cancel()
lastToast = Toast(ctx) lastToast = Toast(ctx)
lastToast?.duration = if (isShort) Toast.LENGTH_SHORT else Toast.LENGTH_LONG lastToast?.duration = if (isShort) Toast.LENGTH_SHORT else Toast.LENGTH_LONG
@Suppress("deprecation")
lastToast?.view = toastRoot lastToast?.view = toastRoot
lastToast?.show() lastToast?.show()
} }

View file

@ -7,4 +7,5 @@ import android.util.Patterns
* *
* @author Andrea Baccega <me></me>@andreabaccega.com> * @author Andrea Baccega <me></me>@andreabaccega.com>
*/ */
@Suppress("deprecation")
class IpAddressValidator(_customErrorMessage: String?) : PatternValidator(_customErrorMessage, Patterns.IP_ADDRESS) class IpAddressValidator(_customErrorMessage: String?) : PatternValidator(_customErrorMessage, Patterns.IP_ADDRESS)

View file

@ -83,11 +83,11 @@
<string name="pump_time_updated">Hora de infusora actualizada</string> <string name="pump_time_updated">Hora de infusora actualizada</string>
<string name="exit">Salir</string> <string name="exit">Salir</string>
<string name="removerecord">Eliminar registro</string> <string name="removerecord">Eliminar registro</string>
<string name="loopisdisabled">Lazo inactivo</string> <string name="loopisdisabled">Lazo desactivado</string>
<string name="alarm">Alarma</string> <string name="alarm">Alarma</string>
<string name="disableloop">Desactivar lazo</string> <string name="disableloop">Desactivar lazo</string>
<string name="enableloop">Activar lazo</string> <string name="enableloop">Activar lazo</string>
<string name="resumeloop">Reactivar el lazo</string> <string name="resumeloop">Reanudar el lazo</string>
<string name="suspendloop">Suspender lazo</string> <string name="suspendloop">Suspender lazo</string>
<string name="duration_min_label">Duración [min]</string> <string name="duration_min_label">Duración [min]</string>
<string name="notification">Notificación</string> <string name="notification">Notificación</string>
@ -288,11 +288,11 @@
<string name="prefdecrypt_issue_wrong_algorithm">¡Algoritmo de cifrado no soportado o no especificado!</string> <string name="prefdecrypt_issue_wrong_algorithm">¡Algoritmo de cifrado no soportado o no especificado!</string>
<!-- VersionChecker --> <!-- VersionChecker -->
<string name="signature_verifier">Verificador de firma</string> <string name="signature_verifier">Verificador de firma</string>
<string name="running_invalid_version">Hemos detectado que está ejecutando una versión no válida. ¡Bucle desactivado!</string> <string name="running_invalid_version">Hemos detectado que está ejecutando una versión no válida. ¡Lazo desactivado!</string>
<string name="versionavailable">Versión %1$s disponible</string> <string name="versionavailable">Versión %1$s disponible</string>
<string name="version_expire">Versión %1$s expira en %2$s</string> <string name="version_expire">Versión %1$s expira en %2$s</string>
<!-- Permissions --> <!-- Permissions -->
<string name="alert_dialog_storage_permission_text">Por favor reinicia el teléfono o AndroidAPS desde ajustes de sistema, sino AndroidAPS no guardará registros (importante para trazar y verificar que el algoritmo funcione correctamente)!</string> <string name="alert_dialog_storage_permission_text">Por favor, reinicia el teléfono o AndroidAPS desde los ajustes del sistema, sino, AndroidAPS no guardará los registros. Esto es importante para trazar y verificar que el algoritmo funciona correctamente.</string>
<!-- WeekdayPicker --> <!-- WeekdayPicker -->
<string name="monday_short">L</string> <string name="monday_short">L</string>
<string name="tuesday_short">M</string> <string name="tuesday_short">M</string>

View file

@ -4,6 +4,8 @@
<uses-permission android:name="android.permission.BLUETOOTH" /> <uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<application> <application>
<activity android:name="info.nightscout.androidaps.danars.activities.BLEScanActivity"> <activity android:name="info.nightscout.androidaps.danars.activities.BLEScanActivity">
<intent-filter> <intent-filter>

View file

@ -18,26 +18,26 @@ android {
} }
dependencies { dependencies {
implementation "androidx.core:core-ktx:$coreVersion" api "androidx.core:core-ktx:$coreVersion"
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" api "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "io.reactivex.rxjava2:rxjava:$rxjava_version" api "io.reactivex.rxjava2:rxjava:$rxjava_version"
implementation "io.reactivex.rxjava2:rxandroid:$rxandroid_version" api "io.reactivex.rxjava2:rxandroid:$rxandroid_version"
implementation("io.reactivex.rxjava2:rxkotlin:$rxkotlin_version") api("io.reactivex.rxjava2:rxkotlin:$rxkotlin_version")
implementation "com.google.code.gson:gson:2.8.9" api "com.google.code.gson:gson:2.8.9"
api "androidx.room:room-runtime:$room_version" api "androidx.room:room-runtime:$room_version"
kapt "androidx.room:room-compiler:$room_version" kapt "androidx.room:room-compiler:$room_version"
/* Database schema export */ /* Database schema export */
kapt "androidx.room:room-compiler:$room_version" kapt "androidx.room:room-compiler:$room_version"
implementation "androidx.room:room-ktx:$room_version" api "androidx.room:room-ktx:$room_version"
implementation "androidx.room:room-rxjava2:$room_version" api "androidx.room:room-rxjava2:$room_version"
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version" api "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
implementation "com.google.dagger:dagger-android:$dagger_version" api "com.google.dagger:dagger-android:$dagger_version"
implementation "com.google.dagger:dagger-android-support:$dagger_version" api "com.google.dagger:dagger-android-support:$dagger_version"
api "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" api "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
} }

View file

@ -1,5 +1,5 @@
android { android {
compileSdkVersion 31 compileSdkVersion 30
defaultConfig { defaultConfig {
minSdkVersion 28 minSdkVersion 28
targetSdkVersion 28 targetSdkVersion 28

View file

@ -5,7 +5,7 @@
<string name="label_xdrip">AAPS</string> <string name="label_xdrip">AAPS</string>
<string name="label_xdrip_large">AAPS (Grande)</string> <string name="label_xdrip_large">AAPS (Grande)</string>
<string name="label_xdrip_big_chart">AAPS (GráficoGrande)</string> <string name="label_xdrip_big_chart">AAPS (GráficoGrande)</string>
<string name="label_xdrip_no_chart">AAPS (SinGrafico)</string> <string name="label_xdrip_no_chart">AAPS (SinGráfico)</string>
<string name="label_xdrip_circle">AAPS (Círculo)</string> <string name="label_xdrip_circle">AAPS (Círculo)</string>
<string name="label_xdrip_v2">AAPSv2</string> <string name="label_xdrip_v2">AAPSv2</string>
<string name="label_xdrip_cockpit">AAPS(Cockpit)</string> <string name="label_xdrip_cockpit">AAPS(Cockpit)</string>

View file

@ -1,15 +1,15 @@
package info.nightscout.androidaps.testing.mocks; package info.nightscout.androidaps.testing.mocks;
import static org.mockito.Matchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Matchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.Matchers.anyByte; import static org.mockito.ArgumentMatchers.anyByte;
import static org.mockito.Matchers.anyChar; import static org.mockito.ArgumentMatchers.anyChar;
import static org.mockito.Matchers.anyDouble; import static org.mockito.ArgumentMatchers.anyDouble;
import static org.mockito.Matchers.anyFloat; import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.Matchers.anyInt; import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.Matchers.anyLong; import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Matchers.anyShort; import static org.mockito.ArgumentMatchers.anyShort;
import static org.mockito.Matchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;

View file

@ -1,7 +1,7 @@
package info.nightscout.androidaps.testing.mocks; package info.nightscout.androidaps.testing.mocks;
import static org.mockito.Matchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Matchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doAnswer;
import static org.mockito.Mockito.when; import static org.mockito.Mockito.when;