/*
[email protected] Dawin,2015-2-4
*
*/
package com.example.superlockscreen;
import com.example.superlockscreen.R;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.graphics.PixelFormat;
import android.os.IBinder;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.widget.Button;
/**
* 实现界面锁定。禁止手机的任何按键操作
* @author Dawin
*
*Don't go for activity,
*because android will not show lock screen behind your activity for security reason,
*so use service instead of Activity.
*/
public class AppService extends Service
{
private WindowManager.LayoutParams mLayoutParams;
private WindowManager wm;
private View lockScreenView;
private Button btn;
@Override
public void onCreate()
{
super.onCreate();
wm = (WindowManager) getSystemService(WINDOW_SERVICE);
// 设置lockScreenView视图的属性
// 属性TYPE_SYSTEM_ERROR:出现在任何界面的前面
mLayoutParams = new WindowManager.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT,
0, 0, WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON, PixelFormat.RGBA_8888);
LayoutInflater mInflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
//绑定自定义界面
lockScreenView = mInflater.inflate(R.layout.lock_screen, null);
//获取界面的按钮
btn = (Button) lockScreenView.findViewById(R.id.btn);
btn.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// 关闭锁屏界面
removeViewFromWindow();
}
});
wm.addView(lockScreenView, mLayoutParams);
};
/** 关闭锁屏界面 */
public void removeViewFromWindow()
{
if (lockScreenView != null)
{
wm.removeView(lockScreenView);
}
}
@Override
public IBinder onBind(Intent intent)
{
return null;
}
}
4最后在Activity中绑定服务