80,351
社区成员
发帖
与我相关
我的任务
分享
public class MainActivity extends Activity {
Camera camera = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
camera = getCameraInstance();
if (camera != null) {
SurfaceView dummy = new SurfaceView(getBaseContext());
try {
camera.setPreviewDisplay(dummy.getHolder());
} catch (IOException e) {
e.printStackTrace();
}
camera.startPreview();
PhotoHandler photoHandler = new PhotoHandler(getApplicationContext());
camera.takePicture(null, null, photoHandler);
System.out.println("***************"+getOutputMediaFileUri());
}
}
public Camera getCameraInstance() {
Camera c = null;
try {
c = Camera.open();
} catch (Exception e) {
}
return c;
}
public boolean checkCameraHardware(Context context) {
if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
return true;
} else {
return false;
}
}
}
package com.example.linklin.autotweetdemo;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.AsyncTask;
import android.util.Log;
import android.content.Context;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.os.Environment;
import android.view.SurfaceView;
import android.widget.Toast;
public class PhotoHandler implements PictureCallback {
private final Context context;
private static String path="";
public PhotoHandler(Context context) {
this.context = context;
}
@Override
public void onPictureTaken(byte[] data, Camera camera) {
File pictureFile = getOutputMediaFile();
System.out.println("++++++++++++++++++++++++++++++++++"+pictureFile);
if (pictureFile==null) {
Toast.makeText(context, "Can't create directory to save image.",
Toast.LENGTH_LONG).show();
return;
}
try {
FileOutputStream fos = new FileOutputStream(pictureFile);
fos.write(data);
fos.close();
System.out.println("1111111111111111111111111111111111111111111111111111111111111111111111111111111");
} catch (Exception error) {
Toast.makeText(context, "Image could not be saved.",
Toast.LENGTH_LONG).show();
}
}
private File getOutputMediaFile() {
File mediaStorageDir = new File(Environment.getExternalStorageDirectory().getPath() + File.separator + "AutoTweetCamera");
if (!mediaStorageDir.exists()) {
if (!mediaStorageDir.mkdirs()) {
Log.d("AutoTweetCamera", "failed to create directory");
return null;
}
}
String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmssSSS").format(new Date());
File mediaFile;
mediaFile = new File(mediaStorageDir.getPath() + File.separator +
"IMG_" + timeStamp + ".jpeg");
System.out.println("222222222222222222222222222222222222222222222222222222222222222222222");
return mediaFile;
}
public static String getOutputMediaFileUri() {
return path;
}
}
PhotoHandler photoHandler = new PhotoHandler(getApplicationContext());
这里多加一个参数,就是那个接口,然后在onPictureTaken这个方法保存完图片后调用接口的那个方法