Android 응용 프로그램 최초 개발 (Kotlin 컴파일) 로그인의 기본 (3)
수면 가져오기 프로그램의 계속
저것 이미지를 표시하고 사운드를 재생할 수 있습니다.
이 응용 프로그램에 기능을 추가하세요.
사전 준비
레이아웃 파일 수정
현재 레이아웃의 경우 이미지와 텍스트가 덮어쓰기 때문에 레이아웃을 살짝 변경합니다.
activity_main.xml을 열고 디자인 옵션으로 전환
TextView 위로 이동
속성에서 Buttom Constraint 삭제를 클릭하여 Buttom Constraint를 비활성화합니다.
Buttom Constraint를 비활성화하면 화면 상단에 TextView가 나타납니다.
수면 가져오기 응용 프로그램에 추가 기능
예를 들어 나는 자기 전에 양을 몇 번 세어 보고 싶다.
응용 프로그램을 사용하는 상황을 고려해 보세요.
이 앱을 사용하는 곳은?
⇒ 침대와 이불 위에.
응용 프로그램을 사용하는 경우는?
잠이 안 올 때.
잠이 안 와, 양 한 마리, 양 두 마리...세어보니 언제 잠들었는지...그래야지.
이것은 의미...
이 응용 프로그램에서 양은 한 마리, 양은 두 마리입니다. 이것은 화면을 클릭하는 것입니다.
나중에 자면 화면을 클릭하지 않아요.
화면을 누르지 않고 통상적인 설정이라면 스마트폰 화면은 사라지고 휴면 상태가 된다.
잠들기 전에 양을 몇 번 세어 보았는지 남기기 위해서 이 수면 상태에 들어가기 전에 몇 번 세어 보았는지 기록하면 되지 않을까요?
휴면 상태에 들어갔을 때 응용 프로그램으로 검출할 수 있습니까?
네.
휴면에 들어가면 활성 onPause () 가 호출됩니다.
한번 해볼게요.
(터미널 휴면에 들어가기 전 시간을 확인하거나 터미널 휴면 버튼을 눌러도 됩니다.)
휴면 복구 시 호출하는 과정 추가
MainActivity.kt에 다음 코드를 추가합니다.
MainActivity.ktoverride fun onPause() {
super.onPause()
Log.i("onPause", "眠るまでの回数=" + sheepCount)
}
추가해야 할 곳에 주의하세요.
활동 {} 에 둘러싸여 있고 onCreate () {} 밖에 있습니다.
MainActivity.ktclass 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.ktoverride fun onResume() {
super.onResume()
textview.text = "前回は$sheepCount 回羊を数えました。"
}
응용 프로그램을 몇 번 실행한 후 휴면 버튼을 누르면 휴면을 하고, 다시 휴면 버튼을 누르면 회복할 때의 표시를 확인합니다.
시험하다
잠시 프로그램을 끝내고 다시 시작합니다.
다음 두 가지 상황에서 각각 시도해 보세요.
override fun onPause() {
super.onPause()
Log.i("onPause", "眠るまでの回数=" + sheepCount)
}
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")
}
}
override fun onResume() {
super.onResume()
textview.text = "前回は$sheepCount 回羊を数えました。"
}
프로그램이 끝나도 값을 남기는 방법
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 애플리케이션의 수명 주기
참고 자료
관련 자료
Reference
이 문제에 관하여(Android 응용 프로그램 최초 개발 (Kotlin 컴파일) 로그인의 기본 (3)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TomiGie/items/b36713ae14fbae2beeeb텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)