2015-05-05 18 views
5

में किसी डिवाइस का वास्तविक दिनांक समय प्राप्त करें मैं एक एंड्रॉइड एप्लिकेशन विकसित कर रहा हूं। मुझे अपने आवेदन में नीचे उल्लिखित समस्या को हल करने की आवश्यकता है:ऑफ़लाइन मोड

1) एप्लिकेशन ऑनलाइन और ऑफ़लाइन काम कर सकता है। ऐप में एप्लिकेशन के अंदर नोट्स बनाने और सहेजने की सुविधा है। साथ ही, जब ऐप को इंटरनेट कनेक्शन मिल जाता है, तो मुझे बैकएंड सर्वर पर नोट्स भेजने की आवश्यकता होती है। उपयोगकर्ता डिवाइस में गलत तरीके से दिनांक समय सेट की है, मेरा आवेदन गलत DATETIME सर्वर को भेजता है: मैं हर नोट में (datetime जहां वास्तविक नोट बनाया गया था)

जारी एक क्षेत्र 'DateCreated' नामक । मैं सोच रहा हूं कि मैं इस मुद्दे को कैसे हल कर सकता हूं? कोई भी विचार सराहनीय होगा।

+1

क्या आप अपना कोड यहां पोस्ट कर सकते हैं .. –

+0

क्षमा करें, यह कोड से संबंधित नहीं है। मुझे उपयोगकेस –

+0

को लागू करने के लिए एक तर्क की आवश्यकता है जो डेटाटाइम भेजने में समस्या है जो उपयोगकर्ता को उसके डिवाइस पर जो कुछ भी दिखाती है उसे दर्शाती है? – laalto

उत्तर

3

जब आप अंततः अपने सर्वर पर पोस्ट करते हैं, तो बस उस विशिष्ट समय को भी जोड़ें। new Date().getTime() आपको वह मान देगा जो आप अपने सर्वर के डेटाटाइम की तुलना करने के लिए उपयोग कर सकते हैं। यदि यह 2 घंटे बाद उदाहरण के लिए है, तो बस 2 घंटे पहले पोस्ट का समय निर्धारित करें।

तो उस समय दोनों को भेजें जब पोस्ट उपयोगकर्ता द्वारा सबमिट किया गया था और जब वास्तव में भेजा गया था।

+1

धन्यवाद। समस्याएं पैदा कर सकती हैं यदि उपयोगकर्ता नोट बनाने के बाद डिवाइस के समय को बदलता है। इस उपयोगकेस को हल करने के लिए कोई अन्य समाधान? –

+2

मुझे कॉलबैक या किसी प्रकार का श्रोता नहीं मिल रहा है जो डिवाइस सेटिंग्स के बारे में सूचित करता है। हालांकि आप एक सेवा चला सकते हैं जो हर दो सेकंड की जांच करता है (30 कहें) अगर समय पुराना समय + 30 जैसा ही है और वहां से जारी रहता है, लेकिन यह काफी अधिक हो सकता है – dumazy

+1

हां। मुझे भी ऐसा ही लगता है। मुझे नहीं लगता कि कोई अन्य समाधान उपलब्ध है। –

0

आप नेटवर्क समय का उपयोग कर वर्तमान दिनांक और समय प्राप्त कर सकते हैं।

LocationManager locManager = (LocationManager) mContext 
      .getSystemService(mContext.LOCATION_SERVICE); 
    long lastSyncTime = locManager.getLastKnownLocation(
      LocationManager.NETWORK_PROVIDER).getTime(); 

मैंने इसे अपने आवेदन में स्थान के आधार पर समय प्राप्त करने के लिए उपयोग किया है। मुझे लगता है कि यह ऑनलाइन और ऑफलाइन मोड में भी काम करेगा।

+1

क्या होता है यदि इसका टैबलेट केवल वाईफाई के साथ होता है? –

+0

जब आप इंटरनेट से कनेक्ट होते हैं तो अंतिम स्थान के अनुसार, यह समय दिखाता है। आपको इस अनुमति की भी आवश्यकता है: android.Manifest.permission # ACCESS_FINE_LOCATION –

+1

यह वह समय है जब आपको अपना अंतिम स्थान अपडेट प्राप्त हुआ है। आंतरिक रूप से यह वही तरीका मिलता है जैसा आप 'नई तिथि()। GetTime()' या 'System.currentTimeInMillis()' के साथ करेंगे। इसलिए यदि उपयोगकर्ता ने डिवाइस की दिनांक सेटिंग्स बदल दी है, तो यह अभी भी गलत होगी – dumazy

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