X-Git-Url: http://47.100.26.94:8080/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fai%2Fsuanzi%2Frtmpclient%2FMyService.java;h=0e99b888a82bb14c624c331c29585391af8aaa9f;hb=d1a43ff97228c10a4eaef604bd40eb8be3fcf8f6;hp=d448064fba0239631fc07ce0516922cc83100dc7;hpb=5d1ab9adf16c48da159dd814bcdcf16da75d3fb3;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 d448064..0e99b88 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(); } @@ -91,6 +90,7 @@ public class MyService extends Service implements Camera.PreviewCallback, Camer synchronized void notifyCameraOpened() { notify(); + gLogger.debug("notifyCameraOpened"); } void openCamera() { @@ -151,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){ @@ -193,7 +194,12 @@ 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.setPreviewCallback(this); mCamera.setPreviewDisplay(holder); mCamera.startPreview(); } catch (Exception e){ @@ -214,17 +220,19 @@ 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) { + gLogger.error("setRtmpUrl mCamera is null"); + return false; + } else if (mPreferredSize == null) { + gLogger.error("setRtmpUrl mPreferredSize 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){ @@ -247,8 +255,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); @@ -257,6 +264,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){