package com.example.ndh.floatingball.sdk.camera;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.widget.Toast;
import com.example.ndh.floatingball.util.PermissionUtils;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
/**
* Created by ndh on 17/1/13.
*/
public class CameraActivity extends Activity {
private static final int REQUEST_CODE = 0;
private String mNameImage;
private File mFileImage;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
getWindow().setStatusBarColor(Color.TRANSPARENT);
super.onCreate(savedInstanceState);
if (checkPermission()) return;
String nameImage = prepareFileDir();
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(nameImage)));
startActivityForResult(intent, REQUEST_CODE);
}
private boolean checkPermission() {
if (!PermissionUtils.checkPermission(this, PermissionUtils.CODE_CAMERA, "请先授予相机权限")) {
return true;
}
if (!PermissionUtils.checkPermission(this, PermissionUtils.CODE_WRITE_EXTERNAL_STORAGE, "请先授予存储空间权限")) {
return true;
}
return false;
}
@NonNull
private String prepareFileDir() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_hh_mm_ss");
String strDate = dateFormat.format(new java.util.Date());
String pathImage = Environment.getExternalStorageDirectory().getPath() + "/DCIM/";
mNameImage = pathImage + strDate + ".png";
File dir = new File(pathImage);
if (!dir.exists() && !dir.mkdirs()) {
//最多创建两次文件夹
dir.mkdirs();
}
mFileImage = new File(mNameImage);
try {
if (!mFileImage.exists() && !mFileImage.createNewFile()) {
mFileImage.createNewFile();
}
} catch (IOException e) {
e.printStackTrace();
}
return mNameImage;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
switch (resultCode) {
case RESULT_OK:
Toast.makeText(this, "图片已经保存在:" + mNameImage, Toast.LENGTH_SHORT).show();
break;
default:
if (null != mFileImage && mFileImage.exists() && mFileImage.isFile()) {
if (!mFileImage.delete()) {
// 最多删两次,避免偶尔删不掉问题
mFileImage.delete();
}
}
break;
}
}
finish();
}
}