1.今天的任务安排: 1. 了解什么是传感器,传感器的分类,传感器在手机中的应用等; 2. 相对简单的距离传感器编写demo并能实现基本功能; 二、思路方法: 传感器编写步骤: 1. 通过getSystemService获得SensorManager实例对象; mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 2. 通过SensorManager实例对象获得想要的传感器对象:参数决定获取哪个传感器; mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_LIGHT); 3. 在获在获得焦点时注册传感器,让这个类实现SensorEventListener接口; 4. 必须重写的两种方法:onAccuracyChanged,onSensorChanged; 三、 代码编写 1. 首先在androidManifest申请文件中的权限; <uses-permission android:name="android.permission.DEVICE_POWER"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> 加上第一个权限xml我会在文件中报错,但我会非常敏捷地去clean掉落,实现步骤:找到eclipse菜单选项project --> clean,选择当前的项目ok。 2. 只有在布局文件中xml文件即可; 3. java类文件文件: public class MainActivity extends Activity implements SensorEventListener {
public static final String TAG = "SensorTest"; ///调用距离传感器控制屏幕 private SensorManager mManager;//传感器管理对象 ///屏幕开关 private PowerManager localPowerManager = null;///电源管理对象 private PowerManager.WakeLock localWakeLock = null;//电源锁 private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView) findViewById(R.id.tv); mManager = (SensorManager)getSystemService(Context.SENSOR_SERVICE); //获取系统服务POWER_SERVICE,返回一个PowerManager对象 } public void onResume(){
super.onResume(); mManager.registerListener(this, mManager.getDefaultSensor(Sensor.TYPE_PROXIMITY),// 距离感应 SensorManager.SENSOR_DELAY_NORMAL);//注册传感器,第一个参数是距离监听器,第二个是传感器类型,第三个是延迟类型 } public void onStop(){
super.onStop(); Log.d(TAG,"on stop"); } public void onDestroy(){
super.onDestroy(); Log.d(TAG,"on destroy"); if(mManager != null){
mManager.unregisterListener(this);///取消传感器监听 } } @Override public void onSensorChanged(SensorEvent event) {
float[] its = event.values; //Log.d(TAG,"its array:" its "sensor type :" event.sensor.getType() " proximity type:" Sensor.TYPE_PROXIMITY); if (its != null && event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
//测试后,当手靠近距离传感器时its[0]返回值为0.当手离开时,返回1.0 tv .setText(its[0].toString[]); } } } @Override public void onAccuracyChanged(Sensor sensor, it accuracy) {
// TODO 自动生成的方法存根 } } 四、 功能说明: 做的是距离传感器,通过距离传感器来控制屏幕的亮灭,当距离为0是则屏幕暗,字符串显示为0; 当距离超过设定的阈值为1时则屏幕亮,字符串显示为1。 五、 遇到的困境 在屏幕灭掉的时候根本看不到距离感应的显示,这时将屏幕暗的级别改的相对低一些,使屏幕仍是白色的;