Android 安卓-如何根据计时器拍照
我想实现一项服务,在指定的一天中的某个时间,手机将自动拍照 从现在起,我开始学习官方教程:Android 安卓-如何根据计时器拍照,android,android-intent,android-camera,Android,Android Intent,Android Camera,我想实现一项服务,在指定的一天中的某个时间,手机将自动拍照 从现在起,我开始学习官方教程: public class PhotoHandler { Activity a; public PhotoHandler(Activity a) { this.a = a; } public void takePicture() { Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); File im
public class PhotoHandler {
Activity a;
public PhotoHandler(Activity a) {
this.a = a;
}
public void takePicture() {
Intent imageIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File imagesFolder = new File(Environment.getExternalStorageDirectory(), "MyITTTPictures");
imagesFolder.mkdirs();
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
File image = new File(imagesFolder, timeStamp+".jpg");
Uri uriSavedImage = Uri.fromFile(image);
imageIntent.putExtra(MediaStore.EXTRA_OUTPUT, uriSavedImage);
a.startActivityForResult(imageIntent, 0);
}
}
启动我的应用程序,我可以控制我的相机,但我必须手动拍照;我想让她在我设定的计时器启动时拍照。
有没有办法让她自动拍照?可以随时触发相机拍照
舱单:
拍照
public class MakePhotoActivity extends Activity {
private final static String DEBUG_TAG = "MakePhotoActivity";
private Camera camera;
private int cameraId = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// do we have a camera?
if (!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG)
.show();
} else {
cameraId = findFrontFacingCamera();
if (cameraId < 0) {
Toast.makeText(this, "No front facing camera found.",
Toast.LENGTH_LONG).show();
} else {
camera = Camera.open(cameraId);
}
}
}
public void onClick(View view) {
camera.takePicture(null, null,
new PhotoHandler(getApplicationContext()));
}
private int findFrontFacingCamera() {
int cameraId = -1;
// Search for the front facing camera
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
Log.d(DEBUG_TAG, "Camera found");
cameraId = i;
break;
}
}
return cameraId;
}
@Override
protected void onPause() {
if (camera != null) {
camera.release();
camera = null;
}
super.onPause();
}
}
public类MakePhotoActivity扩展活动{
私有最终静态字符串DEBUG_TAG=“MakePhotoActivity”;
私人摄像机;
私有int-cameraId=0;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//我们有照相机吗?
如果(!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_摄像头)){
Toast.makeText(此“此设备上没有摄像头”,Toast.LENGTH\u LONG)
.show();
}否则{
cameraId=findFrontFacingCamera();
if(cameraId<0){
Toast.makeText(此“未找到前向摄像头”,
Toast.LENGTH_LONG).show();
}否则{
摄像机=摄像机。打开(摄像机阵列);
}
}
}
公共void onClick(视图){
照相机。拍照(空,空,
新的PhotoHandler(getApplicationContext());
}
专用int findFrontFacingCamera(){
int cameraId=-1;
//搜索前向摄像头
int numberOfCameras=Camera.getNumberOfCameras();
对于(int i=0;i
编辑:cameraId并不总是设置为-1,它只是一个占位符,而您正在寻找正面摄像头。找到后,cameraId将设置为该相机的索引,用于随时触发相机拍照
舱单:
拍照
public class MakePhotoActivity extends Activity {
private final static String DEBUG_TAG = "MakePhotoActivity";
private Camera camera;
private int cameraId = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// do we have a camera?
if (!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG)
.show();
} else {
cameraId = findFrontFacingCamera();
if (cameraId < 0) {
Toast.makeText(this, "No front facing camera found.",
Toast.LENGTH_LONG).show();
} else {
camera = Camera.open(cameraId);
}
}
}
public void onClick(View view) {
camera.takePicture(null, null,
new PhotoHandler(getApplicationContext()));
}
private int findFrontFacingCamera() {
int cameraId = -1;
// Search for the front facing camera
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
Log.d(DEBUG_TAG, "Camera found");
cameraId = i;
break;
}
}
return cameraId;
}
@Override
protected void onPause() {
if (camera != null) {
camera.release();
camera = null;
}
super.onPause();
}
}
public类MakePhotoActivity扩展活动{
私有最终静态字符串DEBUG_TAG=“MakePhotoActivity”;
私人摄像机;
私有int-cameraId=0;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//我们有照相机吗?
如果(!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_摄像头)){
Toast.makeText(此“此设备上没有摄像头”,Toast.LENGTH\u LONG)
.show();
}否则{
cameraId=findFrontFacingCamera();
if(cameraId<0){
Toast.makeText(此“未找到前向摄像头”,
Toast.LENGTH_LONG).show();
}否则{
摄像机=摄像机。打开(摄像机阵列);
}
}
}
公共void onClick(视图){
照相机。拍照(空,空,
新的PhotoHandler(getApplicationContext());
}
专用int findFrontFacingCamera(){
int cameraId=-1;
//搜索前向摄像头
int numberOfCameras=Camera.getNumberOfCameras();
对于(int i=0;i
编辑:cameraId并不总是设置为-1,它只是一个占位符,而您正在寻找正面摄像头。找到后,cameraId将设置为该相机的索引,用于随时触发相机拍照
舱单:
拍照
public class MakePhotoActivity extends Activity {
private final static String DEBUG_TAG = "MakePhotoActivity";
private Camera camera;
private int cameraId = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// do we have a camera?
if (!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG)
.show();
} else {
cameraId = findFrontFacingCamera();
if (cameraId < 0) {
Toast.makeText(this, "No front facing camera found.",
Toast.LENGTH_LONG).show();
} else {
camera = Camera.open(cameraId);
}
}
}
public void onClick(View view) {
camera.takePicture(null, null,
new PhotoHandler(getApplicationContext()));
}
private int findFrontFacingCamera() {
int cameraId = -1;
// Search for the front facing camera
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
Log.d(DEBUG_TAG, "Camera found");
cameraId = i;
break;
}
}
return cameraId;
}
@Override
protected void onPause() {
if (camera != null) {
camera.release();
camera = null;
}
super.onPause();
}
}
public类MakePhotoActivity扩展活动{
私有最终静态字符串DEBUG_TAG=“MakePhotoActivity”;
私人摄像机;
私有int-cameraId=0;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//我们有照相机吗?
如果(!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_摄像头)){
Toast.makeText(此“此设备上没有摄像头”,Toast.LENGTH\u LONG)
.show();
}否则{
cameraId=findFrontFacingCamera();
if(cameraId<0){
Toast.makeText(此“未找到前向摄像头”,
Toast.LENGTH_LONG).show();
}否则{
摄像机=摄像机。打开(摄像机阵列);
}
}
}
公共void onClick(视图){
照相机。拍照(空,空,
新的PhotoHandler(getApplicationContext());
}
专用int findFrontFacingCamera(){
int cameraId=-1;
//搜索前向摄像头
int numberOfCameras=Camera.getNumberOfCameras();
对于(int i=0;i
编辑:cameraId并不总是设置为-1,它只是一个占位符,而您正在寻找正面摄像头。找到后,cameraId将设置为该相机的索引,用于随时触发相机拍照
舱单:
拍照
public class MakePhotoActivity extends Activity {
private final static String DEBUG_TAG = "MakePhotoActivity";
private Camera camera;
private int cameraId = 0;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// do we have a camera?
if (!getPackageManager()
.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
Toast.makeText(this, "No camera on this device", Toast.LENGTH_LONG)
.show();
} else {
cameraId = findFrontFacingCamera();
if (cameraId < 0) {
Toast.makeText(this, "No front facing camera found.",
Toast.LENGTH_LONG).show();
} else {
camera = Camera.open(cameraId);
}
}
}
public void onClick(View view) {
camera.takePicture(null, null,
new PhotoHandler(getApplicationContext()));
}
private int findFrontFacingCamera() {
int cameraId = -1;
// Search for the front facing camera
int numberOfCameras = Camera.getNumberOfCameras();
for (int i = 0; i < numberOfCameras; i++) {
CameraInfo info = new CameraInfo();
Camera.getCameraInfo(i, info);
if (info.facing == CameraInfo.CAMERA_FACING_FRONT) {
Log.d(DEBUG_TAG, "Camera found");
cameraId = i;
break;
}
}
return cameraId;
}
@Override
protected void onPause() {
if (camera != null) {
camera.release();
camera = null;
}
super.onPause();
}
}
公共