2013-03-02 9 views
5

私はAndroidNotification用のカスタムRemoteViewを使用しています。私はシステムの動作を模倣したいと思います。Android通知の時刻形式はどのように更新されていますか?

Androidはどのように通知時間形式を更新しますか?設定後は変更されますか?どのように私はこの行動を模倣することができますか?

+0

I私の質問に私の答えがあった。しかし、それは私の問題を解決しません。 私は、(setContentを使って)カスタムビューを持つRemoteViewを持っています。ネイティブAndroidの動作を模倣して、通知に日付または時刻を表示したい。 API呼び出し(DateUtils.formatSameDayTime)を使用してこれを実現します。問題は、oncesetTextViewTextはRemoteViewで作成され、notificationManager.notifyが呼び出されます。つまり、テキストは永続的です。 渡された時間に基づいて日付または時刻を動的に変更したい(24時間以上は日付が表示されます)。助けてください。 –

答えて

0

自分で回答しても、まだ回答を探しているかどうかはわかりません。時間の変更(それだけの方法簡単です)

  • はそうクロックのティックをキャッチするBroadcastReceiverを設定したときにしかし、あなたはあなたの本来の目的を達成するために探している場合、あなたはおそらく

    • になるでしょうRemoteViewを再構築します。時間が変わったときを知っています。だから、

    、いくつかのコードこのようなビット:

    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

    .notifyが同じIDで再度呼び出されない限り、追加後に通知を更新することはできません。

    タイムスタンプを扱う場合は、RemoteViewを使用せずにネイティブNotification NotificationCompat.Builderを使用することをお勧めします。

    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

    通知は、ネイティブのものと同じように、経過時間に基づいてそれ自身で更新することを希望します。 –

    関連する問題