2016-02-08 226 views
1

所以实际上我有一个应用程序,在那里你可以拍一张照片你自己,那么它的保存在手机内的照片,在一个名为MyCameraApp一个创建的文件夹。在imageView中显示上次拍摄的照片? (相机)

我想将MyCameraApp文件夹中最后一次捕获的照片显示在我的活动中的图像视图中。

我不知道如何做到这一点,我创建的每个教程或例子对我来说看起来都很复杂,经过3-4小时的搜索后,我认为最好问这个社区,希望有人能帮助我:)

这里是我的代码:

@Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      File pictureFile = getOutputMediaFile(); 
      if (pictureFile == null) { 
       return; 
      } 
      try { 
       FileOutputStream fos = new FileOutputStream(pictureFile); 
       fos.write(data); 
       fos.close(); 
      } catch (FileNotFoundException e) { 

      } catch (IOException e) { 
      } 
     } 
    }; 

    private static File getOutputMediaFile() { 
     File mediaStorageDir = new File(
       Environment 
         .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), 
       "MyCameraApp"); 
     if (!mediaStorageDir.exists()) { 
      if (!mediaStorageDir.mkdirs()) { 
       Log.d("MyCameraApp", "failed to create directory"); 
       return null; 
      } 
     } 
     // Create a media file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss") 
       .format(new Date()); 
     File mediaFile; 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator 
       + "IMG_" + timeStamp + ".jpg"); 


     return mediaFile; 
    } 

我知道它的音哑,但我想是这样的:

Get last created mediafile 
imageView.setBitmap(lastCreatedMediaFile) 

回答

1

的过程可能是以下几点:

  • 拍摄照片(有的话)
  • 将其保存到存储(有的话)
  • 负载Bitmap从存储
  • 使用setImageBitmap()

从存储加载是通过使用实现通过BitmapFactory.decodeFile(*)例如在相同的文件对象(pictureFile在你的情况下)

+0

你的意思是s像这样? bitmap = BitmapFactory.decodeFile(pictureFile); ImageView im3 =(ImageView)findViewById(R.id.imageView3); im3.setImageBitmap(bitmap); –

+0

是的,它保存在onPictureTaken当然 – Sam

+0

然后我不知道我做错了什么,但与此代码我得到“decodeFile(java.lang.String)在BitmapFactory不能应用于(java.io.file )“错误。 –

相关问题