Android后台开启服务默默拍照(2)

private void cancelAlertManager() {
  Intent intent = new Intent();
  intent.setAction("com.vegetables_source.alarm");
  PendingIntent pi = PendingIntent.getBroadcast(this, 0, intent, 0);
  am.cancel(pi);

// 注销广播
  unregisterReceiver(alarmReceiver);
 }

BroadcastReceiver alarmReceiver = new BroadcastReceiver() {

@Override
  public void onReceive(Context context, Intent intent) {
   if ("com.vegetables_source.alarm".equals(intent.getAction())) {

if (camera != null) {
     SurfaceView dummy = new SurfaceView(getBaseContext());
     try {
      camera.setPreviewDisplay(dummy.getHolder());
     } catch (IOException e) {
      e.printStackTrace();
     }
     camera.startPreview();

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

}

}
 };

private Camera openFacingBackCamera() {
  Camera cam = null;
  Camera.CameraInfo cameraInfo = new Camera.CameraInfo();
  ;
  for (int camIdx = 0, cameraCount = Camera.getNumberOfCameras(); camIdx < cameraCount; camIdx++) {
   Camera.getCameraInfo(camIdx, cameraInfo);
   if (cameraInfo.facing == Camera.CameraInfo.CAMERA_FACING_BACK) {
    try {
     cam = Camera.open(camIdx);
    } catch (RuntimeException e) {
     e.printStackTrace();
    }
   }
  }

return cam;
 }
}

进行拍照存储的操作代码如下:

package com.yang.handle;

import java.io.File;
import java.io.FileOutputStream;
import java.text.SimpleDateFormat;
import java.util.Date;

import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.os.Environment;
import android.widget.Toast;

public class PhotoHandler implements PictureCallback {

private final Context context;

public PhotoHandler(Context context) {
        this.context = context;
    }

@Override
    public void onPictureTaken(byte[] data, Camera camera) {

File pictureFileDir = getDir();

if (!pictureFileDir.exists() && !pictureFileDir.mkdirs()) {

Toast.makeText(context, "Can't create directory to save image.",
                    Toast.LENGTH_LONG).show();
            return;

}

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyymmddhhmmss");
        String date = dateFormat.format(new Date());
        String photoFile = "Picture_" + date + ".jpg";

String filename = pictureFileDir.getPath() + File.separator + photoFile;

File pictureFile = new File(filename);
        System.out.println("filename is "+ filename);

try {
            FileOutputStream fos = new FileOutputStream(pictureFile);
            fos.write(data);
            fos.close();
            Toast.makeText(context, "New Image saved:" + photoFile,
                    Toast.LENGTH_LONG).show();
        } catch (Exception error) {
            Toast.makeText(context, "Image could not be saved.",
                    Toast.LENGTH_LONG).show();
        }
    }

private File getDir() {
        File sdDir = Environment
          .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        return new File(sdDir, "ServiceCamera");
    }
}

项目代码如下:

免费下载地址在 (说明:此地址不是FTP,直接点击打开,输入用户名与密码)

用户名与密码都是

具体下载目录在 /2013年资料/7月/7日/Android后台开启服务默默拍照

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/26ec56551fd6d0b9672bc71c6d95e4e8.html