Điều tôi phát hiện ra là một số thiết bị cần SurfaceView để bật đèn LED.
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();
hoạt động của bạn cần phải thực hiện SurfaceHolder.Callback:
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;
}
Các surfaceview có để được nhìn thấy, android:visibility="invisible"
hoặc một chiều cao và chiều rộng từ 0 sẽ không hoạt động. Thật không may tôi đã không tìm thấy một giải pháp tốt để ẩn nó, vì vậy tôi chỉ cần cho nó một kích thước 1x1dip và vị trí nó bên dưới một nút ..
** (Để mở rộng trên đoạn trên [Không có đủ đại diện để trả lời, nhưng cảm thấy đó là hữu ích]) một nơi nào đó trong XML của Xem nội dung hiện tại của bạn, bạn muốn:
<SurfaceView
android:id="@+id/PREVIEW"
android:layout_width="1dip"
android:layout_height="1dip"/>
Nếu bạn có nó bên trong một RelativeLayout (ưu tiên), bạn cũng có thể làm alignParentLeft/dưới để gài nó ở một góc. Phương pháp này làm việc cho Galaxy Nexus của tôi, nhưng đó là một vấn đề được biết đến (phía điện thoại) cho Droid X (với bản cập nhật .621, dù sao), và không hoạt động trên máy của tôi. Câu trả lời tuyệt vời, timosch!
Tôi sẽ chụp ảnh này. Thanks-- – Malachi
tính năng này có hoạt động không? cho bât ki ai? –
đã làm việc này? – Ivan