Tôi đang xây dựng một ứng dụng máy ảnh, nơi video liên tục được chụp và lưu vào thẻ SD. Các video ngắn (vài phút) và độ dài của chúng được đặt trước với setMaxDuration().Android: Cách khởi chạy MediaRecorder mà không có bề mặt hợp lệ để xem trước video?
Toàn bộ quá trình hoạt động tốt, trong khi hoạt động chính ở phía trước. Tuy nhiên, khi tôi chuyển sang hoạt động khác (ví dụ: cài đặt), bản ghi video chỉ hoạt động ở chế độ nền cho đến khi đạt đến thời lượng tối đa. Các tập tin được lưu, nhưng một chuỗi mới không thể được bắt đầu bởi vì chuẩn bị() thất bại, rõ ràng bởi vì setPreviewDisplay() không thích không có một bề mặt thích hợp để đính kèm vào.
Tôi đã cố gắng sử dụng Surface giả, SurfaceHolder giả, lockCanvas() và nhiều thủ thuật khác, nhưng không có gì hiệu quả. Có cách nào để khởi tạo MediaRecorder mà không có bề mặt hợp lệ không?
Có, tôi đã triển khai gọi lại bề mặt. Mọi thứ hoạt động tốt khi có bề mặt xem trước hợp lệ. Nhưng, tôi muốn ghi lại ngay cả khi tôi rời khỏi hoạt động chính. Ứng dụng sẽ có thể bắt đầu quay video, bất kể bề mặt xem trước có hiển thị hay không. Nhưng, tất cả mọi thứ tôi đã thử chỉ cho thấy điều này là không thể với Android. Ai có thể chứng minh cho tôi sai? – Robert