2013-06-10 2 views
0

ViewPagers와 카메라 앱에 대한 풍부한 문서 연구를했는데, 사실상 모든 것이 잘 생겼다. 진저 브레드의 주요 문제점을 제외하고는 S.O.에 관한 어떤 질문도 발견하지 못했다. 그래서이 질문을 해보겠습니다 ...진저 브레드에서 안드로이드 ViewPager와 카메라 미리보기 문제

내 응용 프로그램에는 두 조각을 보여주는 ViewPager (지원 라이브러리 v4)가 있습니다 : 하나는 메인 프래그먼트, 하나는 액티비티가 시작될 때 보여주는 것, 처음에는 비어 있고 숨겨진 이미지 뷰를 포함하여 특정 정보가 사용자에게 표시됩니다.

다음 조각으로 swyping하면 사용자는 카메라 미리보기를 볼 수 있습니다. 카메라 미리보기는 활동이 만들어 질 때 만들어지며 (swype까지 표시되지 않더라도) 사진을 찍을 때까지 표시됩니다.

사진을 찍을 때보기가 프로그래밍 방식으로 주 프래그먼트로 되돌려지고 imageview에 새로운 사진이 표시되고 숨김이 해제되어 사용자는 기존의 다른 정보와 혼합 된 이미지를 볼 수 있습니다.

사용자가 사진을 좋아하지 않는다면, 그는 카메라 조각으로 다시 swype하여 다른 사진을 찍을 수 있습니다. 결과에 만족할 때까지 계속해서 사진을 찍을 수 있습니다.

따라서 주 프래그먼트로 되돌리기 전에 mCamera.restartPreview()를 호출하고 사용자가 다시 swype 할 때 카메라가 준비되었는지 확인합니다.

안드로이드 4.x에서는 모든 것이 원활하게 작동하지만 2.3.3 (API 레벨 10)에서 테스트 할 때 카메라 미리보기는 메인 프래그먼트가 콜백 될 때 전경을 유지하고 뷰를 숨 깁니다. 카메라 화면에 버튼이 표시되는 화면 부분에서는 나머지보기가 보일 수도 스크롤 할 수도 있지만 나머지는 카메라 미리보기로 겹쳐집니다. 이 경우

public void takeBack(){ 
    mViewPager.setCurrentItem(0, true); 
    String mainFragTag = "android:switcher:"+R.id.newpinpager+":0"; 
    Fragment fragMain = this.getSupportFragmentManager().findFragmentByTag(mainFragTag); 

    try { 
     ((NewPinMainFragment)fragMain).showPhoto(newPin.getMedia()); 
    } catch (NullPointerException e){ 
    } 
} 

아무도 단서가 있습니까

CameraFragment onPictureTaken()

private PictureCallback mPicture = new PictureCallback() { 

    @Override 
    public void onPictureTaken(byte[] data, Camera camera) { 

     File pictureFile = getOutputMediaFile(MEDIA_TYPE_IMAGE); 
     if (pictureFile == null){ 
      Log.d(TAG, "Error creating media file, check storage permissions: "); 
      return; 
     } 

     try { 
      FileOutputStream fos = new FileOutputStream(pictureFile); 
      Log.e(TAG, "FILE " +pictureFile.getAbsoluteFile().toString()); 
      Bitmap bitmap = rotated(data); 
      bitmap.compress(CompressFormat.JPEG, PICTURE_QUALITY, fos); 
      bitmap.recycle(); //devo davvero chiamarla esplicitamente ?? 

      mediaFile = pictureFile; 
      mPreview.restartPreview(); 
      // go back to newpin activity to show it 
      ((NewPinActivity) myActivity).newPin.setMedia(mediaFile.getAbsoluteFile().toString()); 
      ((NewPinActivity) myActivity).takeBack(); 
     } catch (FileNotFoundException e) { 
      Log.d(TAG, "File not found: " + e.getMessage()); 
     } 
    } 
}; 

과 mainfragment의 수거() 메소드 : 여기

는 관련 기능의 코드 ViewPager와 GingerBread 또는 CameraPreview와 Gingerbread와 관련된 문제입니까?

답변

0

나는 혼자 답변을 찾았습니다. 다른 사람들에게 유용 할 경우에 대비하여 여기에 게시하겠습니다.

분명히 문제는 setCurrentItem 메서드의 smoothscroll 옵션 때문이었습니다. 문제는

mViewPager.setCurrentItem(0, false); 

mViewPager.setCurrentItem(0, true); 

을 변경하여 고정

관련 문제