2013-03-02 6 views
5

मैं AndroidNotification के लिए एक कस्टम रिमोट व्यू का उपयोग कर रहा हूं, और मैं सिस्टम व्यवहार की नकल करना चाहता हूं।Android अधिसूचना समय प्रारूप कैसे अपडेट किया गया है?

एंड्रॉइड अपने अधिसूचना समय प्रारूप को कैसे अपडेट करता है - क्या वे सेट होने के बाद कभी भी बदलते हैं? मैं इस व्यवहार की नकल करने में सक्षम कैसे हूं?

+0

मैं मेरे प्रश्न का मेरा हिस्सा जवाब दिया था। हालांकि, यह मेरी समस्या का समाधान नहीं करता है। मेरे पास एक कस्टम व्यू (सेटकंटेंट का उपयोग करके) के साथ एक रिमोट व्यू है। मुझे मूल अधिसूचना के व्यवहार की नकल करने, मेरी अधिसूचना में प्रदर्शित होने वाली तिथि या समय चाहिए। मैं एपीआई कॉल (DateUtils.formatSameDayTime) का उपयोग करके इसे प्राप्त करूंगा। समस्या यह है कि, oncesetTextViewText को रिमोट व्यू और अधिसूचना प्रबंधक पर बनाया गया है। नोटिफ़ाई कहा जाता है, यह है, पाठ स्थायी है। मुझे समय बीतने के समय गतिशील रूप से बदलना एक तिथि या समय चाहिए (24 घंटे से अधिक समय दिखाएगा)। कृपया मदद करे। –

उत्तर

0

मुझे यकीन नहीं है कि आप अभी भी उत्तर की तलाश में हैं, यह देखते हुए कि आपने स्वयं को एक प्रदान किया है। लेकिन, आप अपने मूल लक्ष्य को प्राप्त करने के लिए देख रहे हैं, तो आप शायद

  • को RemoteView पुनर्निर्माण जब भी समय परिवर्तन (यह अभी जिस तरह आसान है)
  • घड़ी की टिक को पकड़ने के लिए एक BroadcastReceiver सेट करें चाहते हैं तो आप जानते हैं कि समय कब बदल गया है।

तो, कुछ कोड इस तरह एक सा:

class MyCleverThing extends Service (say) { 

    // Your stuff here 

    private static IntentFilter timeChangeIntentFilter; 
    static { 
     timeChangeIntentFilter = new IntentFilter(); 
     timeChangeIntentFilter.addAction(Intent.ACTION_TIMEZONE_CHANGED); 
     timeChangeIntentFilter.addAction(Intent.ACTION_TIME_CHANGED); 
    } 

    // Somewhere in onCreate or equivalent to set up the receiver 
    registerReceiver(timeChangedReceiver, timeChangeIntentFilter); 

    // The actual receiver 
    private final BroadcastReceiver timeChangedReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     final String action = intent.getAction(); 

     if (action.equals(Intent.ACTION_TIME_CHANGED) || 
      action.equals(Intent.ACTION_TIMEZONE_CHANGED)) 
     { 
      updateWidgets(); // Your code to rebuild the remoteViews or whatever 
     } 
    } 
}; 
+0

थोड़ा जटिल लेकिन एक कानूनी समाधान। –

+0

यह है - यदि ऐसा करने का एक कम जटिल तरीका है (और यह लगातार काम कर रहा है आदि) तो मुझे इसे देखना अच्छा लगेगा। टिक और बक्षीस के लिए धन्यवाद, इसकी सराहना करें। –

2

मुझे अधिसूचना समय प्रारूप के बारे में बहुत कुछ पता नहीं है, लेकिन यदि आप उनके व्यवहार की नकल करना चाहते हैं तो DateUtils कक्षा, विशेष रूप से formatSameDayTime पर एक नज़र डालना चाहिए जो मुझे लगता है कि आपने जो वर्णन किया है वह करता है।

2

तब तक अधिसूचना को अपडेट करना संभव नहीं है जब तक कि नहीं जोड़ा जा सके। नोटिफ़ाई को उसी आईडी के साथ फिर से बुलाया जाता है।

यदि टाइम स्टैंप से निपटना है, तो रिमोट व्यूज़ का उपयोग किये बिना मूल अधिसूचना अधिसूचना कॉम्पेट.बिल्डर का उपयोग करना सबसे अच्छा है।

0

हर बार जब आप अपनी सूचना को अपडेट कर देते रूप में सरल कुछ (24 घंटे का समय) कर ...

public void updateNotifTime(RemoteViews customNotifView){ 
    Date currentTime = new Date(); 
    int mins = currentTime.getMinutes(); 
    String minString = ""; 
    if(mins<10){ 
     minString = "0"; 
    } 
    minString += mins; 
    customNotifView.setTextViewText(R.id.time, currentTime.getHours()+":"+minString); 
} 
+0

मैं चाहता हूं कि अधिसूचनाएं मूल के समान ही समय के आधार पर अपडेट हो जाएं। –

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