0

핸드 웨이브를 감지 할 수있는 센서를 구현하려고합니다. 나는 손을 공중 거리게 할 수있는 예를 발견했지만 손동작을 발견하지 못했습니다. I 사용Android 센서 핸드 웨이브 감지

다음 코드이며 event.values ​​[0] = 0, 내 손을 센서에 호버 수단 위의 코드에서 How to controlandroid proximity sensor?

public class AndroidProximitySensorActivity extends Activity { 

TextView ProximitySensor, ProximityMax, ProximityReading; 

SensorManager mySensorManager; 
Sensor myProximitySensor; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    ProximitySensor = (TextView)findViewById(R.id.proximitySensor); 
    ProximityMax = (TextView)findViewById(R.id.proximityMax); 
    ProximityReading = (TextView)findViewById(R.id.proximityReading); 

    mySensorManager = (SensorManager)getSystemService(
     Context.SENSOR_SERVICE); 
    myProximitySensor = mySensorManager.getDefaultSensor(
     Sensor.TYPE_PROXIMITY); 

    if (myProximitySensor == null){ 
    ProximitySensor.setText("No Proximity Sensor!"); 
    }else{ 
    ProximitySensor.setText(myProximitySensor.getName()); 
    ProximityMax.setText("Maximum Range: " 
     + String.valueOf(myProximitySensor.getMaximumRange())); 
    mySensorManager.registerListener(proximitySensorEventListener, 
     myProximitySensor, 
     SensorManager.SENSOR_DELAY_NORMAL); 
    } 
} 

SensorEventListener proximitySensorEventListener 
= new SensorEventListener(){ 

@Override 
public void onAccuracyChanged(Sensor sensor, int accuracy) { 
// TODO Auto-generated method stub 

} 

@Override 
public void onSensorChanged(SensorEvent event) { 
// TODO Auto-generated method stub 

if(event.sensor.getType()==Sensor.TYPE_PROXIMITY){ 
ProximityReading.setText("Proximity Sensor Reading:" 
    + String.valueOf(event.values[0])); 
} 
} 
    }; 
} 

에서. 그러나 손 감지기를 감지하려면 센서가 필요합니다. 어떻게해야합니까? 감사.

답변

0

이 코드를 시도하십시오 :

private SensorManager sensorManager; 
    private Sensor proximitySensor; 

    private final int WAVE_TIME = 2000; 
    private final int WAVE_NEEDED_MOVEMENTS = 3; 
    private long lastWaveTime = 0; 
    private float lastSensorValue; 
    private float maxSensorValue; 
    private float numOfMovements = 0; 


     public void onCreate() { 
       super.onCreate(); 

       sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
       proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); 
       sensorManager.registerListener(proximitySensorEventListener, proximitySensor,SensorManager.SENSOR_DELAY_NORMAL); 
       maxSensorValue = proximitySensor.getMaximumRange(); 
     } 

     @Override 
     public void onSensorChanged(SensorEvent event) { 

      if(lastWaveTime + WAVE_TIME > System.currentTimeMillis()) { 
       System.out.println("Reset timing..."); 
       lastWaveTime = System.currentTimeMillis(); 
       numOfMovements = 0; 
       lastSensorValue = event.values[0]; 
      } else if((event.values[0] != maxSensorValue && lastSensorValue == maxSensorValue) || (event.values[0] == maxSensorValue && lastSensorValue != maxSensorValue)){ 
       numOfMovements++; 
       if(numOfMovements == WAVE_NEEDED_MOVEMENTS) { 
        System.out.println("WAVE EVENT"); 
        lastWaveTime = System.currentTimeMillis(); 
        numOfMovements = 0; 
       } 
      } 

     } 
+0

이 정말 작동하지 않습니다 ... 당신이 proximitySensorEventListener를 선언하는 것을 잊었다. 어쨌든 테스트를 거쳤으며 그다지 믿을만하지 못했습니다. 나는 또한 손파 탐지기에 관심이있다. – moyo