Я хочу, чтобы телефон спал, когда пользователь использовал мое приложение. Когда пользователь смотрит на экран, он должен проснуться. Я попытался использовать датчик приближения, но пользователь должен приблизиться очень близко. Есть ли другой способ?Android, как обнаружить внешний вид пользователя
ответ
Чтобы получить события датчиков, вы можете использовать SensorManager. Например, Light Sensor будет полезно для вас:
private SensorManager sensorManager;
private Sensor lightSensor;
private float lightAmount;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
sensorManager = (SensorManager)getSystemService(SENSOR_SERVICE);
lightSensor = sensorManager.getDefaultSensor(Sensor.TYPE_LIGHT);
SensorEventListener listener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent event) {
// returns the current light amount
lightAmount = event.data[0];
}
lightSensor.registerListener(listener);
}
Но, конечно, он не может сделать всю работу в одиночку. Запрограммируйте свой датчик освещенности, чтобы увидеть, когда экран становится ярче, если это правда, что означает, что пользователь больше не смотрит на него. И вы можете использовать акселерометр, чтобы помочь вам. Я нашел некоторый код и адаптировать его, класс должен быть чем-то вроде этого:
public class AccelerometerDetector {
boolean isAvailable = false;
boolean isEnabled = false;
/**
* Constructor.
*
* @param enable : True to enable the accelerometer
* @throws UnsupportedOperationException
* - thrown if the Accelerometer is not available on the current device.
*/
public AccelerometerDetector(boolean enable)
throws UnsupportedOperationException
{
/* Check if the sensor is available */
for (String accelerometer : Sensors.getSupportedSensors())
if (accelerometer.equals(Sensors.SENSOR_ACCELEROMETER))
isAvailable = true;
if (!accelerometerAvailable)
throw new UnsupportedOperationException(
"Accelerometer is not available.");
if (enable)
setEnableAccelerometer(true);
}
/**
* Set if the Accelerometer is enabled or not.
*
* @param enable
* @throws UnsupportedOperationException
*/
public void setEnableAccelerometer(boolean enable)
throws UnsupportedOperationException
{
if (!accelerometerAvailable)
throw new UnsupportedOperationException(
"Accelerometer is not available.");
/* If should be enabled and isn't already */
if (enable && !this.isEnabled) {
Sensors.enableSensor(Sensors.SENSOR_ACCELEROMETER);
this.isEnabled = true;
} else /* If should be disabled and isn't already */
if (!enable && this.isEnabled) {
Sensors.disableSensor(Sensors.SENSOR_ACCELEROMETER);
this.isEnabled = false;
}
}
/**
* Read the values provided by the Accelerometer.
*
* @return Current Accelerometer-values.
* @throws UnsupportedOperationException
* if the Accelerometer is not available on this device.
* @throws IllegalStateException
* if the Accelerometer was disabled.
*/
public float[] readAccelerometer()
throws UnsupportedOperationException, IllegalStateException
{
if (!isAvailable)
throw new UnsupportedOperationException(
"Accelerometer is not available.");
if (!this.isEnabled)
throw new IllegalStateException(
"Accelerometer was disabled.");
/* Get number of sensor-values the sensor will return. Could be
* variable, depending of the amount of axis (1D, 2D or 3D
* accelerometer). */
int sensorValues = Sensors
.getNumSensorValues(Sensors.SENSOR_ACCELEROMETER);
float[] values = new float[sensorValues];
/* Make the OS fill the array we passed. */
Sensors.readSensor(Sensors.SENSOR_ACCELEROMETER, values);
return values;
}
}
объявить Также эту функцию в вашем Manifest.xml:
То, что вы назвали «датчик присутствия» может быть Датчик света/приближения. Но вы не можете использовать датчик приближения, потому что он обычно имеет диапазон 5 см.
Вы можете посмотреть на движение телефона, то есть при изменении ориентации телефона. См. Здесь для получения дополнительной информации Detecting movement using accelerometer - (Orientation is not changing)?
- 1. Внешний вид Внешний вид
- 2. Android-NumberPicker Изменен Внешний вид
- 3. Android настроить внешний вид FragmentPagerAdapter
- 4. Внешний вид кнопки Android «Frozen»
- 5. Внешний вид внешнего хранилища Android
- 6. Как обнаружить отдельные буквы и изменять их внешний вид/CSS
- 7. как обнаружить внешний кадр объекта
- 8. Как включить новый внешний вид в Android?
- 9. Android, Как настроить внешний вид панели результатов?
- 10. Как настроить внешний вид SeekBar в Android?
- 11. Как изменить внешний вид прокрутки в android?
- 12. Как изменить вид переключения Внешний вид состояния: android
- 13. внешний вид и внешний вид java
- 14. Курсор, показывающий внешний вид в android xml
- 15. Как обнаружить взаимодействие пользователя в Android
- 16. Как изменить внешний вид или улучшить внешний вид приложения VB.NET?
- 17. Внешний внешний вид Java-шлюза
- 18. комментируя внешний вид facebook
- 19. Противоречивый внешний вид Флажок
- 20. ShareActionProvider внешний вид
- 21. Animate Android Action Bar Меню Внешний вид
- 22. Android toggle button пользовательский внешний вид
- 23. Измените внешний вид Spinner в Android
- 24. Как RMI реализует внешний вид распределенной системы для конечного пользователя
- 25. Правильный внешний вид Android на разных платформах?
- 26. Титановый внешний вид Android для конкретного приложения
- 27. Android-список виджета Размер текста/внешний вид
- 28. Внешний вид кнопки Toggle на Android 4+
- 29. Как обнаружить пользовательский внешний веб-сайт
- 30. Внешний вид UITextView
Когда экран выключен, индикатор SensorEventListener не работает. Как решить эту проблему? – user