From a72160b4f7ebbd937a037084471151da4f0d33a0 Mon Sep 17 00:00:00 2001 From: Michael Ritchie Date: Fri, 23 Nov 2018 11:39:53 -0300 Subject: [PATCH] * Fix for Android Pie (9) and foreground services permissions * Updated method for displaying 12/24 hour clock * Ensure url is not null when doing page load on WebView * Remove restart MQTT service as its not needed --- .../mqtt/alarmpanel/network/AlarmPanelService.kt | 16 +++++++++++----- .../ui/fragments/InformationFragment.kt | 4 +++- .../alarmpanel/ui/fragments/PlatformFragment.kt | 7 +++++-- 3 files changed, 19 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/network/AlarmPanelService.kt b/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/network/AlarmPanelService.kt index a0aabb45..efe5cb51 100644 --- a/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/network/AlarmPanelService.kt +++ b/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/network/AlarmPanelService.kt @@ -77,6 +77,7 @@ import io.reactivex.Observable import io.reactivex.ObservableEmitter import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable +import io.reactivex.exceptions.UndeliverableException import io.reactivex.schedulers.Schedulers class AlarmPanelService : LifecycleService(), MQTTModule.MQTTListener { @@ -152,12 +153,12 @@ class AlarmPanelService : LifecycleService(), MQTTModule.MQTTListener { this.currentUrl = configuration.webUrl + startForeground() configureMqtt() configurePowerOptions() startHttp() configureCamera() configureAudioPlayer() - startForeground() configureTextToSpeech() startSensors() @@ -312,7 +313,6 @@ class AlarmPanelService : LifecycleService(), MQTTModule.MQTTListener { private fun configureMqtt() { if (mqttModule == null && mqttOptions.isValid) { - Timber.d("configureMqtt") mqttModule = MQTTModule(this@AlarmPanelService.applicationContext, mqttOptions,this@AlarmPanelService) lifecycle.addObserver(mqttModule!!) publishState(COMMAND_STATE, state.toString()) @@ -336,7 +336,7 @@ class AlarmPanelService : LifecycleService(), MQTTModule.MQTTListener { mqttAlertMessageShown = true sendAlertMessage(getString(R.string.error_mqtt_connection)) } - reconnectHandler.postDelayed(restartMqttRunnable, 30000) + //reconnectHandler.postDelayed(restartMqttRunnable, 30000) } } @@ -347,7 +347,7 @@ class AlarmPanelService : LifecycleService(), MQTTModule.MQTTListener { mqttAlertMessageShown = true sendAlertMessage(getString(R.string.error_mqtt_exception)) } - reconnectHandler.postDelayed(restartMqttRunnable, 30000) + //reconnectHandler.postDelayed(restartMqttRunnable, 30000) } } @@ -887,7 +887,13 @@ class AlarmPanelService : LifecycleService(), MQTTModule.MQTTListener { emitter.onNext(true) // Pass on the data to subscriber } override fun onException(message: String?) { - emitter.onError(Throwable(message)) + if(message != null) { + try { + emitter.onError(Throwable(message)) + } catch (e: UndeliverableException) { + Timber.e(e.message) + } + } } }) } diff --git a/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/InformationFragment.kt b/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/InformationFragment.kt index 173bb0e8..de3032a2 100644 --- a/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/InformationFragment.kt +++ b/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/InformationFragment.kt @@ -23,6 +23,7 @@ import android.os.Bundle import android.os.Handler import android.os.Looper.getMainLooper import android.support.v4.content.res.ResourcesCompat +import android.text.format.DateUtils import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -62,7 +63,8 @@ class InformationFragment : BaseFragment() { private val timeRunnable = object : Runnable { override fun run() { val currentDateString = DateFormat.getDateInstance(DateFormat.LONG, Locale.getDefault()).format(Date()) - val currentTimeString = DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.getDefault()).format(Date()) + //val currentTimeString = DateFormat.getTimeInstance(DateFormat.DEFAULT, Locale.getDefault()).format(Date()) + val currentTimeString = DateUtils.formatDateTime(context, Date().time, DateUtils.FORMAT_SHOW_TIME); dateText.text = currentDateString timeText.text = currentTimeString if (timeHandler != null) { diff --git a/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/PlatformFragment.kt b/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/PlatformFragment.kt index d636b6f1..82734030 100644 --- a/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/PlatformFragment.kt +++ b/app/src/main/java/com/thanksmister/iot/mqtt/alarmpanel/ui/fragments/PlatformFragment.kt @@ -167,7 +167,9 @@ class PlatformFragment : BaseFragment() { if(progressDialog != null) { progressDialog.visibility = View.GONE } - pageLoadComplete(view.url) + if(view.url != null) { + pageLoadComplete(view.url) + } return } if(displayProgress) { @@ -199,6 +201,7 @@ class PlatformFragment : BaseFragment() { Toast.makeText(activity, description, Toast.LENGTH_SHORT).show() } } + // TODO we need to load SSL certificates override fun onReceivedSslError(view: WebView, handler: SslErrorHandler?, error: SslError?) { super.onReceivedSslError(view, handler, error) var message = getString(R.string.dialog_message_ssl_generic) @@ -234,7 +237,7 @@ class PlatformFragment : BaseFragment() { } } - private fun pageLoadComplete(url: String) { + private fun pageLoadComplete(url: String?) { Timber.d("pageLoadComplete currentUrl $url") val intent = Intent(AlarmPanelService.BROADCAST_EVENT_URL_CHANGE) intent.putExtra(AlarmPanelService.BROADCAST_EVENT_URL_CHANGE, url)