Датчик приближения на физическом устройстве AndroidAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Датчик приближения на физическом устройстве Android

Сообщение Anonymous »

Я наблюдаю поведение обнаружения датчика приближения на физических устройствах Android, которое настолько далеко от того, что я ожидаю, что я, должно быть, упускаю какую-то фундаментальную важную вещь. Вот что я вижу:
Я написал простое приложение, которое отображает значение датчика приближения.

Код: Выделить всё

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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»