2010-09-19 95 views
0

我怎麼知道Android手機何時睡覺?我嘗試了示例代碼,但沒有發生任何事情。如何知道Android手機何時要睡覺?

這是我到目前爲止有:

ScreenON_OFF_ACTIVITY.java

package com.pack; 

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 

public class ScreenON_OFF_ACTIVITY extends Activity { 

    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      onCreate(); 
    } 
    public void onCreate() { 

      // 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 "); 

      } 
      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.pack; 

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.pack; 

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; 
    } 
} 
+0

首先不要使用'System.out.println()',使用'android.utils.Log'類。 – fredley 2010-09-19 08:27:35

+0

但這不是問題。我無法檢測到screenOFf事件。 – James 2010-09-19 09:23:31

+0

[如何檢測手機是否處於睡眠模式下的代碼?](http://stackoverflow.com/questions/2359762/how-to-detect-whether-the-phone-is-in-sleep -mode-內式代碼) – 2011-11-09 04:11:53

回答

0

根據我的知識,你無法知道Android手機是否會睡覺或不是。只有一件事情你可以保證後,喚醒安卓手機可以睡覺任何時間。 屏幕關閉後可能會發生(屏幕黑屏)。