ChargingIOSActivity.kt raw

   1  package io.github.domi04151309.alwayson.actions
   2  
   3  import android.content.Intent
   4  import android.content.IntentFilter
   5  import android.graphics.Point
   6  import android.hardware.display.DisplayManager
   7  import android.os.BatteryManager
   8  import android.os.Bundle
   9  import android.view.Display
  10  import android.widget.ImageView
  11  import android.widget.LinearLayout
  12  import android.widget.TextView
  13  import io.github.domi04151309.alwayson.R
  14  import io.github.domi04151309.alwayson.helpers.IconHelper
  15  
  16  class ChargingIOSActivity : OffActivity() {
  17      override fun onCreate(savedInstanceState: Bundle?) {
  18          super.onCreate(savedInstanceState)
  19          setContentView(R.layout.activity_charging_ios)
  20  
  21          val content = findViewById<LinearLayout>(R.id.content)
  22          val batteryIcn = findViewById<ImageView>(R.id.batteryIcn)
  23  
  24          turnOnScreen()
  25          fullscreen(content)
  26  
  27          val level =
  28              registerReceiver(null, IntentFilter(Intent.ACTION_BATTERY_CHANGED))
  29                  ?.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)
  30                  ?: 0
  31          findViewById<TextView>(R.id.batteryTxt).text = resources.getString(R.string.charged, level)
  32          batteryIcn.setImageResource(IconHelper.getBatteryIcon(level))
  33  
  34          object : Thread() {
  35              override fun run() {
  36                  while (content.height == 0) sleep(TINY_DELAY)
  37                  val size = Point()
  38                  (getSystemService(DISPLAY_SERVICE) as DisplayManager)
  39                      .getDisplay(Display.DEFAULT_DISPLAY)
  40                      .getSize(size)
  41                  runOnUiThread {
  42                      content.translationY = (size.y - content.height).toFloat() / FRACTIONAL_VIEW_POSITION
  43                  }
  44                  sleep(ANIMATION_DELAY)
  45                  content.animate().alpha(0f).duration = ANIMATION_DURATION
  46                  sleep(ANIMATION_DURATION)
  47                  runOnUiThread {
  48                      finishAndOff()
  49                  }
  50              }
  51          }.start()
  52      }
  53  
  54      companion object {
  55          private const val TINY_DELAY = 10L
  56          private const val ANIMATION_DELAY = 3000L
  57          private const val ANIMATION_DURATION = 1000L
  58          private const val FRACTIONAL_VIEW_POSITION = 8
  59      }
  60  }
  61