Java Android studio 应用程序 - 如何在用相机拍摄照片后正确重命名照片?

标签 java android android-studio

我有一个小问题。我已经尝试解决这个问题 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");

关于Java Android studio 应用程序 - 如何在用相机拍摄照片后正确重命名照片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58981116/

相关文章:

java - 具有 2 个不同数据库名称的 MySQL JDBC URL 故障转移

java - 为什么 Shiro 的 AnonymousFilter 不在这个例子中创建新的网络 session ?

java - 抑制错误消息 找不到要查询的实体

android - 没有找到 android :elevation 的资源标识符

git - 在 Android Studio 中更改 Git 根目录

java - 如何将多个数据添加到 Android Firestore 中的一个文档?

php - 如何在 Nanohttpd 上执行 php 脚本?

android - 使用约束布局将图像放在另一个图像的左上角

java - 如何解析android sdk 28导入语句中的 'Cannot resolve symbol'

"External"文件的 Android Studio 部署