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