AndroidNotification用のカスタムRemoteViewを使用していますが、システムの動作を模倣したいと思います。
Androidは通知時間の形式をどのように更新しますか?一度設定すると変更されることはありますか?この動作をどのように模倣できますか?
AndroidNotification用のカスタムRemoteViewを使用していますが、システムの動作を模倣したいと思います。
Androidは通知時間の形式をどのように更新しますか?一度設定すると変更されることはありますか?この動作をどのように模倣できますか?
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.
追加された通知は、同じ ID で再度 .notify を呼び出さない限り更新できません。
タイム スタンプを扱う場合は、RemoteViews を使用せずにネイティブの Notification NotificationCompat.Builder を使用することをお勧めします。
自分で回答を提供したことを考えると、まだ回答を探しているかどうかはわかりません。ただし、当初の目標を達成しようとしている場合は、おそらくやりたいと思うでしょう。
したがって、次のようなコードがあります。
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
}
}
};
通知を更新するたびに、次のような簡単なことを行います (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);
}