ユーザーが自分のアプリケーションを使用するときに電話をスリープ状態にします。ユーザーが画面を見たとき、目を覚ます必要があります。私は近接センサーを使用しようとしましたが、ユーザーは非常に近くに接近する必要があります。別の方法がありますか?Androidユーザーの外観を検出する方法
2
A
答えて
1
SensorManagerを使用してセンサーイベントを取得できます。
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);
}
しかし、もちろん、彼は一人ですべての仕事をすることはできません。たとえば、ライトSensorはあなたのために便利になります。あなたの光センサーをプログラムして、画面が明るくなったら見てください。そうであれば、ユーザーはもはや見ていないはずです。また、加速度計を使用してあなたを助けることができます。
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でこの機能を宣言します:
何が「人感センサー」と呼ばれることはあるかもしれない、私はいくつかのコードを発見し、それを適応し、クラスがこのようなものでなければなりません光/近接センサー。しかし、近接センサは通常5cmの範囲しかないので使用できません。
1
携帯電話の動き、つまり携帯電話の向きが変更されているかどうかを確認できます。詳細はこちらDetecting movement using accelerometer - (Orientation is not changing)?
関連する問題
- 1. Androidリストウィジェットテキストサイズ/外観
- 2. ユーザーがEditTextでタイピングをやめるのを検出する方法android
- 3. Android:外観の違い
- 4. Androidキーボードの外観変更
- 5. アンドロイドで外出するコールを検出する方法
- 6. Googleホーム - ユーザー名の検出方法
- 7. 検証要約外観
- 8. ノックアウト観測配列間のアイテムの移動を検出する方法
- 9. ウェブページ上のフォームへのユーザー入力を検出する方法
- 10. UIImageViewの外でタップする人を検出する方法
- 11. Android:キーボードのプレスリリースイベントの検出方法
- 12. Androidでスクロールの表示方向を検出する方法
- 13. Android StackViewの外観は何ですか?
- 14. ユーザーがアプリケーションの共有を検出する方法
- 15. ユーザー間の切り替えを検出する方法
- 16. SafariでJS検出ユーザーのクローズページを使用する方法
- 17. フラスコ:ページを去るユーザーを検出する方法は?
- 18. Android:デュアルsdカードの検出方法
- 19. バーチャルボタンの検出方法(Android 4)
- 20. 外部からユーザーのクラウドセッションを検出する
- 21. Typeformを埋め込んだユーザーを検出する方法は?
- 22. SKStoreReviewControllerをクリックしたユーザーを検出する方法は?
- 23. pywikibotのmaxlag例外を検出する方法
- 24. OnCollisionEnter2D以外の2Dコリジョンを検出する方法
- 25. デフォルトのAndroidハニカムのカスタマイズActionModeの外観
- 26. Androidで進行中のコールの数を検出する方法
- 27. Androidのアプリケーションの起動と終了を検出する方法
- 28. Androidの画面の向きを検出する方法
- 29. vb.net ReadDownの外観を持つDropDownListを作成する方法
- 30. Eclipse IDEのタイトルバーの外観を修正する方法は?
画面がオフの場合、SensorEventListenerは機能しません。どのようにしてこの問題を解決できますか? – user