package com.zzx.factorytest;
import android.app.AlertDialog;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.hardware.Camera;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.Parameters;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import com.zzx.factorytest.view.Preview;
import java.util.List;
public class CameraActivity extends TestItemBaseActivity implements
OnCheckedChangeListener {
// private TextView txtCameraResult;
private Preview mPreview;
Camera mCamera;
int mNumberOfCameras;
int mCurrentCamera; // Camera ID currently chosen
int mCameraCurrentlyLocked; // Camera ID that's actually acquired
private CheckBox cb_openFlash;
boolean isFlashOpen = false;
;
// The first rear facing camera
int mDefaultCameraId;
private Button btnCameraSwitch;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.camera_layout);
// txtCameraResult = (TextView) findViewById(R.id.txtCameraResult);
super.onCreate(savedInstanceState);
// openCamera();
// Create a container that will hold a SurfaceView for camera previews
mPreview = (Preview) findViewById(R.id.camera_preview);
cb_openFlash = (CheckBox) findViewById(R.id.cb_openFlash);
btnCameraSwitch = (Button) findViewById(R.id.btn_switch);
View view = findViewById(R.id.btnAF);
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (null != mCamera) {
Camera.Parameters parameter = mCamera.getParameters();
// parameter.getSupportedPreviewSizes();
parameter.setFocusMode(Camera.Parameters.FOCUS_MODE_AUTO);
parameter.set("focus-meter", "spot");
mCamera.setParameters(parameter);
mCamera.autoFocus(mAutoFocCalback);
}
}
});
cb_openFlash.setChecked(isFlashOpen);
cb_openFlash.setOnCheckedChangeListener(this);
// Find the total number of cameras available
mNumberOfCameras = Camera.getNumberOfCameras();
// Find the ID of the rear-facing ("default") camera
CameraInfo cameraInfo = new CameraInfo();
for (int i = 0; i < mNumberOfCameras; i++) {
Camera.getCameraInfo(i, cameraInfo);
if (cameraInfo.facing == CameraInfo.CAMERA_FACING_BACK) {
mCurrentCamera = mDefaultCameraId = i;
}
}
if (mNumberOfCameras < 2) {
btnCameraSwitch.setEnabled(false);
}
}
// public void btn_flash_light(View view) {
// // ��
// Parameters parameter = mCamera.getParameters();
// if (parameter.getFlashMode() == Parameters.FLASH_MODE_TORCH) {
//
// parameter.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
//
// ((Button) view).setText("�������");
// //mCamera.stopPreview();
// } else {
// // parameter.setFlashMode(Parameters.FLASH_MODE_OFF);
// parameter.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
// ((Button) view).setText("�ر������");
//
// }
// mCamera.setParameters(parameter);
// mCamera.startPreview();
//
// }
private final AutoFocusCallback mAutoFocCalback = new AutoFocusCallback();
private final class AutoFocusCallback implements
android.hardware.Camera.AutoFocusCallback {
public void onAutoFocus(boolean focused, android.hardware.Camera camera) {
}
}
public void btn_switch(View view) {
if (mCamera != null) {
mCamera.stopPreview();
mPreview.setCamera(null);
mCamera.release();
mCamera = null;
}
// Acquire the next camera and request Preview to reconfigure
// parameters.
mCurrentCamera = (mCameraCurrentlyLocked + 1) % mNumberOfCameras;
CameraInfo cameraInfo = new CameraInfo();
Camera.getCameraInfo(mCurrentCamera, cameraInfo);
mCamera = Camera.open(mCurrentCamera);
// if ("T80".equals(MainActivity.PLATFORM)) {
//
// if (cameraInfo.facing == CameraInfo.CAMERA_FACING_FRONT) {
// mCamera.setDisplayOrientation(180);
// }
//
// }
Parameters parameter = mCamera.getParameters();
if (isFlashOpen) {
parameter.setFlashMode(Parameters.FLASH_MODE_TORCH);
} else {
parameter.setFlashMode(Parameters.FLASH_MODE_OFF);
}
//
mCamera.setParameters(parameter);
mCameraCurrentlyLocked = mCurrentCamera;
mPreview.switchCamera(mCamera);
mCamera.startPreview();
}
@Override
protected void onResume() {
try {
mCamera = Camera.open(mCurrentCamera);
Parameters parameter = mCamera.getParameters();
if (isFlashOpen) {
parameter.setFlashMode(Parameters.FLASH_MODE_TORCH);
} else {
parameter.setFlashMode(Parameters.FLASH_MODE_OFF);
}
//
mCamera.setParameters(parameter);
mCameraCurrentlyLocked = mCurrentCamera;
mPreview.setCamera(mCamera);
} catch (Exception e) {
AlertDialog.Builder dialog = new AlertDialog.Builder(this);
dialog.setMessage("打开摄像头出错");
dialog.show();
}
super.onResume();
}
@Override
protected void onPause() {
if (mCamera != null) {
mPreview.setCamera(null);
mCamera.release();
mCamera = null;
}
super.onPause();
}
public static boolean checkAppInstalled(Intent intent, Context context) {
PackageManager manager = context.getPackageManager();
List<ResolveInfo> list = manager.queryIntentActivities(intent, 0);
if (list == null || list.size() < 1)
return false;
return true;
}
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (buttonView.isPressed()) {
isFlashOpen = isChecked;
Parameters parameters = mCamera.getParameters();
String mode = "";
if (isFlashOpen) {
mode = Parameters.FLASH_MODE_TORCH;
} else {
mode = Parameters.FLASH_MODE_OFF;
}
parameters.setFlashMode(mode);
mCamera.setParameters(parameters);
}
}
}