Bulduğum şey, bazı aygıtların LED'i açmak için SurfaceView'a ihtiyaç duyduklarıdır.
SurfaceView preview = (SurfaceView) findViewById(R.id.PREVIEW);
SurfaceHolder mHolder = preview.getHolder();
mHolder.addCallback(this);
Camera mCamera = Camera.open();
mCamera.setPreviewDisplay(mHolder);
// Turn on LED
Parameters params = mCamera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
mCamera.setParameters(params);
mCamera.startPreview();
...
// Turn off LED
Parameters params = mCamera.getParameters();
params.setFlashMode(Parameters.FLASH_MODE_OFF);
mCamera.setParameters(params);
mCamera.stopPreview();
mCamera.release();
Kişisel aktivitesi SurfaceHolder.Callback uygulamak gerekir:
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {}
public void surfaceCreated(SurfaceHolder holder) {
mHolder = holder;
mCamera.setPreviewDisplay(mHolder);
}
public void surfaceDestroyed(SurfaceHolder holder) {
mCamera.stopPreview();
mHolder = null;
}
SurfaceView android:visibility="invisible"
veya 0 bir yükseklik ve genişlik çalışmaz, görünür olması gerekir. Ne yazık ki, onu gizlemek için iyi bir çözüm bulamadım, bu yüzden sadece 1x1dip bir boyut verdi ve bir düğmenin altında konumlandırıldı ..
** (Yukarıdaki paragrafta genişletmek için [Yeterli temsilcisi yok) mevcut İçerik View XML Somewhere) cevap, ancak] yararlı olduğunu hissettim, istediğiniz:
<SurfaceView
android:id="@+id/PREVIEW"
android:layout_width="1dip"
android:layout_height="1dip"/>
bir RelativeLayout (tercih içimde varsa), ayrıca sokmak alignParentLeft/Bottom yapabilirsiniz bir köşede. Bu yöntem benim Galaxy Nexus için çalışıyor, ancak Droid X için bilinen bir sorun (telefon tarafı) (yine de .621 güncelleştirmesiyle birlikte) ve benimki üzerinde çalışmıyor. Harika cevap, timosch!
Bunu bir şans vereceğim. Teşekkürler-- – Malachi
bu işe yaradı mı? herkes için? –
bu işe yaradı mı? – Ivan