2012-12-20 19 views
0

我正在开发火炬。我用一个按钮开发了小部件。如果你点击那个按钮它打开火炬,如果你再次点击它关闭火炬。但是当手电筒开启并且用户按下电源按钮关闭屏幕时,它也会关闭手电筒。所以我想检查设备是否在火炬开启时进入睡眠模式,有人可以帮我吗?如何检查widget是否在android的背景中

这里是我的代码窗口小部件

public void onReceive(Context context, Intent intent) { 
    Log.d("torchWidget", "onReceive"); 
    final String action = intent.getAction(); 
    if(AppWidgetManager.ACTION_APPWIDGET_DELETED.equals(action)) { 
     final int appWidgetId = intent.getExtras().getInt(
       AppWidgetManager.EXTRA_APPWIDGET_ID, 
       AppWidgetManager.INVALID_APPWIDGET_ID); 
     if(appWidgetId != AppWidgetManager.INVALID_APPWIDGET_ID) { 
      this.onDeleted(context, new int[] { appWidgetId }); 
     } 
    } else{ 

     if(intent.getAction().equals(ACTION_WIDGET_RECEIVER)) { 
      String msg = "null"; 
      try{ 
       msg = intent.getStringExtra("msg"); 
       msg = "Flash Turned On"; 
      } catch(NullPointerException e) { 
       Log.e("Error", "msg = null"); 
      } 
      if(Constants.isFlashOnWidget){ 
       Constants.isFlashOnWidget = false; 
       Toast.makeText(context, "Flash turned OFF", Toast.LENGTH_SHORT).show(); 

       Intent serviceIntent = new Intent(context.getApplicationContext(), 
         BackgroundService.class); 

         context.stopService(serviceIntent); 

      } else { 
       Constants.isFlashOnWidget = true; 
       Intent serviceIntent = new Intent(context.getApplicationContext(), 
         BackgroundService.class); 

         context.startService(serviceIntent); 

      } 

     } 
     super.onReceive(context, intent); 
    } 

回答

1

检查isScreenOn()方法从PowerManager系统服务

+0

是的我也试过,我试过使用计时器任务,但计时器任务不工作。它只给出一个勾号 – Farooq