我有一个小问题。有 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");