Using Proximity Sensor to Control Screen with Android Code Example

public class MainActivity extends Activity implements SensorEventListener {
    public static final String TAG = "SensorTest";
    private SensorManager sensorManager;
    private TextView tv;
    private PowerManager localPowerManager = null; // **电源管理对象**
    private WakeLock localWakeLock = null; // **电源锁**

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        tv = (TextView) findViewById(R.id.tv);
        localPowerManager = (PowerManager) getSystemService(POWER_SERVICE);
        // 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
        localWakeLock = this.localPowerManager.newWakeLock(32, "hahaha"); // **电源锁级别**,日志tag
    }

    @Override
    protected void onResume() {
        sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY), SensorManager.SENSOR_DELAY_UI);
        super.onResume();
    }

    @Override
    protected void onPause() {
        sensorManager.unregisterListener(this);
        super.onPause();
    }

    @Override
    public void onSensorChanged(SensorEvent event) {
        float[] values = event.values;
        switch (event.sensor.getType()) {
            case Sensor.TYPE_PROXIMITY:
                tv.setText(values[0] + "");
                if (values[0] == 0.0) { // **贴近手机**
                    Log.d(TAG, "hands up in calling activity");
                    if (!localWakeLock.isHeld()) {
                        localWakeLock.acquire(); // **申请设备电源锁**
                    }
                } else { // **远离手机**
                    Log.d(TAG, "hands moved in calling activity");
                    if (localWakeLock.isHeld()) {
                        localWakeLock.setReferenceCounted(false);
                        localWakeLock.release(); // **释放设备电源锁**
                    }
                }
                break;
        }
    }
}
rar 文件大小:1.43MB