diff --git a/OpenPods/app/src/main/java/com/dosse/airpods/notification/NotificationThread.java b/OpenPods/app/src/main/java/com/dosse/airpods/notification/NotificationThread.java
index 7c79100..3de6c9e 100644
--- a/OpenPods/app/src/main/java/com/dosse/airpods/notification/NotificationThread.java
+++ b/OpenPods/app/src/main/java/com/dosse/airpods/notification/NotificationThread.java
@@ -1,14 +1,14 @@
package com.dosse.airpods.notification;
+import static com.dosse.airpods.notification.NotificationBuilder.NOTIFICATION_ID;
+import static com.dosse.airpods.notification.NotificationBuilder.TAG;
+
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.content.Context;
import android.os.Build;
-import static com.dosse.airpods.notification.NotificationBuilder.NOTIFICATION_ID;
-import static com.dosse.airpods.notification.NotificationBuilder.TAG;
-
import com.dosse.airpods.pods.PodsStatus;
import com.dosse.airpods.utils.Logger;
@@ -26,7 +26,7 @@ import com.dosse.airpods.utils.Logger;
public abstract class NotificationThread extends Thread {
private static final long SLEEP_TIMEOUT = 1000;
- private final Context mContext;
+ private final String compat;
private final NotificationBuilder builder;
private final NotificationManager mNotifyManager;
@@ -35,8 +35,8 @@ public abstract class NotificationThread extends Thread {
public abstract PodsStatus getStatus ();
public NotificationThread (Context context) {
- mContext = context;
- mNotifyManager = (NotificationManager)mContext.getSystemService(Context.NOTIFICATION_SERVICE);
+ compat = context.getPackageManager().getInstallerPackageName(context.getPackageName());
+ mNotifyManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
// On Oreo (API27) and newer, create a notification channel.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel(TAG, TAG, NotificationManager.IMPORTANCE_LOW);
@@ -47,12 +47,11 @@ public abstract class NotificationThread extends Thread {
channel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
mNotifyManager.createNotificationChannel(channel);
}
- builder = new NotificationBuilder(mContext);
+ builder = new NotificationBuilder(context);
}
public void run () {
boolean notificationShowing = false;
- String compat = mContext.getPackageManager().getInstallerPackageName(mContext.getPackageName());
while (!Thread.interrupted()) {
PodsStatus status = getStatus();
diff --git a/OpenPods/app/src/main/java/com/dosse/airpods/pods/PodsService.java b/OpenPods/app/src/main/java/com/dosse/airpods/pods/PodsService.java
index c4bc43a..9bf0af6 100644
--- a/OpenPods/app/src/main/java/com/dosse/airpods/pods/PodsService.java
+++ b/OpenPods/app/src/main/java/com/dosse/airpods/pods/PodsService.java
@@ -1,8 +1,8 @@
package com.dosse.airpods.pods;
import static com.dosse.airpods.pods.PodsStatusScanCallback.getScanFilters;
+import static com.dosse.airpods.utils.SharedPreferencesUtils.isSavingBattery;
-import android.annotation.SuppressLint;
import android.app.Notification;
import android.app.NotificationChannel;
import android.app.NotificationManager;
@@ -17,14 +17,12 @@ import android.bluetooth.le.ScanSettings;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import android.content.SharedPreferences;
import android.os.Build;
import android.os.IBinder;
import android.os.ParcelUuid;
import android.provider.Settings;
import androidx.annotation.RequiresApi;
-import androidx.preference.PreferenceManager;
import com.dosse.airpods.receivers.BluetoothListener;
import com.dosse.airpods.receivers.BluetoothReceiver;
@@ -46,7 +44,6 @@ public class PodsService extends Service {
private BluetoothLeScanner btScanner;
private PodsStatus status = PodsStatus.DISCONNECTED;
- @SuppressLint("StaticFieldLeak")
private static NotificationThread n = null;
private static boolean maybeConnected = false;
@@ -67,8 +64,6 @@ public class PodsService extends Service {
try {
Logger.debug("START SCANNER");
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
- boolean batterySaver = prefs.getBoolean("batterySaver", false);
BluetoothManager btManager = (BluetoothManager)getSystemService(Context.BLUETOOTH_SERVICE);
BluetoothAdapter btAdapter = btManager.getAdapter();
@@ -91,7 +86,7 @@ public class PodsService extends Service {
btScanner = btAdapter.getBluetoothLeScanner();
ScanSettings scanSettings = new ScanSettings.Builder()
- .setScanMode(batterySaver ? ScanSettings.SCAN_MODE_LOW_POWER : ScanSettings.SCAN_MODE_LOW_LATENCY)
+ .setScanMode(isSavingBattery(getApplicationContext()) ? ScanSettings.SCAN_MODE_LOW_POWER : ScanSettings.SCAN_MODE_LOW_LATENCY)
.setReportDelay(1) // DON'T USE 0
.build();
@@ -230,9 +225,7 @@ public class PodsService extends Service {
Logger.error(t);
}
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
-
- if (prefs.getBoolean("batterySaver", false)) {
+ if (isSavingBattery(getApplicationContext())) {
screenReceiver = new ScreenReceiver() {
@Override
public void onStart () {
diff --git a/OpenPods/app/src/main/java/com/dosse/airpods/ui/AboutActivity.java b/OpenPods/app/src/main/java/com/dosse/airpods/ui/AboutActivity.java
index 57e3157..0a87785 100644
--- a/OpenPods/app/src/main/java/com/dosse/airpods/ui/AboutActivity.java
+++ b/OpenPods/app/src/main/java/com/dosse/airpods/ui/AboutActivity.java
@@ -12,12 +12,6 @@ import com.dosse.airpods.R;
public class AboutActivity extends AppCompatActivity {
-
- public static final String websiteURL = "https://fdossena.com/?p=openPods/index.frag";
- public static final String githubURL = "https://github.com/adolfintel/OpenPods";
- public static final String donateURL = "https://paypal.me/sineisochronic";
- public static final String fdroidURL = "https://f-droid.org/packages/com.dosse.airpods/";
-
@Override
protected void onCreate (Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -40,10 +34,10 @@ public class AboutActivity extends AppCompatActivity {
((WebView)(findViewById(R.id.license))).loadUrl("file:///android_asset/license.html");
- findViewById(R.id.website).setOnClickListener(v -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(websiteURL))));
- findViewById(R.id.github).setOnClickListener(v -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(githubURL))));
+ findViewById(R.id.website).setOnClickListener(v -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.website_url)))));
+ findViewById(R.id.github).setOnClickListener(v -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.github_url)))));
findViewById(R.id.donate).setOnClickListener(v -> {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(donateURL)));
+ startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.donate_url))));
Toast.makeText(AboutActivity.this, "❤️", Toast.LENGTH_SHORT).show();
});
diff --git a/OpenPods/app/src/main/java/com/dosse/airpods/ui/SettingsActivity.java b/OpenPods/app/src/main/java/com/dosse/airpods/ui/SettingsActivity.java
index 3d4baad..fb534ac 100644
--- a/OpenPods/app/src/main/java/com/dosse/airpods/ui/SettingsActivity.java
+++ b/OpenPods/app/src/main/java/com/dosse/airpods/ui/SettingsActivity.java
@@ -1,19 +1,17 @@
package com.dosse.airpods.ui;
-import android.content.SharedPreferences;
import android.os.Bundle;
-import android.view.MenuItem;
+import android.widget.Toast;
-import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
-import androidx.preference.PreferenceManager;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import com.dosse.airpods.BuildConfig;
import com.dosse.airpods.R;
import com.dosse.airpods.receivers.StartupReceiver;
-import java.util.Objects;
-
-public class SettingsActivity extends AppCompatActivity implements SharedPreferences.OnSharedPreferenceChangeListener {
+public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate (Bundle savedInstanceState) {
@@ -23,25 +21,36 @@ public class SettingsActivity extends AppCompatActivity implements SharedPrefere
.beginTransaction()
.replace(R.id.settings_container, new SettingsFragment())
.commit();
- Objects.requireNonNull(getSupportActionBar()).setDisplayHomeAsUpEnabled(true);
-
- SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
- prefs.registerOnSharedPreferenceChangeListener(this);
}
- @Override
- public void onSharedPreferenceChanged (SharedPreferences sharedPreferences, String key) {
- if (key.equalsIgnoreCase("batterySaver"))
- StartupReceiver.restartPodsService(getApplicationContext());
- }
+ public static class SettingsFragment extends PreferenceFragmentCompat {
- @Override
- public boolean onOptionsItemSelected (@NonNull MenuItem item) {
- if (item.getItemId() == android.R.id.home) {
- onBackPressed();
- return true;
+ @Override
+ public void onCreatePreferences (Bundle savedInstanceState, String rootKey) {
+ setPreferencesFromResource(R.xml.preference_screen, rootKey);
+
+ getPreference("batterySaver").setOnPreferenceClickListener(preference -> {
+ StartupReceiver.restartPodsService(requireContext());
+ return true;
+ });
+
+ getPreference("restartService").setOnPreferenceClickListener(preference -> {
+ StartupReceiver.restartPodsService(requireContext());
+ return true;
+ });
+
+ getPreference("about").setSummary(String.format("%s v%s", getString(R.string.app_name), BuildConfig.VERSION_NAME));
+
+ getPreference("donate").setOnPreferenceClickListener(preference -> {
+ Toast.makeText(requireContext(), "❤️", Toast.LENGTH_SHORT).show();
+ return false;
+ });
}
- return false;
+
+ private Preference getPreference (String key) {
+ return getPreferenceManager().findPreference(key);
+ }
+
}
}
diff --git a/OpenPods/app/src/main/java/com/dosse/airpods/ui/SettingsFragment.java b/OpenPods/app/src/main/java/com/dosse/airpods/ui/SettingsFragment.java
deleted file mode 100644
index 4869576..0000000
--- a/OpenPods/app/src/main/java/com/dosse/airpods/ui/SettingsFragment.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.dosse.airpods.ui;
-
-import static com.dosse.airpods.ui.AboutActivity.donateURL;
-import static com.dosse.airpods.ui.AboutActivity.fdroidURL;
-import static com.dosse.airpods.ui.AboutActivity.githubURL;
-import static com.dosse.airpods.ui.AboutActivity.websiteURL;
-
-import android.content.Intent;
-import android.net.Uri;
-import android.os.Bundle;
-import android.widget.Toast;
-
-import androidx.preference.Preference;
-import androidx.preference.PreferenceFragmentCompat;
-
-import com.dosse.airpods.BuildConfig;
-import com.dosse.airpods.R;
-import com.dosse.airpods.receivers.StartupReceiver;
-
-import java.util.Objects;
-
-public class SettingsFragment extends PreferenceFragmentCompat {
-
- @Override
- public void onCreatePreferences (Bundle savedInstanceState, String rootKey) {
- setPreferencesFromResource(R.xml.preference_screen, rootKey);
-
- Preference mRestartPreference = getPreferenceManager().findPreference("restartService");
- Objects.requireNonNull(mRestartPreference).setOnPreferenceClickListener(preference -> {
- StartupReceiver.restartPodsService(requireContext());
- return true;
- });
-
- Preference mAboutPreference = getPreferenceManager().findPreference("about");
- Objects.requireNonNull(mAboutPreference).setSummary(String.format("%s v%s", getString(R.string.app_name), BuildConfig.VERSION_NAME));
- mAboutPreference.setOnPreferenceClickListener(preference -> {
- startActivity(new Intent(requireContext(), AboutActivity.class));
- return true;
- });
-
- Preference mFDroidPreference = getPreferenceManager().findPreference("fdroid");
- Objects.requireNonNull(mFDroidPreference).setOnPreferenceClickListener(preference -> {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(fdroidURL)));
- return true;
- });
-
- Preference mGithubPreference = getPreferenceManager().findPreference("github");
- Objects.requireNonNull(mGithubPreference).setOnPreferenceClickListener(preference -> {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(githubURL)));
- return true;
- });
-
- Preference mWebsitePreference = getPreferenceManager().findPreference("website");
- Objects.requireNonNull(mWebsitePreference).setOnPreferenceClickListener(preference -> {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(websiteURL)));
- return true;
- });
-
- Preference mDonationPreference = getPreferenceManager().findPreference("donate");
- Objects.requireNonNull(mDonationPreference).setOnPreferenceClickListener(preference -> {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(donateURL)));
- Toast.makeText(requireContext(), "❤️", Toast.LENGTH_SHORT).show();
- return true;
- });
- }
-
-}
\ No newline at end of file
diff --git a/OpenPods/app/src/main/java/com/dosse/airpods/utils/SharedPreferencesUtils.java b/OpenPods/app/src/main/java/com/dosse/airpods/utils/SharedPreferencesUtils.java
new file mode 100644
index 0000000..4d5b6cb
--- /dev/null
+++ b/OpenPods/app/src/main/java/com/dosse/airpods/utils/SharedPreferencesUtils.java
@@ -0,0 +1,15 @@
+package com.dosse.airpods.utils;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+
+import androidx.preference.PreferenceManager;
+
+public class SharedPreferencesUtils {
+
+ public static boolean isSavingBattery (Context context) {
+ SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
+ return prefs.getBoolean("batterySaver", false);
+ }
+
+}
diff --git a/OpenPods/app/src/main/res/values/strings.xml b/OpenPods/app/src/main/res/values/strings.xml
index 4f3187f..db47420 100644
--- a/OpenPods/app/src/main/res/values/strings.xml
+++ b/OpenPods/app/src/main/res/values/strings.xml
@@ -50,4 +50,9 @@
Website
Github
Donate
+
+ https://f-droid.org/packages/com.dosse.airpods/
+ https://fdossena.com/?p=openPods/index.frag
+ https://github.com/adolfintel/OpenPods
+ https://paypal.me/sineisochronic
diff --git a/OpenPods/app/src/main/res/xml/preference_screen.xml b/OpenPods/app/src/main/res/xml/preference_screen.xml
index be67dd6..3e045c9 100644
--- a/OpenPods/app/src/main/res/xml/preference_screen.xml
+++ b/OpenPods/app/src/main/res/xml/preference_screen.xml
@@ -6,7 +6,7 @@
android:title="@string/app_name"
app:iconSpaceReserved="false">
-
+ app:iconSpaceReserved="false">
+
+
-
+ app:iconSpaceReserved="false">
+
+
+
+ app:iconSpaceReserved="false">
+
+
+ app:iconSpaceReserved="false">
+
+
+ app:iconSpaceReserved="false">
+
+