仿微信语音接听黑屏亮屏

Android系统自带有11种传感器,我们可以通过距离传感器来实现。

创建传感器管理器:

    /**
     * 传感器
     */
    private SensorManager sm;
    //设备的电源控制器
    private PowerManager mPowerManager;
    //唤醒锁
    private PowerManager.WakeLock mWakeLock;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        sm = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
         //获取系统服务POWER_SERVICE,返回一个PowerManager对象
        mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
        //获取PowerManager.WakeLock对象
        /**
         * 参数一是PowerManager提供的的四种唤醒锁
         * PARTIAL_WAKE_LOCK
         * SCREEN_DIM_WAKE_LOCK  (level 17  deprecated)
         * SCREEN_BRIGHT_WAKE_LOCK  (level 17  deprecated)
         * FULL_WAKE_LOCK  (level 17  deprecated)
         */
        mWakeLock = this.mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWake");
    }

注册监听

 @Override
    protected void onResume() {
        super.onResume();
        Sensor s = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
        if (s != null) {
            sm.registerListener(mSensorListener, s, SensorManager.SENSOR_DELAY_NORMAL);
        }
    }

    /**
     * 感应器监听
     */
    private SensorEventListener mSensorListener = new SensorEventListener() {
        @Override
        public void onSensorChanged(SensorEvent event) {

        float[] its = event.values;
        if (its != null && event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
            if (its[0] == 0.0) {
                if (mWakeLock.isHeld()) {
                    return;
                } else {
                    mWakeLock.acquire();
                }

            } else {
                if (mWakeLock.isHeld()) {
                    return;
                } else {
                    mWakeLock.setReferenceCounted(false);
                    mWakeLock.release();
                }
            }
        }
    }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {

        }
    };

“`
销毁取消注册

@Override
protected void onDestroy() {
    stopSensor();
    super.onDestroy();
}

/**
 * 取消注册
 */
public synchronized void stopSensor() {
    if (sm != null) {
         mWakeLock.release();//释放电源锁
        sm.unregisterListener(this);//注销传感器监听
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值