Android: erste Datei, die Größe von Bildern, bevor Sie Sie zu teilen (Intent.ACTION_SEND)
Habe ich erfolgreich schrieb eine app, basiert auf diesem blog-post, ist aber einfacher, die streams ein Bild über HTTP, mit einer POST-Anforderung.
Was ich nicht herausfinden können (nach der Suche im web und kriechen im inneren android-SDK-docs) ist, wie bekomme ich die Größe des Bildes, bevor ich es teilen?
Gibt es nur eine Möglichkeit zum öffnen eines input-Streams, die ich sehe, in der exampkle und überall sonst:
ContentResolver cr = getContentResolver();
InputStream is = cr.openInputStream(uri);
Den gegebenen blog-post-Beispiel verwendet getBytesFromFile(is)
, so bekommt man in der Größe gibt, aber das ist nicht eine Lösung. Einige Bilder sind riesig, während android-apps beschränkt heap space. Ich möchte meine Anwendung für alle denkbaren Größen der Bilder (kein problem, wenn die Freigabe über Wifi).
Dafür, die einzige option für mich ist "vor" input-stream, um einige HTTP-stream-Ausgabe, die ich tun, und die funktioniert auch. Aber dieser Ansatz nicht geben Sie mir die Bildgröße vor dem versenden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie auch überprüfen Sie es auf diese Weise:
Quelle:
https://developer.android.com/training/secure-file-sharing/retrieve-info.html
}
Fragen Sie einfach den InputStream für die Anzahl Verfügbarer bytes, um die Dateigröße.
Dies funktioniert Recht zuverlässig, sobald. Weiß nicht, ob das immer noch stimmt, da das Ergebnis nicht garantiert Konto für alle bytes in der Datei.
"Returns an estimated number of bytes that can be read or skipped:without blocking for more input."
So, dass die meisten wahrscheinlich nicht die Datei Größe.