Skip to content

Commit 5190233

Browse files
committed
Improved power trigger
1 parent 8fa920f commit 5190233

File tree

12 files changed

+73
-27
lines changed

12 files changed

+73
-27
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
66

77
## [Unreleased]
88

9+
## [2.4.1] - 2019-10-20
10+
### Added
11+
- Added power trigger
12+
913
## [2.4.0] - 2019-08-12
1014
### Added
1115
- Added support Alpine Linux

app/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId 'ru.meefik.linuxdeploy'
99
minSdkVersion 15
1010
targetSdkVersion 28
11-
versionCode 251
12-
versionName "2.4.0"
11+
versionCode 252
12+
versionName "2.4.1"
1313
}
1414
buildTypes {
1515
release {
@@ -29,7 +29,7 @@ android {
2929

3030
dependencies {
3131
implementation 'com.google.android.material:material:1.0.0'
32-
implementation 'androidx.appcompat:appcompat:1.0.2'
32+
implementation 'androidx.appcompat:appcompat:1.1.0'
3333
implementation 'androidx.browser:browser:1.0.0'
3434
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
3535
}

app/src/main/AndroidManifest.xml

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
34
package="ru.meefik.linuxdeploy"
45
android:installLocation="internalOnly">
56

@@ -13,12 +14,12 @@
1314

1415
<application
1516
android:name=".App"
16-
android:allowBackup="true"
1717
android:icon="@mipmap/ic_launcher"
1818
android:label="@string/app_name"
1919
android:supportsRtl="true"
2020
android:theme="@style/DarkTheme"
21-
android:usesCleartextTraffic="true">
21+
android:usesCleartextTraffic="true"
22+
tools:ignore="GoogleAppIndexingWarning">
2223
<activity
2324
android:name=".MainActivity"
2425
android:label="@string/title_activity_main"
@@ -92,15 +93,6 @@
9293
<action android:name="android.intent.action.ACTION_SHUTDOWN" />
9394
</intent-filter>
9495
</receiver>
95-
<receiver
96-
android:name="PowerReceiver"
97-
android:enabled="false"
98-
android:exported="false">
99-
<intent-filter>
100-
<action android:name="android.intent.action.SCREEN_ON" />
101-
<action android:name="android.intent.action.SCREEN_OFF" />
102-
</intent-filter>
103-
</receiver>
10496
<receiver
10597
android:name=".ActionReceiver"
10698
android:enabled="true"
@@ -109,9 +101,14 @@
109101
<action android:name="ru.meefik.linuxdeploy.BROADCAST_ACTION" />
110102
</intent-filter>
111103
</receiver>
104+
<receiver
105+
android:name=".PowerReceiver"
106+
android:enabled="false"
107+
android:exported="false">
108+
</receiver>
112109
<receiver
113110
android:name=".NetworkReceiver"
114-
android:enabled="true"
111+
android:enabled="false"
115112
android:exported="false">
116113
</receiver>
117114

app/src/main/java/ru/meefik/linuxdeploy/MainActivity.java

Lines changed: 27 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ public class MainActivity extends AppCompatActivity implements
4747
private static PowerManager.WakeLock wakeLock;
4848

4949
private NetworkReceiver networkReceiver;
50+
private PowerReceiver powerReceiver;
5051

5152
private NetworkReceiver getNetworkReceiver() {
5253
if (networkReceiver == null)
@@ -55,6 +56,13 @@ private NetworkReceiver getNetworkReceiver() {
5556
return networkReceiver;
5657
}
5758

59+
private PowerReceiver getPowerReceiver() {
60+
if (powerReceiver == null)
61+
powerReceiver = new PowerReceiver();
62+
63+
return powerReceiver;
64+
}
65+
5866
/**
5967
* Show message in TextView, used from Logger
6068
*
@@ -80,7 +88,9 @@ public void onCreate(Bundle savedInstanceState) {
8088
setContentView(R.layout.activity_main);
8189

8290
ActionBar actionBar = getSupportActionBar();
83-
actionBar.setDisplayHomeAsUpEnabled(true);
91+
if (actionBar != null) {
92+
actionBar.setDisplayHomeAsUpEnabled(true);
93+
}
8494

8595
DrawerLayout drawer = findViewById(R.id.drawer_layout);
8696
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
@@ -113,6 +123,16 @@ public void onCreate(Bundle savedInstanceState) {
113123
unregisterReceiver(networkReceiver);
114124
}
115125

126+
// Power receiver
127+
if (PrefStore.isPowerTrack(this)) {
128+
IntentFilter filter = new IntentFilter();
129+
filter.addAction(Intent.ACTION_SCREEN_ON);
130+
filter.addAction(Intent.ACTION_SCREEN_OFF);
131+
registerReceiver(getPowerReceiver(), filter);
132+
} else if (powerReceiver != null) {
133+
unregisterReceiver(powerReceiver);
134+
}
135+
116136
if (EnvUtils.isLatestVersion(this)) {
117137
// start services
118138
EnvUtils.execServices(getBaseContext(), new String[]{"telnetd", "httpd"}, "start");
@@ -269,7 +289,7 @@ public void onResume() {
269289

270290
// Wake lock
271291
if (PrefStore.isWakeLock(this)) {
272-
if (!wakeLock.isHeld()) wakeLock.acquire();
292+
if (!wakeLock.isHeld()) wakeLock.acquire(60*60*1000L /*60 minutes*/);
273293
} else {
274294
if (wakeLock.isHeld()) wakeLock.release();
275295
}
@@ -420,13 +440,11 @@ private void updateEnvWithRequestPermissions() {
420440
@Override
421441
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
422442
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
423-
switch (requestCode) {
424-
case REQUEST_WRITE_STORAGE: {
425-
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
426-
new UpdateEnvTask(this).execute();
427-
} else {
428-
Toast.makeText(this, getString(R.string.write_permissions_disallow), Toast.LENGTH_LONG).show();
429-
}
443+
if (requestCode == REQUEST_WRITE_STORAGE) {
444+
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
445+
new UpdateEnvTask(this).execute();
446+
} else {
447+
Toast.makeText(this, getString(R.string.write_permissions_disallow), Toast.LENGTH_LONG).show();
430448
}
431449
}
432450
}

app/src/main/java/ru/meefik/linuxdeploy/PowerReceiver.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ public class PowerReceiver extends BroadcastReceiver {
88

99
@Override
1010
public void onReceive(final Context context, Intent intent) {
11-
EnvUtils.execService(context, "start", "core/power");
11+
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
12+
EnvUtils.execService(context, "stop", "core/power");
13+
} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
14+
EnvUtils.execService(context, "start", "core/power");
15+
}
1216
}
1317
}

