Tôi đã viết thành công một ứng dụng, based on this blog post, nhưng đơn giản hơn, luồng hình ảnh qua HTTP, sử dụng yêu cầu POST.Android: nhận kích thước tệp hình ảnh trước khi chia sẻ hình ảnh (Intent.ACTION_SEND)
Những gì tôi không thể tìm ra (sau khi tìm kiếm trên web và thu thập dữ liệu bên trong tài liệu SDK Android), làm cách nào để có được kích thước của hình ảnh trước khi tôi chia sẻ?
Chỉ có một khả năng để mở thêm một input stream mà tôi nhìn thấy trong exampkle và bất cứ nơi nào khác:
ContentResolver cr = getContentResolver();
InputStream is = cr.openInputStream(uri);
Các bài đăng blog cho ví dụ sử dụng getBytesFromFile(is)
, vì vậy người ta có thể có được kích thước đó, nhưng đây là không phải một giải pháp. Một số hình ảnh rất lớn, trong khi các ứng dụng Android bị giới hạn trong không gian heap. Tôi muốn ứng dụng của tôi hoạt động cho tất cả các kích thước hình ảnh có thể nghĩ (không phải là vấn đề khi chia sẻ qua Wifi).
Do đó, tùy chọn duy nhất cho tôi là "chuyển tiếp" luồng đầu vào đến một số luồng đầu ra HTTP, mà tôi làm và hoạt động. Nhưng cách tiếp cận này không cho tôi kích thước hình ảnh trước khi gửi nó.
Cảm ơn bạn, tôi sẽ cố gắng. –
Theo http://developer.android.com/reference/java/io/InputStream.html: '" Trả lại số byte ước tính có thể đọc hoặc bỏ qua: mà không chặn nhiều đầu vào hơn. "' Vì vậy, rất có thể sẽ không nhận được kích thước tệp. – mbonnin
Tôi biết .. nhưng tại thời điểm viết trong khi kiểm tra, nó luôn là kích thước của tệp. – flob