Android 每24小时设置一次通知警报

Android 每24小时设置一次通知警报,android,notifications,alarmmanager,alarm,Android,Notifications,Alarmmanager,Alarm,我想在一个特定的时间(比如晚上6点)每24小时发出一次本地通知 我引用了这个代码 及 这就是我正在尝试的代码 package com.banane.alarm; import java.util.Calendar; import android.app.Activity; import android.app.AlarmManager; import android.app.NotificationManager; import android.app.PendingIntent; i

我想在一个特定的时间(比如晚上6点)每24小时发出一次本地通知

我引用了这个代码

这就是我正在尝试的代码

package com.banane.alarm;

import java.util.Calendar;


import android.app.Activity;
import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity {

    private static final String TAG = "BANANEALARM";
    public AlarmManager alarmManager;
    Intent alarmIntent;
    PendingIntent pendingIntent;
    Button bananaButton;
    TextView notificationCount;
    TextView notificationCountLabel;
    int mNotificationCount;
    static final String NOTIFICATION_COUNT = "notificationCount";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (savedInstanceState != null) {
            // Restore value of members from saved state
            mNotificationCount = savedInstanceState.getInt(NOTIFICATION_COUNT);
        }

        setContentView(R.layout.activity_main);
        bananaButton = (Button)findViewById(R.id.bananaButton);
        notificationCount = (TextView)findViewById(R.id.notificationCount);
        notificationCountLabel = (TextView)findViewById(R.id.notificationCountLabel);

    }

    public void onSaveInstanceState(Bundle savedInstanceState) {
        // Save the user's current game state
        savedInstanceState.putInt(NOTIFICATION_COUNT, mNotificationCount);
        super.onSaveInstanceState(savedInstanceState);
    }

     @Override
     protected void onNewIntent( Intent intent ) {
         Log.i( TAG, "onNewIntent(), intent = " + intent );
            if (intent.getExtras() != null)
            {
                Log.i(TAG, "in onNewIntent = " + intent.getExtras().getString("test"));
            }
            super.onNewIntent( intent );
            setIntent( intent );
      }


    public void triggerAlarm(View v){
        setAlarm();
        bananaButton.setVisibility(View.GONE);
        notificationCountLabel.setVisibility(View.VISIBLE);
        notificationCount.setVisibility(View.VISIBLE);
        notificationCount.setText("0");
    }

    public void setAlarm(){
        alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

        alarmIntent = new Intent(MainActivity.this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(  MainActivity.this, 0, alarmIntent, 0);

        Calendar alarmStartTime = Calendar.getInstance();
        alarmStartTime.set(Calendar.HOUR, 18); // At the hour you wanna fire
        alarmStartTime.set(Calendar.MINUTE, 00); // Particular minute
        alarmStartTime.set(Calendar.SECOND, 0);

    //  alarmStartTime.add(Calendar.MINUTE, 2);
        alarmManager.setRepeating(AlarmManager.RTC, alarmStartTime.getTimeInMillis(), getInterval(), pendingIntent);
        //Log.i(TAG,"Alarms set every two minutes.");

    }

    private int getInterval(){
        int seconds = 60;
        int milliseconds = 1000;
        int repeatMS = seconds * 1440 * milliseconds;
        return repeatMS;
    }

    @Override 
    protected void onStart(){
        super.onStart();
        updateUI();
    }

    public void cancelNotifications(){
        Log.i(TAG,"All notifications cancelled.");
    }

    public void updateUI(){
        MyAlarm app = (MyAlarm)getApplicationContext();
        mNotificationCount = app.getNotificationCount();
        notificationCount.setText(Integer.toString(mNotificationCount));
    }

    @Override
    protected void onResume(){
        super.onResume();
        if(this.getIntent().getExtras() != null){
            Log.i(TAG,"extras: " + this.getIntent().getExtras());
            updateUI();

        }
     }

   }

当尝试示例中给出的代码时,它可以完美地工作。无论何时尝试发出通知,我都不会在通知出现时显示什么错误

为下一个24小时设置警报。我逐渐了解了真正的问题,警报触发时间是早上6点,而不是代码中所述的1800点。现在,我正在努力将警报设置为下午6点对于24小时格式,使用每天的小时数。要在设置下一个12小时后设置报警,请选择calendar.add(calendar.hour OF_DAY,12);。首先,每隔几分钟尝试一次,让通知正常工作(请参阅注释代码),然后找出时区问题。