我想在三星较新的型号(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();
}发布于 2019-04-28 04:57:57
你可以使用密码*#77692# Test proximity sensor on Samsung Galaxy S10
发布于 2019-12-11 21:46:14
尽量不要直接使用传感器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。
发布于 2019-07-28 00:26:27
下面是如何打开和测试接近感应器。
拨打*#77692#,您将获得两个要测试的传感器:
1:光传感器2:接近传感器
你不能开着又开着它。我们可以通过打开它来测试它,然后它就会进入关闭模式。从三星来看非常奇怪。
也许下一次更新可以让它继续存在。这样屏幕就不会在口袋里解锁了。希望这能对你有所帮助。
https://stackoverflow.com/questions/55511290
复制相似问题