如何在三星银河S10或S10 +中测试接近传感器?

时间:2019-04-04 08:31:35

标签: java android

我想在三星较新型号(s10或s10 +)上测试接近传感器,我使用了旧的传统方式为接近传感器注册了侦听器,并且该传感器适用于除这两种设备以外的所有设备。我通过互联网进行搜索,发现S10的显示屏下方有接近传感器(在通话等过程中,闪烁的像素会亮起)。我还使用了许多第三方传感器测试应用程序,但是它们都不适用于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();
   }

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

简单来说(非编程方式) 方法1 拨号器上的星号哈希值零星号哈希值(#0 #) 选择接近传感器时会有一个选项块(红色,绿色,蓝色,振动,照相机)。现在它将显示勒克斯(发光强度),更多勒克斯更多的光。也请明智地检查。您现在也可以将鼠标悬停显示屏出现绿色振动。 方法2 拨打电话。在通话过程中,右上方(相机左侧)的显示屏上会出现一个白点(看起来像一个像素点)。现在将鼠标悬停并检查。

答案 2 :(得分:0)

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

拨号*#77692#您将得到两个传感器进行测试:

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

您无法将其打开并保持打开状态。我们可以通过将其关闭后再打开它来对其进行测试。三星很奇怪。

也许下一次更新将使它保持打开的可能性。因此屏幕不会在口袋里解锁。  希望对您有所帮助。

答案 3 :(得分:0)

尽量不要直接使用传感器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
    }
}

此摘录摘自this answer