Mit der Google Fotos App versuche ich ein Video auszuwählen, das nicht auf dem Gerät zwischengespeichert wird.Abrufen von Videos (nicht lokal) aus der Google Fotos App
Ich verwende die ACTION_GET_CONTENT Absicht, um den Optionen-Dialog zu starten, und von dort wähle ich die Google Fotos App.
Bei der Auswahl lokaler Videos wird ein Uri in dieser Form zurückgegeben.
Inhalt: // media/extern/Video/media/6708
Und davon, dass ich abfragen, um den Content-Provider die tatsächliche Speicherort der Datei abzurufen, und von dort aus gehen. Der Speicherort der Datei sieht folgendermaßen aus.
/storage/emulierten/0/WhatsApp/Medien/WhatsApp Video/VID-20131102-WA0000.mp4
Wenn ich jetzt ein Online-Video wählen, das heißt: ein Video nicht verfügbar mein Gerät noch nicht, und die heruntergeladen werden muss, verwendet werden soll, sieht der zurück Uri wie folgt aus:
Inhalt: //com.google.android.apps.photos.content/1/ https://lh6.googleusercontent.com/_RD-QTO_SK5jlaPldTe2n5GANqMc3h-ukcbNoFlF1NLy=s0-d
Jetzt, mit diesem, gibt es keinen dokumentierten ContentProvider, der mir helfen würde, den tatsächlichen Link zu diesem Video zu bekommen. Selbst wenn ich eine Abfrage mache, gibt sie nichts zurück, abgesehen von den Spalten DISPLAY_NAME und SIZE.
DISPLAY_NAME enthält video.mpeg (gleiche Anzeigenamen für verschiedene Videos)
SIZE sagt mir wahrscheinlich die Größe der eigentlichen Datei.
Ich habe verschiedene Funktionen, und dachte, dass ich müsste einen Inputstream für das Video durch die Inhalte-Anbieter erhalten, die Datei speichern, und mit der Datei arbeiten. Die Auswahl einer Bilddatei funktioniert jedoch einwandfrei, bei Video dagegen nicht.
Also, um den Stream in eine Datei zu kopieren, habe ich diesen Code.
InputStream inputStream = context.getContentResolver().openInputStream(Uri.parse(path));
Und schließlich in eine temporäre Datei schreiben. Die Datei wird erstellt, aber das scheint nicht korrekt formatiert zu sein. VLC spielt die Datei ab, zeigt aber immer nur den ersten Frame an.
Wenn ich die URL aus dem letzten Teil des oben angegebenen URI nehme und versuche, sie in einem Browser anzuzeigen, wird eine GIF-Datei heruntergeladen. Ich vermute, das ist das Problem. Aber ich weiß nicht, wie man das mpeg Format des Videos bekommt.
Wer hat das gleiche erlebt?
Massives Dankeschön dafür, das hat viel geholfen! Hier ist eine verwandte Frage und akzeptierte Antwort: http://stackoverflow.com/q/30572261/3309883 –