2017-02-22 14 views
0

私は自分のアプリでビデオをダウンロードするのにWSを使います。 ダウンロードしたビデオを開きたい場合ビデオを内部ストレージで開きます

私はこのエラーを持っているビデオを開きたいときに問題があるが:

MyRestClient.get("/diapos/1", null, new BinaryHttpResponseHandler() { 
    @Override 
    public void onSuccess(int statusCode, Header[] headers, byte[] binaryData) { 
    InputStream input = new ByteArrayInputStream(binaryData); 
    try { 
     OutputStream output = new FileOutputStream("/diapos/1.mp4"); 
     byte data[] = new byte[4096]; 
     int count; 
     while ((count = input.read(data)) != -1) { 
     output.write(data, 0, count); 
     } 
    } catch (IOException e) { e.printStackTrace(); } 
} 

これは私がビデオを再生する方法である:

VideoView: Unable to open content: /data/user/0/code.package/files/diapos/1.mp4 
java.io.IOException: setDataSource failed. 

これはダウンロード機能であります

final VideoView video = (VideoView) getActivity().findViewById(R.id.video); 
String path = getActivity().getFilesDir().getAbsolutePath() + "/diapos/1.mp4"; 
video.setVideoURI(Uri.parse(path)); 
video.start(); 

多分、それは良い道ではありませんか?それともビデオを保存する方法ですか? ビデオを内部ストレージにダウンロードするよりも指定します。外部ストレージはありません。

答えて

0

解決策が見つかりました。これは、内部ストレージで動作します。 代わりにFileAsyncHttpResponseHandlerを使用します。

final VideoView video = (VideoView) getActivity().findViewById(R.id.video); 

String path = getActivity().getFilesDir().getAbsolutePath() + "/movie.mp4"; 
video.setVideoURI(Uri.parse(path)); 
video.start(); 
+0

私はそのために3時間を待たなければならない:私は映画を再生する場所

File file = getApplicationContext().getFileStreamPath("movie.mp4"); Client.TESTVIDEOget(null, new FileAsyncHttpResponseHandler(file) { @Override public void onSuccess(int statusCode, Header[] headers, File file) { Log.d("debug", "success : " + file.getAbsolutePath() + "\n size : " + file.length()); } @Override public void onFailure(int statusCode, Header[] headers, Throwable throwable, File file) { Log.d("debug", "fail : " + file.getAbsolutePath()); } }); 

これは、次のとおりです。

は、これは私がWSの私の呼び出しを行う場所です。ごめんなさい。 –

+0

私はそれを知らなかった。ごめんなさい。 –

0

このようにすることはできません。 VideoViewによって使用されるMediaPlayerオブジェクトは、ファイルがworld-readableであることが必要です。内部ファイルはありません。そう、最後にMediaPlayerのは、同じ引数にもそのsetDataSource(String path)方法

チェックthis answerを使用する場合:Urifile:///等とのソースを渡すことも無用です。

関連する問題