Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何获取android中的屏幕锁定广播大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何在 android中锁定或打开屏幕?
我尝试使用SCREEN_OFF& SCREEN_ON在广播接收器中的动作但它不起作用.

public void onReceive(Context context,Intent intent) {
        Log.d("XYZ","Screen ON/OFF");

        Toast.makeText(context,"screen",10000).show();
        if(intent.getAction().equals(Intent.ACTION_SCREEN_ON))
        {
.......
}
}

在活动中,我已注册广播,如 –

屏幕是我的广播接收器的对象

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
            filter.addAction(Intent.ACTION_SCREEN_OFF);
            mContext.registerReceiver(screen,filter);

解决方法

在MainActivity.class中调用updateservice.class.

startservice(new Intent(MainActivity.this,updateservice.class));

updateservice.class

public class updateservice extends service {

    BroadcastReceiver mReceiver;
    public static int countOn = 0;
    public static int countOff = 0;

    @Override
    public void onCreate() {
        super.onCreate();
        // register receiver that handles screen on and screen off logic
        Log.i("updateservice","Started");
        IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        filter.addAction(Intent.ACTION_ANSWER);
        mReceiver = new MyReceiver();
        registerReceiver(mReceiver,filter);
    }

    @Override
    public void onDestroy() {

        unregisterReceiver(mReceiver);
        Log.i("onDestroy Reciever","Called");

        super.onDestroy();
    }

    @Override
    public int onStartCommand(Intent intent,int flags,int startId) {
        // TODO Auto-generated method stub
        Boolean screenOn = intent.getBooleanExtra("screen_state",falsE);
        if (!screenOn) {
            Log.i("screenON","Called");
            Log.i("viaservice","CountOn =" + countOn);

            Toast.makeText(getApplicationContext(),"Awake",Toast.LENGTH_LONG)
                    .show();
        } else {
            Log.i("screenOFF","CountOff =" + countOff);
        }


        return START_STICKY;
    }
    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }
}

接收器类

public class MyReceiver extends BroadcastReceiver {
    private Boolean screenOff;

    @Override
    public void onReceive(Context context,Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            screenOff = true;
            // Log.i("via Receiver","Normal ScreenOFF" );
        } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
            screenOff = false;
        } else if(intent.getAction().equals(Intent.ACTION_ANSWER)) {

        }

        Intent i = new Intent(context,updateservice.class);
        i.putExtra("screen_state",screenOff);
        context.startservice(i);
    }

}

大佬总结

以上是大佬教程为你收集整理的如何获取android中的屏幕锁定广播全部内容,希望文章能够帮你解决如何获取android中的屏幕锁定广播所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。