Tôi đang cố gắng tính số lượng ảnh còn lại có thể chụp bằng máy ảnh tùy chỉnh của tôi và hiển thị số đó cho người dùng. Tôi đã thử với mã sau:Cách tính số ảnh còn lại trong máy ảnh tùy chỉnh trong android
private void numberOfPhotosAvailable() {
long photosAvailable = 0;
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
resolution=getResolution();
long bytesPerPhoto=resolution/1048576;
long bytesAvailable = (long) stat.getAvailableBlocksLong() * (long) stat.getBlockSizeLong();
long megAvailable = bytesAvailable/1048576;
System.out.println("Megs :" + megAvailable);
photosAvailable = megAvailable/bytesPerPhoto;
tvAvailablePhotos.setText("" + photosAvailable);
}
Phương pháp để nhận được giải pháp.
public long getResolution(){
long resolution=0;
Camera.Parameters params=mCamera.getParameters();
List<Camera.Size> sizes = params.getSupportedPictureSizes();
Camera.Size size = sizes.get(0);
int width=size.width;
int height=size.height;
resolution=width*height;
return resolution;
}
VẤN ĐỀ: Có rất nhiều sự khác biệt về số lượng thể hiện trong máy ảnh của điện thoại và đếm được hiển thị trong ứng dụng của tôi.
Vì vậy, cách thích hợp để thực hiện việc này là gì?
LƯU Ý: Tôi sẽ chỉ chụp hình ở chất lượng cao nhất hiện có. Do đó tôi chỉ tính đếm theo một độ phân giải duy nhất.
Tại sao bạn cho rằng ảnh sẽ là 7MB? Đó là những tập tin nén. Tùy thuộc vào dữ liệu thực sự nắm bắt nó có thể là ít hơn hoặc nhiều hơn nữa. Và đó là giả sử bạn không đạt đến giới hạn của nhà cung cấp cụ thể cho mỗi giới hạn dung lượng lưu trữ tối đa của ứng dụng. Và bạn giả định rằng tất cả các máy ảnh chụp ảnh ở cùng độ phân giải, không phải như vậy. –
Đó là lý do tại sao tôi hỏi cách chính xác để thực hiện phép tính là gì. Tôi biết mã trên sẽ không hoạt động đối với các thiết bị khác. –
@GabeSechan hiện kiểm tra. Tôi hiện đang sử dụng một cách tiếp cận năng động để tính toán. –