1.按钮事件
AddCarProduct.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (ContextCompat.checkSelfPermission(AddCarProduct.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
//申请权限,REQUEST_TAKE_PHOTO_PERMISSION是自定义的常量
ActivityCompat.requestPermissions(AddCarProduct.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 2);
}else {
//有权限,直接拍照
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 启动系统相机
startActivityForResult(intent,1);
}
}
});
2.获取权限 直接重写
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if (requestCode == 2) {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
//获取权限成功,可以拍照
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 启动系统相机
startActivityForResult(intent,1);
} else {
Toast.makeText(this, "请在应用管理中打开“相机”访问权限!", Toast.LENGTH_LONG).show();
finish();
}
}
}
3.相机拍照完成得到返回信息
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK&&requestCode == 1) { // 如果返回数据
Bitmap data1 = (Bitmap) data.getExtras().get("data");
String base64 = PhotoUtils.bitmapToBase64(data1);
map.clear();
if (NetUtil.isNetAvailable(this)) {
map.put("imgBase64",base64);
Log.d("aaaaa", "onActivityResult: ");
OKhttptils.post(this, Config.PARSEVIN, map, new OKhttptils.HttpCallBack() {
@Override
public void success(String response) {
Gson gson = GsonFactory.create();
ChassisNumber chassisNumber = gson.fromJson(response, ChassisNumber.class);
String vin = chassisNumber.getData().getResult().getVin();
carCjh.setText(vin);
}
@Override
public void fail(String response) {
Toast.makeText(AddCarProduct.this, "获取车架号失败", Toast.LENGTH_SHORT).show();
}
});
}
//做缓存存储
if (resultCode == Activity.RESULT_OK) {
String sdStatus = Environment.getExternalStorageState();
if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用
Log.i("TestFile", "SD card is not avaiable/writeable right now.");
return;
}
new DateFormat();
String name = DateFormat.format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg";
Toast.makeText(this, name, Toast.LENGTH_LONG).show();
Bundle bundle = data.getExtras();
Bitmap bitmap = (Bitmap) bundle.get("data");// 获取相机返回的数据,并转换为Bitmap图片格式
FileOutputStream b = null;
File file = new File("/sdcard/Image26/");
file.mkdirs();// 创建文件夹
String fileName = "/sdcard/Image/"+name;
try {
b = new FileOutputStream(fileName);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
try {
b.flush();
b.close();
} catch (IOException e) {
e.printStackTrace();
}
}
try
{
}catch(Exception e)
{
Log.e("error", e.getMessage());
}
}
}
}