5

AndroidNotification用のカスタムRemoteViewを使用していますが、システムの動作を模倣したいと思います。

Androidは通知時間の形式をどのように更新しますか?一度設定すると変更されることはありますか?この動作をどのように模倣できますか?

4

4 に答える 4

2

I don't know much about the notification time format, but if you want to mimic their behaviour should have a look at the DateUtils class, especially the formatSameDayTime which I think does what you described.

于 2013-03-02T04:30:43.537 に答える
2

追加された通知は、同じ ID で再度 .notify を呼び出さない限り更新できません。

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

于 2013-03-06T00:12:07.707 に答える
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
        }
    }
};
于 2013-03-11T21:41:16.160 に答える
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);
}
于 2013-03-12T15:19:26.610 に答える