Android 检测设备是否锁定

Android 检测设备是否锁定,android,Android,我几天前发现了这段代码,但它不起作用。谁能解释一下为什么?我想检测用户是否锁定了设备。它必须打印第2点、第1点和第2点(如果手机被解锁,然后再次锁定和解锁),但它只打印第2点,仅此而已。没别的了。 我的活动: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(save

我几天前发现了这段代码,但它不起作用。谁能解释一下为什么?我想检测用户是否锁定了设备。它必须打印第2点、第1点和第2点(如果手机被解锁,然后再次锁定和解锁),但它只打印第2点,仅此而已。没别的了。 我的活动:

public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startService(new Intent(MainActivity.this, MyService.class));
            }
        });
    }
}
我的服务:

public class MyService extends Service {
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        KeyguardManager kgMgr =
                (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
        boolean showing = kgMgr.inKeyguardRestrictedInputMode();
        if (showing){
            Log.i("Point ", "1");
        }else{
                Log.i("Point ", "2");
            }
        }
    }
}

对此有很多答案。但是看看这个

KeyguardManager kM = 
    (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE);
boolean isLocked= kM.inKeyguardRestrictedInputMode();

@Striper可能重复这不是重复,因为我问的是为什么这段代码不起作用,而不是怎么做。因为你的代码只在创建服务时运行一段时间。使用计时器在一定时间后检查设备的状态interval@naveed-阿里:你说“因为你的代码在创建服务时只运行一个”是什么意思? 我想让我的应用程序检测设备何时被锁定,以及何时不仅仅是在我按下按钮之后。你能解释一下你的代码和我的代码有什么区别吗?谢谢