利用传感器实现类似电话应用,靠近耳边,灭屏,远离耳边,屏幕再次亮起
来源:互联网 发布:淘宝中差评外包 编辑:程序博客网 时间:2024/04/28 02:38
最近在做一个伪装来电的应用,就是用户可以点击开关,固定时间之后,电话应用会响起,真正的电话接听之后,靠近耳边,手机屏幕是关闭的,远离耳边,手机屏幕会自动亮起。经过研究,代码实现很简单,就是利用距离传感器,对相应事件进行处理。下面代码是实现了该功能的一个demo
package com.gionee.sencer;import android.app.Activity;import android.app.KeyguardManager;import android.app.KeyguardManager.KeyguardLock;import android.content.Context;import android.hardware.Sensor;import android.hardware.SensorEvent;import android.hardware.SensorEventListener;import android.hardware.SensorManager;import android.os.Bundle;import android.os.PowerManager;import android.os.SystemClock;import android.widget.Toast;public class SencerActivity extends Activity implements SensorEventListener { private final String TAG = "SencerActivity"; private SensorManager mSenserManager; private Sensor illuminationSensor; private KeyguardManager mKeyguardManager; private KeyguardLock mKeyguardLock; private PowerManager mPowerManager; private PowerManager.WakeLock mWakeLock; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mSenserManager = (SensorManager) getSystemService(SENSOR_SERVICE); mSenserManager.registerListener(this, mSenserManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), SensorManager.SENSOR_DELAY_NORMAL); illuminationSensor = mSenserManager .getDefaultSensor(Sensor.TYPE_PROXIMITY); if (illuminationSensor == null) { Toast.makeText(this, "您的设备沾不支持该功能!", 0).show(); return; } /* * 电源管理常用的几种状态 * * PARTIAL_WAKE_LOCK 屏幕关,键盘灯关,不休眠 * SCREEN_DIM_WAKE_LOCK 屏幕灰,键盘灯关,不休眠 * SCREEN_BRIGHT_WEEK_LOCK 屏幕亮,键盘灯关,不休眠 * FULL_WAKE_LOCK 屏幕亮,键盘灯亮,不休眠 */ mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); if (mWakeLock == null) { mWakeLock = mPowerManager.newWakeLock( PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_BRIGHT_WAKE_LOCK, TAG); mWakeLock.setReferenceCounted(false); } mKeyguardManager = (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); if (mKeyguardLock == null) { mKeyguardLock = mKeyguardManager.newKeyguardLock("unLock"); } } @Override protected void onDestroy() { mSenserManager.unregisterListener(this); super.onDestroy(); } public void onAccuracyChanged(Sensor sensor, int accuracy) { } @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) { float proximity = event.values[0]; if (proximity == 1.0) { mKeyguardLock.disableKeyguard(); mWakeLock.acquire(); } else { if (mWakeLock != null) { mWakeLock.release(); } mPowerManager.goToSleep(SystemClock.uptimeMillis()); mKeyguardLock.reenableKeyguard(); } } }}
实现上述功能需要一些权限,AndroidManifest.xml 文件如下:
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.gionee.sencer" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="15" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <activity android:name=".SencerActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.DISABLE_KEYGUARD" /> <uses-permission android:name="android.permission.DEVICE_POWER"/> <uses-permission android:name="android.permission.BIND_DEVICE_ADMIN" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /></manifest>
原创文章,转载请标明出处:http://blog.csdn.net/songshizhuyuan/article/details/12677445
- 利用传感器实现类似电话应用,靠近耳边,灭屏,远离耳边,屏幕再次亮起
- android实现 拿起耳边拨打电话
- iOS之使用距离传感器(靠近/远离屏幕-变暗/变亮)
- 不孝萦绕耳边
- 那些时常在耳边想起的“名词”
- C# WPF 仿QQ靠近屏幕上方自动缩起功能实现
- 回忆曾在耳边响起的一些话
- 【C# WinForm】类似QQ靠近屏幕边缘缩放功能
- android 在通话过程中,一直靠近距离传感器。通话结束时,要求马上点亮屏幕
- 在通话过程中,一直靠近距离传感器。通话结束时,要求马上点亮屏幕
- 在你耳边说出我与服务器合租的故事 [转][合租中国]
- 历史前进的步伐,隆隆地回回响在我的耳边,令人难以忘怀
- C#实现窗口靠近屏幕边缘自动吸附
- C#实现窗体靠近屏幕边界自动隐藏
- Android应用开发之利用服务实现电话监听
- 距离传感器故障(挂断电话屏幕无法唤醒)
- [FAQ02895]【call】在通话过程中,一直靠近距离传感器。通话结束时,要求马上点亮屏幕
- "世上最经典的25句话[zt] "很有道理,人需要一些话时常在耳边提醒
- Java基础——复习启动篇
- 文件目录函数
- PCI GXL学习之安装篇
- oracle数据库hanganalyze
- Steps to compile Android 4.0
- 利用传感器实现类似电话应用,靠近耳边,灭屏,远离耳边,屏幕再次亮起
- Windows Server 2003
- 关于typedef的用法总结
- 黑马程序员-自学笔记-字符串的使用
- TOMCAT虚拟主机及为虚拟主机配置应用 HTTP协议
- cocos2d-x 渲染机制深入解析(三)
- 利用node-inspector来调试node
- HDU 3555 Bomb 基础数位dp
- 不明觉厉的spring(2)---spring核心容器及ioc