mirror of
https://codeberg.org/Freeyourgadget/Gadgetbridge
synced 2024-11-24 10:56:50 +01:00
Bind sunrise/sunset alarm receiver to specific device support
Only register it for Pebble devices which enable the relative setting. Also move the preference to device specific.
This commit is contained in:
parent
795ffde0e1
commit
54cf421295
@ -22,7 +22,6 @@ import android.app.PendingIntent;
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
|
||||
import net.e175.klaus.solarpositioning.DeltaT;
|
||||
import net.e175.klaus.solarpositioning.SPA;
|
||||
@ -61,10 +60,6 @@ public class AlarmReceiver extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
if (!GBApplication.getPrefs().getBoolean("send_sunrise_sunset", false)) {
|
||||
LOG.info("won't send sunrise and sunset events (disabled in preferences)");
|
||||
return;
|
||||
}
|
||||
LOG.info("will resend sunrise and sunset events");
|
||||
|
||||
final GregorianCalendar dateTimeTomorrow = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
|
||||
|
@ -22,8 +22,6 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.service;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.*;
|
||||
|
||||
import android.Manifest;
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.ActivityManager;
|
||||
@ -113,6 +111,8 @@ import nodomain.freeyourgadget.gadgetbridge.util.Prefs;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.LanguageUtils;
|
||||
import nodomain.freeyourgadget.gadgetbridge.util.language.Transliterator;
|
||||
|
||||
import static nodomain.freeyourgadget.gadgetbridge.model.DeviceService.*;
|
||||
|
||||
public class DeviceCommunicationService extends Service implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
public static class DeviceStruct{
|
||||
private GBDevice device;
|
||||
@ -1310,19 +1310,11 @@ public class DeviceCommunicationService extends Service implements SharedPrefere
|
||||
}
|
||||
}
|
||||
}
|
||||
if (mAlarmReceiver == null) {
|
||||
mAlarmReceiver = new AlarmReceiver();
|
||||
ContextCompat.registerReceiver(this, mAlarmReceiver, new IntentFilter("DAILY_ALARM"), ContextCompat.RECEIVER_EXPORTED);
|
||||
}
|
||||
} else {
|
||||
for (CalendarReceiver registeredReceiver: mCalendarReceiver){
|
||||
unregisterReceiver(registeredReceiver);
|
||||
}
|
||||
mCalendarReceiver.clear();
|
||||
if (mAlarmReceiver != null) {
|
||||
unregisterReceiver(mAlarmReceiver);
|
||||
mAlarmReceiver = null;
|
||||
}
|
||||
}
|
||||
|
||||
if (enable) {
|
||||
|
@ -18,9 +18,12 @@
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>. */
|
||||
package nodomain.freeyourgadget.gadgetbridge.service.devices.pebble;
|
||||
|
||||
import android.content.IntentFilter;
|
||||
import android.net.Uri;
|
||||
import android.util.Pair;
|
||||
|
||||
import androidx.core.content.ContextCompat;
|
||||
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
import org.json.JSONObject;
|
||||
@ -34,6 +37,7 @@ import java.util.UUID;
|
||||
import nodomain.freeyourgadget.gadgetbridge.GBApplication;
|
||||
import nodomain.freeyourgadget.gadgetbridge.R;
|
||||
import nodomain.freeyourgadget.gadgetbridge.activities.SettingsActivity;
|
||||
import nodomain.freeyourgadget.gadgetbridge.externalevents.AlarmReceiver;
|
||||
import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.CalendarEventSpec;
|
||||
import nodomain.freeyourgadget.gadgetbridge.model.CallSpec;
|
||||
@ -47,10 +51,36 @@ import nodomain.freeyourgadget.gadgetbridge.service.serial.GBDeviceProtocol;
|
||||
|
||||
public class PebbleSupport extends AbstractSerialDeviceSupport {
|
||||
private static final Logger LOG = LoggerFactory.getLogger(PebbleSupport.class);
|
||||
private AlarmReceiver mAlarmReceiver = null;
|
||||
|
||||
@Override
|
||||
public void dispose() {
|
||||
super.dispose();
|
||||
unregisterSunriseSunsetAlarmReceiver();
|
||||
}
|
||||
|
||||
private void registerSunriseSunsetAlarmReceiver() {
|
||||
if (!getDevicePrefs().getBoolean("send_sunrise_sunset", false)) {
|
||||
LOG.info("won't register sunrise and sunset receiver (disabled in preferences)");
|
||||
return;
|
||||
}
|
||||
unregisterSunriseSunsetAlarmReceiver();
|
||||
LOG.info("registering sunrise and sunset receiver");
|
||||
this.mAlarmReceiver = new AlarmReceiver();
|
||||
ContextCompat.registerReceiver(GBApplication.getContext(), mAlarmReceiver, new IntentFilter("DAILY_ALARM"), ContextCompat.RECEIVER_EXPORTED);
|
||||
}
|
||||
|
||||
private void unregisterSunriseSunsetAlarmReceiver() {
|
||||
if (mAlarmReceiver != null) {
|
||||
GBApplication.getContext().unregisterReceiver(mAlarmReceiver);
|
||||
mAlarmReceiver = null;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean connect() {
|
||||
getDeviceIOThread().start();
|
||||
registerSunriseSunsetAlarmReceiver();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -30,7 +30,6 @@
|
||||
android:title="@string/pref_title_enable_outgoing_call"
|
||||
app:iconSpaceReserved="false" />
|
||||
</PreferenceCategory>
|
||||
<!--
|
||||
<PreferenceCategory
|
||||
android:title="@string/pref_header_pebble_timeline"
|
||||
app:iconSpaceReserved="false">
|
||||
@ -41,7 +40,6 @@
|
||||
android:title="@string/pref_title_sunrise_sunset"
|
||||
app:iconSpaceReserved="false" />
|
||||
</PreferenceCategory>
|
||||
-->
|
||||
<PreferenceCategory
|
||||
android:title="@string/pref_header_activitytrackers"
|
||||
app:iconSpaceReserved="false">
|
||||
|
@ -13,16 +13,6 @@
|
||||
app:iconSpaceReserved="false"
|
||||
app:useSimpleSummaryProvider="true" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:title="@string/pref_header_pebble_timeline"
|
||||
app:iconSpaceReserved="false">
|
||||
<SwitchPreferenceCompat
|
||||
android:key="send_sunrise_sunset"
|
||||
android:layout="@layout/preference_checkbox"
|
||||
android:summary="@string/pref_summary_sunrise_sunset"
|
||||
android:title="@string/pref_title_sunrise_sunset"
|
||||
app:iconSpaceReserved="false" />
|
||||
</PreferenceCategory>
|
||||
<PreferenceCategory
|
||||
android:title="@string/pref_header_development"
|
||||
app:iconSpaceReserved="false">
|
||||
|
Loading…
Reference in New Issue
Block a user