Android Open Source - watcher Snap






From Project

Back to project page watcher.

License

The source code is released under:

CC0 1.0 Universal Statement of Purpose The laws of most jurisdictions throughout the world automatically confer exclusive Copyright and Related Rights (defined below) upon the creator and subsequent...

If you think the Android project watcher listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.appspot.staffordbears.watcher;
/*from www . j  av  a2  s .c o m*/
import android.app.Activity;
import android.content.Context;
import android.content.pm.PackageManager;
import android.hardware.Camera.CameraInfo;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera;
import android.os.Bundle;
import android.os.Environment;
import android.os.Looper;
import android.util.Log;
import android.view.SurfaceView;
import android.widget.Toast;
import java.io.IOException;
import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Snap extends Thread {

    private final static String DEBUG_TAG = "watcher.Snap";

    private Hermit mApp;

    protected Snap(Hermit application) {
  super();
  mApp = application;
    }
    
    @Override
    public void run() {

  Camera camera;  
  int cameraId = 0;

  if (!mApp.getPackageManager()
      .hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
      Log.e(DEBUG_TAG, "No camera on this device");
      return;
  } else {
      cameraId = findFrontFacingCamera();
      if (cameraId < 0) {
    Log.e(DEBUG_TAG, "No front facing camera found.");
    return;
      } else {
    camera = Camera.open(cameraId);
      }
  }

  // Camera.Size ps = new Camera.Size(960, 1280);
  Camera.Parameters cp = camera.getParameters();
  cp.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
  // cp.setPictureSize(960, 1280);
  camera.setParameters(cp);

  Looper.prepare();

  SurfaceView view = new SurfaceView(mApp);
  try {
      camera.setPreviewDisplay(view.getHolder());
  } catch (IOException e) {
      Log.e(DEBUG_TAG, "setPreviewDisplay", e);
      return;
  }

  camera.startPreview();
  camera.takePicture(null, null, null, new PhotoHandler());
    }

    private int findFrontFacingCamera() {
  int cameraId = -1;
  // Search for the front facing camera
  int numberOfCameras = Camera.getNumberOfCameras();
  for (int i = 0; i < numberOfCameras; i++) {
      Log.i(DEBUG_TAG, "Checking camera...");
      CameraInfo info = new CameraInfo();
      Camera.getCameraInfo(i, info);
      if (info.facing == CameraInfo.CAMERA_FACING_BACK) {
    Log.i(DEBUG_TAG, "Camera found");
    cameraId = i;
    break;
      } else {
    Log.i(DEBUG_TAG, "Camera rejected");
      }
  }
  return cameraId;
    }

    private class PhotoHandler implements PictureCallback {
    
  @Override
  public void onPictureTaken(byte[] data, Camera camera) {
      
      File pictureFileDir = getDir();

      Log.i(DEBUG_TAG, "directory: " + pictureFileDir.toString());
      
      if (!pictureFileDir.exists() && !pictureFileDir.mkdirs()) {    
    Log.e(DEBUG_TAG, "Can't create directory to save image.");
    camera.release();
    return;
      }
      
      SimpleDateFormat dateFormat = new SimpleDateFormat("hhmmss");
      String date = dateFormat.format(new Date());
      String photoFile = "Picture_" + date + ".jpg";
      
      String filename = pictureFileDir.getPath() + File.separator + photoFile;
      
      File pictureFile = new File(filename);
      
      try {
    FileOutputStream fos = new FileOutputStream(pictureFile);
    fos.write(data);
    fos.close();
    Log.i(DEBUG_TAG, "New Image saved: " + photoFile);
      } catch (Exception error) {
    Log.e(DEBUG_TAG, "File " + filename + " not saved: "
          + error.getMessage());
      }
      camera.release();  
      mApp.mLogMessages.add("snap -- picture saved");    
      mApp.mPictures.add(new Date());
  }
  
  private File getDir() {
      SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
      String day = sdf.format(new Date());
      File sdDir = Environment.getExternalStorageDirectory();
      return new File(sdDir, "Watcher" + File.separator + "photos" + File.separator + day);
  }
    } 
}




Java Source Code List

com.appspot.staffordbears.watcher.CommLink.java
com.appspot.staffordbears.watcher.Hermit.java
com.appspot.staffordbears.watcher.SerialProtocol.java
com.appspot.staffordbears.watcher.SmsReceiver.java
com.appspot.staffordbears.watcher.Snap.java
com.appspot.staffordbears.watcher.Watch.java