GIF 이미지를 표시하는 앱이 있습니다. 이미지를 그릴 수에 저장되는 경우 모든 잘 작동, 나는이IOException - 파일을로드 할 수 없습니다.
is=context.getResources().openRawResource(R.drawable.mygif);
movie = Movie.decodeStream(is);
처럼 접근하지만 인터넷에서 이미지를 다운로드해야합니다, 그래서 cacheDir가에 저장하고있어, 그 잘 작동합니다. 나는 그것을 읽기 위해 다음을 시도했다.
try
{
is = new BufferedInputStream(new FileInputStream(new File(context.getCacheDir(), "mygif.gif")));
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
movie = Movie.decodeStream(is);
그리고이
movie = Movie.decodeFile(new File(context.getCacheDir(), "mygif.gif").getPath());
그러나 아무리 무엇, 그것은 나는 그것이 매우 간단한 오류 생각,하지만 난 할 수
java.io.IOException
at java.io.InputStream.reset(InputStream.java:218)
at android.graphics.Movie.decodeStream(Native Method)
at android.graphics.Movie.decodeTempStream(Movie.java:74)
at android.graphics.Movie.decodeFile(Movie.java:59)
또는
java.io.IOException: Mark has been invalidated.
at java.io.BufferedInputStream.reset(BufferedInputStream.java:350)
at android.graphics.Movie.decodeStream(Native Method)
로 끝 끝내지 마. 매니페스트이 있습니다
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
다운로드 및 저장 파트가 파일을 손상시키는 지 여부를 테스트해야합니다. 앱이 파일을 다운로드 한 후에는'adb pull'을 사용하여 에뮬레이터 또는 장치에서 파일을 가져올 수 있습니다. 그런 다음 정확히 서버에 있는지 여부를 확인할 수 있습니다. –
나는 그것을 에뮬레이터에서 떼어 냈다. 어떻게 든 중요하다면 이미지는 13kB입니다. –
'Movie.decodeFile (새 파일 (context.getCacheDir(), "mygif.gif"). getAbsolutePath())'를 사용해 보셨습니까? –