OffActivity.kt raw
1 package io.github.domi04151309.alwayson.actions
2
3 import android.annotation.SuppressLint
4 import android.app.Activity
5 import android.app.ActivityManager
6 import android.app.admin.DevicePolicyManager
7 import android.content.ComponentName
8 import android.content.pm.ActivityInfo
9 import android.media.AudioManager
10 import android.os.Build
11 import android.os.Bundle
12 import android.view.KeyEvent
13 import android.view.View
14 import android.view.WindowManager
15 import android.widget.Toast
16 import androidx.preference.PreferenceManager
17 import io.github.domi04151309.alwayson.R
18 import io.github.domi04151309.alwayson.helpers.Root
19 import io.github.domi04151309.alwayson.receivers.AdminReceiver
20
21 @SuppressLint("Registered")
22 open class OffActivity : Activity() {
23 @SuppressLint("SourceLockedOrientationActivity")
24 override fun onCreate(savedInstanceState: Bundle?) {
25 requestedOrientation =
26 when (
27 PreferenceManager.getDefaultSharedPreferences(this)
28 .getString("orientation", "locked")
29 ) {
30 "portrait" -> ActivityInfo.SCREEN_ORIENTATION_PORTRAIT
31 "landscape" -> ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
32 else -> ActivityInfo.SCREEN_ORIENTATION_LOCKED
33 }
34 super.onCreate(savedInstanceState)
35 }
36
37 override fun onKeyDown(
38 keyCode: Int,
39 event: KeyEvent,
40 ): Boolean {
41 when (keyCode) {
42 KeyEvent.KEYCODE_VOLUME_UP -> {
43 (getSystemService(AUDIO_SERVICE) as AudioManager)
44 .adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_RAISE, 0)
45 }
46
47 KeyEvent.KEYCODE_VOLUME_DOWN -> {
48 (getSystemService(AUDIO_SERVICE) as AudioManager)
49 .adjustStreamVolume(AudioManager.STREAM_MUSIC, AudioManager.ADJUST_LOWER, 0)
50 }
51 }
52 return true
53 }
54
55 override fun onPause() {
56 super.onPause()
57 (getSystemService(ACTIVITY_SERVICE) as ActivityManager)
58 .moveTaskToFront(taskId, 0)
59 }
60
61 protected fun turnOnScreen() {
62 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
63 setShowWhenLocked(true)
64 setTurnScreenOn(true)
65 } else {
66 @Suppress("DEPRECATION")
67 window.addFlags(
68 WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED or
69 WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
70 )
71 }
72 }
73
74 protected fun fullscreen(view: View) {
75 view.systemUiVisibility = (
76 View.SYSTEM_UI_FLAG_LOW_PROFILE
77 or View.SYSTEM_UI_FLAG_FULLSCREEN
78 or View.SYSTEM_UI_FLAG_LAYOUT_STABLE
79 or View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
80 or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
81 or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
82 )
83 /*WindowInsetsControllerCompat(window, view).let { controller ->
84 controller.hide(WindowInsetsCompat.Type.systemBars())
85 controller.systemBarsBehavior =
86 WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
87 }*/
88 }
89
90 protected open fun finishAndOff() {
91 if (PreferenceManager.getDefaultSharedPreferences(this).getBoolean("root_mode", false)) {
92 Root.shell("input keyevent KEYCODE_POWER")
93 } else {
94 val policyManager =
95 getSystemService(DEVICE_POLICY_SERVICE)
96 as DevicePolicyManager
97 if (policyManager.isAdminActive(ComponentName(this, AdminReceiver::class.java))) {
98 policyManager.lockNow()
99 } else {
100 Toast.makeText(this, R.string.pref_admin_summary, Toast.LENGTH_SHORT).show()
101 }
102 }
103 finish()
104 }
105 }
106