2011-11-28 3 views
3

카메라에서 사진을 찍어 ImageView에로드 할 수있는 응용 프로그램을 만들고 있습니다. 이제 내 문제는 카메라를 열고 그림을 찍은 다음 내 앱으로 돌아 왔을 때, onActivityResult가 호출 된 후 onCreate 메서드가 호출되기도합니다.카메라에서 결과를 반환 할 때도 호출되는 onCreate 메서드

이 문제는 내가라고 HTC 산불 모두에이 코드 fine.In HTC 산불 onActivityResult를 작동를 실행 삼성의 model.When에서 발생하고 onResume은 에 내가 원하는 달성하는 HTC 산불하지만 가능하다 called.So입니다 삼성 S. 여기

내 코드이며, 여기에

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

     Drawable drawable = null; 
     System.out.println("Faces Fond"+facesFound); 
     System.out.println("On Activity Result is called"); 
     switch (requestCode) { 

     case Constants.PICK_IMAGE: 
      switch(resultCode) 
      { 
      case RESULT_CANCELED: 
       break; 
      case RESULT_OK: 
       dragLayer.removeAllViews(); 
       isFaceDetected = false; 
       resetArray(); 
       numberOfViews = 0; 
       if(data!=null){ 
       uriOfImage = data.getData(); 
       System.out.println("Uri is "+ uriOfImage); 
       if(bitmapForDragLayer != null) 
       bitmapForDragLayer.recycle(); 
        try { 
         bitmapForDragLayer = BitmapFactory.decodeStream(getContentResolver().openInputStream(uriOfImage)); 
         bitmapForDragLayer = Bitmap.createScaledBitmap(bitmapForDragLayer, widthOfBitmap, heightOfBitmap, true); 
        } catch (FileNotFoundException e) { 
         e.printStackTrace(); 
        } 
        catch(Exception e){ 
         e.printStackTrace(); 
        } 
        drawable = new BitmapDrawable(bitmapForDragLayer); 
        dragLayer.setBackgroundDrawable(drawable); 
        isImageLoaded = false; 
        } 
       break; 
      } 
       break; 

     case Constants.TAKE_PICTURE_CODE: 
      switch(resultCode) 
      { 
      case RESULT_CANCELED: 
       break; 
      case RESULT_OK: 
       dragLayer.removeAllViews(); 
       isFaceDetected = false; 
       resetArray(); 
       numberOfViews = 0; 
       System.out.println("Value of data"+data); 
       if(data!=null){ 
       bitmapForDragLayer = (Bitmap)data.getExtras().get("data"); 
       bitmapForDragLayer = Bitmap.createScaledBitmap(bitmapForDragLayer, widthOfBitmap, heightOfBitmap, true); 
        drawable = new BitmapDrawable(bitmapForDragLayer); 
       dragLayer.setBackgroundDrawable(drawable); 
       isImageLoaded = false; 
       } 
       break; 
      } 
      break; 

     case Constants.FRAME_SELECT_CODE: 
      currentFrame = frameSelection.getFrameBitmap(resultCode); 
      currentSelectedBitmapVO.setSelectedBitmap(selectedFrame); 
      selectedFrame = currentFrame; 
        for(int i=0;i<array.size();i++) 
        { 
         System.out.println("value of i"+i); 
         if(array.get(i)) 
         { 
         int height = currentBitmapVO[i].getSelectedBitmapHeight(); 
         int width = currentBitmapVO[i].getSelectedBitmapWidth(); 
         Bitmap b = Bitmap.createScaledBitmap(currentFrame, width, height, true); 
         selectedFrame = b; 
         imageView[i].setImageBitmap(selectedFrame); 
         imageView[i].invalidate(); 
         } 
        } 
       break; 
     } 
} 

는 사진을 찍기 위해 카메라를 호출하는 코드입니다.

Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); 
startActivityForResult(intent, Constants.TAKE_PICTURE_CODE); 

동일한 코드가 HTC에서는 정상적으로 실행되지만 삼성에서는 그렇지 않습니다.

+0

활동 처리 구성이 어떻게 변경됩니까? – QuickNick

+0

이 게시물에보십시오 : http://stackoverflow.com/questions/4901752/android-2-2-sdk-droid-x-camera-activity-doesnt-finish-properly/8679892#8679892 나는 대략 질문을 해결했다 추악한 해결 방법으로 onCreate 함수를 추가로 호출합니다. – Neonigma

답변

1

사진을 찍을 때 메모리가 부족하여 앱이 사망했을 수 있습니다. 그런 다음 활동주기가 다시 시작됩니다 onCreate()

+0

하지만이 코드는 프로세서가 적고 HTC Wildfire보다 높은 프로세서를 가지고있는 HTC Wildfire에서 올바르게 작동합니다. – Pankit

+0

나는 logCat를 확인하고 onCreate와 onResume이 두 번 호출되고 onActivityResult가 once라는 것을 발견했다. 시퀀스는 다음과 같다. 1.onCreate 2.onActivityResult 3.onResume 4.onCreate 5.onResume. – Pankit

+0

@Pankit, 나는 똑같은 문제에 모자를 .다. 이것은 당신이 찾고있는 것입니다 : http://stackoverflow.com/questions/10411009/activity-killed-oncreate-called-after-taking-picture-via-intent – Cookienator

관련 문제