package cn.panghu.camera;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.BitmapFactory.Options;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageView;
import android.widget.Toast;
import com.example.camerademoapp.R;
public class MyCamera extends Activity {
/**
* 用于调用系统相机回调
*/
private final int SYSTEM_CAMERA_REQUESTCODE = 1;
private final int okend = 2;
private final int TYPE_FILE_IMAGE = 1;
private final int TYPE_FILE_VEDIO = 2;
private Uri imageFileUri = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mycamera);
findViewById(R.id.button).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
imageFileUri = getOutFileUri(TYPE_FILE_IMAGE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageFileUri);
startActivityForResult(intent, SYSTEM_CAMERA_REQUESTCODE);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SYSTEM_CAMERA_REQUESTCODE && resultCode == RESULT_OK){
Log.i("MyPicture", imageFileUri.getEncodedPath());
setPicToImageView((ImageView)findViewById(R.id.imgurl)
, new File(imageFileUri.getEncodedPath()));
}
}
private void setPicToImageView(ImageView imageView, File imageFile){
int imageViewWidth = imageView.getWidth();
int imageViewHeight = imageView.getHeight();
BitmapFactory.Options opts = new Options();
opts.inJustDecodeBounds = true;
BitmapFactory.decodeFile(imageFile.getAbsolutePath(), opts);
int bitmapWidth = opts.outWidth;
int bitmapHeight = opts.outHeight;
int scale = Math.max(imageViewWidth / bitmapWidth, imageViewHeight /
bitmapHeight);
opts.inSampleSize = scale;
opts.inPurgeable = true;
opts.inJustDecodeBounds = false;
Bitmap bitmap = BitmapFactory.decodeFile(imageFile.getPath(), opts);
imageView.setImageBitmap(bitmap);
}
private Uri getOutFileUri(int fileType) {
return Uri.fromFile(getOutFile(fileType));
}
private File getOutFile(int fileType) {
String storageState = Environment.getExternalStorageState();
if (Environment.MEDIA_REMOVED.equals(storageState)){
Toast.makeText(getApplicationContext(), "oh,no, SD卡不存在",
Toast.LENGTH_SHORT).show();
return null;
}
File mediaStorageDir = new File (Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
,"MyPictures");
if (!mediaStorageDir.exists()){
if (!mediaStorageDir.mkdirs()){
Log.i("MyPictures", "创建图片存储路径目录失败");
Log.i("MyPictures", "mediaStorageDir : " +
mediaStorageDir.getPath());
return null;
}
}
File file = new File(getFilePath(mediaStorageDir,fileType));
return file;
}
private String getFilePath(File mediaStorageDir, int fileType){
String timeStamp =new SimpleDateFormat("yyyyMMdd_HHmmss")
.format(new Date());
String filePath = mediaStorageDir.getPath() + File.separator;
if (fileType == TYPE_FILE_IMAGE){
filePath += ("IMG_" + timeStamp + ".jpg");
}else if (fileType == TYPE_FILE_VEDIO){
filePath += ("VIDEO_" + timeStamp + ".mp4");
}else{
return null;
}
return filePath;
}
private boolean checkCameraHardWare(Context context){
PackageManager packageManager = context.getPackageManager();
if (packageManager.hasSystemFeature(PackageManager.FEATURE_CAMERA)){
return true;
}
return false;
}
}