Wear: tile add no phone data message

This commit is contained in:
Andries Smit 2022-01-13 10:29:31 +01:00
parent 6ff314a9cb
commit ee27b07377
3 changed files with 36 additions and 8 deletions

View file

@ -18,6 +18,7 @@ import android.util.Log;
import androidx.core.app.NotificationCompat; import androidx.core.app.NotificationCompat;
import androidx.core.app.NotificationManagerCompat; import androidx.core.app.NotificationManagerCompat;
import androidx.localbroadcastmanager.content.LocalBroadcastManager; import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import androidx.wear.tiles.TileService;
import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.api.GoogleApiClient; import com.google.android.gms.common.api.GoogleApiClient;
@ -46,6 +47,8 @@ import info.nightscout.androidaps.interaction.AAPSPreferences;
import info.nightscout.androidaps.interaction.actions.AcceptActivity; import info.nightscout.androidaps.interaction.actions.AcceptActivity;
import info.nightscout.androidaps.interaction.actions.CPPActivity; import info.nightscout.androidaps.interaction.actions.CPPActivity;
import info.nightscout.androidaps.interaction.utils.Persistence; import info.nightscout.androidaps.interaction.utils.Persistence;
import info.nightscout.androidaps.tile.ActionsTileService;
import info.nightscout.androidaps.tile.TempTargetTileService;
import info.nightscout.shared.SafeParse; import info.nightscout.shared.SafeParse;
import info.nightscout.androidaps.interaction.utils.WearUtil; import info.nightscout.androidaps.interaction.utils.WearUtil;
@ -547,6 +550,7 @@ public class ListenerService extends WearableListenerService implements GoogleAp
SharedPreferences.Editor editor = sharedPreferences.edit(); SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean("wearcontrol", wearcontrol); editor.putBoolean("wearcontrol", wearcontrol);
editor.apply(); editor.apply();
updateTiles();
} }
} else if (path.equals(NEW_CHANGECONFIRMATIONREQUEST_PATH)) { } else if (path.equals(NEW_CHANGECONFIRMATIONREQUEST_PATH)) {
String title = DataMapItem.fromDataItem(event.getDataItem()).getDataMap().getString("title"); String title = DataMapItem.fromDataItem(event.getDataItem()).getDataMap().getString("title");
@ -568,6 +572,16 @@ public class ListenerService extends WearableListenerService implements GoogleAp
} }
} }
private void updateTiles() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
TileService.getUpdater(this)
.requestUpdate(ActionsTileService.class);
TileService.getUpdater(this)
.requestUpdate(TempTargetTileService.class);
}
}
private void notifyChangeRequest(String title, String message, String actionstring) { private void notifyChangeRequest(String title, String message, String actionstring) {
// Create the NotificationChannel, but only on API 26+ because // Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library // the NotificationChannel class is new and not in the support library

View file

@ -47,7 +47,6 @@ private const val BUTTON_COLOR = R.color.gray_850
const val TAG = "ASTAG-tile" const val TAG = "ASTAG-tile"
interface TileSource { interface TileSource {
fun getActions(): List<Action> fun getActions(): List<Action>
fun getDefaultConfig(): Map<String, String> fun getDefaultConfig(): Map<String, String>
} }
@ -62,6 +61,11 @@ data class Action(
val actionString: String? = null, val actionString: String? = null,
) )
enum class WearControl {
NO_DATA, ENABLED, DISABLED
}
abstract class TileBase : TileService() { abstract class TileBase : TileService() {
open val resourceVersion = "1" open val resourceVersion = "1"
@ -78,14 +82,14 @@ abstract class TileBase : TileService() {
): ListenableFuture<Tile> = serviceScope.future { ): ListenableFuture<Tile> = serviceScope.future {
Log.i(TAG, "onTileRequest: ") Log.i(TAG, "onTileRequest: ")
val actionsSelected = getSelectedActions() val actionsSelected = getSelectedActions()
val wearControlEnabled = hasWearControl() val wearControl = getWearControl()
Tile.Builder() Tile.Builder()
.setResourcesVersion(resourceVersion) .setResourcesVersion(resourceVersion)
.setTimeline( .setTimeline(
Timeline.Builder().addTimelineEntry( Timeline.Builder().addTimelineEntry(
TimelineEntry.Builder().setLayout( TimelineEntry.Builder().setLayout(
Layout.Builder().setRoot(layout(wearControlEnabled, actionsSelected, requestParams.deviceParameters!!)).build() Layout.Builder().setRoot(layout(wearControl, actionsSelected, requestParams.deviceParameters!!)).build()
).build() ).build()
).build() ).build()
) )
@ -115,11 +119,15 @@ abstract class TileBase : TileService() {
.build() .build()
} }
private fun layout(enabled: Boolean, actions: List<Action>, deviceParameters: DeviceParameters): LayoutElement { private fun layout(wearControl: WearControl, actions: List<Action>, deviceParameters: DeviceParameters): LayoutElement {
if (!enabled) { if (wearControl == WearControl.DISABLED) {
return Text.Builder() return Text.Builder()
.setText(resources.getString(R.string.wear_control_not_enabled)) .setText(resources.getString(R.string.wear_control_not_enabled))
.build() .build()
} else if (wearControl == WearControl.NO_DATA) {
return Text.Builder()
.setText(resources.getString(R.string.wear_control_no_data))
.build()
} }
if (actions.isNotEmpty()) { if (actions.isNotEmpty()) {
val b = Column.Builder() val b = Column.Builder()
@ -222,9 +230,14 @@ abstract class TileBase : TileService() {
) )
.build() .build()
private fun hasWearControl(): Boolean { private fun getWearControl(): WearControl {
val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this) val sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this)
return sharedPrefs.getBoolean("wearcontrol", false) if (!sharedPrefs.contains("wearcontrol")) return WearControl.NO_DATA;
val wearControlPref = sharedPrefs.getBoolean("wearcontrol", false)
if (wearControlPref) {
return WearControl.ENABLED
}
return WearControl.DISABLED
} }
private fun getSelectedActions(): List<Action> { private fun getSelectedActions(): List<Action> {

View file

@ -177,6 +177,7 @@
<string name="temp_target_cancel">Cancel</string> <string name="temp_target_cancel">Cancel</string>
<string name="tile_none">None</string> <string name="tile_none">None</string>
<string name="tile_no_config">No config available</string> <string name="tile_no_config">No config available</string>
<string name="wear_control_not_enabled">Wear control disabled</string> <string name="wear_control_not_enabled">Wear controls disabled</string>
<string name="wear_control_no_data">No data available</string>
</resources> </resources>