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

6

我想在三星较新的型号(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();
   }


显然,许多S10 / S10 +设备上的接近传感器似乎有些损坏。 - jonathan Heindl
1
是的,我想是这样,因为当我运行上面的代码时,它只会给出一个恒定值5.0,然后停止,不知道为什么。我检查了传感器监听器是否注册,但不知道为什么在给出1个值后停止,为什么sensorChanged回调不会重复响应。 - Zohaib ZJ
1
我遇到了同样的问题。在注册后,onSensorChanged只被调用一次,但之后再也没有被调用过。 - codeskraps
如果有人得到解决方案,请在此处发布。 - Zohaib ZJ
我猜可能是使用了一些定制传感器。尝试检查 CPU Z,如果可以的话应该能够做到。 - WorkaroundNewbie
4个回答

3

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
    }
}

这段代码来自于这个回答

1

以下是如何打开和测试接近传感器的方法。

拨打 *#77692#,您将获得两个传感器进行测试:

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

您不能将其打开并保持打开状态。我们只能通过打开它来测试它,之后它会进入关闭模式。三星公司的这种设计非常奇怪。

也许下一个更新将提供保持其开启的可能性,这样屏幕就不会在口袋中解锁。希望这能帮到您。


0

简单来说(非编程语言): 方法1 在拨号器上输入星号哈希零星号哈希(#0#),会出现一排选项(红色、绿色、蓝色、振动、相机),选择接近传感器,然后它会显示光强度(亮度),更多的光就有更高的亮度,要检查这一点。同时,您现在可以悬停,屏幕会变成绿色并震动。 方法2 进行通话,在通话期间,屏幕右上角(相机左侧)会出现一个白色的闪烁点(看起来像一个像素点),现在悬停并检查。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接