화면 캡쳐 버튼 기능을 구성했습니다.
container.buildDrawingCache();
Bitmap captureView = container.getDrawingCache();
FileOutputStream fos;
Intent it3=getIntent();
String str_name=it3.getStringExtra("it3_name");
File fileRoute = null;
fileRoute = Environment.getExternalStorageDirectory();
try {
File path = new File(fileRoute+"/play");
if(!path.isDirectory()){
path.mkdirs();
}
fos = new FileOutputStream(fileRoute+"/play/-"+str_name+"-.jpeg");
captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos); //843번째 줄
}catch (FileNotFoundException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "/sdcard/play으로 저장되었습니다.", Toast.LENGTH_LONG).show();
위에 소스가 현재 2.2 프로요 기종(모토로라디파이)에서는 잘됩니다.
그런데 젤리빈 기기에서 (옵티머스 Ex) 테스트를 해봣는데 캡쳐버튼을 누르면 죽습니다.
로그캣을 봤는데 843번째 줄이
captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos); //843번째 줄
이 부분입니다.
저는 OS에 따른 외장메모리경로때문에죽는건 줄 알았는데 저기서 에러나면 경로랑은 상관없는거아닌가요?
이 문제를 어떻게 해결해야 하나요?
06-16 16:48:48.390: E/AndroidRuntime(25620): FATAL EXCEPTION: main
06-16 16:48:48.390: E/AndroidRuntime(25620): java.lang.NullPointerException
06-16 16:48:48.390: E/AndroidRuntime(25620): at com.example.faceon.ResultActivity.onClick(ResultActivity.java:843)
06-16 16:48:48.390: E/AndroidRuntime(25620): at android.view.View.performClick(View.java:3524)
06-16 16:48:48.390: E/AndroidRuntime(25620): at android.view.View$PerformClick.run(View.java:14226)
06-16 16:48:48.390: E/AndroidRuntime(25620): at android.os.Handler.handleCallback(Handler.java:605)
06-16 16:48:48.390: E/AndroidRuntime(25620): at android.os.Handler.dispatchMessage(Handler.java:92)
06-16 16:48:48.390: E/AndroidRuntime(25620): at android.os.Looper.loop(Looper.java:137)
06-16 16:48:48.390: E/AndroidRuntime(25620): at android.app.ActivityThread.main(ActivityThread.java:4526)
06-16 16:48:48.390: E/AndroidRuntime(25620): at java.lang.reflect.Method.invokeNative(Native Method)
06-16 16:48:48.390: E/AndroidRuntime(25620): at java.lang.reflect.Method.invoke(Method.java:511)
06-16 16:48:48.390: E/AndroidRuntime(25620): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788)
06-16 16:48:48.390: E/AndroidRuntime(25620): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:555)
06-16 16:48:48.390: E/AndroidRuntime(25620): at dalvik.system.NativeStart.main(Native Method)