android psensor测试,android传感器Gsensor和Psensor的使用举例

今天leader给的任务是这样的,做一个开机自启动的后台Service,实现对重力及距离的检测

当手机屏幕朝下时,让Psensor可用。否则不可用

实现代码如下:

SensorFunctionService.java

package com.sensor.demo;

import android.app.Service;

import android.content.Context;

import android.content.Intent;

import android.hardware.Sensor;

import android.hardware.SensorEvent;

import android.hardware.SensorEventListener;

import android.hardware.SensorManager;

import android.os.IBinder;

import android.os.PowerManager;

public class SensorFunctionService extends Service {

private static final String LOG_TAG = "SensorDemoActivity";

private static final int PROXIMITY_SCREEN_WAKE_LOCK = 32;

private static final float CRITICAL_ANGLE = -5.0f;

private static final int Z_ORATIATION = 2;

private SensorManager mSensorManager;

private Sensor mGsensor;

private SensorEventListener mGsensorListener;

private PowerManager pm;

private PowerManager.WakeLock mProximityWakeLock;

private boolean pSensorOpened;

@Override

public void onCreate() {

super.onCreate();

pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

mProximityWakeLock =

pm.newWakeLock(PROXIMITY_SCREEN_WAKE_LOCK, LOG_TAG);

mSensorManager= (SensorManager) getSystemService(SENSOR_SERVICE);

mGsensor = mSensorManager.getDefaultSensor(Sensor.TYPE_GRAVITY);

mGsensorListener = new SensorEventListener() {

@Override

public void onAccuracyChanged(Sensor sensor, int accuracy) {

}

@Override

public void onSensorChanged(SensorEvent event) {

if(event.values[Z_ORATIATION] < CRITICAL_ANGLE){//screen up

if(!pSensorOpened){

pSensorOpened = true;

mProximityWakeLock.acquire();//open PSensor function

}

} else if(pSensorOpened){//screen down

pSensorOpened = false;

mProximityWakeLock.release();//close PSensor function

}

}

};

mSensorManager.registerListener(mGsensorListener, mGsensor, SensorManager.SENSOR_DELAY_GAME);

}

@Override

public IBinder onBind(Intent arg0) {

return null;

}

}

BootCompletedReceiver.java

package com.sensor.demo;

import com.sensor.demo.SensorFunctionService;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class BootCompletedReceiver extends BroadcastReceiver{

@Override

public void onReceive(Context context, Intent intent) {

// TODO Auto-generated method stub

Intent mIntent = new Intent(context, SensorFunctionService.class);

context.startService(mIntent);

}

}

Manifest.xml

package="com.sensor.demo"

android:versionCode="1"

android:versionName="1.0" >

android:icon="@drawable/ic_launcher"

android:label="@string/app_name" >

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值