FPII-1793: Fairphone Updater app should check minimum battery level and Wi-Fi connectivity
Check battery level and Wi-Fi connectivity where required.
Change-Id: I78608648959358c756803813e21edc814a88a739
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 62100b4..d3f4d54 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -74,5 +74,8 @@
<string name="wifi_discaimer_message_startup">Du musst dich mit einem WLAN-Netzwerk verbinden um nach Updates zu suchen oder um Software zu installieren.</string>
<string name="appStoreReinstall">Reinstalliere den app store</string>
<string name="app_store">App Stores</string>
+ <string name="got_it">Ich verstehe</string>
+ <string name="connect_to_wifi">Stell eine Verbindung zum WLAN her</string>
+ <string name="charge_battery">Bitte lade die Batterie mindestens 80% auf</string>
</resources>
\ No newline at end of file
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 800ded3..f5f897f 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -74,5 +74,8 @@
<string name="wifi_discaimer_message_startup">Debes conectarte a un punto Wi-Fi para comprobar si existen nuevas actualizaciones o para instalar software.</string>
<string name="appStoreReinstall">Reinstalar la tienda de aplicaciones (app store)</string>
<string name="app_store">App Stores</string>
+ <string name="got_it">Lo entiendo</string>
+ <string name="connect_to_wifi">Conéctate a la red Wi-Fi</string>
+ <string name="charge_battery">Asegúrate de que tu batería está cargada al menos un 80%</string>
</resources>
\ No newline at end of file
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index aa5e9cb..f0f8777 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -74,5 +74,8 @@
<string name="wifi_discaimer_message_startup">Vous devez vous connecter à un réseau Wi-Fi pour vérifier l\'existence de mises à jour ou installer le logiciel.</string>
<string name="appStoreReinstall">Réinstaller la boutique d\'applications</string>
<string name="app_store">App Stores</string>
+ <string name="got_it">OK</string>
+ <string name="connect_to_wifi">Merci de vous connecter à un réseau Wi-Fi</string>
+ <string name="charge_battery">Chargez votre batterie à au moins 80%</string>
</resources>
\ No newline at end of file
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 57ea902..07c3abe 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -74,5 +74,8 @@
<string name="wifi_discaimer_message_startup">Je dient verbonden te zijn met een Wi-Fi netwerk voor het controleren op updates en het installeren van software.</string>
<string name="appStoreReinstall">Herinstalleer de app store</string>
<string name="app_store">App Stores</string>
+ <string name="got_it">Ik snap het</string>
+ <string name="connect_to_wifi">Maak verbinding met een Wi-Fi netwerk</string>
+ <string name="charge_battery">Zorg er voor dat je batterij minstens 80% opgeladen is</string>
</resources>
\ No newline at end of file
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 0e11cb9..4a033bb 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -74,5 +74,8 @@
<string name="wifi_discaimer_message_startup">Precisa de ligar o Wi-Fi para verificar se existem actualizações ou para instalar software.</string>
<string name="appStoreReinstall">Reinstale a app store</string>
<string name="app_store">App Stores</string>
+ <string name="got_it">Entendi</string>
+ <string name="connect_to_wifi">Por favor ligue-se a uma rede Wi-Fi</string>
+ <string name="charge_battery">Por favor carregue a bateria até pelo menos 80%</string>
</resources>
\ No newline at end of file
diff --git a/res/values/config.xml b/res/values/config.xml
index bdc372e..8975c21 100644
--- a/res/values/config.xml
+++ b/res/values/config.xml
@@ -15,7 +15,7 @@
<!-- Device Model without spaces separated by semicolon. Ex: FP1;FP1U;FP2 -->
<string name="knownFPDevices" translatable="false">FP1;FP1U;FP2</string>
-
+
<string name="oneGBDataPartition" translatable="false">/originalPartition</string>
<string name="unifiedDataPartition" translatable="false">/unifiedPartition</string>
<string name="FP1Model" translatable="false">FP1</string>
@@ -25,6 +25,8 @@
<integer name="FP1DataPartitionSizeMb">1100</integer>
<string name="FP2Model" translatable="false">FP2</string>
+
+ <string name="minimumBatteryLevel" translatable="false">0.8</string>
<!-- Packager -->
<string name="removePlayStoreCommand" translatable="false">rm /data/app/com.android.vending-*.apk</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 3398f8b..4d290e2 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -75,5 +75,7 @@
<string name="wifi_discaimer_message_startup">You need to connect to a Wi-Fi network to check for updates or install software.</string>
<string name="appStoreReinstall">Reinstall the app store</string>
<string name="app_store">App Stores</string>
-
+ <string name="connect_to_wifi">Please connect to a Wi-Fi network</string>
+ <string name="charge_battery">Please charge your battery to at least 80%</string>
+ <string name="got_it">Got it</string>
</resources>
\ No newline at end of file
diff --git a/src/com/fairphone/updater/FairphoneUpdater.java b/src/com/fairphone/updater/FairphoneUpdater.java
index 285afbb..e297f33 100644
--- a/src/com/fairphone/updater/FairphoneUpdater.java
+++ b/src/com/fairphone/updater/FairphoneUpdater.java
@@ -864,11 +864,10 @@
AlertDialog.Builder wifiOffDialogBuilder = new AlertDialog.Builder(this);
- wifiOffDialogBuilder.setTitle(resources.getString(R.string.wifi_disabled));
+ wifiOffDialogBuilder.setTitle(resources.getString(R.string.connect_to_wifi));
+ wifiOffDialogBuilder.setIcon(resources.getDrawable(R.drawable.ic_signal_wifi_4_bar_fpblue_24dp));
- // Setting Dialog Message
- wifiOffDialogBuilder.setMessage(resources.getString(R.string.wifi_discaimer_message_startup));
- wifiOffDialogBuilder.setPositiveButton(resources.getString(android.R.string.ok), new DialogInterface.OnClickListener() {
+ wifiOffDialogBuilder.setPositiveButton(resources.getString(R.string.got_it), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do nothing, since the state is still the same
}
diff --git a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
index d176505..735393e 100644
--- a/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
+++ b/src/com/fairphone/updater/fragments/DownloadAndRestartFragment.java
@@ -180,13 +180,23 @@
@Override
public void onClick(View v)
{
- if (mIsVersion)
- {
- showEraseAllDataWarning();
- }
- else if (mSelectedStore != null)
- {
- startPreInstall();
+ if(Utils.isBatteryLevelOk(mainActivity)) {
+ if (mIsVersion) {
+ showEraseAllDataWarning();
+ } else if (mSelectedStore != null) {
+ startPreInstall();
+ }
+ } else {
+ AlertDialog.Builder batteryDialog = new AlertDialog.Builder(mainActivity);
+ batteryDialog.setIcon(R.drawable.ic_battery_std_fpblue_24dp);
+ batteryDialog.setTitle(R.string.charge_battery);
+ batteryDialog.setPositiveButton(R.string.got_it, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ // do nothing, since the state is still the same
+ }
+ });
+ batteryDialog.create();
+ batteryDialog.show();
}
}
});
diff --git a/src/com/fairphone/updater/fragments/VersionDetailFragment.java b/src/com/fairphone/updater/fragments/VersionDetailFragment.java
index b03a643..37dc5be 100644
--- a/src/com/fairphone/updater/fragments/VersionDetailFragment.java
+++ b/src/com/fairphone/updater/fragments/VersionDetailFragment.java
@@ -121,7 +121,41 @@
@Override
public void onClick(View v)
{
- startDownload();
+ boolean isWifiEnabled = Utils.isWiFiEnabled(mainActivity);
+ boolean isBatteryLevelOk = Utils.isBatteryLevelOk(mainActivity);
+
+ if (isWifiEnabled && isBatteryLevelOk)
+ {
+ startDownload();
+ }
+ else
+ {
+ if(!isWifiEnabled) {
+ AlertDialog.Builder wifiDialog = new AlertDialog.Builder(mainActivity);
+ wifiDialog.setIcon(R.drawable.ic_signal_wifi_4_bar_fpblue_24dp);
+ wifiDialog.setTitle(R.string.connect_to_wifi);
+ wifiDialog.setPositiveButton(R.string.got_it, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ // do nothing, since the state is still the same
+ }
+ });
+ wifiDialog.create();
+ wifiDialog.show();
+ }
+
+ if(!isBatteryLevelOk) {
+ AlertDialog.Builder batteryDialog = new AlertDialog.Builder(mainActivity);
+ batteryDialog.setIcon(R.drawable.ic_battery_std_fpblue_24dp);
+ batteryDialog.setTitle(R.string.charge_battery);
+ batteryDialog.setPositiveButton(R.string.got_it, new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ // do nothing, since the state is still the same
+ }
+ });
+ batteryDialog.create();
+ batteryDialog.show();
+ }
+ }
}
});
}
@@ -271,8 +305,11 @@
void startUpdateDownload()
{
DownloadableItem item = mIsVersion ? mSelectedVersion : mSelectedStore;
- // use only on WiFi
- if (Utils.isWiFiEnabled(mainActivity))
+
+ boolean isWifiEnabled = Utils.isWiFiEnabled(mainActivity);
+ boolean isBatteryLevelOk = Utils.isBatteryLevelOk(mainActivity);
+
+ if (isWifiEnabled && isBatteryLevelOk)
{
if (item != null)
{
@@ -324,21 +361,31 @@
{
Resources resources = this.getResources();
- AlertDialog.Builder wifiOffDialog = new AlertDialog.Builder(mainActivity);
+ if(!isWifiEnabled) {
+ AlertDialog.Builder wifiDialog = new AlertDialog.Builder(mainActivity);
+ wifiDialog.setIcon(R.drawable.ic_signal_wifi_4_bar_fpblue_24dp);
+ wifiDialog.setTitle(resources.getString(R.string.connect_to_wifi));
+ wifiDialog.setPositiveButton(resources.getString(R.string.got_it), new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ // do nothing, since the state is still the same
+ }
+ });
+ wifiDialog.create();
+ wifiDialog.show();
+ }
- wifiOffDialog.setTitle(resources.getString(R.string.wifi_disabled));
-
- // Setting Dialog Message
- wifiOffDialog.setMessage(resources.getString(R.string.wifi_discaimer_message));
- wifiOffDialog.setPositiveButton(resources.getString(android.R.string.ok), new DialogInterface.OnClickListener()
- {
- public void onClick(DialogInterface dialog, int id)
- {
- // do nothing, since the state is still the same
- }
- });
- wifiOffDialog.create();
- wifiOffDialog.show();
+ if(!isBatteryLevelOk) {
+ AlertDialog.Builder batteryDialog = new AlertDialog.Builder(mainActivity);
+ batteryDialog.setIcon(R.drawable.ic_battery_std_fpblue_24dp);
+ batteryDialog.setTitle(resources.getString(R.string.charge_battery));
+ batteryDialog.setPositiveButton(resources.getString(R.string.got_it), new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int id) {
+ // do nothing, since the state is still the same
+ }
+ });
+ batteryDialog.create();
+ batteryDialog.show();
+ }
}
}
diff --git a/src/com/fairphone/updater/tools/Utils.java b/src/com/fairphone/updater/tools/Utils.java
index f766aca..b42f558 100644
--- a/src/com/fairphone/updater/tools/Utils.java
+++ b/src/com/fairphone/updater/tools/Utils.java
@@ -19,10 +19,12 @@
import android.app.DownloadManager;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.res.Resources;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.Uri;
+import android.os.BatteryManager;
import android.os.Build;
import android.os.Environment;
import android.os.PowerManager;
@@ -662,6 +664,20 @@
return manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
}
+ public static boolean isBatteryLevelOk(Context context) {
+ IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
+ Intent batteryStatus = context.registerReceiver(null, ifilter);
+ int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
+ int scale = batteryStatus.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
+
+ float batteryPct = level / (float)scale;
+
+ if(batteryPct >= Float.parseFloat(context.getResources().getString(R.string.minimumBatteryLevel))) {
+ return true;
+ }
+ return false;
+ }
+
public static Store getGappsStore()
{
return UpdaterData.getInstance().getStore(GAPPS_STORE_NUMBER);