2011-01-14 16 views
5

मैं अपने एंड्रॉइड ऐप में "उपयोगकर्ता निष्क्रियता" का पता लगाना चाहता हूं। अधिक सटीक होने के लिए: मैं यह जानना चाहता हूं कि उपयोगकर्ता ने मेरे ऐप (स्क्रीन, स्क्रॉलिंग, इनपुट ग्रंथों को स्पर्श करना ...) को किसी विशिष्ट समय के लिए कोई इंटरैक्शन नहीं किया है। तकनीकी रूप से मैं एक टाइमर का उपयोग करता हूं जिसे प्रत्येक (उपयोगकर्ता) परस्पर क्रिया पर रीसेट किया जाता है।एंड्रॉइड: उपयोगकर्ता निष्क्रियता/पता लगाएँ (सॉफ्टकीबोर्ड) कीबोर्ड इनपुट

मेरी गतिविधि में, मैं, स्क्रॉल स्क्रीन को स्पर्श करके की तरह बातचीत का पता लगाने के onUserInteraction विधि ओवरराइड ...

@Override 
public void onUserInteraction(){ 
    resetInactiveTimer(); 
} 

दुर्भाग्य से, onUserInteraction नहीं बुलाया जाता है जब उपयोगकर्ता नरम कीबोर्ड के साथ सूचना का आदान प्रदान। मुझे लगता है कि कारण यह है कि सॉफ्ट कीबोर्ड मेरी गतिविधि का हिस्सा नहीं है।

मेरे एप्लिकेशन में ग्रंथों संपादित के लिए मैं TextWatcher का उपयोग करें और onTextChanged विधि है जो ठीक काम करता है। लेकिन मेरे ऐप में एक वेब व्यू भी है जो मनमाने ढंग से वेब पेज लोड करता है। निस्संदेह कुछ वेब पृष्ठों में इनपुट फ़ील्ड हो सकते हैं और मुझे नहीं पता कि उपयोगकर्ता कैसे टेक्स्ट फ़ील्ड को संपादित करने के लिए सॉफ्ट कीबोर्ड से इंटरैक्ट करता है।

उत्तर

1

अभी भी इसमें रुचि रखते हैं?

आपकी गतिविधि KeyEvent.Callback लागू करता है, तो आप onKeyDown ओवरराइड कर सकते हैं:

@Override 
public boolean onKeyDown (int keyCode, KeyEvent event) { 
    resetInactiveTimer(); 
    return false; 
} 

वैकल्पिक रूप से, (सबसे सामान्य परिस्थिति में) यदि कुंजी एक EditText या इसी तरह में कर्सर के साथ दबाया जाता है, तो आप एक को लागू की आवश्यकता होगी OnKeyListener और onKey विधि resetInactiveTimer();

+0

इनपुट विधियों को महत्वपूर्ण ईवेंट भेजने की आवश्यकता नहीं है। वास्तव में जेली बीन्स सॉफ्टकीबोर्ड बैकस्पेस दबाए जाने पर कोई भी महत्वपूर्ण घटना नहीं भेजता है। –

+0

लेकिन यहां मुद्दा यह है कि जब आप edittext में टाइप कर रहे हैं तो यूज़र इंटरटेक्शन को कॉल नहीं किया जाता है। अगर मैं केडडाउन या ऑनकी पर उपयोग करना चाहता हूं, तो मुझे प्रत्येक संपादक को कुंजी प्रेस श्रोता सेट करना होगा। क्या कोई सामान्य विकल्प है जहां मैं सॉफ्ट कीबोर्ड से किसी भी कीप्रेस ईवेंट को ट्रैक कर सकता हूं? – Smeet

संबंधित मुद्दे