ورود

View Full Version : پخش ویدیو از SDCard



ho3ein.3ven
شنبه 04 مرداد 1393, 14:15 عصر
سلام من یک ویدیو رو از اینترنت دانلود می کنم و تو SDCard ذخیرش می کنم .

ولی هر کاری می کنم نمی تونم ویدیو رو توی videoview نشون بدم .

کدهایی که نوشتم به صورت زیره :

package com.example.downloader;import java.io.BufferedInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;


import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore.Video;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.VideoView;


public class MainActivity extends Activity {


// button to show progress dialog
Button btnShowProgress;


// Progress Dialog
private ProgressDialog pDialog;
VideoView my_image;
// Progress dialog type (0 - for Horizontal progress bar)
public static final int progress_bar_type = 0;


// File url to download
private static String file_url = "fileurl";


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


// show progress bar button
btnShowProgress = (Button) findViewById(R.id.btnProgressBar);
// Image view to show image after downloading
my_image = (VideoView) findViewById(R.id.my_image);


my_image.setMediaController(new MediaController(this));


/**
* Show Progress bar click event
* */
btnShowProgress.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {
// starting new Async Task
new DownloadFileFromURL().execute(file_url);
}
});
}


/**
* Showing Dialog
* */
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case progress_bar_type: // we set this to 0
pDialog = new ProgressDialog(this);
pDialog.setMessage("Downloading file. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setMax(100);
pDialog.setProgressStyle(ProgressDialog.STYLE_HORI ZONTAL);
pDialog.setCancelable(true);
pDialog.show();
return pDialog;
default:
return null;
}
}


/**
* Background Async Task to download file
* */
class DownloadFileFromURL extends AsyncTask<String, String, String> {


/**
* Before starting background thread
* Show Progress Bar Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(progress_bar_type);
}


/**
* Downloading file in background thread
* */
@Override
protected String doInBackground(String... f_url) {
int count;
try {
URL url = new URL(f_url[0]);
URLConnection conection = url.openConnection();
conection.connect();
// this will be useful so that you can show a tipical 0-100% progress bar
int lenghtOfFile = conection.getContentLength();


// download the file
InputStream input = new BufferedInputStream(url.openStream(), 8192);


// Output stream
OutputStream output = new FileOutputStream("/sdcard/downloadedfile.3gp");


byte data[] = new byte[1024];


long total = 0;


while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....
// After this onProgressUpdate will be called
publishProgress(""+(int)((total*100)/lenghtOfFile));


// writing data to file
output.write(data, 0, count);
}


// flushing output
output.flush();


// closing streams
output.close();
input.close();


} catch (Exception e) {
Log.e("Error: ", e.getMessage());
}


return null;
}


/**
* Updating progress bar
* */
protected void onProgressUpdate(String... progress) {
// setting progress percentage
pDialog.setProgress(Integer.parseInt(progress[0]));
}


/**
* After completing background task
* Dismiss the progress dialog
* **/
@Override
protected void onPostExecute(String file_url) {
// dismiss the dialog after the file was downloaded
dismissDialog(progress_bar_type);


// Displaying downloaded image into image view
// Reading image path from sdcard
//String imagePath = Environment.getExternalStorageDirectory().toString () + "/downloadedfile.jpg";

//Uri vidFile = Uri.parse(
// Environment.getExternalStorageDirectory().getAbsol utePath()+"filename");


// setting downloaded into image view
//my_image.setImageDrawable(Drawable.createFromPath( imagePath));

my_image.setVideoPath("/sdcard/downloadedfile.3gp");
my_image.requestFocus();




my_image.start();
}


}
}

ممننون میشم اگه راهنمایی کنین .

moralschool
شنبه 04 مرداد 1393, 15:48 عصر
برای فراخوانی فیلم از محل ذخیره شد از این استفاده کن :


my_image.setVideoURI(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/" + "downloadedfile.3gp")));

my_image.start(); my_image.requestFocus();

ho3ein.3ven
شنبه 04 مرداد 1393, 16:22 عصر
دوست عزیز ممنون که کمک کردی

ولی بازم همون مشکل رو داره .

package com.example.downloader;import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;
import java.net.URLConnection;


import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore.Video;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.MediaController;
import android.widget.VideoView;


public class MainActivity extends Activity {


// button to show progress dialog
Button btnShowProgress;


// Progress Dialog
private ProgressDialog pDialog;
VideoView my_image;
// Progress dialog type (0 - for Horizontal progress bar)
public static final int progress_bar_type = 0;


// File url to download
private static String file_url = "fileurl";


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);


// show progress bar button
btnShowProgress = (Button) findViewById(R.id.btnProgressBar);
// Image view to show image after downloading
my_image = (VideoView) findViewById(R.id.my_image);


my_image.setMediaController(new MediaController(this));


/**
* Show Progress bar click event
* */
btnShowProgress.setOnClickListener(new View.OnClickListener() {


@Override
public void onClick(View v) {
// starting new Async Task
new DownloadFileFromURL().execute(file_url);
}
});
}


