diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AbstractBTDeviceSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AbstractBTDeviceSupport.java index ea209f2be..dd7ecbc61 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AbstractBTDeviceSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/AbstractBTDeviceSupport.java @@ -151,7 +151,7 @@ public abstract class AbstractBTDeviceSupport extends AbstractDeviceSupport { } @Override - public void onSynchronizeActivityData() { + public void onFetchActivityData() { byte[] bytes = gbDeviceProtocol.encodeSynchronizeActivityData(); sendToDevice(bytes); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/BluetoothCommunicationService.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/BluetoothCommunicationService.java index 7d49d639c..83b0d6be6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/BluetoothCommunicationService.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/BluetoothCommunicationService.java @@ -58,6 +58,7 @@ public class BluetoothCommunicationService extends Service { public static final String ACTION_INSTALL_PEBBLEAPP = "nodomain.freeyourgadget.gadgetbride.bluetoothcommunicationservice.action.install_pebbbleapp"; public static final String ACTION_REBOOT = "nodomain.freeyourgadget.gadgetbride.bluetoothcommunicationservice.action.reboot"; + public static final String ACTION_FETCH_ACTIVITY_DATA = "nodomain.freeyourgadget.gadgetbride.bluetoothcommunicationservice.action.fetch_activity_data"; public static final String EXTRA_PERFORM_PAIR = "perform_pair"; private static final Logger LOG = LoggerFactory.getLogger(BluetoothCommunicationService.class); @@ -200,6 +201,10 @@ public class BluetoothCommunicationService extends Service { mDeviceSupport.onReboot(); break; } + case ACTION_FETCH_ACTIVITY_DATA: { + mDeviceSupport.onFetchActivityData(); + break; + } case ACTION_CALLSTATE: GBCommand command = GBCommand.values()[intent.getIntExtra("call_command", 0)]; // UGLY diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/ControlCenter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/ControlCenter.java index d7bde89f7..9b2ef0b64 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/ControlCenter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/ControlCenter.java @@ -72,6 +72,8 @@ public class ControlCenter extends Activity { } refreshPairedDevices(); + refreshBusyState(dev); + if (dev.isConnected() && dev.getFirmwareVersion() == null && !dev.isInitializing()) { LOG.info("device connected, requesting more info"); requestDeviceInfo(); @@ -81,6 +83,10 @@ public class ControlCenter extends Activity { } }; + private void refreshBusyState(GBDevice dev) { + mGBDeviceAdapter.notifyDataSetChanged(); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -171,6 +177,12 @@ public class ControlCenter extends Activity { startActivity(startIntent); } return true; + case R.id.controlcenter_fetch_activity_data: + if (selectedDevice != null) { + Intent startIntent = new Intent(this, BluetoothCommunicationService.class); + startIntent.setAction(BluetoothCommunicationService.ACTION_FETCH_ACTIVITY_DATA); + startService(startIntent); + } default: return super.onContextItemSelected(item); } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/EventHandler.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/EventHandler.java index a4efbbe2b..a24e6ab1f 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/EventHandler.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/EventHandler.java @@ -27,7 +27,7 @@ public interface EventHandler { void onPhoneVersion(byte os); - void onSynchronizeActivityData(); + void onFetchActivityData(); void onReboot(); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBDeviceAdapter.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBDeviceAdapter.java index 6ba6487d8..9a997ef69 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBDeviceAdapter.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/adapter/GBDeviceAdapter.java @@ -6,6 +6,7 @@ import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; import android.widget.ImageView; +import android.widget.ProgressBar; import android.widget.TextView; import java.util.List; @@ -38,11 +39,23 @@ public class GBDeviceAdapter extends ArrayAdapter { TextView deviceInfoLabel = (TextView) view.findViewById(R.id.device_info); TextView batteryStatusLabel = (TextView) view.findViewById(R.id.battery_status); ImageView deviceImageView = (ImageView) view.findViewById(R.id.device_image); + ProgressBar busyIndicator = (ProgressBar) view.findViewById(R.id.device_busy_indicator); - deviceStatusLabel.setText(device.getStateString()); deviceNameLabel.setText(device.getName()); deviceInfoLabel.setText(device.getInfoString()); + if (device.isBusy()) { + deviceStatusLabel.setText(device.getBusyTask()); + busyIndicator.setVisibility(View.VISIBLE); + batteryStatusLabel.setVisibility(View.GONE); + deviceInfoLabel.setVisibility(View.GONE); + } else { + deviceStatusLabel.setText(device.getStateString()); + busyIndicator.setVisibility(View.GONE); + batteryStatusLabel.setVisibility(View.VISIBLE); + deviceInfoLabel.setVisibility(View.VISIBLE); + } + short batteryLevel = device.getBatteryLevel(); if (batteryLevel != GBDevice.BATTERY_UNKNOWN) { batteryStatusLabel.setText("BAT: " + device.getBatteryLevel() + "%"); diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java index e4e1c925f..04159baeb 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/miband/MiBandSupport.java @@ -369,7 +369,7 @@ public class MiBandSupport extends AbstractBTLEDeviceSupport { } @Override - public void onSynchronizeActivityData() { + public void onFetchActivityData() { try { TransactionBuilder builder = performInitialized("fetch activity data"); builder.add(new SetDeviceBusyAction(getDevice(), getContext().getString(R.string.busy_task_fetch_activity_data), getContext())); diff --git a/app/src/main/res/layout/device_item.xml b/app/src/main/res/layout/device_item.xml index bfd0e8b14..eee5a4426 100644 --- a/app/src/main/res/layout/device_item.xml +++ b/app/src/main/res/layout/device_item.xml @@ -31,6 +31,13 @@ android:textColor="@color/primarytext" android:typeface="sans" /> + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 70025e0c1..79a44bfc7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -106,5 +106,6 @@ Write Log Files (needs restart) initializing Fetching Activity Data + Fetch Activity Data