2011-10-13 27 views
6

Tôi làm việc khi quay video; tất cả mọi thứ hoạt động ngoại trừ yêu cầu tập trung liên tục. Đây là những gì tôi làm (thử cả trong surfaceCreated và surfaceChanged không thành công):Android: quay video có tiêu điểm tự động "liên tục"

camera = Camera.open(); 
camera.setPreviewDisplay(holder); 

Parameters parameters = camera.getParameters(); 

sau đó tôi làm một trong hai

parameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO); 

hoặc

parameters.set("focus-mode", "continuous-video"); 

cả nên làm điều tương tự; sau đó tôi đặt thông số với

camera.setParameters(parameters); 

Dòng cuối cùng này luôn luôn bị treo! Vì vậy, tôi bỏ lỡ một cái gì đó?

Nhân tiện, tôi thử nghiệm trên các thiết bị khá mới như Desire HD, Galaxy S, Galaxy Tab 7 và 10.1, phải có hỗ trợ lấy nét tự động liên tục; ít nhất các ứng dụng máy ảnh tích hợp của họ hỗ trợ nó.

+0

Điều gì được hiển thị trong nhật ký lỗi? – ingsaurabh

+0

Cảm ơn bạn đã trả lời nhanh chóng, ingsaurabh. Đây là báo cáo sự cố (chủ yếu là vô nghĩa): 'java.lang.RuntimeException: setParameters không thành công tại android.hardware.Camera.native_setParameters (Phương thức gốc) tại android.hardware.Camera.setParameters (Camera.java:1062) tại com.mr.RecorderScreen.surfaceCreated (RecorderScreen.java:76) ' – myself

+0

Có ai quản lý ** để quay video với tiêu điểm tự động ** trong Android không? Nếu có, xin vui lòng gửi một số tổng quan về những gì nên được thực hiện ở đây ... – myself

Trả lời

4

Ok, tôi có giải pháp cho vấn đề này: Tôi đã có thể lấy nét bằng tay camera gọi là # autoFocus (...).

Điều này vẫn gặp sự cố nghiêm trọng. Trước tiên, gọi lấy nét tự động trong khi quay video không hoạt động trên một số thiết bị Samsung. Ngoài ra, bạn không nên buộc người dùng phải lấy nét thủ công máy ảnh trong khi quay video.

Vì vậy, nếu bạn có thể bình thường hãy tập trung video của bạn trong khi quay - lời khuyên của bạn sẽ rất hữu ích.

5

Bạn nên kiểm tra xem Tự động lấy nét liên tục có được thiết bị hỗ trợ hay không. Đây là một cái gì đó mà làm việc cho tôi, xin vui lòng cho nó một thử.

boolean startContinuousAutoFocus() { 

    Camera.Parameters params = mCamera.getParameters(); 

    List<String> focusModes = params.getSupportedFocusModes(); 

    String CAF_PICTURE = Parameters.FOCUS_MODE_CONTINUOUS_PICTURE, 
      CAF_VIDEO = Parameters.FOCUS_MODE_CONTINUOUS_VIDEO, 
      supportedMode = focusModes 
        .contains(CAF_PICTURE) ? CAF_PICTURE : focusModes 
        .contains(CAF_VIDEO) ? CAF_VIDEO : ""; 

    if (!supportedMode.equals("")) { 

     params.setFocusMode(supportedMode); 
     mCamera.setParameters(params); 
     return true; 
    } 

    return false; 
} 
+0

Xin lỗi vì trả lời muộn. Tôi đã thử mã tương tự, nhưng vấn đề là tiêu điểm liên tục không được hỗ trợ trên các thiết bị đó. – myself