[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]
[tor-commits] [snowflake-mobile/master] Added bare service class and called it from MainActivity
commit cfbf2d3f4863f591d451303820476a0d5fac6f4b
Author: Hashik Donthineni <HashikDonthineni@xxxxxxxxx>
Date: Fri Jun 5 02:18:34 2020 +0530
Added bare service class and called it from MainActivity
---
.idea/misc.xml | 2 +-
app/build.gradle | 4 ++
.../org/torproject/snowflake/MainActivity.java | 60 ++++++++++++++--------
.../constants/ForegroundServiceConstants.java | 10 ++++
app/src/main/res/values/strings.xml | 2 +
5 files changed, 55 insertions(+), 23 deletions(-)
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 37a7509..7bfef59 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
diff --git a/app/build.gradle b/app/build.gradle
index 113f2a2..9580614 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -20,6 +20,10 @@ android {
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
}
diff --git a/app/src/main/java/org/torproject/snowflake/MainActivity.java b/app/src/main/java/org/torproject/snowflake/MainActivity.java
index 240e285..188eb57 100644
--- a/app/src/main/java/org/torproject/snowflake/MainActivity.java
+++ b/app/src/main/java/org/torproject/snowflake/MainActivity.java
@@ -1,44 +1,60 @@
package org.torproject.snowflake;
-import androidx.appcompat.app.AppCompatActivity;
-
-import android.app.ActivityManager;
-import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Build;
import android.os.Bundle;
import android.widget.Button;
-import android.widget.Toast;
+import androidx.appcompat.app.AppCompatActivity;
+
+import org.torproject.snowflake.constants.ForegroundServiceConstants;
+
+/**
+ * MainActivity is the main UI of the application.
+ */
public class MainActivity extends AppCompatActivity {
+ private static final String TAG = "MainActivity";
+ private SharedPreferences sharedPreferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
+ sharedPreferences = getSharedPreferences(getString(R.string.sharedpreference_file), MODE_PRIVATE);
Button startButton = findViewById(R.id.start_button);
-
startButton.setOnClickListener(v -> {
- if (isServiceRunning()){ //Toggling the service.
- //TODO: Start service
- }
- else{
- //TODO: Stop service
- }
+ if (isServiceRunning()) //Toggling the service.
+ serviceToggle(ForegroundServiceConstants.ACTION_STOP);
+ else
+ serviceToggle(ForegroundServiceConstants.ACTION_START);
});
if (BuildConfig.DEBUG)
startButton.performClick(); //To perform an automatic click in testing environment.
}
- //Test to see if the service is already running.
- private boolean isServiceRunning() {
- ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
- if (manager != null) {
- for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) {
- if (MyPersistentService.class.getName().equals(service.service.getClassName())) {
- return true;
- }
- }
+ /**
+ * Turn service on/off.
+ *
+ * @param action An Action from ForegroundServiceConstants.
+ */
+ private void serviceToggle(String action) {
+ Intent serviceIntent = new Intent(MainActivity.this, MyPersistentService.class);
+ serviceIntent.setAction(action);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ startForegroundService(serviceIntent);
+ } else {
+ startService(serviceIntent);
}
- return false;
+ }
+
+ /**
+ * Test to see if the MyPersistentService is running or not.
+ *
+ * @return boolean whether the service is running or not.
+ */
+ private boolean isServiceRunning() {
+ return sharedPreferences.getBoolean(getString(R.string.is_service_running_bool), false);
}
}
diff --git a/app/src/main/java/org/torproject/snowflake/constants/ForegroundServiceConstants.java b/app/src/main/java/org/torproject/snowflake/constants/ForegroundServiceConstants.java
new file mode 100644
index 0000000..b446f0e
--- /dev/null
+++ b/app/src/main/java/org/torproject/snowflake/constants/ForegroundServiceConstants.java
@@ -0,0 +1,10 @@
+package org.torproject.snowflake.constants;
+
+public class ForegroundServiceConstants {
+ public static final String ACTION_START = "1";
+ public static final String ACTION_STOP = "0";
+
+ //Shared Preferences State
+ public static final int SERVICE_RUNNING = 1;
+ public static final int SERVICE_STOPPED = 0;
+}
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a10296e..85551fb 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,3 +1,5 @@
<resources>
<string name="app_name">Snowflake</string>
+ <string name="sharedpreference_file">org.torproject.snowflake.snowflake_preferences</string>
+ <string name="is_service_running_bool">is_service_running</string>
</resources>
_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits