在本地内存中安装视频并在android中播放

在本地内存中安装视频并在android中播放,android,download,android-videoview,Android,Download,Android Videoview,如何在本地内存中安装url视频并在android中播放?你能分享关于这个的示例代码吗?我尝试了如下操作,但出现错误“Sorr,此视频无法播放”视频无法播放,但代码正在安装到视频文件中。我可以在“文件资源管理器”中看到它 公共类视频存储卡扩展活动{ 私人视频视图; 私有静态最终字符串TAG=“UpdaterService”; 文件SDCardRoot; Handler asynchHandler=新处理程序(); 字符串videoLink=”http://hurriyettv.cubecdn.ne

如何在本地内存中安装url视频并在android中播放?你能分享关于这个的示例代码吗?我尝试了如下操作,但出现错误“Sorr,此视频无法播放”视频无法播放,但代码正在安装到视频文件中。我可以在“文件资源管理器”中看到它

公共类视频存储卡扩展活动{
私人视频视图;
私有静态最终字符串TAG=“UpdaterService”;
文件SDCardRoot;
Handler asynchHandler=新处理程序();
字符串videoLink=”http://hurriyettv.cubecdn.net/2014/11/19/htv_99710_240p.mp4";
String name=“blaa.mp4”;
私有更新程序;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
StrictMode.ThreadPolicy policy=新建StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(策略);
SDCardRoot=新文件(getFilesDir()+“/videos”);
File[]videos=SDCardRoot.listFiles();
vView=(VideoView)findViewById(R.id.vView);
试一试{

String[]fileArray=新字符串[videos.length]; 对于(int i=1;i<2;i++){ fileArray[i]=视频[i].getName(); Log.i(“@Tag:file[1]”,“+fileArray[i]); vView.requestFocus(); vView.setVideoPath(“+fileArray[i]); vView.start(); //MediaPlayer pl=新的MediaPlayer(); //pl.setDataSource(fi.getFD()); //pl.prepare(); //pl.start(); // } }捕获(例外e){ //TODO:处理异常 } /* *Log.i(“fileeee”和“+视频[1]); * *vView=(VideoView)findViewById(R.id.vView); * *//使用此选项获取触摸事件vView.requestFocus(); * *//从SD卡vView.setVideoPath加载视频( *“/data/data/com.example.downlaodvideo/files/videos/blaa.mp4”); * *//如果要启用视频控制器(如暂停),请启用此选项 *//向前 * *//播放电影vView.start(); */ File SDCardRoot=新文件(VideoSaveSDCARD.this.getFilesDir()+“/” +“视频”); 如果(!SDCardRoot.exists()){ SDCardRoot.mkdir(); } //删除目录(SDCardRoot); updater=新的updater(); updater.start(); } 类更新程序扩展线程{ @凌驾 公开募捐{ super.run(); 下载文件(视频链接,名称); } } 同步布尔下载文件(字符串链接、字符串videoName){ 试一试{ URL=新URL(链接);//您可以在此处写入任何链接 long startTime=System.currentTimeMillis(); Log.d(“视频管理器”,“下载开始”); Log.d(“VideoManager”,“下载url:+url”); Log.d(“VideoManager”,“下载文件名:“+videoName”); /*打开到该URL的连接*/ URLConnection ucon=url.openConnection(); /* *定义要从URLConnection读取的InputStreams。 */ InputStream=ucon.getInputStream(); BufferedInputStream bis=新的BufferedInputStream(is); /* *将字节读取到缓冲区,直到没有更多内容可读取(-1)。 */ ByteArrayBuffer baf=新ByteArrayBuffer(50); int电流=0; 而((当前=bis.read())!=-1){ baf.append((字节)当前值); } /*将读取的字节转换为字符串*/ FileOutputStream fos=新的FileOutputStream(新文件(SDCardRoot, 视频名称); fos.write(baf.toByteArray()); fos.close(); Log.d(“视频管理器”, “下载准备就绪” +((System.currentTimeMillis()-startTime)/1000) +“sec”); 返回true; }捕获(格式错误){ e、 printStackTrace(); }捕获(IOE异常){ e、 printStackTrace(); } 返回false; } 公共字符串getDataFromPortal(字符串remoteUrl,字符串myString){ 字符串数据=null; DefaultHttpClient httpclient=新的DefaultHttpClient(); HttpGet-HttpGet=newhttpget(remoteUrl+myString); 试一试{ HttpResponse response1=httpclient.execute(httpGet); InputStream is=response1.getEntity().getContent(); 数据=getStringFromInputStream(is); 返回数据; }捕获(客户端协议例外e){ //TODO自动生成的捕捉块 日志d(标签“互联网YK第1条”); e、 printStackTrace(); }捕获(IOE异常){ //TODO自动生成的捕捉块 日志d(标签“互联网YK第2条”); e、 printStackTrace(); } //底层HTTP连接仍由响应保持 //反对 //允许响应内容直接从 //网络插座。 //以确保系统资源的正确释放 //用户必须完全使用响应内容或中止响应 //请求 //通过调用HttpGet#releaseConnection()执行。 返回数据; } 私有字符串getStringFromInputStream(InputStream为){ BufferedReader br=null; StringBuilder sb=新的StringBuilder(); 弦线; 试一试{ br=新的BufferedReader(新的InputStreamReader(is)); 而((line=br.readLine())!=n
public class VideoSaveSDCARD extends Activity {

    private VideoView vView;

    private static final String TAG = "UpdaterService";
    File SDCardRoot;
    Handler asyncHandler = new Handler();
    String videoLink = "http://hurriyettv.cubecdn.net/2014/11/19/htv_99710_240p.mp4";
    String name = "blaa.mp4";
    private Updater updater;

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

        StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                .permitAll().build();
        StrictMode.setThreadPolicy(policy);
        SDCardRoot = new File(getFilesDir() + "/videos");

        File[] videos = SDCardRoot.listFiles();

        vView = (VideoView) findViewById(R.id.vview);

        try {

            String[] fileArray = new String[videos.length];
            for (int i = 1; i < 2; i++) {
                fileArray[i] = videos[i].getName();

                Log.i("@Tag:file[1]", "" + fileArray[i]);

                vView.requestFocus();

                vView.setVideoPath("" + fileArray[i]);

                vView.start();

                // MediaPlayer pl = new MediaPlayer();
                // pl.setDataSource(fi.getFD());
                // pl.prepare();
                // pl.start();
                //
            }
        } catch (Exception e) {
            // TODO: handle exception
        }

        /*
         * Log.i("fileeee", "" + videos[1]);
         * 
         * vView = (VideoView) findViewById(R.id.vview);
         * 
         * // use this to get touch events vView.requestFocus();
         * 
         * // load video from SD card vView.setVideoPath(
         * "/data/data/com.example.downlaodvideo/files/videos/blaa.mp4");
         * 
         * // enable this if you want to enable video controllers, such as pause
         * // and forward
         * 
         * // plays the movie vView.start();
         */

        File SDCardRoot = new File(VideoSaveSDCARD.this.getFilesDir() + "/"
                + "videos");

        if (!SDCardRoot.exists()) {
            SDCardRoot.mkdir();
        }
        // deleteDirectory(SDCardRoot);

        updater = new Updater();
        updater.start();
    }

    class Updater extends Thread {

        @Override
        public void run() {
            super.run();
            downloadFiles(videoLink, name);
        }
    }

    synchronized boolean downloadFiles(String link, String videoName) {
        try {
            URL url = new URL(link); // you can write here any link

            long startTime = System.currentTimeMillis();
            Log.d("VideoManager", "download begining");
            Log.d("VideoManager", "download url:" + url);
            Log.d("VideoManager", "downloaded file name:" + videoName);
            /* 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(new File(SDCardRoot,
                    videoName));
            fos.write(baf.toByteArray());
            fos.close();
            Log.d("VideoManager",
                    "download ready in"
                            + ((System.currentTimeMillis() - startTime) / 1000)
                            + " sec");
            return true;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return false;
    }

    public String getDataFromPortal(String remoteUrl, String myString) {
        String data = null;
        DefaultHttpClient httpclient = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(remoteUrl + myString);

        try {
            HttpResponse response1 = httpclient.execute(httpGet);
            InputStream is = response1.getEntity().getContent();

            data = getStringFromInputStream(is);
            return data;
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            Log.d(TAG, "................internet yok catch 1");
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.d(TAG, "................internet yok catch 2");
            e.printStackTrace();
        }

        // The underlying HTTP connection is still held by the response
        // object
        // to allow the response content to be streamed directly from the
        // network socket.
        // In order to ensure correct deallocation of system resources
        // the user MUST either fully consume the response content or abort
        // request
        // execution by calling HttpGet#releaseConnection().
        return data;
    }

    private String getStringFromInputStream(InputStream is) {

        BufferedReader br = null;
        StringBuilder sb = new StringBuilder();

        String line;
        try {

            br = new BufferedReader(new InputStreamReader(is));
            while ((line = br.readLine()) != null) {
                sb.append(line);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null) {
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

        return sb.toString();

    }

    public static boolean deleteDirectory(File path) {
        if (path.exists()) {
            File[] files = path.listFiles();
            if (files == null) {
                return true;
            }
            for (int i = 0; i < files.length; i++) {
                if (files[i].isDirectory()) {
                    deleteDirectory(files[i]);
                } else {
                    files[i].delete();
                }
            }
        }
        return (path.delete());
    }

}
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            Log.d("on create","on create");
            setContentView(R.layout.activity_main);
            new Asyntask().execute();

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
                    .permitAll().build();
            StrictMode.setThreadPolicy(policy);
            SDCardRoot = new File("/sdcard/videos");
            Log.d("SDCARDGGHGHg",""+SDCardRoot);
            File[] videos = SDCardRoot.listFiles();
            //Log.d("Videos array   ",""+videos[0].getName());
            vView = (VideoView) findViewById(R.id.vview);
            Log.d("before try cathc","testing");
File SDCardRoot = new File("/sdcard/videos");
        Log.d("SDCardRoot",""+SDCardRoot);

        if (!SDCardRoot.exists()) {
            SDCardRoot.mkdir();
        }
}
class Asyntask extends AsyncTask<Void,Void,Void>
    {

        @Override
        protected Void doInBackground(Void... params) {
            // TODO Auto-generated method stub
            Log.d("In background","in background");
            URL url;
            try {
                url = new URL(videoLink);
                long startTime = System.currentTimeMillis();
                Log.d("VideoManager", "download begining");
                Log.d("VideoManager", "download url:" + url);
                Log.d("VideoManager", "downloaded file name:" + name);
                /* Open a connection to that URL. */
                URLConnection ucon = url.openConnection();
                InputStream is = ucon.getInputStream();
                BufferedInputStream bis = new BufferedInputStream(is);
                ByteArrayBuffer baf = new ByteArrayBuffer(50);
                int current = 0;
                while ((current = bis.read()) != -1) {
                    baf.append((byte) current);
                }
                FileOutputStream fos;

                    fos = new FileOutputStream(new File(SDCardRoot,
                            name));
                    fos.write(baf.toByteArray());
                    fos.close();

            } catch (MalformedURLException e1) {
                // TODO Auto-generated catch block
                e1.printStackTrace();
            } 
            catch (Exception e) {
                // TODO: handle exception
            }
            return null;


        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            Log.d("In post","in post");
            vView.setVideoPath(SDCardRoot+"/blaa.mp4");

            vView.start();
            Log.d("android","post execute");
            super.onPostExecute(result);
        }


    }