2012-12-19 24 views
5

nền tảng Android 4.0.4 OpenCV 2.4.3Không thể tiếp tục hoạt động theo thứ tự ngẫu nhiên

tôi đang cố gắng để có được một ảnh chụp từ máy ảnh và sau đó xử lý nó bằng cách sử opencv! nhưng đôi khi (theo thứ tự ngẫu nhiên) tôi đang nhận được ngoại lệ sau

9 18:54:33.659: E/AndroidRuntime(16625): FATAL EXCEPTION: main 
12-19 18:54:33.659: E/AndroidRuntime(16625): java.lang.RuntimeException: Unable to resume activity {com.example.superemr/com.example.superemr.MainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=11, result=-1, data=Intent { act=inline-data dat=file:///mnt/sdcard/Pictures/IDSMART/IDS-1607435583.jpg typ=image/jpeg (has extras) }} to activity {com.example.superemr/com.example.superemr.MainActivity}: java.lang.NullPointerException 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2464) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2492) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1997) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3371) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.access$700(ActivityThread.java:127) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1162) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.os.Looper.loop(Looper.java:137) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.main(ActivityThread.java:4441) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at java.lang.reflect.Method.invokeNative(Native Method) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at java.lang.reflect.Method.invoke(Method.java:511) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at dalvik.system.NativeStart.main(Native Method) 
12-19 18:54:33.659: E/AndroidRuntime(16625): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=11, result=-1, data=Intent { act=inline-data dat=file:///mnt/sdcard/Pictures/IDSMART/IDS-1607435583.jpg typ=image/jpeg (has extras) }} to activity {com.example.superemr/com.example.superemr.MainActivity}: java.lang.NullPointerException 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.deliverResults(ActivityThread.java:3000) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2451) 
12-19 18:54:33.659: E/AndroidRuntime(16625): ... 13 more 
12-19 18:54:33.659: E/AndroidRuntime(16625): Caused by: java.lang.NullPointerException 
12-19 18:54:33.659: E/AndroidRuntime(16625): at com.example.superemr.MainActivity.onActivityResult(MainActivity.java:88) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.Activity.dispatchActivityResult(Activity.java:4649) 
12-19 18:54:33.659: E/AndroidRuntime(16625): at android.app.ActivityThread.deliverResults(ActivityThread.java:2996) 
12-19 18:54:33.659: E/AndroidRuntime(16625): ... 14 more 

khi tôi cố gắng để gỡ rối vấn đề thường là chương trình thành công nhưng đôi khi và trước khi onResume được gọi là một ngoại lệ được ném!

public void onResume() 
{ 
    super.onResume(); 
    if(!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback)) 
     Toast.makeText(this, "cannot connect to opencv ",Toast.LENGTH_SHORT).show(); 
} 


public void cap(View view) 
{ 
    Intent camInt = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
     List<ResolveInfo> aa = getPackageManager().queryIntentActivities(
     camInt, PackageManager.MATCH_DEFAULT_ONLY); 

     if (aa != null && aa.size() > 0) { 
     File dir = new File(
     android.os.Environment 
      .getExternalStoragePublicDirectory(android.os.Environment.DIRECTORY_PICTURES), 
     "IDSMART"); 

     if (!dir.exists()) { 
     boolean result = dir.mkdirs(); 
     Log.d("Creating Dirs Result:", 
      result ? "Create have been Done :)" 
      : "Create have not been done :("); 
     } 
     Random r = new Random(); 
     file = new File(dir, String.format("IDS%s.jpg", r.nextInt())); 
     camInt.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); 
     startActivityForResult(camInt, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 
     } 
} 

văn bản mạnh mẽ

+1

Vấn đề là ở onActivityResult của bạn: 'tại com.example.superemr.MainActivity.onActivityResult (MainActivity.java:88)', chỉ cần kiểm tra cho null. – dmon

+1

bạn nên đăng mã 'onActivityResult' nếu bạn muốn được trợ giúp. – toadzky

Trả lời

0

Trong onActivityResult của bạn, xin vui lòng kiểm tra xem dữ liệu (Ý định) là null.
Nếu bạn đang nhận được NullPointerException, khi cố truy cập dữ liệu.
Hãy thử làm theo nếu điều kiện.

void onActivityResult(int requestCode, int resultCode, Intent data) 
{ 

     if((resultCode == Activity.RESULT_OK) && (data != null)) 
     { 
       // Do whatever you want here. 

     } 
} 
Các vấn đề liên quan