如何在Android中使用所需的文件名制作图片?

时间:2016-03-02 11:58:52

标签: android

我有Android应用程序可以拍照,拍照后它会将文件名保存到数据库中。稍后,当我将数据从Android应用程序传输到WebServer时,我希望这些文件名可用于在另一个应用程序中预览这些图片。所以我不得不担心数据库中的名字和图片的名称都包含在内,并且从我的应用程序中获取的所有图片都在某个特定的文件夹中(例如“PictureFolder”)。 到目前为止,我有两个我无法处理的问题。

问题1

我创建了所需的图片名称,例如picture_32016302_103500_bro_.jpg,在文件夹中,我的Android应用程序会在我的特定文件夹中创建图片,但名称为picture_32016302_103500_bro_-67940687.jpg。每次都不是这个确切的值,它是每张图片的随机数。为什么会这样?代码如下

private static final int ActivityStartamera = 0;

public void takePicture( View view)
{
    Intent takePic= new Intent();
    takePic.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
    File photofile = null;
    try{
        photofile=createImageFile();
        takePic.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photofile));
        startActivityForResult(takePic, ActivityStartamera);
        Toast.makeText(this,Uri.fromFile(photofile).toString(), Toast.LENGTH_LONG).show();
    }
    catch (IOException e)
    {
        e.printStackTrace();
        Toast.makeText(this, "Error", Toast.LENGTH_LONG).show();
        imageFileName="";
    }
}

protected  void onActivityResult (int requestCode, int resultCode, Intent data)
{
    if(requestCode == ActivityStartamera && resultCode == RESULT_OK)
    {
        Toast.makeText(this, "Picture taken", Toast.LENGTH_LONG).show();
    }
    else{
        image.delete();
    }
}

File createImageFile () throws IOException{
    String timeStamp = new SimpleDateFormat("MyyyyMdd_HHmmss").format(new Date());
    imageFileName = "picture_"+timeStamp+"_bro_";
    storage = Environment.getExternalStoragePublicDirectory("PictureFolder");
    if (!storage.exists())
    {
        Toast.makeText(this, "Directory created", Toast.LENGTH_LONG).show();
        storage.mkdirs();
   }
    image = File.createTempFile(imageFileName, ".jpg", storage);
    return image;
} 

问题2

我想用USB线将创建的图片从app传输到PC。当我将手机连接到PC时,我转到文件夹“PictureFolder”,在那里我看到了空文件夹。之后我断开手机与PC的连接,用app拍几张照片,将手机连接回PC,文件夹仍然是空的。如果我重新启动手机,则照片会显示在文件夹所以我怀疑并在手机上安装了File explorer,我看到从应用程序中拍摄的照片出现在该文件夹中,但只有在重新启动后才出现在PC文件浏览器中。有没有什么办法解决这一问题?或者我必须在传输图像之前重新启动手机?文件夹内容是否保存到某个缓存文件或问题在哪里?

我使用HTC欲望610和卡特彼勒b15q,在这两款设备中我都有这个问题,所以我认为它不取决于应用程序安装的是哪款手机。

0 个答案:

没有答案