X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FMyService.java;h=ae41a4132760e7b64da8aac5be4dea9fb137ef05;hb=eed83fe1fd361c6eb64152e02c0f05d203d071f9;hp=6b7ecf82af9bbdf6bedd8c70d22266cb79eca2a4;hpb=6aa3850f260161c015474faf68165158165afea8;p=rtmpclient.git diff --git a/app/src/main/java/ai/suanzi/rtmpclient/MyService.java b/app/src/main/java/ai/suanzi/rtmpclient/MyService.java index 6b7ecf8..ae41a41 100644 --- a/app/src/main/java/ai/suanzi/rtmpclient/MyService.java +++ b/app/src/main/java/ai/suanzi/rtmpclient/MyService.java @@ -25,8 +25,7 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer private long frameCount = 0; // Preferred picture Size of the camera; - private int width = 0; - private int height = 0; + private Camera.Size mPreferredSize; private MyServiceEventListener mListener; @@ -42,7 +41,7 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer public Camera getCameraInstance() { if (mCamera == null) { - CameraHandlerThread mThread = new CameraHandlerThread("camera thread"); + CameraHandlerThread mThread = new CameraHandlerThread("ThreadCamera"); synchronized (mThread) { mThread.openCamera(); } @@ -152,6 +151,7 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer if(mCamera != null){ try { mCamera.stopPreview(); + mCamera.setPreviewCallback(null); mCamera.release(); mCamera = null; } catch (Exception e){ @@ -194,6 +194,10 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer public void startPreview (SurfaceHolder holder){ gLogger.debug("startPreview"); + if(mCamera == null){ + gLogger.error("startPreview - error: camera is null"); + return; + } try { mCamera.setPreviewDisplay(holder); mCamera.startPreview(); @@ -216,16 +220,16 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer public boolean setRtmpUrl (String url){ //this.rtmpUrl = url; - if(mCamera == null){ - gLogger.error("setRtmpUrl, error mCamera is null"); + if(mCamera == null || mPreferredSize == null){ + gLogger.error("setRtmpUrl, error mCamera or PreferredSize is null"); return false; } - gLogger.error("setRtmpUrl - size: " + width + "x" + height + ". url: " + url); - int ret = FfmpegHelper.initEncoder(width, height, url); + gLogger.error("setRtmpUrl - size: " + mPreferredSize.width + "x" + mPreferredSize.height + ". url: " + url); + int ret = FfmpegHelper.initEncoder(mPreferredSize.width, mPreferredSize.height, url); if(ret != 0){ gLogger.error("setRtmpUrl, initEncoder error"); } - return ret == 0 ? true : false; + return ret == 0; } private void configCamera(Camera camera){ @@ -248,8 +252,7 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer for(int[] i : paras.getSupportedPreviewFpsRange()){ gLogger.error("[" + i[0] + "," + i[1] + "]"); } - width = preferredSize.width; - height = preferredSize.height; + mPreferredSize = preferredSize; paras.setPictureSize(preferredSize.width, preferredSize.height); // use 640x480 preferred camera.setParameters(paras); camera.setDisplayOrientation(0); @@ -258,6 +261,10 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer camera.setPreviewCallback(this); } + public Camera.Size getBestPictureSize(){ + return mPreferredSize; + } + // Camaer.onError callback @Override public void onError(int error, Camera camera){