0

私はトーチを開発しています。単一のボタンを備えたウィジェットを開発しました。そのボタンをクリックするとトーチがオンになり、もう一度クリックするとトーチがオフになります。しかし、トーチがオンで、ユーザーが電源ボタンを押して画面をオフにすると、トーチもオフになります。トーチがオンになっている間にデバイスがスリープモードになったかどうかを確認したいのですが、誰か助けてもらえますか?

ウィジェットでトーチのオンとオフを切り替えるコードは次のとおりです

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);
    }
4

2 に答える 2

1

PowerManagerシステム サービスからの確認isScreenOn()方法

于 2012-12-20T10:15:20.583 に答える