我想在我的项目中使用接近传感器.我搜索了接近传感器教程.我在http://www.vogella.com/articles/AndroidSensor/article.html#sensoroverview_manager找到了传感器教程.我尝试使用接近传感器,如下代码:
@Override
public void onSensorChanged(SensorEvent event)
{
if(event.sensor.getType() == Sensor.TYPE_PROXIMITY)
{
Toast.makeText(getApplicationContext(), "working", Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
我Activity正在实施SensorEventListener.但它不起作用.我是否需要使用任何许可来使用接近传感器?或者我的代码做这些事情是错误的.非常感谢您的帮助.谢谢
避免问题的具体方案:
三星设备中的活动行为与每次检测到更改时的行为不同,对于接近,它onPause()/onResume()仅导致在SAMSUNG设备上进行呼叫.
我正在清理接近传感器onPause(),导致三星设备独有的行为.
希望这可以为任何正面对此的人节省一些时间.我删除了清除邻近侦听器的调用,onPause()现在它在所提到的设备上按预期工作.
更新:
下面提到的不是唯一的问题,接近传感器不一致地以这种方式表现.另一个问题是一个地方:
if (!mWakeLock.isHeld()) mWakeLock.acquire();
随机地,if()因此mWakeLock.acquire()并不总是调用所提及的设备的返回false .
可能相关的信息:
mWakeLock = mPowerManager.newWakeLock(field, getLocalClassName());
Run Code Online (Sandbox Code Playgroud)
哪里
field = PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK or 32
Run Code Online (Sandbox Code Playgroud)
我的接近传感器代码仅在
1 上工作不正常.三星GT-I9082 Android 4.2.2(API 17)[
duos grand] 2.三星SM-G925I Android 5.1.1(API 22)[s6 edge]
代码:
sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
...new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
if (event.values[0] <= 5) { //Sleep
turnOffScreen();
} else …Run Code Online (Sandbox Code Playgroud) android proximity android-sensors samsung-mobile proximitysensor