【问题标题】:How to test proximity sensor in Samsung galaxy S10 or S10+?如何在三星 Galaxy S10 或 S10+ 中测试接近传感器?
【发布时间】:2019-04-04 08:31:35
【问题描述】:

我想在三星较新型号(s10 或 s10+)上测试接近传感器,我使用旧的传统方法来注册接近传感器的侦听器,它适用于除这 2 个设备之外的所有设备。我在互联网上搜索并得知 S10 在显示屏下方有接近传感器(在通话期间闪烁的像素会亮起等)。我还使用了许多 3rd 方传感器测试应用程序,但它们都不适用于 S10。有谁知道三星改变了什么?我们如何以编程方式访问 S10 接近传感器? 我试过下面的代码,但它总是烤得很远。

@Override
   public void onSensorChanged(SensorEvent event) {
       if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
           if (event.values[0] >= -SENSOR_SENSITIVITY && event.values[0] <= SENSOR_SENSITIVITY) {
               //near
               Toast.makeText(getApplicationContext(), "near", Toast.LENGTH_SHORT).show();
           } else {
               //far
               Toast.makeText(getApplicationContext(), "far", Toast.LENGTH_SHORT).show();
           }
       }
   }

   @Override
   public void onAccuracyChanged(Sensor sensor, int accuracy) {
       Toast.makeText(getApplicationContext(), "accuracy changed", Toast.LENGTH_SHORT).show();
   }

【问题讨论】:

  • 显然接近传感器在很多 s10/s10+ 设备上似乎有些损坏 oO
  • 是的,我想是的,因为当我运行上面的代码时,它只是给出了一个常数值 5.0,然后它停止了,不知道为什么。当我检查传感器侦听器未注册但不知道为什么它在给出 1 个值后停止时,为什么 sensorChanged 回调没有重复给出响应
  • 我得到了同样的东西。 onSensorChanged 在注册后立即被调用一次,但再也不会调用了
  • 如果有人得到解决方案,也请在这里发帖
  • 我猜它可能使用了一些自定义传感器。尝试检查 CPU Z,如果他们可以做到,那么应该可以做到

标签: java android


【解决方案1】:

您可以使用密码 *#77692# Test proximity sensor on Samsung Galaxy S10

【讨论】:

    【解决方案2】:

    尽量不要直接使用传感器 API。要测试接近传感器,只需获取使用 PROXIMITY_SCREEN_OFF_WAKE_LOCK 参数创建的唤醒锁。

    获取测量距离无济于事,但是当您将手掌放在传感器上时,屏幕会开始关闭/打开。

    class ProximityMgr(context: Context) {
        private val powerManager: PowerManager = context.getSystemService()!!
        private val wakeLock: PowerManager.WakeLock
    
        init {
            wakeLock = powerManager.newWakeLock(
                    PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, 
                    "lock:proximity_screen_off")
        }
    
        fun acquire() {
            if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
                if (wakeLock.isHeld) {
                    wakeLock.release()
                }
                wakeLock.acquire(WAKE_LOCK_TIMEOUT_MS)
            } else {
                Log.w(TAG, "not supported")
            }
        }
    
        fun release() {
            if (wakeLock.isHeld)
                wakeLock.release()
        }
    
        companion object {
            private const val TAG = "ProximitySensor"
            private const val WAKE_LOCK_TIMEOUT_MS: Long = 2 * 3600 * 1000
        }
    }
    

    此 sn-p 取自 this answer

    【讨论】:

      【解决方案3】:

      这是打开和测试接近传感器的方法。

      拨*#77692#你会得到两个传感器来测试:

      1:光传感器 2:接近传感器

      您无法将其打开并保持打开状态。我们可以通过打开它来测试它,然后它会变成关闭模式。三星很奇怪。

      也许下一次更新将提供继续使用它的可能性。所以屏幕不会在口袋里解锁。 希望对您有所帮助。

      【讨论】:

        【解决方案4】:

        简单来说(非编程方式) 方法1 拨号器上的星号散列零星号散列(#0#) 选择接近传感器的选项块将在那里(红色,绿色,蓝色,振动,相机)。现在它将显示勒克斯(发光强度)量更多光更多勒克斯。检查是否明智也。你现在也可以悬停显示屏呈绿色并带有振动。 方法2 拨打电话。在通话期间,右上方区域(摄像头左侧)会在显示屏上闪烁一个白点。(看起来像一个像素点)。现在悬停并检查。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-08-03
          • 1970-01-01
          • 1970-01-01
          • 2020-02-22
          • 2021-11-10
          • 2019-08-31
          • 1970-01-01
          相关资源
          最近更新 更多