Java Android工作室应用程序 - 使用相机拍摄照片后如何正确重命名照片?



我有一个小问题。有 2 天我试图解决它但没有成功。

我正在尝试创建一个应用程序,该应用程序以预定义的名称命名每张照片(例如:"coucou.jpg"而不是"IMG_20191119_201907.jpg"(。

所以我在互联网上应用了一些教程(https://developer.android.com/training/camera/photobasics.html#TaskPhotoView - https://www.youtube.com/watch?v=8890GpBwn9w(法语((

它...有效几乎!

照片在"图片"文件夹中创建得很好。 但是我遇到的问题是:创建的文件没有收到我给它们的名称。它们被命名为1574245595878.jpg - 1574245714222.jpg - 1574358229963.jpg - 等。

而且我不知道我错在哪里...我给你我的代码,通常,它们应该被称为"coucou.jpg"(

有人可以帮我给他们起个好名字(或者至少在创建后在同一代码中重命名它们(吗?那就太好了!

public class MainActivity extends AppCompatActivity {
    private static final int RETOUR_PRENDRE_PHOTO = 1;
    private Button btnPrendrePhoto;
    private ImageView imgAffichePhoto;
    private String photoPath = null;
    private Bitmap image;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initActivity();
    }
    private void initActivity(){
        btnPrendrePhoto = (Button)findViewById(R.id.btnPrendrePhoto);
        imgAffichePhoto = (ImageView)findViewById(R.id.imgAffichePhoto);
        btnPrendrePhoto.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v) {
                prendreUnePhoto();
            }
        });
    }
    private void prendreUnePhoto(){
        Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        if(intent.resolveActivity(getPackageManager()) != null){
            File photoDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
            try {
                File photofile = File.createTempFile("coucou",".jpg",photoDir);
                photoPath = photofile.getAbsolutePath();
                Uri photoUri = FileProvider.getUriForFile(MainActivity.this, MainActivity.this.getApplicationContext().getPackageName()+".fileprovider", photofile);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, photoUri);
                startActivityForResult(intent, RETOUR_PRENDRE_PHOTO);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data){
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode==RETOUR_PRENDRE_PHOTO && resultCode==RESULT_OK){
            image = BitmapFactory.decodeFile(photoPath);
            imgAffichePhoto.setImageBitmap(image);
            MediaStore.Images.Media.insertImage(getContentResolver(), image, "coucou.jpg", "description");
        }
    }
}

当你说createTempFile()它会timestampInMillis附加到创建的File的末尾时,这就是你在你的情况下看到的数字,所以试着创建一个普通的文件

取代

File photofile = File.createTempFile("coucou",".jpg",photoDir);

File image = new File(photoDir, "coucou.jpg");

最新更新