美文网首页
android 使用距离传感器实现贴近息屏离开亮屏

android 使用距离传感器实现贴近息屏离开亮屏

作者: JokAr_ | 来源:发表于2018-03-21 09:43 被阅读33次

    注册权限

    要控制屏幕息屏需要用到WakeLock,所以需要在Manifest里注册

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    

    代码实现

    • 注册传感器

      SensorManager  sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE)
      
      mSensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
      
      //息屏设置
      PowerManager mPowerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
      mWakeLock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,
                   TAG);
      
    • 注册传感器监听

       @Override
        protected void onResume() {
            super.onResume();
            //注册传感器,先判断有没有传感器
            if (mSensor != null)
                sensorManager.registerListener(this, mSensor, SensorManager.SENSOR_DELAY_NORMAL);
        }
      
    • 传感器变化监听

      /**
         * 传感器变化
         *
         * @param event
         */
        @Override
        public void onSensorChanged(SensorEvent event) {
            if (event.values[0] == 0.0) {
                   //贴近手机
                   //设置免提
                   audioManager.setSpeakerphoneOn(false);
                   audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
                   //关闭屏幕
                   if (!mWakeLock.isHeld())
                       mWakeLock.acquire();
      
               } else {
                   //离开手机
                   audioManager.setMode(AudioManager.MODE_NORMAL);
                   //设置免提
                   audioManager.setSpeakerphoneOn(true);
      
                   //唤醒设备
                   if (mWakeLock.isHeld())
                       mWakeLock.release();
               }
           }
      
    • 关闭页面时释放

      //传感器取消监听
      sensorManager.unregisterListener(this);
       //释放息屏
        if (mWakeLock.isHeld())
            mWakeLock.release();
        mWakeLock = null;
        mPowerManager = null;
      

    相关文章

      网友评论

          本文标题:android 使用距离传感器实现贴近息屏离开亮屏

          本文链接:https://www.haomeiwen.com/subject/fqjwqftx.html