使用意图相机时为图像命名
Posted
技术标签:
【中文标题】使用意图相机时为图像命名【英文标题】:Give name to image when used intent camera 【发布时间】:2012-04-02 12:05:45 【问题描述】:在我的应用程序中,我打开相机并希望以特定名称保存该文件。 我使用此代码:
public void onLongPress(MotionEvent e)
// TODO Auto-generated method stub
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File("new-photo-name.jpg")) );
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
protected void onActivityResult1(int requestCode, int resultCode, Intent data)
if (requestCode == CAMERA_PIC_REQUEST)
Bitmap image = (Bitmap) data.getExtras().get("data");
它确实打开了相机,我可以拍摄并保存照片,但它没有给出好名字。 每次我保存图片时,他都会给图片起一个名字,1个名字的例子是:“13333675392558.jpg”。我不明白他是怎么得出这种数字的。
为什么我的代码没有应用名称:“new-photo-name.jpg”?
然后/或者我做错了什么?
已经谢谢了,Bigflow
【问题讨论】:
【参考方案1】:intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
是设置文件名的行。这条线你必须改变。
【讨论】:
将其更改为:intent.putExtra(MediaStore.EXTRA_OUTPUT, "new-photo-name.jpg");
但不知何故,这不起作用。
字符串不是 Uri。我不知道这是否是最好的,我的应用程序使用 Uri.fromFile(new File(String fileName))
我改了代码,这样更容易看。但这也行不通:(
我刚刚注意到您的代码中有“onActivityResult1”。这里真的有“1”吗?如果有,请删除它,然后重试:)
哦,我删除了它,但不知何故,它仍然无法正常工作。我认为它在代码中的其他地方出错了,我现在将搜索问题。【参考方案2】:
我得到了它的工作,但还不知道完全相同的问题,但这段代码对我有用:
private Uri outputFileUri;
public void onLongPress(MotionEvent e)
// TODO Auto-generated method stub
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
File file = new File(Environment.getExternalStorageDirectory(), "/DCIM/Camera/new-photo-name.jpg");
outputFileUri = Uri.fromFile(file);
intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(intent, TAKE_PICTURE);
onLongPress 与手势(触摸)动作有关,您也可以在此处使用按钮。
public void onActivityResult(int requestCode, int resultCode, Intent data)
if (requestCode == TAKE_PICTURE)
System.out.println("string of file name = "+outputFileUri.toString());
非常小的代码,但工作起来就像一个魅力
【讨论】:
以上是关于使用意图相机时为图像命名的主要内容,如果未能解决你的问题,请参考以下文章