2015-01-25 21 views
5

Tôi đang phát triển một ứng dụng Android có tính năng chức năng liên quan đến máy ảnh.Android Camera: tiêu cự ống kính cố định

Trước hết, tôi đọc rất nhiều thứ trên SO, XDA và như vậy, thì xin vui lòng không chuyển hướng tôi đến bài viết vô ích khác.

Tôi cố gắng để thực hiện một cái gì đó giống như một "chế độ lấy nét cố định", do đó:

  1. tôi bắt đầu ứng dụng của tôi với FOCUS_MODE_AUTO (hay cái gì khác);
  2. đưa tiêu điểm vào một đối tượng ở khoảng cách tùy ý;
  3. sửa tiêu điểm hiện tại;
  4. di chuyển máy ảnh trên vật thể khác ở khoảng cách khác không bị lấy nét.

tôi đã cố gắng giải pháp khác nhau, tức là .:

  • mCamera.cancelAutoFocus() trong AutoFocusCallback để ngăn chặn việc điều chỉnh trọng tâm;
  • thiết lập một FocusArea: new Camera.Area(new Rect(-50, -50, 50, 50), 1000) để sửa chữa tập trung vào các khu vực hiện nay.

Tôi đang nhắm mục tiêu API 20 và tôi đang làm việc trên Samsung Galaxy S5. Trên thiết bị này, các chế độ lấy nét được hỗ trợ là: - auto - vô cực - vĩ mô - liên tục video - liên tục hình ảnh

Các gợi ý rằng tôi thấy thường xuyên hơn là để biên dịch lại Android ...

+0

Bạn muốn nhấn để lấy nét? và bạn có thể đăng một số mã lớp surfaceview không? – sandeepmaaram

+0

Xin chào. Tôi đã thêm một nút phía trên bản xem trước, lý tưởng, phải chuyển từ chế độ tự động lấy nét sang chế độ "cố định lấy nét" và ngược lại. Không có gì thú vị trong mã của tôi, chỉ đơn giản là tôi không biết làm thế nào để làm điều đó hoặc thậm chí nếu nó có thể. – Zeb

+3

Bạn đang thực hiện tiêu điểm như thế nào? Chế độ "AUTO" không có nghĩa là máy ảnh liên tục lấy nét - chỉ khi bạn gọi lệnh autoFocus, tiêu điểm được thực hiện tự động mà không có dấu hiệu nào về kết quả bạn mong đợi không giống như "Macro" hoặc "Infinity". http://developer.android.com/reference/android/hardware/Camera.html#autoFocus(android.hardware.Camera.AutoFocusCallback) Vì vậy, nếu bạn không có một vòng lặp mà các cuộc gọi tự động lấy nét (như nhiều ví dụ làm hay gọi lại trong Callback) tập trung của bạn nên ở lại sau khi nó chạy một lần. – Raanan

Trả lời

-1

Nếu tôi hiểu, bạn muốn tập trung giữ cho tiêu điểm của đối tượng đầu tiên. Bạn đã cố thay đổi chế độ máy ảnh thành FOCUS_MODE_FIXED sau khi bạn lấy nét đối tượng đầu tiên? Giống như rằng:

Camera.Parameters mParam = mCamera.getParameters(); 
mParam.setFocusMode(Camera.Parameters.FOCUS_MODE_FIXED); 
mCamera.setParameters(mParam); 
+0

Hi Alonso, rất tiếc các thiết bị đích cho ứng dụng của tôi (S4 và S5) không hỗ trợ FOCUS_MODE_FIXED. Tuy nhiên, chế độ này không sửa nó thành tiêu điểm hiện tại mà là một khoảng cách siêu tiêu cự. – Zeb

2

"AUTO" chế độ không có nghĩa là máy ảnh liên tục tập trung - chỉ rằng khi bạn gọi tự động lấy nét chỉ huy tập trung được thực hiện tự động không có dấu hiệu gì về kết quả mà bạn mong đợi không thích "Macro "hoặc" Infinity ".

http://developer.android.com/reference/android/hardware/Camera.html#autoFocus(android.hardware.Camera.AutoFocusCallback)

Vì vậy, nếu bạn không có một vòng lặp mà các cuộc gọi tự động lấy nét (như nhiều ví dụ làm hoặc gọi nó một lần nữa trong Callback) tập trung của bạn nên ở lại sau khi nó chạy một lần.

Các vấn đề liên quan