Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีตรวจจับการกดปุ่ม Home ใน Android

ตัวอย่างนี้สาธิตวิธี ตรวจจับการกดปุ่ม Home ใน Android

ขั้นตอนที่ 1: สร้างโปรเจกต์ใหม่ใน Android Studio

ไปที่ File → New Project และกรอกรายละเอียดที่จำเป็นทั้งหมด

ขั้นตอนที่ 2: เพิ่มโค้ดใน res/layout/activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:gravity="center"
    android:layout_height="match_parent">
    <TextView
        android:id="@+id/text"
        android:layout_width="fill_parent"
        android:gravity="center"
        android:textSize="30sp"
        android:layout_height="wrap_content"
        android:text="Click here" />
</LinearLayout>

ใช้ TextView แสดงผล

ขั้นตอนที่ 3: เพิ่มโค้ดใน src/MainActivity.java

package com.example.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {
    TextView text;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = findViewById(R.id.text);
        text.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                onUserLeaveHint();
            }
        });
    }

    @Override
    protected void onUserLeaveHint() {
        text.setText("Home button pressed");
        Toast.makeText(MainActivity.this, "Home button pressed", Toast.LENGTH_LONG).show();
        super.onUserLeaveHint();
    }
}

การทดสอบแอปพลิเคชัน

รันแอปพลิเคชันบนอุปกรณ์ Android จริง ใน Android Studio คลิกไอคอน Run เลือกอุปกรณ์ แล้วตรวจสอบหน้าจอเริ่มต้น

วิธีตรวจจับการกดปุ่ม Home ใน Android

กดปุ่ม Home จะแสดงผลตามภาพ

วิธีตรวจจับการกดปุ่ม Home ใน Android

คำอธิบายสำคัญ

  • onUserLeaveHint() เรียกเมื่อ Activity จะถูกวางไว้ในพื้นหลัง (background) เนื่องจากผู้ใช้กด Home หรือมีการกระทำอื่นที่ทำให้ Activity หยุดทำงาน
  • ไม่สามารถ Override onKeyDown(KeyEvent.KEYCODE_HOME) ได้ เพราะระบบไม่ส่ง Event ปุ่ม Home ให้แอป (เพื่อความปลอดภัย)
  • วิธีนี้ตรวจจับได้เฉพาะเมื่อผู้ใช้กด Home จาก Activity นี้ ไม่ใช่การตรวจจับระดับระบบ (System-wide)
  • สำหรับ Android 10+ อาจต้องพิจารณา Gesture Navigation ด้วย

กรณีใช้งาน (Use Cases)

  • บันทึกสถานะก่อนแอปถูกย่อ
  • หยุดการเล่นเพลง/วิดีโอเมื่อผู้ใช้กด Home
  • บันทึก Log Analytics