0

Service我想BroadcastReceiver注册android.net.wifi.WIFI_STATE_CHANGED

public void onCreate() {
        super.onCreate();

        final IntentFilter filter = new IntentFilter("android.net.wifi.WIFI_STATE_CHANGED");      

        MyReceiver myreceiver = new MyReceiver();

        // Register the receiver so that your service will listen for broadcast
        registerReceiver(myreceiver , filter);      

一切都很好并且可以正常工作,但是在 wifi 状态发生变化(例如断开连接)后,我希望它在 5 分钟内再次激活 1 分钟,然后再次断开连接。5分钟后再次激活1分钟。一般 5 分钟后连接只需 1 分钟,然后再次断开连接...

我尝试了这个,AlarmManager但我遇到了如何在 5 分钟后连接 1 分钟然后断开连接的问题。

我的代码不是我尝试做的。它未连接,然后断开连接:

AlarmManager alarmMgr = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
            Intent alarmIntent = new Intent(this, WifiReceiver.class);
            PendingIntent pendingAlarmIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);

            // start in 5 minutes and rest in 1 minutes interval
            alarmMgr.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, 5*60*1000, 1*60*1000,  pendingAlarmIntent);

我怎样才能做到这一点?我AlarmManager的正确方法

4

1 回答 1

1

在您的服务中使用一些计时器来完成...

boolean delayedAgain = false;
long newDelayedTimeFromNow;
private Handler mHandlerTime = new Handler();
////////////////////// 
Runnable  mUpdateTimeTask = new Runnable() {             
    public void run() {
        if(delayedAgain)
        {

        }
        else
        {

    }
}; 
///to start timer 
      mHandlerTime.removeCallbacks(mUpdateTimeTask);
      mHandlerTime.postDelayed(mUpdateTimeTask, gps_interval); 

因此,您可以确定一个计时器 5 分钟以打开 WIFI,另一个计时器 6 分钟以关闭...再次使用boolean dealyed来实现... fe 当第一个关闭 5 分钟时将 bool 更改为 true,第二个将运行时去 ti if(..== true)

于 2012-12-03T11:21:31.787 回答