Tôi cần phát hiện thời điểm người dùng tương tác với điện thoại và khởi động lại ứng dụng của tôi sau 60 giây từ màn hình cảm ứng của người dùng cuối cùng. Có thể làm điều gì đó như thế không? Nó phải hoạt động như trình bảo vệ màn hình cho PC.Phát hiện xem người dùng có tương tác với điện thoại không?
Trả lời
Có thể làm điều gì đó như vậy không?
Chỉ khi hoạt động của bạn ở mặt trước, trong trường hợp này bạn có thể theo dõi các sự kiện chạm. Bạn không thể tìm hiểu về các sự kiện liên lạc xảy ra ở nơi khác trong hệ thống.
ACTION_USER_PRESENT
là một hành động quảng bá, vì vậy bạn sẽ có thể viết bộ thu phát để phản hồi và khởi chạy ứng dụng của bạn. Lưu ý rằng ACTION_USER_PRESENT
là
được gửi khi người dùng có mặt sau khi thiết bị khởi động (ví dụ: khi khóa bảo vệ không còn).
Tôi cũng chỉ gặp một số example trong đó hành động phát sóng BOOT_COMPLETED
được người phát sóng sử dụng để khởi động ứng dụng khi khởi động.
Theo vòng đời của android nếu người dùng nhấn nút home hoặc bàn phím bị khóa onPause sẽ được gọi. Làm như thế này.
@Override
public void onPause()
{
super.onPause();
Timer timer = new Timer();
TimerTask task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
finish();
}
};
timer.schedule(task, 60000);
}
và nếu người dùng đến trước 60 giây sau đó trong onRestart()
.
@Override
public void onRestart()
{
super.onRestart();
timer.cancel();
timer.purge();
}
Tôi tìm thấy giải pháp này: http://stackoverflow.com/questions/4481226/creating-a-system-overlay-always-on-top-button-in-android và có vẻ như nó hoạt động. Tôi nghĩ nó không phải là tốt nhất, bạn nghĩ sao? – Gabrielle
@Gabrielle: Điều đó sẽ không hoạt động trên các thiết bị mới hơn. Để ngăn chặn các cuộc tấn công tapjacking, hoặc * bạn * có thể nhận được các sự kiện cảm ứng (và các ứng dụng cơ bản sẽ không), hoặc * họ * có thể nhận được các sự kiện liên lạc (và bạn không thể). – CommonsWare
Bạn nói đúng, tôi đã thử nghiệm trên một thiết bị mới hơn và nó không hoạt động. Cảm ơn bạn! – Gabrielle