Tôi có ứng dụng Android cổ điển với xem trước máy ảnh (phổ biến có thể được tìm thấy trong nhiều hướng dẫn [marakana, v.v.]) được cho là chụp ảnh trong một khoảng thời gian nhất định. Threading và giết chết chủ đề được thực hiện, lỗi như vậy "method called after release"
được xử lý. Nhưng đôi khi lỗi nổi tiếng xảy ra 100
. Tôi chấp nhận thực tế là nó xảy ra và cố gắng xử lý nó. Tôi đã triển khai ErrorCallback
và phương thức onError
của mình khi đối tượng máy ảnh hiện tại được phát hành và khởi tạo một đối tượng mới như được viết trong tài liệu chính thức.tạo lại đối tượng máy ảnh sau khi lỗi 100 (máy ảnh camera đã chết)
Nhưng (không có gì ngạc nhiên) nó không đủ. Máy ảnh mới có thể bị phân phối sai do một thông báo "CameraDemo has been exited unexpectedly"
xuất hiện ngay bây giờ. Tôi đã đọc nhiều tài liệu và ví dụ với hy vọng, rằng một thủ tục thích hợp sẽ được giải thích ở đâu đó nhưng không ai có vấn đề như vậy rõ ràng. Vì vậy, tôi muốn hỏi tôi nên làm gì khác ngoài việc phát hành và tạo camera mới? Đây là mã:
ErrorCallback CEC = new ErrorCallback()
{
public void onError(int error, Camera camera)
{
Log.d("CameraDemo", "camera error detected");
if(error == Camera.CAMERA_ERROR_SERVER_DIED)
{
Log.d("CameraDemo", "attempting to reinstantiate new camera");
camera.stopPreview();
camera.setPreviewCallback(null);
camera.release(); //written in documentation...
camera = null;
camera = Camera.open();
}
}
};
Ngay - nếu tôi phát hành và tạo camera trong onError
gọi lại sau đó RuntimeException
Phương pháp gọi là sau khi phát hành (takePicture) được nâng lên. Vì vậy, tôi nên bằng cách nào đó gán mặt giữ cho máy ảnh một lần nữa hoặc tạo lại các chủ bề mặt quá?
Sẽ đủ để hướng dẫn tôi, ví dụ: cho một số diễn đàn, nơi nó được mô tả hoặc giải quyết, vv Cảm ơn bạn đã giúp đỡ.
Bạn đã tìm thấy một giải pháp? Vui lòng chia sẻ – Gena