안녕하십니까!!! 요즘 앱 개발에 열중인 초보 개발자 입니다!!!!!
다름이 아니라 여러 소스를 분석 하는 도중에, 갤럭시 s3에서는 제 기능이 작동 하나,
갤럭시 s4에서는 제 기능을 동작 하지 못하고 아래와 같은 오류가 나서 이렇게 질문 드립니다 ㅜㅜ
이 상황을 어떻게 해결해야 될지 고수분들의 조언 부탁 드립니다 ㅜ
--------------------------------------------------------------------------------------------------------------소스 코드
private class GIFEncodeTask extends AsyncTask<String, Integer, String> {
@Override
protected String doInBackground(String... arg0) {
AnimatedGifEncoder e = new AnimatedGifEncoder();
try {
e.start(new FileOutputStream(new File(IMG_DIR, "output.gif")));
} catch (FileNotFoundException e1) {
throw new RuntimeException(e1);
}
e.setDelay(500); // 1 frame per sec
File[] files = IMG_DIR.listFiles();
int c = 0;
for (File f : files) {
c += 1;
publishProgress((int) ((float) c / files.length * 100f));
if (f.getName().contains(".jpg")) {
Log.d("D", f.getName());
BitmapFactory.Options bmOptions = new BitmapFactory.Options();
bmOptions.inJustDecodeBounds = true;
BitmapFactory.decodeFile(f.getAbsolutePath(), bmOptions);
int photoW = bmOptions.outWidth;
int photoH = bmOptions.outHeight;
int targetW = 20;
int targetH = targetW * photoH / photoW;
int scaleFactor = photoW / targetW;
// Decode the image file into a Bitmap sized to fill the
// View
bmOptions.inJustDecodeBounds = false;
bmOptions.inSampleSize = scaleFactor;
bmOptions.inPurgeable = true;
Bitmap bitmap = BitmapFactory.decodeFile(
f.getAbsolutePath(), bmOptions);
e.addFrame(BitmapFactory.decodeFile(f.getAbsolutePath()));
}
}
e.finish();
publishProgress(-1);
return null;
}
----------------------------------------------------------------------------------------------------------------------오류 입니다.
07-29 10:28:18.029: E/AndroidRuntime(9918): FATAL EXCEPTION: AsyncTask #1
07-29 10:28:18.029: E/AndroidRuntime(9918): java.lang.RuntimeException: An error occured while executing doInBackground()
07-29 10:28:18.029: E/AndroidRuntime(9918): at android.os.AsyncTask$3.done(AsyncTask.java:299)
07-29 10:28:18.029: E/AndroidRuntime(9918): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
07-29 10:28:18.029: E/AndroidRuntime(9918): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
07-29 10:28:18.029: E/AndroidRuntime(9918): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
07-29 10:28:18.029: E/AndroidRuntime(9918): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
07-29 10:28:18.029: E/AndroidRuntime(9918): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-29 10:28:18.029: E/AndroidRuntime(9918): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
07-29 10:28:18.029: E/AndroidRuntime(9918): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
07-29 10:28:18.029: E/AndroidRuntime(9918): at java.lang.Thread.run(Thread.java:856)
07-29 10:28:18.029: E/AndroidRuntime(9918): Caused by: java.lang.OutOfMemoryError
07-29 10:28:18.029: E/AndroidRuntime(9918): at org.adroidtown.tan.AnimatedGifEncoder.getImageData(AnimatedGifEncoder.java:362)
07-29 10:28:18.029: E/AndroidRuntime(9918): at org.adroidtown.tan.AnimatedGifEncoder.getImagePixels(AnimatedGifEncoder.java:348)
07-29 10:28:18.029: E/AndroidRuntime(9918): at org.adroidtown.tan.AnimatedGifEncoder.addFrame(AnimatedGifEncoder.java:133)
07-29 10:28:18.029: E/AndroidRuntime(9918): at org.adroidtown.tan.NewActivity1$GIFEncodeTask.doInBackground(NewActivity1.java:162)
07-29 10:28:18.029: E/AndroidRuntime(9918): at org.adroidtown.tan.NewActivity1$GIFEncodeTask.doInBackground(NewActivity1.java:1)
07-29 10:28:18.029: E/AndroidRuntime(9918): at android.os.AsyncTask$2.call(AsyncTask.java:287)
07-29 10:28:18.029: E/AndroidRuntime(9918): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
07-29 10:28:18.029: E/AndroidRuntime(9918): ... 5 more
----------------------------------------------------------------------------------------------------------------------------------------------
여러분들의 답변 기다리고 있겠습니다 ㅜ