-1

加速度センサーまたは近接センサーを使って撮影できるアプリケーションを開発したいと考えています。私はボタンを使用して写真を撮ることができますが、同じ方法、すなわちcamera.takePictureonSensorChangedから呼び出します。私はこれをテストしていないが、それは動作するはずです私にセンサーを使って動きが検出されたときの画像の取得方法

+0

ところ問題となる可能性が見るためにここにいくつかのコードを貼り付けてください。あなたはイベントが起こることをテストしましたか? – Nestoraj

+0

@Nestorajあなたはcamra activtyのセンサーをキャプチャする方法を私に言うことができますか? –

答えて

0

を助けてください:

public class Main extends Activity implements SensorEventListener { 
    private SensorManager senSensorManager; 
    private Sensor senAccelerometer; 

    private long lastUpdate = 0; 
    private float last_x, last_y, last_z; 
    private static final int SHAKE_THRESHOLD = 600; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     senSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); 
     senAccelerometer = senSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
     senSensorManager.registerListener(this, senAccelerometer , SensorManager.SENSOR_DELAY_NORMAL); 
    } 

    @Override 
    public void onSensorChanged(SensorEvent sensorEvent) { 
     Sensor mySensor = sensorEvent.sensor; 

     if (mySensor.getType() == Sensor.TYPE_ACCELEROMETER) { 
      float x = sensorEvent.values[0]; 
      float y = sensorEvent.values[1]; 
      float z = sensorEvent.values[2]; 
      long curTime = System.currentTimeMillis(); 

      if ((curTime - lastUpdate) > 100) { 
       long diffTime = (curTime - lastUpdate); 
       lastUpdate = curTime; 

       float speed = Math.abs(x + y + z - last_x - last_y - last_z)/ diffTime * 10000; 

       if (speed > SHAKE_THRESHOLD) { 
        //CALL TAKE PHOTO FUNCTION 
       } 

       last_x = x; 
       last_y = y; 
       last_z = z; 
      } 

     } 
    } 

    @Override 
    public void onAccuracyChanged(Sensor sensor, int accuracy) { 

    } 

    //Disable sensor on hibernate 
    protected void onPause() { 
     super.onPause(); 
     senSensorManager.unregisterListener(this); 
    } 

    protected void onResume() { 
     super.onResume(); 
     senSensorManager.registerListener(this, senAccelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    } 
} 

あなたはいくつかのライブラリを追加する必要がありますあなたの依存IDE

関連する問題