ANDROID: Comment télécharger un fichier vidéo sur une carte SD?
J'ai un fichier vidéo sur un site web .Le format MP4 et je veux permettre à l'utilisateur d'être en mesure de télécharger la vidéo sur leur carte SD en cliquant sur un lien. Est-il un moyen facile de faire cela. Actuellement j'ai ce code mais sa ne marche pas...pas sûr de ce que je fais de mal. Merci pour toute aide!
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.net.URLConnection;
import org.apache.http.util.ByteArrayBuffer;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
public class VideoManager extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);}
private final String PATH = "/sdcard/download/"; //put the downloaded file here
public void DownloadFromUrl(String VideoURL, String fileName) { //this is the downloader method
try {
URL url = new URL("http://www.ericmoyer.com/episode1.mp4"); //you can write here any link
File file = new File(fileName);
long startTime = System.currentTimeMillis();
Log.d("VideoManager", "download begining");
Log.d("VideoManager", "download url:" + url);
Log.d("VideoManager", "downloaded file name:" + fileName);
/* Open a connection to that URL. */
URLConnection ucon = url.openConnection();
/*
* Define InputStreams to read from the URLConnection.
*/
InputStream is = ucon.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
/*
* Read bytes to the Buffer until there is nothing more to read(-1).
*/
ByteArrayBuffer baf = new ByteArrayBuffer(50);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
/* Convert the Bytes read to a String. */
FileOutputStream fos = new FileOutputStream(PATH+file);
fos.write(baf.toByteArray());
fos.close();
Log.d("VideoManager", "download ready in"
+ ((System.currentTimeMillis() - startTime) / 1000)
+ " sec");
} catch (IOException e) {
Log.d("VideoManager", "Error: " + e);
}
}
}
source d'informationauteur IZI_Shadow_IZI
Vous devez vous connecter pour publier un commentaire.
ne sont pas à cours de mémoire ?
J'imagine un fichier vidéo est de très grande qui vous sont mise en mémoire tampon avant d'écrire sur le fichier.
Je sais que votre code d'exemple est partout sur l'internet, mais c'est MAUVAIS pour le téléchargement !
Utilisez ceci:
Ne jamais brancher un chemin d'accès, en particulier pour le stockage externe. Votre chemin est mauvais sur de nombreux appareils. Utilisation
Environment.getExternalStoragePath()
d'obtenir la racine de stockage externe (qui peut être/sdcard
ou/mnt/sdcard
ou autre chose).Assurez-vous de créer votre sous-répertoire, à l'aide de la
File
objet que vous recevez deEnvironment.getExternalStoragePath()
.Et, enfin, ne pas se contenter de dire "mais sa ne fonctionne pas". Nous n'avons aucune idée de ce "mais sa ne fonctionne pas" signifie dans votre cas. Sans cette information, il est très difficile de vous aider.