как установить будильник, когда экран выключен для устройства Android? - PullRequest
1 голос
/ 25 января 2012

Привет. Я хочу установить уведомление о тревоге, когда экран мобильного телефона выключен. Мой код "

 package com.my.timeout;
 import java.util.Calendar;
 import android.app.Activity;
 import android.app.AlarmManager;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.os.Bundle;
 import android.widget.Toast;
 public class ScreenON_OFF_ACTIVITY extends Activity
 {
 AlarmManager am;
  private static final int REQUEST_CODE = 0;

@Override
  public void onCreate(Bundle savedInstanceState) 
  {
         super.onCreate(savedInstanceState);

         onCreate1();

  }

  public void onCreate1() {



         // initialize receiver

     System.out.println("onCreate1 ");

         IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);

         filter.addAction(Intent.ACTION_SCREEN_OFF);

         BroadcastReceiver mReceiver = new ScreenReceiver();

         registerReceiver(mReceiver, filter);

         System.out.println("onCreate ");
         }


     @Override

     protected void onPause() {

         // when the screen is about to turn off

         if (ScreenReceiver.screenOff) {

             // this is the case when onPause() is called by the system due to a screen state change

             System.out.println("SCREEN TURNED OFF");

         } else {

             // this is when onPause() is called when the screen state has not changed
      System.out.println("this is when onPause() is called when the screen state has not changed ");
     display_alarm();
         }
       super.onPause();

    }

     @Override

     protected void onResume() {

         // only when screen turns on

         if (!ScreenReceiver.screenOff) {

             // this is when onResume() is called due to a screen state change

             System.out.println("SCREEN TURNED ON");

         } else {

             // this is when onResume() is called when the screen state has not changed

           System.out.println(" this is when onResume() is called when the screen state has not changed ");

         }

         super.onResume();

     }
 }

ScreenReceiver.java

     package com.my.timeout;

    import android.content.BroadcastReceiver;
   import android.content.Context;
    import android.content.Intent;

    public class ScreenReceiver extends BroadcastReceiver
       {     

    public static boolean screenOff;



    @Override

    public void onReceive(Context context, Intent intent) {



      System.out.println("onReceive ");

        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {

            screenOff = true;

            System.out.println("SCREEN TURNED OFF on BroadcastReceiver");

        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {

            screenOff = false;

            System.out.println("SCREEN TURNED ON on BroadcastReceiver");

        }

        Intent i = new Intent(context, UpdateService.class);

        i.putExtra("screen_state", screenOff);

        context.startService(i);

    }



}

UpdateService.java

   package com.my.timeout;

   import android.app.Service;
    import android.content.BroadcastReceiver;
   import android.content.Intent;
   import android.content.IntentFilter;
    import android.os.IBinder;

     public class UpdateService extends Service {


    public void onCreate() {

        super.onCreate();

        // register receiver that handles screen on and screen off logic



        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);

        filter.addAction(Intent.ACTION_SCREEN_OFF);

        BroadcastReceiver mReceiver = new ScreenReceiver();

        registerReceiver(mReceiver, filter);
    }



    @Override

    public void onStart(Intent intent, int startId) {

        boolean screenOn = intent.getBooleanExtra("screen_state", false);
        if (!screenOn) {

         System.out.println("Screen is off");

        } else {

            System.out.println("Screen is on");

        }

    }



 @Override

 public IBinder onBind(Intent intent) {

 return null;

 }

}

Теперь я хочу установить будильник, когда экран выключен. Как я могу это сделать. Может кто-нибудь сказать мне? заранее спасибо.

...