Android(2) 实现摇晃锁屏,类似与点击关机按钮
2014-06-16 20:15
429 查看
实现屏幕休眠,类似于按下关机键
首先在AndroidManifest.xml文件中声明一个广播接受者
在<meta-data>标签里定义了一个xml文件用来说明权限.
在/res目录下新建xml文件夹,新建名为device_admin的xml文件,内容如下:
其他权限有 <wipe-data /> <!-- 清除所有数据(恢复出厂设置)-->
<reset-password /> <!-- 重置密码 -->
<limit-password /><!-- 限制密码选择-->
<watch-login /><!-- 监控登录尝试 -->
好了 配置到这就结束了,下面开始正片代码环节。
根据上面定义的一个广播接受者,我们先要创建一个名为LockScreen的类并且继承DeviceAdminReceiver(这是BroadReceiver的子类)
为了方便说明,我直接在LockScreen中创建了一个Activity类,并在AndroidManifest.xml中声明
好,下面来看LockScreen中的代码:
在启动服务之后,我们注册了一个晃动监听器
在onSensorChanged()方法中,当检测到摇晃的时候添加锁屏代码:
然后当服务开启的时候,只要摇晃手机,屏幕就能自动锁屏
首先在AndroidManifest.xml文件中声明一个广播接受者
<pre name="code" class="java"> <receiver android:name="cn.usst.LockScreen" android:permission="android.permission.BIND_DEVICE_ADMIN" > <meta-data android:name="android.app.device_admin" android:resource="@xml/device_admin" /> <intent-filter> <action android:name="android.app.action.DEVICE_ADMIN_ENABLED" /> </intent-filter> </receiver>
在<meta-data>标签里定义了一个xml文件用来说明权限.
在/res目录下新建xml文件夹,新建名为device_admin的xml文件,内容如下:
<?xml version="1.0" encoding="utf-8"?> <device-admin xmlns:android="http://schemas.android.com/apk/res/android"> <uses-policies> <force-lock /><!--这里说明了锁屏的权限--> </uses-policies> </device-admin>
其他权限有 <wipe-data /> <!-- 清除所有数据(恢复出厂设置)-->
<reset-password /> <!-- 重置密码 -->
<limit-password /><!-- 限制密码选择-->
<watch-login /><!-- 监控登录尝试 -->
好了 配置到这就结束了,下面开始正片代码环节。
根据上面定义的一个广播接受者,我们先要创建一个名为LockScreen的类并且继承DeviceAdminReceiver(这是BroadReceiver的子类)
为了方便说明,我直接在LockScreen中创建了一个Activity类,并在AndroidManifest.xml中声明
<activity android:name="cn.usst.LockScreen$Main" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
好,下面来看LockScreen中的代码:
public class LockScreen extends DeviceAdminReceiver { public static class Main extends Activity {// 这里声明了一个Activity类 private Intent service;// 用于启动服务 private DevicePolicyManager dpm;// 定义设备管理器 private ComponentName componentName;// 组建名称用来打开Activity或服务的 private Intent intent; Button start, stop;// 定义两个按钮用于开启和关闭服务 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 初始化 componentName = new ComponentName(this, LockScreen.class); // 新建intent对象启动service服务 service = new Intent(this, ShackeLockService.class); start = (Button) findViewById(R.id.open); start.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(Main.this, "开启", Toast.LENGTH_SHORT).show(); // 启动服务 startService(service); } }); stop = (Button) findViewById(R.id.close); stop.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(Main.this, "关闭", Toast.LENGTH_SHORT).show(); // 关闭服务 stopService(service); } }); <strong>// !!!!!!重点!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // 首先获得设备管理器 dpm = (DevicePolicyManager) getSystemService("device_policy"); while (true) { // 当当前服务没有被激活的时候 if (!dpm.isAdminActive(componentName)) { getAdmin(); } return; }</strong> } <strong>private void getAdmin() { // 添加锁屏权限,一定要添加不然会报错!!!!! intent = new Intent("android.app.action.ADD_DEVICE_ADMIN"); intent.putExtra("android.app.extra.DEVICE_ADMIN", componentName); intent.putExtra("android.app.extra.ADD_EXPLANATION", "Additional text explaining why this needs to be added"); startActivity(intent); }</strong> } }
在启动服务之后,我们注册了一个晃动监听器
@Override public void onCreate() { // TODO Auto-generated method stub sensorManagerHelper = new SensorManagerHelper(getApplicationContext()); sensorManagerHelper.start(); }
在onSensorChanged()方法中,当检测到摇晃的时候添加锁屏代码:
<strong>// 得到设备管理器 DevicePolicyManager manager = (DevicePolicyManager) context.getSystemService("device_policy"); // 锁屏 manager.lockNow();</strong>
然后当服务开启的时候,只要摇晃手机,屏幕就能自动锁屏
相关文章推荐
- Android_UI_点击按钮切换背景效果实现
- Android按钮点击效果的实现(selector)
- android实现clickspan点击的效果(类似@好友,当action_up时,效果消失)
- android图片按钮点击变灰变量效果实现(一张背景图实现效果)
- Android中利用SpannableString实现点击同一按钮(Button)不同位置执行不同任务
- Delphi实现类似Android锁屏的密码锁控件
- android 点击按钮实现页面跳转并显示以选择信息
- Android应用中实现点击按钮震动
- Android_UI_点击按钮切换背景效果实现
- Android中按钮点击事件的四种实现方式
- Android按钮点击效果的实现(selector)
- 【Android 界面效果3】Android_UI_点击按钮切换背景效果实现
- android实现类似iphone的开关按钮
- android 按钮点击效果的实现
- Android_UI_点击按钮切换背景效果实现
- Android中图片实现按钮点击效果
- Android 类似IPhone图片点击效果实现,点击logo变暗
- Android_UI_点击按钮切换背景效果实现
- Android_UI_点击按钮切换背景效果实现
- Android下实现win8的按钮点击效果