2012-01-24 19 views
15

हाय मैं फ़ोन को स्पर्श नहीं होने पर अलार्म सेट करना चाहता हूं। अगर स्क्रीन को लगभग 2 मिनट तक छुआ नहीं गया है, तो अलार्म ध्वनि उठाई जाएगी। मैं यह कैसे कर सकता हूँ? कोई भी मेरी मदद कर सकता हैं? अग्रिम धन्यवाद।एंड्रॉइड का उपयोग करते हुए मोबाइल निष्क्रिय होने पर अलार्म कैसे सेट करें?

+3

क्या आपको उपयोगकर्ता को दो मिनट तक स्क्रीन को छूने का पता लगाने का हिस्सा नहीं मिला है? - यह मुश्किल लगता है: http://stackoverflow.com/questions/4208730/how-to-detect-user-inactivity-in-android – Nobita

+1

क्या आपको स्क्रीन सेवर की तरह कहना है? – Lucifer

+0

ऐसा नहीं है। मेरा मतलब था कि जब मैं 30 सेकंड के लिए निष्क्रिय हूं तो मैं अलार्म सेट करना चाहता हूं। बस। – malavika

उत्तर

5

नीचे दिए गए कोड के माध्यम से AlarmService पास करें। यह पता लगाएगा कि आपका डिवाइस कितना समय निष्क्रिय है।

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(); 
    } 
} 

आशा यह आप में मदद करता है।

3

आप ध्वनि भी खेलने के लिए जब आवेदन/उपकरण

टाइमर रीसेट और दो मिनट के लिए फिर से शुरू करने के लिए गतिविधि कक्षा की विधि onUserInteraction बढ़ाएँ निष्क्रिय है AlarmService बना सकते हैं।

2

यदि मैं आपके प्रश्न को सही ढंग से समझता हूं, तो आपको किसी अलार्म को ट्रिगर करने की आवश्यकता होती है, जब कुछ समय अंतराल के भीतर कोई उपयोगकर्ता इंटरैक्शन नहीं होता है। और मुख्य आवश्यकताओं में से एक, अग्रभूमि में आपकी कोई गतिविधि नहीं चल रही है। तो ऑनयूसर इंटरैक्शन के साथ मामला आपके लिए काम नहीं करता है। यदि आप अपनी खुद की पहुंच-योग्यता सेवा करते हैं तो इस मामले में आप अभी भी प्रत्येक उपयोगकर्ता कार्रवाई पर अपडेट प्राप्त कर सकते हैं।

अपने प्रकट करने के लिए इस जोड़े सेवा घोषित करने के लिए:

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

और आपकी सेवा कार्यान्वयन इस के समान दिखना चाहिए:

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!"); 

} 
} 

अब किसी भी समय उपयोगकर्ता उदाहरण के लिए स्क्रीन छू लेती है, तो आप करेंगे ऑनएबिलिटीएवेंट() ट्रिगर हो गया है और एक टाइमर को पुनरारंभ करने में सक्षम होगा जो आपके अलार्म लॉन्च करेगा।

हालांकि, इस दृष्टिकोण में एक नुकसान है: इसे काम करने के लिए, आपको फोन सेटिंग्स -> पहुंच-योग्यता और वहां अपना एप्लिकेशन सक्षम करने की आवश्यकता होगी। अन्यथा, सिस्टम आपकी सेवा लॉन्च नहीं करेगा।