如何手动检查android屏幕锁

如何手动检查android屏幕锁,android,android-intent,service,Android,Android Intent,Service,我创建了一项服务,但即使在手机锁定期间,这项服务也一直有效。我不想那样做。我想在我的程序上手动检查它,只是我尝试了所有的方法,但都做不到。你能帮帮我吗 这是我的主要活动 import android.support.v7.app.ActionBarActivity; import android.content.Intent; import android.os.Bundle; import android.os.CountDownTimer; import android.view.Menu;

我创建了一项服务,但即使在手机锁定期间,这项服务也一直有效。我不想那样做。我想在我的程序上手动检查它,只是我尝试了所有的方法,但都做不到。你能帮帮我吗

这是我的主要活动

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends ActionBarActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Timer();

    }

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

public void Timer(){
    new CountDownTimer(5000, 1000) {
        Intent intent = new Intent(MainActivity.this, Servis.class);
        public void onTick(long millisUntilFinished) {
            stopService(intent);
        }
        public void onFinish() {
            startService(intent);
            Timer();
        }
     }.start(); 
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}
这就是服务

import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.IBinder;
import android.os.Vibrator;

public class Servis extends Service implements SensorEventListener {

SensorManager sManager;
Sensor sensor;
private Vibrator vibrator;
boolean flag;
Intent intent;

private BroadcastReceiver broadcastReceiver= new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
            sManager.unregisterListener(Servis.this);
            sManager.registerListener(Servis.this, sensor,
                    SensorManager.SENSOR_DELAY_NORMAL);
        }
    }
};

@Override
public void onCreate() {
    sManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    sensor = sManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);

    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
    registerReceiver(broadcastReceiver, filter);

    sManager.registerListener(this, sensor,
            SensorManager.SENSOR_DELAY_NORMAL);

    vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    flag=true;
}

@Override
public IBinder onBind(Intent arg0) {
    return null;
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return Service.START_NOT_STICKY;
}

@Override
public void onDestroy() {
    super.onDestroy();
}

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

@Override
public void onSensorChanged(SensorEvent event) {
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) {
        float z = event.values[2];
        //AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
        if (z<5 && flag==true) {
            vibrator.vibrate(200);
            flag=false;
            //audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
        } 
        /*else {
            audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
        }*/
    }
}
}

PowerManager有一些您可能想了解的功能。类似于PowerManager pm=PowerManager getSystemServicePOWER\u服务;然后用pm.isScreenOn检查屏幕状态;或者类似的东西。你已经有了一个屏幕关闭的接收器,只要在屏幕关闭时呼叫停止服务就可以了。如果需要在解锁时重新启动,请将其添加到接收器以重新打开。如果你需要恢复服务,不要停止服务,而是在接收器屏幕关闭后关闭你不想运行的任何东西,并在它重新打开时启用。我有一个接收器,但它不工作,我不知道为什么。它从不在程序中接收和调用它的函数。