调用camera拍照指定路径后删除图库中存在的照片

 String imagePath;
Button btnButton;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnButton=(Button) findViewById(R.id.photo);
       imagePath = Environment.getExternalStorageDirectory() + "/image" ;
       File file = new File(imagePath);
       if(!file.exists()){
       file.mkdirs(); }
        btnButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
Uri imageUri = Uri.fromFile(new File(imagePath, "image.png"));
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(intent, 1);
}
});
    }




    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    deleteLatestPhoto();
    //Bundle bundle = data.getExtras(); 
//     Bitmap bitmap = (Bitmap) data.getExtras().get("data"); 
//     String sdStatus = Environment.getExternalStorageState(); 
//     if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用 
//     Log.v("gaobaoshen", 
//     "SD card is not avaiable/writeable right now."); 
//     return; 
//    
//     File file = new File("/sdcard/myImage/"); 
//     file.mkdirs();// 创建文件夹 
//     String fileName = "/sdcard/myImage/111.jpg"; 
//     FileOutputStream b = null; 
// 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(); 
//    
//    
    }
    private void deleteLatestPhoto() {


    String[] projection = new String[] { MediaStore.Images.ImageColumns._ID,MediaStore.Images.ImageColumns.DATE_TAKEN };


    Cursor cursor = managedQuery(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection,null, null, MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");


    if (cursor != null) {


    cursor.moveToFirst();


    ContentResolver cr =MainActivity.this.getContentResolver();


    cr.delete(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,BaseColumns._ID + "=" + cursor.getString(0), null);}

    }


需要权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Android,要调用系统相机拍照可以使用Intent,以下是一个简单的示例: ```java private static final int REQUEST_IMAGE_CAPTURE = 1; private String currentPhotoPath; // 调用系统相机拍照 private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); // 确保有相机应用可以处理该 intent if (takePictureIntent.resolveActivity(getPackageManager()) != null) { // 创建一个文件来保存拍摄的照片 File photoFile = null; try { photoFile = createImageFile(); } catch (IOException ex) { // 错误处理 } if (photoFile != null) { Uri photoURI = FileProvider.getUriForFile(this, "com.example.android.fileprovider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI); startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } } // 创建图片文件 private File createImageFile() throws IOException { // 创建一个唯一的文件名 String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); File image = File.createTempFile( imageFileName, ".jpg", storageDir ); // 保存当前图片路径 currentPhotoPath = image.getAbsolutePath(); return image; } // 处理拍照结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { // 图片保存在 currentPhotoPath ,你可以在这里做你想做的事情 // 例如:将图片路径存储到数据库,将图片显示在ImageView等等 } } ``` 在上述代码,`dispatchTakePictureIntent` 方法创建了一个 `ACTION_IMAGE_CAPTURE` 的 Intent,然后使用 `startActivityForResult` 方法启动系统相机应用。在 `createImageFile` 方法,我们创建一个唯一的文件名,并将照片文件保存到 `/Pictures` 目录下。当相机应用拍摄完照片后,我们可以在 `onActivityResult` 方法处理照片结果,照片会保存在 `currentPhotoPath` 变量,你可以在这里对照片进行处理。 需要注意的是,如果你想把照片保存到指定位置,你需要在创建照片文件时指定文件路径。在示例代码,我们使用了 `FileProvider` 来获得一个可以共享的 URI,以便将文件路径传递给相机应用。如果你想将照片保存到指定的文件夹,你需要修改 `createImageFile` 方法的 `storageDir` 变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值