2012-01-24 14 views
15

Xin chào Tôi muốn đặt báo thức khi điện thoại không được chạm vào. Nếu màn hình chưa được chạm trong gần 2 phút, âm báo sẽ được nâng lên. Tôi có thể làm cái này như thế nào? Ai có thể giúp tôi? Cảm ơn trước.Làm cách nào để đặt báo thức khi điện thoại di động không sử dụng Android?

+3

Bạn có phần nào phát hiện người dùng không chạm vào màn hình trong hai phút không? - Có vẻ như khó khăn: http://stackoverflow.com/questions/4208730/how-to-detect-user-inactivity-in-android – Nobita

+1

có phải bạn muốn nói như trình bảo vệ màn hình không? – Lucifer

+0

Không phải như vậy. Ý tôi là tôi muốn đặt báo thức khi ứng dụng của tôi không hoạt động trong 30 giây. Đó là nó. – malavika

Trả lời

5

Vượt qua AlarmService thông qua mã bên dưới. Thao tác này sẽ tìm thấy thiết bị của bạn ở chế độ chờ trong bao lâu.

idle.java

Handler hl_timeout = new Handler(); 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    try{ 
     hl_timeout.postDelayed(DoOnTimeOut, 15000); 
     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
} 

// Toast 
Thread DoOnTimeOut = new Thread() { 
    public void run() { 
     try{ 
      Toast.makeText(getApplicationContext(), "System is idle", Toast.LENGTH_LONG).show(); 
     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 
}; 

@Override 
public void onUserInteraction() 
{ 
    super.onUserInteraction(); 
    //Remove any previous callback 
    try{ 
    hl_timeout.removeCallbacks(DoOnTimeOut); 
    hl_timeout.postDelayed(DoOnTimeOut, 15000); 
    }catch(Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

Hy vọng điều này sẽ giúp bạn.

3

Bạn có thể tạo AlarmService để chơi âm thanh ngay cả khi ứng dụng/thiết bị là nhàn rỗi

Mở rộng phương pháp onUserInteraction của Hoạt động Class để reset bộ đếm thời gian và bắt đầu một lần nữa cho hai phút.

2

Nếu tôi hiểu chính xác câu hỏi của bạn, bạn cần kích hoạt báo thức, khi không có bất kỳ tương tác người dùng nào xảy ra trong một khoảng thời gian nào đó. Và một trong những yêu cầu chính, không có hoạt động nào của bạn chạy ở nền trước. Vì vậy, trường hợp với onUserInteraction không hoạt động cho bạn. Trong trường hợp này, bạn vẫn có thể nhận thông tin cập nhật về mọi hành động của người dùng nếu bạn tạo AccessibilityService của riêng mình.

Thêm phần này vào biểu hiện của bạn phải khai báo các dịch vụ:

<service android:name=".MyAccessibilityService"> 
    <intent-filter> 
     <action android:name="android.accessibilityservice.AccessibilityService" /> 
    </intent-filter> 
</service> 

Và thực hiện dịch vụ của bạn sẽ trông giống như thế này:

public class MyAccessibilityService extends AccessibilityService 
{ 

@Override 
public void onServiceConnected() { 
    AccessibilityServiceInfo info = new AccessibilityServiceInfo(); 
    // we are interested in all types of accessibility events 
    info.eventTypes = AccessibilityEvent.TYPES_ALL_MASK; 
    info.feedbackType = AccessibilityServiceInfo.FEEDBACK_GENERIC; 
    // we want to receive events in a certain interval 
    info.notificationTimeout = 100; 
    setServiceInfo(info); 

    Log.e("ALEX", "service connected!"); 
} 
@Override 
public void onAccessibilityEvent(AccessibilityEvent arg0) 
{ 
    Log.e("ALEX", "Event happened!"); 

} 
} 

Bây giờ bất kỳ người sử dụng thời gian chạm vào màn hình ví dụ, bạn sẽ get onAccessibilityEvent() được kích hoạt và sẽ có thể khởi động lại bộ hẹn giờ sẽ khởi chạy Alarm của bạn.

BAO GIỜ, cách tiếp cận này có một bất lợi: để làm cho nó hoạt động, bạn sẽ cần phải đi đến các cài đặt điện thoại -> Khả năng truy cập và kích hoạt ứng dụng của bạn ở đó. Nếu không, hệ thống sẽ không khởi chạy dịch vụ của bạn.