锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

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

时间:2022-10-10 02:00:00 距离传感器会感应亮屏

注册权限

需要控制屏幕息屏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;
锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章