Ich möchte Telefon zu schlafen, wenn Benutzer meine App verwenden. Wenn der Benutzer auf den Bildschirm schaut, sollte er aufwachen. Ich habe versucht, den Näherungssensor zu verwenden, aber der Benutzer muss sich sehr nah nähern. Gibt es eine andere Art und Weise?Android, wie man Benutzer sieht Bildschirm
Antwort
Sie können SensorManager verwenden, um Sensorereignisse zu erhalten. Zum Beispiel Licht Sensor wird für Sie nützlich sein:
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);
}
Aber natürlich ist er nicht allein die ganze Arbeit erledigen kann. Programmieren Sie Ihren Lichtsensor, um zu sehen, wann der Bildschirm heller wird. Wenn dies der Fall ist, sollte der Benutzer nicht länger darauf achten. Und Sie können den Beschleunigungssensor verwenden, um Ihnen zu helfen. Ich fand einige Code und angepasst es, sollte die Klasse so etwas wie dieses:
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;
}
}
Auch diese Funktion in Ihrem Manifest.xml erklären:
Was Sie „Anwesenheitssensor“ nennen könnte das sein Licht/Näherungssensor. Sie können den Näherungssensor jedoch nicht verwenden, da er normalerweise nur 5 cm Reichweite hat.
Sie könnten sich die Bewegung des Telefons ansehen, d. H. Wenn die Ausrichtung des Telefons geändert wird. Hier finden Sie weitere Informationen Detecting movement using accelerometer - (Orientation is not changing)?
- 1. Android, wie man Bildschirm Rutsche macht?
- 2. iOS, wie man sieht und verschwindet?
- 3. Wie sieht man Repositories?
- 4. Wie man Maschinencode sieht?
- 5. Wie sieht man AST?
- 6. Wie teilt man Android-Bildschirm in Boxen?
- 7. Machen Sie Android-Aktivität sieht wie Dialogfeld
- 8. Wie man Bildschirm Farbtemperatur in android wie f.lux
- 9. Wie sieht man entfernte Tags?
- 10. Wie sieht man den Dateiunterschied?
- 11. wie man sieht in Dinamentally in Fragment
- 12. Android: Wie erkennt man einen E-Ink-Bildschirm?
- 13. Wie man schwarzen Bildschirm loszuwerden
- 14. Wie man Benutzer/Passwort in Android speichert?
- 15. Wie erstellt man 'Wie man' Bildschirm (wie Go Launcher) für den ersten Start der App (Android)
- 16. Android - Wie sieht ein entlassener Anruf aus?
- 17. ändern, wie Spinner sieht
- 18. Wie man Knopfleiste am unteren Bildschirm entfernen
- 19. Benutzerdefinierte Android View Folien auf dem Bildschirm von Benutzer Gesten
- 20. Wie rot Overlay Bildschirm Android
- 21. Wie man einen Funktionskörper in node.js sieht?
- 22. jQuery wie sieht man in jedem()?
- 23. Wie sieht man Gabeln meiner Plunks?
- 24. AngularJS: Wie sieht man die Tab-Auswahl?
- 25. Wie sieht man die Funktionssignatur in Python?
- 26. Sellerie/Django - Wie man Arbeiterstatus programmatisch sieht
- 27. Wie sieht man Oracle Table Logs?
- 28. python urllib, wie man Nachrichten sieht?
- 29. Subversion: Wie sieht man eine Commit Vorschau?
- 30. Wie Android-Bildschirm mit Android Studio aufnehmen?
Wenn der Bildschirm ausgeschaltet ist, funktioniert Licht SensorEventListener nicht. Wie kann dieses Problem gelöst werden? – user