2014-01-13 40 views
0

我正在開發一個應用程序,當屏幕處於關閉狀態並且屏幕處於打開狀態時需要暫停活動時,必須重新開始。檢測屏幕是關閉還是在服務中

我希望在服務內完成檢測。我用startservice()來啓動我的服務。但不知道在哪裏把下面的代碼:

pm = (PowerManager) getSystemService(Context.POWER_SERVICE); 
if (pm.isScreenOn()) 
    MyActivity.onResume(); 
else 
    MyActivity.onPause(); 

我試着用谷歌搜索,但我找不到它。

+0

這發生在默認情況下,Android中的任何Activity都會在屏幕熄滅時暫停,並在屏幕再次打開時恢復。 – Egor

回答

3

使用BroadcastReceiver。聲明它的服務:

private final BroadcastReceiver myReceiver = new myReceiver(); 

在服務的onCreate:

final IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
    filter.addAction(Intent.ACTION_SCREEN_OFF); 
    registerReceiver(myReceiver, filter); 

在服務的onDestroy:

unregisterReceiver(myReceiver); 

創建接收器:

public class myReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      //Do something when the screen goes off 
     } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      //Do something when it's back on 
     } 
    } 

無論如何,請記住這些活動默認情況下,OnPause和onResume當屏幕關閉/開啓時

相關問題