Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.exercise.AndroidCamera;
- import java.io.File;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.lang.reflect.Method;
- import android.app.Activity;
- import android.content.ContentValues;
- import android.content.Intent;
- import android.content.pm.ActivityInfo;
- import android.content.res.Configuration;
- import android.graphics.PixelFormat;
- import android.hardware.Camera;
- import android.hardware.Camera.PictureCallback;
- import android.hardware.Camera.ShutterCallback;
- import android.net.Uri;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.provider.MediaStore.Images.Media;
- import android.util.Log;
- import android.view.LayoutInflater;
- import android.view.SurfaceHolder;
- import android.view.SurfaceView;
- import android.view.View;
- import android.view.ViewGroup.LayoutParams;
- import android.widget.Button;
- import android.widget.Toast;
- public class AndroidCamera extends Activity implements SurfaceHolder.Callback{
- Camera camera;
- SurfaceView surfaceView;
- SurfaceHolder surfaceHolder;
- boolean previewing = false;
- LayoutInflater controlInflater = null;
- final int RESULT_SAVEIMAGE = 0;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
- getWindow().setFormat(PixelFormat.UNKNOWN);
- surfaceView = (SurfaceView)findViewById(R.id.camerapreview);
- surfaceHolder = surfaceView.getHolder();
- surfaceHolder.addCallback(this);
- surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
- controlInflater = LayoutInflater.from(getBaseContext());
- View viewControl = controlInflater.inflate(R.layout.control, null);
- LayoutParams layoutParamsControl
- = new LayoutParams(LayoutParams.FILL_PARENT,
- LayoutParams.FILL_PARENT);
- this.addContentView(viewControl, layoutParamsControl);
- Button buttonTakePicture = (Button)findViewById(R.id.takepicture);
- buttonTakePicture.setOnClickListener(new Button.OnClickListener(){
- public void onClick(View arg0) {
- // TODO Auto-generated method stub
- camera.takePicture(myShutterCallback,
- myPictureCallback_RAW, myPictureCallback_JPG);
- Intent intent = new Intent(getBaseContext(), Punch.class);
- intent.putExtra("ImageReference", "");
- startActivity(intent);
- }});
- }
- ShutterCallback myShutterCallback = new ShutterCallback(){
- public void onShutter() {
- // TODO Auto-generated method stub
- }};
- PictureCallback myPictureCallback_RAW = new PictureCallback(){
- public void onPictureTaken(byte[] arg0, Camera arg1) {
- // TODO Auto-generated method stub
- }};
- PictureCallback myPictureCallback_JPG = new PictureCallback(){
- public void onPictureTaken(byte[] arg0, Camera arg1) {
- // TODO Auto-generated method stub
- /*Bitmap bitmapPicture
- = BitmapFactory.decodeByteArray(arg0, 0, arg0.length); */
- int imageNum = 0;
- Intent imageIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
- File imagesFolder = new File(Environment.getExternalStorageDirectory(), "Punch");
- imagesFolder.mkdirs(); // <----
- String fileName = "image_" + String.valueOf(imageNum) + ".jpg";
- File output = new File(imagesFolder, fileName);
- while (output.exists()){
- imageNum++;
- fileName = "image_" + String.valueOf(imageNum) + ".jpg";
- output = new File(imagesFolder, fileName);
- }
- Uri uriSavedImage = Uri.fromFile(output);
- imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
- OutputStream imageFileOS;
- try {
- imageFileOS = getContentResolver().openOutputStream(uriSavedImage);
- imageFileOS.write(arg0);
- imageFileOS.flush();
- imageFileOS.close();
- Toast.makeText(AndroidCamera.this,
- "Image saved",
- Toast.LENGTH_LONG).show();
- } catch (FileNotFoundException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- camera.startPreview();
- }};
- public void surfaceChanged(SurfaceHolder holder, int format, int width,
- int height) {
- // TODO Auto-generated method stub
- if(previewing){
- camera.stopPreview();
- previewing = false;
- }
- if (camera != null){
- try {
- camera.setPreviewDisplay(surfaceHolder);
- camera.startPreview();
- previewing = true;
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- public void surfaceCreated(SurfaceHolder holder) {
- // TODO Auto-generated method stub
- camera = Camera.open();
- try {
- Camera.Parameters parameters = camera.getParameters();
- if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) {
- // This is an undocumented although widely known feature
- parameters.set("orientation", "portrait");
- // For Android 2.2 and above
- camera.setDisplayOrientation(90);
- // Uncomment for Android 2.0 and above
- parameters.setRotation(90);
- } else {
- // This is an undocumented although widely known feature
- parameters.set("orientation", "landscape");
- // For Android 2.2 and above
- camera.setDisplayOrientation(0);
- // Uncomment for Android 2.0 and above
- parameters.setRotation(0);
- }
- camera.setParameters(parameters);
- camera.setPreviewDisplay(holder);
- } catch (IOException exception) {
- camera.release();
- }
- camera.startPreview();
- }
- public void surfaceDestroyed(SurfaceHolder holder) {
- // TODO Auto-generated method stub
- camera.stopPreview();
- camera.release();
- camera = null;
- previewing = false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement