Updated PowerConnectionReceiver for multiple configs
parent
1e351f90e4
commit
2543eb1132
|
@ -4,24 +4,26 @@ import android.content.BroadcastReceiver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.IntentFilter;
|
import android.content.IntentFilter;
|
||||||
import android.content.SharedPreferences;
|
|
||||||
import android.os.BatteryManager;
|
import android.os.BatteryManager;
|
||||||
import android.preference.PreferenceManager;
|
import android.util.Log;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import max.music_cyclon.SynchronizeActivity;
|
||||||
|
import max.music_cyclon.SynchronizeConfig;
|
||||||
|
|
||||||
public class PowerConnectionReceiver extends BroadcastReceiver {
|
public class PowerConnectionReceiver extends BroadcastReceiver {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onReceive(Context context, Intent intent) {
|
public void onReceive(Context context, Intent intent) {
|
||||||
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
|
|
||||||
boolean start = settings.getBoolean("start_charging", false);
|
|
||||||
|
|
||||||
if (!start) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
|
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
|
||||||
Intent batteryStatus = context.registerReceiver(null, ifilter);
|
Intent batteryStatus = context.registerReceiver(null, ifilter);
|
||||||
|
|
||||||
|
@ -37,14 +39,50 @@ public class PowerConnectionReceiver extends BroadcastReceiver {
|
||||||
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
|
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
|
||||||
|
|
||||||
if (acCharge && isCharging) {
|
if (acCharge && isCharging) {
|
||||||
|
// todo the latest changes, if the app is running are not available at this point
|
||||||
|
|
||||||
SharedPreferences preferences = context.getSharedPreferences("info", Context.MODE_PRIVATE);
|
List<SynchronizeConfig> loadedConfigs = Collections.emptyList();
|
||||||
long lastUpdated = preferences.getLong("last_updated", 0);
|
try {
|
||||||
|
FileInputStream in = context.openFileInput(SynchronizeActivity.DEFAULT_CONFIG_PATH);
|
||||||
|
loadedConfigs = SynchronizeConfig.load(in);
|
||||||
|
in.close();
|
||||||
|
} catch (IOException | JSONException e) {
|
||||||
|
Log.e("CONFIG", "Failed loading the config", e);
|
||||||
|
}
|
||||||
|
|
||||||
if (lastUpdated < System.currentTimeMillis() - TimeUnit.DAYS.toMillis(Integer.parseInt(settings.getString("min_download_interval", "7")))) {
|
List<SynchronizeConfig> configs = new ArrayList<>();
|
||||||
Intent serviceIntend = new Intent(context, LibraryService.class);
|
|
||||||
|
|
||||||
context.startService(serviceIntend);
|
for (SynchronizeConfig config : loadedConfigs) {
|
||||||
|
if (!config.isStartCharging(context.getResources())) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
long lastUpdated = config.getLastUpdated();
|
||||||
|
|
||||||
|
if (lastUpdated < System.currentTimeMillis() - TimeUnit.DAYS.toMillis(config.getDownloadInterval(context.getResources()))) {
|
||||||
|
configs.add(config);
|
||||||
|
config.updateLastUpdated(); // fixme the result of LibraryService does not affect this (for example: Remote not available)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (configs.isEmpty()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Intent serviceIntend = new Intent(context, LibraryService.class);
|
||||||
|
serviceIntend.putExtra(
|
||||||
|
LibraryService.ARGUMENT_CONFIGS,
|
||||||
|
configs.toArray(new SynchronizeConfig[configs.size()])
|
||||||
|
);
|
||||||
|
|
||||||
|
context.startService(serviceIntend);
|
||||||
|
|
||||||
|
try {
|
||||||
|
FileOutputStream fos = context.openFileOutput(SynchronizeActivity.DEFAULT_CONFIG_PATH, Context.MODE_PRIVATE);
|
||||||
|
SynchronizeConfig.save(loadedConfigs, fos);
|
||||||
|
fos.close();
|
||||||
|
} catch (IOException | JSONException e) {
|
||||||
|
Log.e("CONFIG", "Failed saving the config", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue