마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

젤리빈 환경에서 어플이 죽습니다.

0 추천

 

화면 캡쳐 버튼 기능을 구성했습니다.
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)
 

 

 

브루스웨인 (8,580 포인트) 님이 2013년 6월 16일 질문

2개의 답변

0 추천
저 부분을 스레드안에 넣고 해보세요
익명사용자 님이 2013년 6월 16일 답변
0 추천

에러는 널포인트 익셉션이군요

아마도 Bitmap captureView = container.getDrawingCache();

이 부분이 젤리빈에서는 지원을 안하는것일수도 있습니다 captureView가 null 인데

captureView.compress(Bitmap.CompressFormat.JPEG, 100, fos); //843번째 줄

이렇게 하려고했기 때문에 에러가 나는것이지요

 

Gradler (109,780 포인트) 님이 2013년 6월 17일 답변
...