Android 응용 프로그램 최초 개발 (Kotlin 컴파일) 로그인의 기본 (3)

13524 단어 AndroidKotlin
동북 TECH 도장의 참가자들을 위해 제작된 한스옹의 두 번째다.
  • 그 하나는 여기
  • 2 예 여기
  • 수면 가져오기 프로그램의 계속


    저것 이미지를 표시하고 사운드를 재생할 수 있습니다.
    이 응용 프로그램에 기능을 추가하세요.

    사전 준비


    레이아웃 파일 수정


    현재 레이아웃의 경우 이미지와 텍스트가 덮어쓰기 때문에 레이아웃을 살짝 변경합니다.

    activity_main.xml을 열고 디자인 옵션으로 전환



    TextView 위로 이동


    속성에서 Buttom Constraint 삭제를 클릭하여 Buttom Constraint를 비활성화합니다.

    Buttom Constraint를 비활성화하면 화면 상단에 TextView가 나타납니다.

    수면 가져오기 응용 프로그램에 추가 기능


    예를 들어 나는 자기 전에 양을 몇 번 세어 보고 싶다.
    응용 프로그램을 사용하는 상황을 고려해 보세요.
    이 앱을 사용하는 곳은?
    ⇒ 침대와 이불 위에.
    응용 프로그램을 사용하는 경우는?
    잠이 안 올 때.
    잠이 안 와, 양 한 마리, 양 두 마리...세어보니 언제 잠들었는지...그래야지.
    이것은 의미...
    이 응용 프로그램에서 양은 한 마리, 양은 두 마리입니다. 이것은 화면을 클릭하는 것입니다.
    나중에 자면 화면을 클릭하지 않아요.
    화면을 누르지 않고 통상적인 설정이라면 스마트폰 화면은 사라지고 휴면 상태가 된다.
    잠들기 전에 양을 몇 번 세어 보았는지 남기기 위해서 이 수면 상태에 들어가기 전에 몇 번 세어 보았는지 기록하면 되지 않을까요?

    휴면 상태에 들어갔을 때 응용 프로그램으로 검출할 수 있습니까?


    네.
    휴면에 들어가면 활성 onPause () 가 호출됩니다.
    한번 해볼게요.
    (터미널 휴면에 들어가기 전 시간을 확인하거나 터미널 휴면 버튼을 눌러도 됩니다.)

    휴면 복구 시 호출하는 과정 추가


    MainActivity.kt에 다음 코드를 추가합니다.
    MainActivity.kt
    override fun onPause() {
        super.onPause()
        Log.i("onPause", "眠るまでの回数=" + sheepCount)
    }
    
    추가해야 할 곳에 주의하세요.
    활동 {} 에 둘러싸여 있고 onCreate () {} 밖에 있습니다.
    MainActivity.kt
    class MainActivity : AppCompatActivity() {
        var sheepCount = 0
        var mp: MediaPlayer? = null
    
        override fun onCreate(savedInstanceState: Bundle?) {
            super.onCreate(savedInstanceState)
            setContentView(R.layout.activity_main)
            var greeting = "こんにちは"
            val trialTime = Date()
            val calendar = GregorianCalendar()
            calendar.time = trialTime
    
            val hour = calendar.get(Calendar.HOUR_OF_DAY)
            if (hour in 1..11) {
                greeting = "おはよう"
            } else if (hour > 15) {
                greeting = "こんばんは"
            }
    
            greeting += "ねむれませんか?"
    
            textview.text = greeting
    
            mp = MediaPlayer.create(applicationContext, R.raw.sheep_cry1)
    
            rootLayout.setOnClickListener {
                sheepCount++
                val sheepText = "ひつじが$sheepCount 匹"
                textview.text = sheepText
    
                when(sheepCount % 2) {
                    0 -> {
                        imageView1.setImageResource(R.drawable.sheep_1)
                        mp?.start()
                    }
                    else -> imageView1.setImageResource(R.drawable.sheep_2)
                }
    
            }
        }
    
        // ↓ここに追加
        override fun onPause() {
            super.onPause()
            Log.i("onPause", "眠るまでの回数=$sheepCount")
        }
    }
    
    입력해서 실행해 보세요.
    만약 자신이 잠을 자야 한다고 생각한다면 휴면 버튼을 누르거나 자신도 모르게 잠이 들어 화면을 클릭하지 않으면 단말기가 휴면 상태가 되어 이 onPause () 라고 불릴 것이다.

    휴면 복구 시 호출되는 처리 추가


    MainActivity.kt에 다음 코드를 추가합니다.
    MainActivity.kt
    override fun onResume() {
        super.onResume()
        textview.text = "前回は$sheepCount 回羊を数えました。"
    }
    
    응용 프로그램을 몇 번 실행한 후 휴면 버튼을 누르면 휴면을 하고, 다시 휴면 버튼을 누르면 회복할 때의 표시를 확인합니다.

    시험하다


    잠시 프로그램을 끝내고 다시 시작합니다.
    다음 두 가지 상황에서 각각 시도해 보세요.
  • 홈 버튼을 눌렀을 때
  • 뒤로 버튼을 눌렀을 때
  • 플랫폼 버튼을 눌렀을 때는 양을 세는 횟수가 남았지만 후진 버튼을 눌렀을 때는 0으로 돌아왔잖아요.

    프로그램이 끝나도 값을 남기는 방법


    SharedPreferences 클래스를 사용할 수 있습니다.

    값을 저장하려면 다음과 같이 하십시오.


    MainActivity.kt의 onPause () 에 다음 코드를 추가합니다.
    MainActivity.kt
    override fun onPause() {
        super.onPause()
        Log.i("onPause", "眠るまでの回数=$sheepCount")
        val sp: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) //追加
        sp.edit().putInt("SheepCount", sheepCount).apply()                              //追加
    }
    

    읽기 값:


    MainActivity.kt의 onResume()에 다음 코드를 추가합니다.
    MainActivity.kt
    override fun onResume() {
        super.onResume()
        val sp: SharedPreferences = PreferenceManager.getDefaultSharedPreferences(this) //追加
        val count = sp.getInt("SheepCount", -1)                                         //追加
        if (count >= 0) {                                                               //追加
            textview.text = "前回は$count 回羊を数えました。"                                 //追加
        }                                                                               //追加
    }
    

    남은 값이 있는지 확인해 보세요


    Android 애플리케이션의 수명 주기



    참고 자료

  • Android 응용 프로그램의 기본 개발 (3)
  • 관련 자료

  • Android 응용 프로그램 최초 개발 (Kotlin 컴파일) 로그인의 기본 (1)
  • Android 애플리케이션(Kotlin 컴파일) 로그인 기본 개발 (2)
  • 좋은 웹페이지 즐겨찾기