app/src/main/java/ru/meefik/linuxdeploy/PrefStore.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,6 +371,16 @@ static Boolean isNetTrack(Context c) {
371371
return SETTINGS.get(c, "nettrack").equals("true");
372372
}
373373

374+
/**
375+
* Track changes of the power status is enabled
376+
*
377+
* @param c context
378+
* @return true if enabled
379+
*/
380+
static Boolean isPowerTrack(Context c) {
381+
return SETTINGS.get(c, "powertrack").equals("true");
382+
}
383+
374384
/**
375385
* Show icon is enabled
376386
*

app/src/main/res/values-ru/strings.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,5 +247,9 @@
247247
<string name="hint_mounts_target">Целевая (опционально)</string>
248248
<string name="dialog_title_net_trigger_preference">Путь к скрипту триггера</string>
249249
<string name="title_net_trigger_preference">Сетевой триггер</string>
250+
<string name="dialog_title_power_trigger_preference">Путь к скрипту триггера</string>
251+
<string name="title_power_trigger_preference">Триггер питания</string>
252+
<string name="summary_powertrack_preference">Отслеживать изменения питания и обновлять контейнер</string>
253+
<string name="title_powertrack_preference">Отслеживать изменения питания</string>
250254

251255
</resources>

app/src/main/res/values/preferences.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
<string name="autostart" translatable="false">false</string>
1414
<string name="autostart_delay" translatable="false">30</string>
1515
<string name="nettrack" translatable="false">false</string>
16+
<string name="powertrack" translatable="false">false</string>
1617
<string name="env_dir" translatable="false"></string>
1718
<string name="repository_url" translatable="false">http://hub.meefik.ru</string>
1819
<string name="path" translatable="false"></string>

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,9 @@
103103
<!-- Network trigger -->
104104
<string name="title_nettrack_preference">Track network changes</string>
105105
<string name="summary_nettrack_preference">Track changes of the network and update the container</string>
106+
<!-- Power trigger -->
107+
<string name="title_powertrack_preference">Track power changes</string>
108+
<string name="summary_powertrack_preference">Track changes of the power and update the container</string>
106109

107110
<!-- ENVIRONMENT -->
108111
<string name="env_preferences">Environment</string>

0 commit comments

Comments
 (0)