mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge.git
synced 2026-07-31 07:44:24 +02:00
Change notification, and fix the connection logic:
- fix bug that caused the wrong device to be connected sometimes - add accent color - add battery status - remove duplicated title - allow to connect also before first connection (the last connected device will be used)
This commit is contained in:
+1
-1
@@ -570,7 +570,7 @@ public class DeviceCommunicationService extends Service implements SharedPrefere
|
|||||||
|
|
||||||
private void start() {
|
private void start() {
|
||||||
if (!mStarted) {
|
if (!mStarted) {
|
||||||
startForeground(GB.NOTIFICATION_ID, GB.createNotification(getString(R.string.gadgetbridge_running), false, this));
|
startForeground(GB.NOTIFICATION_ID, GB.createNotification(getString(R.string.gadgetbridge_running), this));
|
||||||
mStarted = true;
|
mStarted = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,31 +75,36 @@ public class GB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Notification createNotification(GBDevice device, Context context) {
|
public static Notification createNotification(GBDevice device, Context context) {
|
||||||
String text = device.getName() + " " + device.getStateString();
|
String deviceName = device.getName();
|
||||||
|
String text = device.getStateString();
|
||||||
|
if (device.getBatteryLevel() != GBDevice.BATTERY_UNKNOWN) {
|
||||||
|
text += ": " + context.getString(R.string.battery) + " " + device.getBatteryLevel() + "%";
|
||||||
|
}
|
||||||
|
|
||||||
Boolean connected = device.isInitialized();
|
Boolean connected = device.isInitialized();
|
||||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
|
||||||
builder.setContentTitle(context.getString(R.string.app_name))
|
builder.setContentTitle(deviceName)
|
||||||
.setTicker(text)
|
.setTicker(deviceName + text)
|
||||||
.setContentText(text)
|
.setContentText(text)
|
||||||
.setSmallIcon(connected ? R.drawable.ic_notification : R.drawable.ic_notification_disconnected)
|
.setSmallIcon(connected ? R.drawable.ic_notification : R.drawable.ic_notification_disconnected)
|
||||||
.setContentIntent(getContentIntent(context))
|
.setContentIntent(getContentIntent(context))
|
||||||
|
.setColor(context.getResources().getColor(R.color.accent))
|
||||||
.setOngoing(true);
|
.setOngoing(true);
|
||||||
|
|
||||||
Intent deviceCommunicationServiceIntent = new Intent(context, DeviceCommunicationService.class);
|
Intent deviceCommunicationServiceIntent = new Intent(context, DeviceCommunicationService.class);
|
||||||
if (connected) {
|
if (connected) {
|
||||||
deviceCommunicationServiceIntent.setAction(DeviceService.ACTION_DISCONNECT);
|
deviceCommunicationServiceIntent.setAction(DeviceService.ACTION_DISCONNECT);
|
||||||
PendingIntent disconnectPendingIntent = PendingIntent.getService(context, 0, deviceCommunicationServiceIntent, 0);
|
PendingIntent disconnectPendingIntent = PendingIntent.getService(context, 0, deviceCommunicationServiceIntent, PendingIntent.FLAG_ONE_SHOT);
|
||||||
builder.addAction(R.drawable.ic_notification_disconnected, context.getString(R.string.controlcenter_disconnect), disconnectPendingIntent);
|
builder.addAction(R.drawable.ic_notification_disconnected, context.getString(R.string.controlcenter_disconnect), disconnectPendingIntent);
|
||||||
if (DeviceHelper.getInstance().getCoordinator(device).supportsActivityDataFetching()) {
|
if (DeviceHelper.getInstance().getCoordinator(device).supportsActivityDataFetching()) {
|
||||||
deviceCommunicationServiceIntent.setAction(DeviceService.ACTION_FETCH_ACTIVITY_DATA);
|
deviceCommunicationServiceIntent.setAction(DeviceService.ACTION_FETCH_ACTIVITY_DATA);
|
||||||
PendingIntent fetchPendingIntent = PendingIntent.getService(context, 1, deviceCommunicationServiceIntent, 0);
|
PendingIntent fetchPendingIntent = PendingIntent.getService(context, 1, deviceCommunicationServiceIntent, PendingIntent.FLAG_ONE_SHOT);
|
||||||
builder.addAction(R.drawable.ic_action_fetch_activity_data, context.getString(R.string.controlcenter_fetch_activity_data), fetchPendingIntent);
|
builder.addAction(R.drawable.ic_action_fetch_activity_data, context.getString(R.string.controlcenter_fetch_activity_data), fetchPendingIntent);
|
||||||
}
|
}
|
||||||
} else if (device.getState().equals(GBDevice.State.WAITING_FOR_RECONNECT) || device.getState().equals(GBDevice.State.NOT_CONNECTED)) {
|
} else if (device.getState().equals(GBDevice.State.WAITING_FOR_RECONNECT) || device.getState().equals(GBDevice.State.NOT_CONNECTED)) {
|
||||||
deviceCommunicationServiceIntent.setAction(DeviceService.ACTION_CONNECT);
|
deviceCommunicationServiceIntent.setAction(DeviceService.ACTION_CONNECT);
|
||||||
//FIXME: why does it reconnect to the device before the last one sometimes???
|
|
||||||
deviceCommunicationServiceIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
deviceCommunicationServiceIntent.putExtra(GBDevice.EXTRA_DEVICE, device);
|
||||||
PendingIntent reconnectPendingIntent = PendingIntent.getService(context, 2, deviceCommunicationServiceIntent, 0);
|
PendingIntent reconnectPendingIntent = PendingIntent.getService(context, 2, deviceCommunicationServiceIntent, PendingIntent.FLAG_UPDATE_CURRENT);
|
||||||
builder.addAction(R.drawable.ic_notification, context.getString(R.string.controlcenter_connect), reconnectPendingIntent);
|
builder.addAction(R.drawable.ic_notification, context.getString(R.string.controlcenter_connect), reconnectPendingIntent);
|
||||||
}
|
}
|
||||||
if (GBApplication.isRunningLollipopOrLater()) {
|
if (GBApplication.isRunningLollipopOrLater()) {
|
||||||
@@ -111,14 +116,19 @@ public class GB {
|
|||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Notification createNotification(String text, boolean connected, Context context) {
|
public static Notification createNotification(String text, Context context) {
|
||||||
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
|
NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
|
||||||
builder.setContentTitle(context.getString(R.string.app_name))
|
builder.setTicker(text)
|
||||||
.setTicker(text)
|
|
||||||
.setContentText(text)
|
.setContentText(text)
|
||||||
.setSmallIcon(connected ? R.drawable.ic_notification : R.drawable.ic_notification_disconnected)
|
.setSmallIcon(R.drawable.ic_notification_disconnected)
|
||||||
.setContentIntent(getContentIntent(context))
|
.setContentIntent(getContentIntent(context))
|
||||||
.setOngoing(true);
|
.setOngoing(true);
|
||||||
|
if (GBApplication.getPrefs().getString("last_device_address", null) != null) {
|
||||||
|
Intent deviceCommunicationServiceIntent = new Intent(context, DeviceCommunicationService.class);
|
||||||
|
deviceCommunicationServiceIntent.setAction(DeviceService.ACTION_CONNECT);
|
||||||
|
PendingIntent reconnectPendingIntent = PendingIntent.getService(context, 2, deviceCommunicationServiceIntent, PendingIntent.FLAG_ONE_SHOT);
|
||||||
|
builder.addAction(R.drawable.ic_notification, context.getString(R.string.controlcenter_connect), reconnectPendingIntent);
|
||||||
|
}
|
||||||
if (GBApplication.isRunningLollipopOrLater()) {
|
if (GBApplication.isRunningLollipopOrLater()) {
|
||||||
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
|
builder.setVisibility(NotificationCompat.VISIBILITY_PUBLIC);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user