ここに最初の投稿がありますが、stackoverflow は私にとって非常に多くの問題を解決してくれました。これは、しかし、私は理解できないようです。近接検出のたびに TextView の値を 1 ずつ減らす Android アプリを作成しています。何らかの理由で、アクティビティが開始または再開すると (電源ボタン)、2 つの近接ヒットがログに記録されます。電源ボタンを押すときに、検出器に十分に近づいていないことを再確認しました。
コードは次のとおりです。
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.exercise);
//start proximity
startProximitySensor(sensorListener());
}
private SensorEventListener sensorListener(){
listener = new SensorEventListener(){
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
if(event.sensor.getType() == Sensor.TYPE_PROXIMITY){
String maxRange = String.valueOf(mProximitySensor.getMaximumRange());
if(event.values[0] == Float.parseFloat(maxRange)){
updateTextView();
Log.i(TAG,"Proximity Sensor Reading: "+ String.valueOf(event.values[0]));
}
}
}
};
return listener;
}
private void startProximitySensor(SensorEventListener proximitySensorEventListener){
mSensorManager = (SensorManager)getSystemService(getApplicationContext().SENSOR_SERVICE);
mProximitySensor = mSensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
if(mProximitySensor == null){
Log.i(TAG,"No proximity sensor found!");
}else{
proximityStarted = true;
Log.i(TAG,"Proximity started");
mSensorManager.registerListener(proximitySensorEventListener,mProximitySensor,SensorManager.SENSOR_DELAY_UI);
}
}
onResume で timeStamp を作成し、それをセンサーの変更ごとに生成された SystemTime と比較することで、なんとか回避できました。1 秒未満の違いがある場合、TextView は更新されません。これは機能しますが、何か不足しているかどうかを知りたいです。
前もって感謝します