Java tutorial
/* * Copyright 2014-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ package com.amazonaws.devicefarm.android.referenceapp.Fragments.Tabs.Native; import android.content.Context; import android.content.pm.PackageManager; import android.hardware.Camera; import android.os.Bundle; import android.support.v4.app.Fragment; import android.util.Log; import android.view.LayoutInflater; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.ViewGroup; import com.amazonaws.devicefarm.android.referenceapp.R; import butterknife.ButterKnife; import butterknife.InjectView; /** * A fragment that demos a camera preview */ public class Native_CameraFragment extends Fragment implements SurfaceHolder.Callback { public final String CAMERA_FRAGMENT_TAG = "CAMERA_FRAGMENT"; Camera camera; @InjectView(R.id.camera_surface_view) SurfaceView surfaceView; private SurfaceHolder surfaceHolder; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.native_camera_fragment, container, false); ButterKnife.inject(this, view); surfaceHolder = surfaceView.getHolder(); surfaceHolder.addCallback(this); surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); return view; } private boolean hasCamera(Context ctx) { return ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA); } @Override public void surfaceCreated(SurfaceHolder holder) { try { camera = Camera.open(); camera.setDisplayOrientation(90); Camera.Parameters parameters = camera.getParameters(); camera.setParameters(parameters); camera.setPreviewDisplay(surfaceHolder); camera.startPreview(); surfaceView.setContentDescription(getString(R.string.camera_preview_on)); } catch (Exception e) { Log.e(CAMERA_FRAGMENT_TAG, String.valueOf(e)); } } @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { refreshCamera(); } @Override public void surfaceDestroyed(SurfaceHolder holder) { try { camera.stopPreview(); camera.release(); camera = null; } catch (Exception e) { Log.e(CAMERA_FRAGMENT_TAG, String.valueOf(e)); } } private void refreshCamera() { if (surfaceHolder.getSurface() == null) { return; } try { camera.stopPreview(); } catch (Exception e) { Log.e(CAMERA_FRAGMENT_TAG, String.valueOf(e)); } try { camera.setPreviewDisplay(surfaceHolder); camera.startPreview(); } catch (Exception e) { Log.e(CAMERA_FRAGMENT_TAG, String.valueOf(e)); } } }