2015-01-16 2 views
0

Android 5.0.1에서 Nexus 5를 사용하면 이상한 문제가 발생했습니다. 나는 SurfacePreview에서 프레임을 캡처하고 파일에 저장합니다 캡처 버튼이 카메라 앱,이 :Android Lollipop 카메라. 사진 이슈

public void takePicture(final Context context) { 
    PictureCallback pictureCallback = new PictureCallback() { 

     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      File pictureFile = StorageUtils.getOutputMediaFile(context, mIsForeside, null); 
      if (pictureFile == null) { 
       return; 
      } 
      InputStream is = new ByteArrayInputStream(data);  
      Bitmap bmp = BitmapFactory.decodeStream(is); 
      FileOutputStream out = null; 
      try { 
       out = new FileOutputStream(pictureFile); 
       bmp.compress(Bitmap.CompressFormat.PNG, 100, out); 
      } catch (Exception e) { 
      } finally { 
       try { 
        out.close(); 
       } catch (Throwable ignore) { 

       } 
      } 
      mOnPictureTakenListener.OnPictureTaken(pictureFile.getAbsolutePath()); 
     } 
    }; 

    mCamera.takePicture(null, null, pictureCallback); 
} 

이 코드를 안드로이드 4.4을 실행하는 넥서스 5에 잘 작동을하지만, 넥서스에 안드로이드 5.0.1 I와 유물은 다음을 참조하십시오

Photo with artifact

이 문제를 알고 사람을 했습니까?

+0

카메라 프리 롤리팝 api를 사용하여 SurfaceView 대신 TextureView를 구현하여이 문제를 해결했습니다. – mol

답변

1

비트 맵을 변환하지 않고 데이터 바이트 배열을 JPEG 파일에 저장하려고 했습니까?

안드로이드 5 이후, 구글은 새로운 카메라 API를 소개합니다. 그걸 사용하려고해도 될까요?

+0

예, 결과를 JPEG로 저장하려고했습니다. 제안 주셔서 감사합니다, 나는 카메라 2 API를 사용해 보겠습니다. – mol