diff --git a/app/build.gradle b/app/build.gradle index 669124b..5b9b582 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -31,6 +31,8 @@ dependencies { implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.0-beta01' implementation 'com.google.android.material:material:1.13.0-alpha06' + implementation 'androidx.activity:activity:1.9.3' + implementation 'com.android.support:cardview-v7:28.0.0' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test:runner:1.6.2' diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1ac7256..576da27 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,6 +4,8 @@ + + @@ -28,7 +30,7 @@ + android:theme="@style/AppTheme.NoActionBar" /> + android:permission="android.permission.BIND_JOB_SERVICE" + android:foregroundServiceType="specialUse" /> diff --git a/app/src/main/java/com/wesaphzt/privatelock/IntroActivity.java b/app/src/main/java/com/wesaphzt/privatelock/IntroActivity.java index bc056d0..7963a19 100644 --- a/app/src/main/java/com/wesaphzt/privatelock/IntroActivity.java +++ b/app/src/main/java/com/wesaphzt/privatelock/IntroActivity.java @@ -11,11 +11,13 @@ import com.github.appintro.*; import com.github.appintro.model.*; +import com.google.android.material.color.DynamicColors; public class IntroActivity extends AppIntro { @Override protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); //fullscreen diff --git a/app/src/main/java/com/wesaphzt/privatelock/MainActivity.java b/app/src/main/java/com/wesaphzt/privatelock/MainActivity.java index 3f1b4d7..f010e46 100644 --- a/app/src/main/java/com/wesaphzt/privatelock/MainActivity.java +++ b/app/src/main/java/com/wesaphzt/privatelock/MainActivity.java @@ -9,6 +9,7 @@ import android.content.SharedPreferences; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.res.TypedArray; import android.hardware.Sensor; import android.hardware.SensorEvent; import android.hardware.SensorEventListener; @@ -18,6 +19,9 @@ import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import androidx.core.graphics.Insets; +import androidx.core.view.ViewCompat; +import androidx.core.view.WindowInsetsCompat; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; @@ -27,12 +31,14 @@ import android.view.View; import android.view.Menu; import android.view.MenuItem; +import android.view.ViewGroup; import android.view.ViewTreeObserver; import android.widget.RelativeLayout; import android.widget.SeekBar; import android.widget.TextView; import android.widget.Toast; +import com.google.android.material.color.DynamicColors; import com.wesaphzt.privatelock.animation.Circle; import com.wesaphzt.privatelock.animation.CircleAngleAnimation; import com.wesaphzt.privatelock.fragments.FragmentAbout; @@ -89,13 +95,14 @@ public class MainActivity extends AppCompatActivity { private Circle circle; private Circle circle_bg; //circle color - private int circleDefaultR = 88; private int circleDefaultG = 186; private int circleDefaultB = 255; + private final int circleDefaultR = 88; private final int circleDefaultG = 186; private final int circleDefaultB = 255; int animationDuration = 220; CircleAngleAnimation animation; @Override protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); context = getApplicationContext(); @@ -108,6 +115,39 @@ protected void onCreate(Bundle savedInstanceState) { Toolbar toolbar = findViewById(R.id.toolbar); setSupportActionBar(toolbar); + ViewCompat.setOnApplyWindowInsetsListener(toolbar, (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + // Apply the insets as a margin to the view. This solution sets only the + // bottom, left, and right dimensions, but you can apply whichever insets are + // appropriate to your layout. You can also update the view padding if that's + // more appropriate. + ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + mlp.leftMargin = insets.left; + mlp.topMargin = insets.top; + mlp.rightMargin = insets.right; + v.setLayoutParams(mlp); + + // Return CONSUMED if you don't want want the window insets to keep passing + // down to descendant views. + return WindowInsetsCompat.CONSUMED; + }); + + ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.last_card), (v, windowInsets) -> { + Insets insets = windowInsets.getInsets(WindowInsetsCompat.Type.systemBars()); + // Apply the insets as a margin to the view. This solution sets only the + // bottom, left, and right dimensions, but you can apply whichever insets are + // appropriate to your layout. You can also update the view padding if that's + // more appropriate. + ViewGroup.MarginLayoutParams mlp = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); + mlp.bottomMargin = insets.bottom; + v.setLayoutParams(mlp); + + // Return CONSUMED if you don't want want the window insets to keep passing + // down to descendant views. + return WindowInsetsCompat.CONSUMED; + }); + + getSupportFragmentManager().addOnBackStackChangedListener( new FragmentManager.OnBackStackChangedListener() { public void onBackStackChanged() { @@ -337,9 +377,13 @@ public boolean onOptionsItemSelected(MenuItem item) { } } else if (id == R.id.action_stop) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - NotificationManager notificationManager = - (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); - notificationManager.deleteNotificationChannel(CHANNEL_ID); + try { + NotificationManager notificationManager = + (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); + notificationManager.deleteNotificationChannel(CHANNEL_ID); + } catch (java.lang.SecurityException e) { + // to be expected tbh + } disabled = true; mSensorManager.unregisterListener(activeListener); @@ -373,7 +417,7 @@ public boolean onOptionsItemSelected(MenuItem item) { if (fragment != null) { FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction(); fragmentTransaction.setCustomAnimations(R.anim.enter_from_left, R.anim.exit_to_right, R.anim.enter_from_right, R.anim.exit_to_left); - fragmentTransaction.add(R.id.content_main, fragment); + fragmentTransaction.replace(R.id.content_main, fragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); } diff --git a/app/src/main/java/com/wesaphzt/privatelock/fragments/FragmentSettings.java b/app/src/main/java/com/wesaphzt/privatelock/fragments/FragmentSettings.java index 5289f55..ccde220 100644 --- a/app/src/main/java/com/wesaphzt/privatelock/fragments/FragmentSettings.java +++ b/app/src/main/java/com/wesaphzt/privatelock/fragments/FragmentSettings.java @@ -2,6 +2,7 @@ import android.content.Context; import android.content.SharedPreferences; +import android.content.res.TypedArray; import android.os.Bundle; import androidx.annotation.Nullable; @@ -9,9 +10,9 @@ import android.view.View; import android.widget.Toast; -import androidx.preference.CheckBoxPreference; import androidx.preference.PreferenceFragmentCompat; import androidx.preference.PreferenceManager; +import androidx.preference.SwitchPreference; import com.wesaphzt.privatelock.R; @@ -19,7 +20,7 @@ public class FragmentSettings extends PreferenceFragmentCompat { private Context context; - private CheckBoxPreference cbRunConstant; + private SwitchPreference runConstant; private SharedPreferences sharedPreferences; private SharedPreferences.OnSharedPreferenceChangeListener sharedPreferenceChangeListener; @@ -36,7 +37,7 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) { //this static call will reset default values only on the first read PreferenceManager.setDefaultValues(context, R.xml.preferences, false); - cbRunConstant = (CheckBoxPreference) findPreference("RUN_CONSTANT"); + runConstant = (SwitchPreference) findPreference("RUN_CONSTANT"); } @Override @@ -68,13 +69,18 @@ public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { //set title getActivity().setTitle("Settings"); - //bg color - view.setBackgroundColor(getResources().getColor(R.color.white)); + TypedArray array = context.getTheme().obtainStyledAttributes(new int[] { + android.R.attr.colorBackground, + }); + int backgroundColor = array.getColor(0, 0xFF00FF); + array.recycle(); + + view.setBackgroundColor(backgroundColor); sharedPreferenceChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences prefs, String key) { - if(key.equals("RUN_CONSTANT") && cbRunConstant.isChecked()) { + if(key.equals("RUN_CONSTANT") && runConstant.isChecked()) { Toast.makeText(context, getString(R.string.settings_restart_service_toast), Toast.LENGTH_LONG).show(); } } diff --git a/app/src/main/java/com/wesaphzt/privatelock/service/LockService.java b/app/src/main/java/com/wesaphzt/privatelock/service/LockService.java index 285d343..681fe49 100644 --- a/app/src/main/java/com/wesaphzt/privatelock/service/LockService.java +++ b/app/src/main/java/com/wesaphzt/privatelock/service/LockService.java @@ -301,12 +301,12 @@ private void setNotification() { //notification stop button Intent intentStopAction = new Intent(context, NotificationReceiver.class); intentStopAction.putExtra("lock_service","lock_service_notification"); - pendingCloseIntent = PendingIntent.getBroadcast(context,0, intentStopAction, PendingIntent.FLAG_UPDATE_CURRENT); + pendingCloseIntent = PendingIntent.getBroadcast(context,0, intentStopAction, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); //notification pause button Intent intentPauseAction = new Intent(context, PauseReceiver.class); intentPauseAction.putExtra("pause_service","pause_service_time"); - pendingPauseIntent = PendingIntent.getBroadcast(context,0, intentPauseAction, PendingIntent.FLAG_UPDATE_CURRENT); + pendingPauseIntent = PendingIntent.getBroadcast(context,0, intentPauseAction, PendingIntent.FLAG_UPDATE_CURRENT | PendingIntent.FLAG_IMMUTABLE); NotificationCompat.Builder notificationBuilder; diff --git a/app/src/main/res/drawable-night/ic_about_bug_report_24dp.xml b/app/src/main/res/drawable-night/ic_about_bug_report_24dp.xml new file mode 100644 index 0000000..53906b6 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_about_bug_report_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_about_code_24dp.xml b/app/src/main/res/drawable-night/ic_about_code_24dp.xml new file mode 100644 index 0000000..986009e --- /dev/null +++ b/app/src/main/res/drawable-night/ic_about_code_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_about_copyright_24dp.xml b/app/src/main/res/drawable-night/ic_about_copyright_24dp.xml new file mode 100644 index 0000000..18cd5ce --- /dev/null +++ b/app/src/main/res/drawable-night/ic_about_copyright_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_about_info_outline_24dp.xml b/app/src/main/res/drawable-night/ic_about_info_outline_24dp.xml new file mode 100644 index 0000000..f150f87 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_about_info_outline_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_about_person_24dp.xml b/app/src/main/res/drawable-night/ic_about_person_24dp.xml new file mode 100644 index 0000000..188af0f --- /dev/null +++ b/app/src/main/res/drawable-night/ic_about_person_24dp.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/drawable-night/ic_action_settings_24dp.xml b/app/src/main/res/drawable-night/ic_action_settings_24dp.xml new file mode 100644 index 0000000..d6003f1 --- /dev/null +++ b/app/src/main/res/drawable-night/ic_action_settings_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable-notnight/ic_action_settings_24dp.xml b/app/src/main/res/drawable-notnight/ic_action_settings_24dp.xml new file mode 100644 index 0000000..9dfb29e --- /dev/null +++ b/app/src/main/res/drawable-notnight/ic_action_settings_24dp.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/ic_about_bug_report_black_24dp.xml b/app/src/main/res/drawable/ic_about_bug_report_24dp.xml similarity index 94% rename from app/src/main/res/drawable/ic_about_bug_report_black_24dp.xml rename to app/src/main/res/drawable/ic_about_bug_report_24dp.xml index 4d83902..ac83c8c 100644 --- a/app/src/main/res/drawable/ic_about_bug_report_black_24dp.xml +++ b/app/src/main/res/drawable/ic_about_bug_report_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_about_code_black_24dp.xml b/app/src/main/res/drawable/ic_about_code_24dp.xml similarity index 90% rename from app/src/main/res/drawable/ic_about_code_black_24dp.xml rename to app/src/main/res/drawable/ic_about_code_24dp.xml index 6f1ccb6..5fcddba 100644 --- a/app/src/main/res/drawable/ic_about_code_black_24dp.xml +++ b/app/src/main/res/drawable/ic_about_code_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_about_copyright_black_24dp.xml b/app/src/main/res/drawable/ic_about_copyright_24dp.xml similarity index 97% rename from app/src/main/res/drawable/ic_about_copyright_black_24dp.xml rename to app/src/main/res/drawable/ic_about_copyright_24dp.xml index fad6892..e685c12 100644 --- a/app/src/main/res/drawable/ic_about_copyright_black_24dp.xml +++ b/app/src/main/res/drawable/ic_about_copyright_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_about_info_outline_black_24dp.xml b/app/src/main/res/drawable/ic_about_info_outline_24dp.xml similarity index 91% rename from app/src/main/res/drawable/ic_about_info_outline_black_24dp.xml rename to app/src/main/res/drawable/ic_about_info_outline_24dp.xml index cf53e14..d9df3de 100644 --- a/app/src/main/res/drawable/ic_about_info_outline_black_24dp.xml +++ b/app/src/main/res/drawable/ic_about_info_outline_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_about_person_black_24dp.xml b/app/src/main/res/drawable/ic_about_person_24dp.xml similarity index 90% rename from app/src/main/res/drawable/ic_about_person_black_24dp.xml rename to app/src/main/res/drawable/ic_about_person_24dp.xml index b2cb337..759c469 100644 --- a/app/src/main/res/drawable/ic_about_person_black_24dp.xml +++ b/app/src/main/res/drawable/ic_about_person_24dp.xml @@ -4,6 +4,6 @@ android:viewportWidth="24.0" android:viewportHeight="24.0"> diff --git a/app/src/main/res/drawable/ic_action_settings_white_24dp.xml b/app/src/main/res/drawable/ic_action_settings_white_24dp.xml deleted file mode 100644 index 1397d37..0000000 --- a/app/src/main/res/drawable/ic_action_settings_white_24dp.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - diff --git a/app/src/main/res/drawable/ic_launcher_monochrome.xml b/app/src/main/res/drawable/ic_launcher_monochrome.xml index 272a74b..ab2a5d2 100644 --- a/app/src/main/res/drawable/ic_launcher_monochrome.xml +++ b/app/src/main/res/drawable/ic_launcher_monochrome.xml @@ -1,25 +1,13 @@ - - - - - - - - + + diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 9c96440..f94772a 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -15,7 +15,6 @@ android:id="@+id/toolbar" android:layout_width="match_parent" android:layout_height="?attr/actionBarSize" - android:background="?attr/colorPrimary" app:popupTheme="@style/AppTheme.PopupOverlay" /> diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml index ac201b4..e149573 100644 --- a/app/src/main/res/layout/content_main.xml +++ b/app/src/main/res/layout/content_main.xml @@ -15,17 +15,17 @@ android:layout_margin="@dimen/_10sdp" tools:ignore="UselessParent"> - + android:orientation="vertical"> + android:textStyle="bold" /> + android:layout_height="wrap_content" + android:paddingBottom="8dp"> + android:textStyle="italic" /> - - + - + - + - - + - + - + + - + - + android:orientation="vertical"> - - - - - - - + android:textStyle="bold" /> - - - - - - - - - - - + - + + + + + + + + + + + + + + + + + + + - + - - + - + - + - + - + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_about.xml b/app/src/main/res/layout/fragment_about.xml index 7254b0e..e2215bd 100644 --- a/app/src/main/res/layout/fragment_about.xml +++ b/app/src/main/res/layout/fragment_about.xml @@ -1,21 +1,20 @@ - + android:background="?attr/colorSurface" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + android:orientation="vertical" + android:padding="16dp"> - + android:orientation="horizontal" + android:padding="@dimen/activity_margin_small"> + android:contentDescription="@string/about_overview_logo_desc" + android:src="@mipmap/ic_launcher" /> + android:background="?android:attr/selectableItemBackground" + android:orientation="vertical"> + android:textStyle="bold" /> + android:text="@string/app_desc" + android:textStyle="bold" /> - + - + android:orientation="vertical"> + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingTop="@dimen/activity_margin_small" + android:paddingBottom="@dimen/activity_margin_small"> + android:contentDescription="@string/about_version_image_desc" + android:src="@drawable/ic_about_info_outline_24dp" /> + android:gravity="center_vertical" + android:orientation="vertical"> + android:textAppearance="?android:attr/textAppearanceSmall" /> @@ -116,41 +115,41 @@ + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingTop="@dimen/activity_margin_small" + android:paddingBottom="@dimen/activity_margin_small"> + android:contentDescription="@string/about_license_image_desc" + android:src="@drawable/ic_about_copyright_24dp" /> + android:gravity="center_vertical" + android:orientation="vertical"> + android:textStyle="bold" /> + android:text="@string/about_license_desc" + android:textAppearance="?android:attr/textAppearanceSmall" /> @@ -158,35 +157,35 @@ + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingTop="@dimen/activity_margin_small" + android:paddingBottom="@dimen/activity_margin_small"> + android:contentDescription="@string/about_source_image_desc" + android:src="@drawable/ic_about_code_24dp" /> + android:textAppearance="?android:attr/textAppearanceMedium" + android:textStyle="bold" /> - + - + android:textStyle="bold" /> + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingTop="@dimen/activity_margin_small" + android:paddingBottom="@dimen/activity_margin_small"> + android:contentDescription="@string/about_developer_image_desc" + android:src="@drawable/ic_about_person_24dp" /> + android:gravity="center_vertical" + android:orientation="vertical"> + android:text="@string/about_developer_desc" + android:textAppearance="?android:attr/textAppearanceSmall" /> @@ -255,9 +254,9 @@ - + - + android:textStyle="bold" /> + android:gravity="center_vertical" + android:orientation="horizontal" + android:paddingTop="@dimen/activity_margin_small" + android:paddingBottom="@dimen/activity_margin_small"> + android:contentDescription="@string/about_bug_report_image_desc" + android:src="@drawable/ic_about_bug_report_24dp" /> + android:gravity="center_vertical" + android:orientation="vertical"> + android:text="@string/about_contribute_desc" + android:textAppearance="?android:attr/textAppearanceSmall" /> - + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_donate.xml b/app/src/main/res/layout/fragment_donate.xml index 09c8b3c..b83559b 100644 --- a/app/src/main/res/layout/fragment_donate.xml +++ b/app/src/main/res/layout/fragment_donate.xml @@ -1,22 +1,22 @@ - + android:background="?attr/colorSurface" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> + android:orientation="vertical" + android:padding="8dp"> - + android:paddingBottom="@dimen/activity_margin_small"> + android:textSize="@dimen/_12sdp" /> - + \ No newline at end of file diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml index e3a5d3c..e3a31e7 100644 --- a/app/src/main/res/menu/menu_main.xml +++ b/app/src/main/res/menu/menu_main.xml @@ -17,7 +17,7 @@ + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 545b9c6..30a76aa 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,11 +1,13 @@ - + - -