今天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" >

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