-1

我想開發一個可以使用ACCELEROMETER或PROXIMITY傳感器拍攝圖片的應用程序。我可以使用按鈕拍照,但是當我打電話給onSensorChangedcamera.takePicture。請幫我如何使用傳感器檢測到運動時拍攝圖片

+0

,請複製粘貼一些代碼在這裏看到這裏可能是問題。你有沒有測試事件發生? – Nestoraj

+0

@Nestoraj請你能說我如何捕捉卡米拉活動中的傳感器? –

回答

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