Improve wake lock handling

This commit is contained in:
Trevor Slocum 2019-12-20 08:02:02 -08:00
parent 01085498ad
commit 09fb10833d
14 changed files with 45 additions and 24 deletions

View File

@ -1,5 +1,6 @@
1.5.8:
- Resolve minor sound delay by preloading sounds
- Increase session message maximum length from 160 to 4096
1.5.7:
- Added preset widgets

View File

@ -6,7 +6,6 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Bundle;
import androidx.core.app.NavUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
@ -15,6 +14,8 @@ import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import androidx.core.app.NavUtils;
public class AboutActivity extends Activity {
public String license = "";

View File

@ -6,6 +6,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.content.res.Resources;
import android.net.Uri;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

View File

@ -3,10 +3,11 @@ package sh.ftp.rocketninelabs.meditationassistant;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import androidx.annotation.MainThread;
import androidx.annotation.Nullable;
import androidx.annotation.WorkerThread;
import android.util.Log;
import net.openid.appauth.AppAuthConfiguration;
import net.openid.appauth.AuthState;

View File

@ -2,10 +2,11 @@ package sh.ftp.rocketninelabs.meditationassistant;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Log;
import androidx.annotation.AnyThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import android.util.Log;
import net.openid.appauth.AuthState;
import net.openid.appauth.AuthorizationException;

View File

@ -3,7 +3,6 @@ package sh.ftp.rocketninelabs.meditationassistant;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
@ -19,6 +18,8 @@ import android.widget.LinearLayout;
import android.widget.TableLayout;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import java.util.Calendar;
import java.util.Locale;

View File

@ -8,9 +8,10 @@ import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.provider.Settings;
import android.util.Log;
import androidx.core.app.NotificationCompat;
import androidx.core.app.TaskStackBuilder;
import android.util.Log;
import java.text.SimpleDateFormat;
import java.util.Calendar;

View File

@ -1803,10 +1803,11 @@ public class MainActivity extends Activity implements OnShowcaseEventListener {
Log.d("MeditationAssistant", "ALARM RECEIVER INTEGRATED: Received broadcast - Full: " + (fullWakeUp ? "Full" : "Partial") + " - Start/interval: " + (wakeUpStart ? "Start" : (wakeUpInterval ? "Interval" : "Neither")));
String newWakeLockID = getMeditationAssistant().acquireWakeLock(fullWakeUp);
if (wakeLockID != null) {
getMeditationAssistant().releaseWakeLock(wakeLockID);
}
wakeLockID = getMeditationAssistant().acquireWakeLock(fullWakeUp);
wakeLockID = newWakeLockID;
handler.removeCallbacks(clearWakeLock);
handler.postDelayed(clearWakeLock, 7000);

View File

@ -28,8 +28,6 @@ import android.os.Looper;
import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.provider.Settings;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
@ -40,6 +38,9 @@ import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
import androidx.core.app.NotificationCompat;
import com.nononsenseapps.filepicker.FilePickerActivity;
import com.nononsenseapps.filepicker.Utils;
import com.opencsv.CSVReader;
@ -2454,15 +2455,15 @@ public class MeditationAssistant extends Application {
return BuildConfig.VERSION_CODE;
}
public String acquireWakeLock(Boolean fullWakeUp) {
public synchronized String acquireWakeLock(Boolean fullWakeUp) {
return wakeLocker.acquire(getApplicationContext(), fullWakeUp);
}
public void releaseWakeLock(String wakeLockID) {
public synchronized void releaseWakeLock(String wakeLockID) {
wakeLocker.release(wakeLockID);
}
public void releaseAllWakeLocks() {
public synchronized void releaseAllWakeLocks() {
wakeLocker.releaseAll();
}

View File

@ -3,13 +3,6 @@ package sh.ftp.rocketninelabs.meditationassistant;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.core.app.NavUtils;
import androidx.viewpager.widget.PagerTabStrip;
import androidx.viewpager.widget.ViewPager;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.Menu;
@ -19,6 +12,14 @@ import android.widget.ArrayAdapter;
import android.widget.TabHost;
import android.widget.TextView;
import androidx.core.app.NavUtils;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.PagerTabStrip;
import androidx.viewpager.widget.ViewPager;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;

View File

@ -4,12 +4,13 @@ import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.fragment.app.ListFragment;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.ListView;
import androidx.fragment.app.ListFragment;
public class SessionsFragment extends ListFragment {
public MeditationAssistant ma = null;
AlertDialog sessionDialog = null;

View File

@ -25,14 +25,15 @@ import android.preference.PreferenceActivity;
import android.preference.PreferenceCategory;
import android.preference.PreferenceFragment;
import android.preference.RingtonePreference;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.text.TextUtils;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import com.nononsenseapps.filepicker.FilePickerActivity;
import com.nononsenseapps.filepicker.Utils;

View File

@ -3,13 +3,14 @@ package sh.ftp.rocketninelabs.meditationassistant;
import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import androidx.fragment.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import androidx.fragment.app.Fragment;
import java.text.NumberFormat;
import java.util.Locale;

View File

@ -5,15 +5,19 @@ import android.content.Context;
import android.os.PowerManager;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
class WakeLocker {
private List<String> wakeLocks = new CopyOnWriteArrayList<>();
private List<String> wakeLocks = new ArrayList<>();
private PowerManager.WakeLock wakeLockScreenOff;
private PowerManager.WakeLock wakeLockScreenOn;
void printLockStatus() {
Log.d("MeditationAssistant", "WAKELOCKER: ScreenOff: " + (wakeLockScreenOff.isHeld() ? "HELD" : "RELEASED") + " - ScreenOn: " + (wakeLockScreenOn.isHeld() ? "HELD" : "RELEASED"));
}
@SuppressLint({"WakelockTimeout"})
String acquire(Context ctx, Boolean turnScreenOn) {
String wakeLockID = String.valueOf(System.currentTimeMillis());
@ -41,6 +45,8 @@ class WakeLocker {
}
}
printLockStatus();
return wakeLockID;
}
@ -56,6 +62,8 @@ class WakeLocker {
wakeLockScreenOn.release();
}
}
printLockStatus();
}
void releaseAll() {