From 80f632c19a8c80e9b2fb8c62b90952ef14f7d5c9 Mon Sep 17 00:00:00 2001 From: kote Date: Sat, 24 Aug 2019 17:50:30 +0800 Subject: [PATCH] show battery optimiz. menu item added; translated all battery stuff into Russian --- android/res/menu/options_main.xml | 25 +++++++++++------- android/res/values-ru/strings.xml | 7 +++++ android/res/values/strings.xml | 10 ++++--- .../src/org/purplei2p/i2pd/I2PDActivity.java | 26 +++++++++++++++++-- 4 files changed, 52 insertions(+), 16 deletions(-) diff --git a/android/res/menu/options_main.xml b/android/res/menu/options_main.xml index aef67c51..089c2700 100644 --- a/android/res/menu/options_main.xml +++ b/android/res/menu/options_main.xml @@ -3,14 +3,19 @@ xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" tools:context=".I2PDActivity"> - - + + + + + + + diff --git a/android/res/values-ru/strings.xml b/android/res/values-ru/strings.xml index d5dc58e8..318e2180 100755 --- a/android/res/values-ru/strings.xml +++ b/android/res/values-ru/strings.xml @@ -17,4 +17,11 @@ осталось Запрос Права для записи на SD карту отклонены, вам необходимо предоставить их для продолжения + Оптимизации аккумулятора + Оптимизации аккумулятора включены + Ваша версия Андроид не поддерживает отключение оптимизаций аккумулятора + Ваша операционная система осуществляет оптимизации расхода аккумулятора, которые могут приводить к выгрузке I2PD из памяти и прекращению его работы с целью сэкономить заряд аккумулятора.\nРекомендуется отключить эти оптимизации. + Ваша операционная система осуществляет оптимизации расхода аккумулятора, которые могут приводить к выгрузке I2PD из памяти и прекращению его работы с целью сэкономить заряд аккумулятора.\n\nВам сейчас будет предложено разрешить отключение этих оптимизаций. + Продолжить + Ваша версия Андроид не поддерживает показ диалога об оптимизациях аккумулятора для приложений. diff --git a/android/res/values/strings.xml b/android/res/values/strings.xml index 430663d1..43065b77 100755 --- a/android/res/values/strings.xml +++ b/android/res/values/strings.xml @@ -18,8 +18,10 @@ Prompt SD card write permission denied, you need to allow this to continue Battery optimizations enabled - Your device is doing some heavy battery optimizations on I2PD that might lead to daemon closing with no other reason.\nIt is recommended to disable those battery optimizations. - Your device is doing some heavy battery optimizations on I2PD that might lead to daemon closing with no other reason.\n\nYou will now be asked to disable those. - Next - Your device does not support opting out of battery optimizations + Your Android is doing some heavy battery optimizations on I2PD that might lead to daemon closing with no other reason.\nIt is recommended to allow disabling those battery optimizations. + Your Android is doing some heavy battery optimizations on I2PD that might lead to daemon closing with no other reason.\n\nYou will now be asked to allow to disable those. + Continue + Your Android version does not support opting out of battery optimizations + Battery Optimizations + Your Android OS version does not support showing the dialog for battery optimizations for applications. diff --git a/android/src/org/purplei2p/i2pd/I2PDActivity.java b/android/src/org/purplei2p/i2pd/I2PDActivity.java index d97df833..13db09fc 100755 --- a/android/src/org/purplei2p/i2pd/I2PDActivity.java +++ b/android/src/org/purplei2p/i2pd/I2PDActivity.java @@ -46,6 +46,8 @@ import androidx.core.content.ContextCompat; // For future package update checking import org.purplei2p.i2pd.BuildConfig; +import static android.provider.Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS; + public class I2PDActivity extends Activity { private static final String TAG = "i2pdActvt"; private static final int MY_PERMISSION_REQUEST_WRITE_EXTERNAL_STORAGE = 1; @@ -229,9 +231,14 @@ public class I2PDActivity extends Activity { public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.options_main, menu); + menu.findItem(R.id.action_battery_otimizations).setEnabled(isBatteryOptimizationsOpenOsDialogApiAvailable()); return true; } + private boolean isBatteryOptimizationsOpenOsDialogApiAvailable() { + return android.os.Build.VERSION.SDK_INT >= 23; + } + @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { // Handle action bar item clicks here. The action bar will @@ -254,12 +261,26 @@ public class I2PDActivity extends Activity { item.setTitle(R.string.action_cancel_graceful_stop); i2pdGracefulStop(); } - return true; + return true; + case R.id.action_battery_otimizations: + onActionBatteryOptimizations(); + return true; } return super.onOptionsItemSelected(item); } + private void onActionBatteryOptimizations() { + if (isBatteryOptimizationsOpenOsDialogApiAvailable()) { + try { + startActivity(new Intent(ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS)); + } catch (ActivityNotFoundException e) { + Log.e(TAG,"BATT_OPTIM_DIALOG_ActvtNotFound", e); + Toast.makeText(this, R.string.os_version_does_not_support_battery_optimizations_show_os_dialog_api, Toast.LENGTH_SHORT).show(); + } + } + } + private void i2pdStop() { cancelGracefulStop(); new Thread(() -> { @@ -389,6 +410,7 @@ public class I2PDActivity extends Activity { copyAsset(path + "/" + entry); } } catch (IOException e) { + Log.e(TAG,"ex ignored", e); copyFileAsset(path); } } @@ -518,7 +540,7 @@ public class I2PDActivity extends Activity { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.battery_optimizations_enabled); builder.setMessage(R.string.battery_optimizations_enabled_dialog); - builder.setPositiveButton(R.string.next, (dialog, which) -> { + builder.setPositiveButton(R.string.continue_str, (dialog, which) -> { try { startActivity(new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS, Uri.parse(PACKAGE_URI_SCHEME + getPackageName()))); } catch (ActivityNotFoundException e) {