您的位置:首页 > 其它

实现简单锁屏

2016-02-09 22:45 281 查看
1

package example.com.locker.service;

import android.app.KeyguardManager;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.util.Log;
import android.widget.Toast;

import example.com.locker.activity.LockActivity;

public class LockService extends Service {

private final  String TAG="mylock";

public LockService() {

}

private Intent mIntent;

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

private BroadcastReceiver mScreenOnReceiver=new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {

String action=intent.getAction();

Log.d("mylock",action);
if(action.equals(Intent.ACTION_SCREEN_ON)
||action.equals(Intent.ACTION_SCREEN_OFF))
{
km=(KeyguardManager)context.getSystemService(Context.KEYGUARD_SERVICE);
kl=km.newKeyguardLock("");
kl.disableKeyguard();
startActivity(mIntent);
}
}
};

KeyguardManager km;
KeyguardManager.KeyguardLock kl;

@Override
public void onCreate() {
super.onCreate();

Toast.makeText(this,"lock 服务启动",Toast.LENGTH_SHORT).show();

mIntent=new Intent(LockService.this, LockActivity.class);
mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

IntentFilter mScreenOnFilter=new IntentFilter();
mScreenOnFilter.addAction("android.intent.action.SCREEN_ON");
mScreenOnFilter.addAction("android.intent.action.SCREEN_OFF");

registerReceiver(mScreenOnReceiver,mScreenOnFilter);

}

@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG,"服务终止");
this.unregisterReceiver(mScreenOnReceiver);
//被销毁时启动自身,保持在后台存活
startService(new Intent(this,LockService.class));
}

}


package example.com.locker.activity;

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;

import example.com.locker.R;
import example.com.locker.view.LockLayer;

public class LockActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);
//全屏显示
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);

setContentView(R.layout.activity_lock);
Button unlockButton=(Button)findViewById(R.id.unlock);
unlockButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}

//屏蔽音量键,返回键
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (event.getKeyCode())
{
case KeyEvent.KEYCODE_BACK:
case  KeyEvent.KEYCODE_VOLUME_DOWN:
case  KeyEvent.KEYCODE_VOLUME_UP:
return true;
}
return super.onKeyDown(keyCode,event);
}

}


屏蔽系统本身锁屏,需要权限<uses-permission android:name="android.permission.DISABLE_KEYGUARD" />


监听开机广播,需要权限<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


监听开机广播

package example.com.locker.service;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;
import android.widget.Toast;

import example.com.locker.activity.CardActivity;

public class BootReceiver extends BroadcastReceiver {

public BootReceiver() {

}

@Override
public void onReceive(Context context, Intent intent) {

Intent serviceIntent=new Intent(context,LockService.class);
context.startService(serviceIntent);
Toast.makeText(context,"开启启动",Toast.LENGTH_SHORT).show();

}
}


监听屏幕SCREEN_ON和SCREEN_OFF这两个action
只能通过代码注册才能监听到,不能再Manifest.xml文件中给出

<receiver
android:name=".service.BootReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: