Я написал простое приложение, которое отображает значение датчика приближения.
Код: Выделить всё
activity_main.xmlКод: Выделить всё
[*] xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
Код: Выделить всё
MainActivity.javaКод: Выделить всё
public class MainActivity extends AppCompatActivity implements SensorEventListener {
TextView proxValue;
SensorManager sensorManager;
Sensor proximitySensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
proxValue = (TextView) findViewById(R.id.proxValue);
sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
}
@Override
protected void onPause() {
super.onPause();
sensorManager.unregisterListener(this);
}
@Override
protected void onResume() {
super.onResume();
sensorManager.registerListener(this, proximitySensor, SensorManager.SENSOR_DELAY_NORMAL);
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
proxValue.setText(String.valueOf(event.values[0]));
}
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
}
Видео поведения эмулятора
Однако, когда я запускаю это на физическом устройстве (проверенные устройства перечислены ниже), я вижу два неожиданных поведения:
- Обнаружение близости срабатывает не тогда, когда я махаю рукой перед устройством (около верхней части), а когда помещаю ладонь в любое место экрана.
- Он отображает только 0,0 или 5,0.
Изменить: чтобы уточнить, я ожидал, что, когда моя рука машет рукой близко к передней части телефона (без физического контакта, скажем, при наведении на 1"), датчик приближения может указать, что она находится на расстоянии 1 дюйм. Подумайте, например, о приложении для отслеживания отжиманий, в котором вы лежите на земле и отжимаетесь сверху, которое использует датчик приближения, чтобы определить, что вы опустились достаточно, чтобы считаться отжиманием.
Код: Выделить всё
Связано: я попробовал это приложение для проверки датчика приближения с такими же проблемными результатами на физических устройствах.
Android версии 14/API 34
Протестированные устройства:
- Samsung S23+
- Samsung A53 5G
- Pixel 6A
Подробнее здесь: https://stackoverflow.com/questions/779 ... oid-device
Мобильная версия