/**
* Showing Dialog
* */
@Override
protected Dialog onCreateDialog(int id) {
switch (id) {
case progress_bar_type: // we set this to 0
pDialog = new ProgressDialog(this);
pDialog.setMessage("Downloading file. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setMax(100);
pDialog.setProgressStyle(ProgressDialog.STYLE_HORI ZONTAL);
pDialog.setCancelable(true);
pDialog.show();
return pDialog;
default:
return null;
}
}


/**
* Background Async Task to download file
* */
class DownloadFileFromURL extends AsyncTask<String, String, String> {


/**
* Before starting background thread
* Show Progress Bar Dialog
* */
@Override
protected void onPreExecute() {
super.onPreExecute();
showDialog(progress_bar_type);
}


/**
* Downloading file in background thread
* */
@Override
protected String doInBackground(String... f_url) {
int count;
try {
URL url = new URL(f_url[0]);
URLConnection conection = url.openConnection();
conection.connect();
// this will be useful so that you can show a tipical 0-100% progress bar
int lenghtOfFile = conection.getContentLength();


// download the file
InputStream input = new BufferedInputStream(url.openStream(), 8192);


// Output stream
OutputStream output = new FileOutputStream("/sdcard/downloadedfile.3gp");


byte data[] = new byte[1024];


long total = 0;


while ((count = input.read(data)) != -1) {
total += count;
// publishing the progress....
// After this onProgressUpdate will be called
publishProgress(""+(int)((total*100)/lenghtOfFile));


// writing data to file
output.write(data, 0, count);
}


// flushing output
output.flush();


// closing streams
output.close();
input.close();


} catch (Exception e) {
Log.e("Error: ", e.getMessage());
}


return null;
}


/**
* Updating progress bar
* */
protected void onProgressUpdate(String... progress) {
// setting progress percentage
pDialog.setProgress(Integer.parseInt(progress[0]));
}


/**
* After completing background task
* Dismiss the progress dialog
* **/
@Override
protected void onPostExecute(String file_url) {
// dismiss the dialog after the file was downloaded
dismissDialog(progress_bar_type);


// Displaying downloaded image into image view
// Reading image path from sdcard
//String imagePath = Environment.getExternalStorageDirectory().toString () + "/downloadedfile.jpg";

//Uri vidFile = Uri.parse(
// Environment.getExternalStorageDirectory().getAbsol utePath()+"filename");


// setting downloaded into image view
//my_image.setImageDrawable(Drawable.createFromPath( imagePath));

my_image.setVideoURI(Uri.fromFile(new File(Environment.getExternalStorageDirectory() + "/" + "downloadedfile.3gp")));
my_image.requestFocus();




my_image.start();
}


}
}

ho3ein.3ven
شنبه 04 مرداد 1393, 18:28 عصر
کسی نمی تونه کمک کنه ؟

خیلی واجبه .

ho3ein.3ven
شنبه 04 مرداد 1393, 20:38 عصر
فیلمه که دانلود میشه کجا ذخیره میشه ؟ یعنی از کجای شبیه ساز میتونم فایلش رو ببینم ؟
آخه تو gallery که می رم نیست .

ho3ein.3ven
شنبه 04 مرداد 1393, 23:12 عصر
کسی نمی تونه کمک کنه ؟

ho3ein.3ven
یک شنبه 05 مرداد 1393, 09:42 صبح
کسی تا حالا ویدیو از SDCard پخش نکرده ؟

mohammadi1366
یک شنبه 05 مرداد 1393, 12:11 عصر
سلام
من پخش کردم!
شما توی اکلسپس برو توی قسمت دی دی ام اس و بعد دکمه اکسپلورر رو بزنید و بعد mnt و بعد sdcard و بعد ببین که فایل اینجا دان شده یا نه اگه دان شده پس
میریم سراغ پخش فایل!
برای پخش فایل هم همون که دوستمون داده درسته ولی میتونی یه سری تغییراتی رو توش انجام بدی
مشکلی داشتی بهم بگو