2014-03-04 201 views
0

我正在将图像保存到SD卡中,但我希望目录文件夹将自动显示在图库和文件夹中的图像上。每当我保存图像时,我都会重新启动手机,以便在图库中显示目录文件夹。是我的代码有问题吗?或电话?请帮帮我。非常感谢。我不知道该怎么办Android将图像保存在SD卡中

这里是我的代码:

String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", 
      Locale.getDefault()).format(new Date()); 
    mTempDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES) + "/" + "PixiePhotos" + "/"; 

    prepareDirectory(); 

     save.setOnClickListener(new View.OnClickListener() { 
      @SuppressLint("ShowToast") 
      @SuppressWarnings("deprecation") 
      public void onClick(View v) { 
       Log.v(TAG, "Save Tab Clicked"); 
       viewBitmap = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888); 
       canvas = new Canvas(viewBitmap); 
       tapimageview.draw(canvas); 
       canvas.drawBitmap(bp, 0, 0, paint); 
       canvas.drawBitmap(drawingBitmap, matrix, paint); 
       canvas.drawBitmap(bmpstickers, matrix, paint); 
      //tapimageview.setImageBitmap(mBitmapDrawable.getBitmap()); 
       try { 
       mBitmapDrawable = new BitmapDrawable(viewBitmap); 

       mCurrent = "PXD_" + new SimpleDateFormat("yyyyMMdd_HHmmss", 
         Locale.getDefault()).format(new Date()) + ".jpg"; 
       bp1 = mBitmapDrawable.getBitmap(); 
       tapimageview.setImageBitmap(bp1); 
       mNewSaving = ((BitmapDrawable) mBitmapDrawable).getBitmap(); 
       String FtoSave = mTempDir + mCurrent; 
       File mFile = new File(FtoSave); 
       mFileOutputStream = new FileOutputStream(mFile); 
       mNewSaving.compress(CompressFormat.JPEG, 100, mFileOutputStream); 
       mFileOutputStream.flush(); 
       mFileOutputStream.close(); 
       } catch (FileNotFoundException e) { 
       Log.v(TAG, "FileNotFoundExceptionError " + e.toString()); 
       } catch (IOException e) { 
       Log.v(TAG, "IOExceptionError " + e.toString()); 
       } 
       Toast.makeText(getApplicationContext(), "Your photo has been saved", Toast.LENGTH_LONG).show(); 
      } 
      }); 
    } 


private boolean prepareDirectory() { 
     try { 
      if (makeDirectory()) { 
      return true; 
      } else { 
      return false; 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
      //Toast.makeText(this, getString(R.string.sdcard_error), 1000).show(); 
      return false; 
     } 
     } 

    private boolean makeDirectory() { 
     File mTempFile = new File(mTempDir); 
     if (!mTempFile.exists()) { 
      mTempFile.mkdirs(); 
     } 

     if (mTempFile.isDirectory()) { 
      File[] mFiles = mTempFile.listFiles(); 
      for (File mEveryFile : mFiles) { 
      if (!mEveryFile.delete()) { 
       //System.out.println(getString(R.string.failed_to_delete) + mEveryFile); 
      } 
      } 
     } 
     return (mTempFile.isDirectory()); 
     } 
+0

[图像,保存到SD卡,没有出现在Android的画廊应用](http://stackoverflow.com/问题/ 2170214/image-saved-to-sdcard-doesnt-appear-in-androids-gallery-app) – Squonk

+0

保存图像时没有重复:(我不知道为什么。你能帮我么? – user3317993

回答

0

试试这个:

private boolean storeImage(Bitmap imageData, String filename) { 
    //get path to external storage (SD card) 
    String iconsStoragePath = Environment.getExternalStorageDirectory() + "/myAppDir/myImages/" 
    File sdIconStorageDir = new File(iconsStoragePath); 

    //create storage directories, if they don't exist 
    sdIconStorageDir.mkdirs(); 

    try { 
     String filePath = sdIconStorageDir.toString() + filename; 
     FileOutputStream fileOutputStream = new FileOutputStream(filePath); 

     BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream); 

     //choose another format if PNG doesn't suit you 
     imageData.compress(CompressFormat.PNG, 100, bos); 

     bos.flush(); 
     bos.close(); 

    } catch (FileNotFoundException e) { 
     Log.w("TAG", "Error saving image file: " + e.getMessage()); 
     return false; 
    } catch (IOException e) { 
     Log.w("TAG", "Error saving image file: " + e.getMessage()); 
     return false; 
    } 

    return true; 
} 

不要忘了添加存储权限

由于这是操作的是将数据保存在外部存储器上,它需要AndroidManifest.xml权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
0

尝试一下

void saveImage() { 

String root = Environment.getExternalStorageDirectory().toString(); 
File myDir = new File(root + "/saved_images"); 

String fname = "Image.jpg"; 
File file = new File (myDir, fname); 
if (file.exists()) file.delete(); 
try { 
     FileOutputStream out = new FileOutputStream(file); 
     myBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
     out.flush(); 
     out.close(); 

} catch (Exception e) { 
     e.printStackTrace(); 
} 
} 

,并在您maniefest文件

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

仍然我没有自动显示在画廊:(我将如何做? – user3317993

+0

你看到@ Squonk的链接..http://stackoverflow.com/questions/2170214/image-saved-to-sdcard-doesnt-出现在androids-gallery-app – rajshree

+0

文件文件; // =你的文件 String mimetype; // =你的文件的mimetype MimeTypeMap可能是有用的 MediaScanner.scanFile(getApplicationContext(),new String [] {file。 getPath()},new String [] {m​​imetype},null); ..,看到这个 – rajshree

0

的问题是不是与代码添加权限......

什么这里发生过的
在SD卡上下载文件后,画廊不会通知添加或下载到系统的新文件
你需要做的是,你必须手动通知...... okhay库文件添加请出示画廊.. :)

对于您必须使用MediaScannerConnection

下载的文件,扫描该特定的文件,它会显示在画廊
,你就完成了:)

+0

我将如何做图库文件的通知?你有任何样品吗?请帮助我谢谢你:D – user3317993