ipdan4ik

[lb10] MainActivity.kt

Apr 23rd, 2021
531
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.example.lb10
  2.  
  3. import android.content.*
  4. import androidx.appcompat.app.AppCompatActivity
  5. import android.os.Bundle
  6. import android.os.IBinder
  7. import android.util.Log
  8. import android.view.View
  9. import android.widget.EditText
  10. import android.widget.TextView
  11. import android.widget.Toast
  12.  
  13. const val BROADCAST_TIME_EVENT = "com.example.lab09.timeevent"
  14.  
  15. class MainActivity : AppCompatActivity() {
  16.     var myService: TimeService? = null
  17.     var isBound = false
  18.     var receiver: BroadcastReceiver? = null
  19.     var startValue: Int = 0
  20.     var delayValue: Long = 1000
  21.  
  22.     val myConnection = object : ServiceConnection {
  23.         override fun onServiceConnected(className: ComponentName, service: IBinder) {
  24.             val binder = service as TimeService.MyBinder
  25.             myService = binder.getService()
  26.             isBound = true
  27.             myService!!.setCounter(startValue)
  28.             myService!!.setInterval(delayValue)
  29.             Log.d("ACTIVITY", "onServiceConnected")
  30.         }
  31.         override fun onServiceDisconnected(name: ComponentName) {
  32.             isBound = false
  33.             Log.d("ACTIVITY", "onServiceDisconnected")
  34.         }
  35.     }
  36.  
  37.     override fun onCreate(savedInstanceState: Bundle?) {
  38.         super.onCreate(savedInstanceState)
  39.         setContentView(R.layout.activity_main)
  40.         receiver = object : BroadcastReceiver() {
  41.             // Получено широковещательное сообщение
  42.             override fun onReceive(context: Context?, intent: Intent) {
  43.                 val counter = intent.getIntExtra("counter", 0)
  44.                 val textCounter = findViewById<TextView>(R.id.textCounter)
  45.                 textCounter.text = counter.toString()
  46.             }
  47.         }
  48.         // Фильтр для ресивера
  49.         val filter = IntentFilter(BROADCAST_TIME_EVENT)
  50.         // Регистрация ресивера и фильтра
  51.         registerReceiver(receiver, filter)
  52.     }
  53.  
  54.     override fun onDestroy() {
  55.         // Удаление регистрации ресивера и фильтра
  56.         unregisterReceiver(receiver);
  57.         super.onDestroy()
  58.     }
  59.  
  60.     fun buttonStartService(view: View) {
  61.         if (!isBound) {
  62.             startService(Intent(this, TimeService::class.java))
  63.             bindService(
  64.                 Intent(this, TimeService::class.java),
  65.                 myConnection, Context.BIND_AUTO_CREATE
  66.             )
  67.         } else {
  68.             val toast: Toast = Toast.makeText(this,
  69.                 "Таймер уже запущен",
  70.                 Toast.LENGTH_SHORT)
  71.             toast.show()
  72.         }
  73.     }
  74.  
  75.     fun buttonStopService(view: View) {
  76.         if (isBound) {
  77.             stopService(Intent(this, TimeService::class.java))
  78.             unbindService(myConnection)
  79.             val textCounter = findViewById<TextView>(R.id.textCounter)
  80.             textCounter.text = "Таймер выключен"
  81.             isBound = false
  82.         } else {
  83.             val toast: Toast = Toast.makeText(this,
  84.                 "Таймер не запущен",
  85.                 Toast.LENGTH_SHORT)
  86.             toast.show()
  87.         }
  88.     }
  89.  
  90.     fun buttonSetCounter(view: View) {
  91.         val v = findViewById<EditText>(R.id.editTextNumber2)
  92.         val txt = v.text.toString()
  93.         var counter = startValue
  94.         if (txt != "") {
  95.             counter = txt.toInt()
  96.             startValue = counter
  97.             val vv = findViewById<TextView>(R.id.textView3)
  98.             vv.text = "Начальное значение: $startValue"
  99.             if (isBound) {
  100.                 myService!!.setCounter(counter)
  101.             }
  102.         } else {
  103.             Log.e("ACTIVITY", "empty value for startValue")
  104.         }
  105.     }
  106.  
  107.     fun buttonSetInterval(view: View) {
  108.         val v = findViewById<EditText>(R.id.editTextNumber3)
  109.         val txt = v.text.toString()
  110.         var iv = delayValue
  111.         if (txt != "") {
  112.             iv = txt.toLong()
  113.             delayValue = iv
  114.             if (iv < 1) {
  115.                 Log.e("ACTIVITY", "delay ($iv) must be greater than 0")
  116.                 iv = delayValue
  117.             }
  118.             val vv = findViewById<TextView>(R.id.textView4)
  119.             vv.text = "Интервал (мс): $delayValue"
  120.             if (isBound) {
  121.                 myService!!.setInterval(iv)
  122.             }
  123.         } else {
  124.             Log.e("ACTIVITY", "empty value for delayValue")
  125.         }
  126.     }
  127.  
  128.     fun buttonReset(view: View) {
  129.         if (isBound) {
  130.             myService!!.resetCounter()
  131.         } else {
  132.             val toast: Toast = Toast.makeText(this,
  133.                 "Таймер не запущен",
  134.                 Toast.LENGTH_SHORT)
  135.             toast.show()
  136.         }
  137.     }
  138. }
RAW Paste Data

Adblocker detected! Please consider disabling it...

We've detected AdBlock Plus or some other adblocking software preventing Pastebin.com from fully loading.

We don't have any obnoxious sound, or popup ads, we actively block these annoying types of ads!

Please add Pastebin.com to your ad blocker whitelist or disable your adblocking software.

×