diff options
Diffstat (limited to 'navit/android/src/org/navitproject/navit/NavitCamera.java')
-rw-r--r-- | navit/android/src/org/navitproject/navit/NavitCamera.java | 75 |
1 files changed, 45 insertions, 30 deletions
diff --git a/navit/android/src/org/navitproject/navit/NavitCamera.java b/navit/android/src/org/navitproject/navit/NavitCamera.java index 709686b97..1df26081a 100644 --- a/navit/android/src/org/navitproject/navit/NavitCamera.java +++ b/navit/android/src/org/navitproject/navit/NavitCamera.java @@ -25,58 +25,73 @@ import android.view.SurfaceView; import java.io.IOException; +class NavitCamera extends SurfaceView implements SurfaceHolder.Callback { - -public class NavitCamera extends SurfaceView implements SurfaceHolder.Callback { - SurfaceHolder mHolder; - Camera mCamera; - - + private Camera mCamera; + private static final String TAG = "NavitCamera"; NavitCamera(Context context) { super(context); - mHolder = getHolder(); - mHolder.addCallback(this); - mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); - Log.e("NavitCamera","Creator"); - - + if (android.support.v4.content.ContextCompat.checkSelfPermission(context, + android.Manifest.permission.CAMERA) + != android.content.pm.PackageManager.PERMISSION_GRANTED) { + Log.e(TAG,"No permission to access camera"); + return; + } + SurfaceHolder holder; + holder = getHolder(); + holder.addCallback(this); + holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); + Log.v(TAG,"Creator"); } + /** + * {@inheritDoc} + * + * <p>acquire the camera and tell it where to draw.</p> + */ public void surfaceCreated(SurfaceHolder holder) { - // The Surface has been created, acquire the camera and tell it where - // to draw. - try { - mCamera = Camera.open(); - mCamera.setPreviewDisplay(holder); - } catch (IOException exception) { - mCamera.release(); - mCamera = null; - // TODO: add more exception handling logic here + if (mCamera != null) { + try { + mCamera = Camera.open(); + mCamera.setPreviewDisplay(holder); + } catch (IOException exception) { + mCamera.release(); + mCamera = null; + Log.e(TAG, "IOException"); + } + Log.i(TAG, "surfaceCreated"); + } else { + Log.e(TAG, "null camera"); } - Log.e("NavitCamera","surfaceCreated"); } + + /** + * {@inheritDoc} + * + * <p>stop the preview and release the camera.</p> + */ public void surfaceDestroyed(SurfaceHolder holder) { - // Surface will be destroyed when we return, so stop the preview. - // Because the CameraDevice object is not a shared resource, it's very - // important to release it when the activity is paused. mCamera.stopPreview(); mCamera = null; - Log.e("NavitCamera","surfaceDestroyed"); + Log.e(TAG,"surfaceDestroyed"); } + + /** + * {@inheritDoc} + * + * <p>set up the camera with the new parameters.</p> + */ public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { - // Now that the size is known, set up the camera parameters and begin - // the preview. - Log.e("NavitCamera","surfaceChanged " + w + "x" + h); + Log.e(TAG,"surfaceChanged " + w + "x " + h); mCamera.stopPreview(); Camera.Parameters parameters = mCamera.getParameters(); parameters.setPreviewSize(w, h); mCamera.setParameters(parameters); mCamera.startPreview(); } - } |