2011-09-24 49 views
2

我想讓Android的MediaStore用特定的文件名將圖像寫入SD卡。它寫的文件,但不使用與Android MediaStore不會設置文件名

MediaStore.Images.Media.insertImage(cr, source, title, description) 

這裏傳遞的標題參數是我的相關代碼:

PictureCallback myPictureCallback_JPG = new PictureCallback(){ 

    public void onPictureTaken(byte[] arg0, Camera arg1) { 
     Bitmap bitmapPicture = BitmapFactory.decodeByteArray(arg0, 0, arg0.length); 

     int year = Calendar.getInstance().getTime().getYear(); 
     int month = Calendar.getInstance().getTime().getMonth(); 
     int day = Calendar.getInstance().getTime().getDay(); 

     int hour = Calendar.getInstance().getTime().getHours(); 
     int minute = Calendar.getInstance().getTime().getMinutes(); 
     int seconds = Calendar.getInstance().getTime().getSeconds(); 

     String imgName = "IMG_" + Integer.toString(year) + Integer.toString(month) +Integer.toString(day) + "_" + Integer.toString(hour) + Integer.toString(minute) 
          + Integer.toString(seconds) + ".jpg";   

     MediaStore.Images.Media.insertImage(getContentResolver(), bitmapPicture, imgName, imgName);  

     camera.startPreview(); 
     inPreview=true; 
    }}; 

,成功存儲圖片,但文件名看起來是時間,因爲Unix紀元(即13168297 ... 16.jpg)

回答

0

我沒有得到MediaStore的工作,但我沒有使用File類和FileOutputStream中來完成這項工作:

 ByteArrayOutputStream bytes = new ByteArrayOutputStream(); 
     bitmapPicture.compress(Bitmap.CompressFormat.JPEG, 100, bytes); 

     File imageDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "DropPic 64"); 

     imageDirectory.mkdirs(); 

     File f = new File(Environment.getExternalStorageDirectory() 
           + File.separator + "DropPic 64" + File.separator + currentPicture.fileName); 
     try { 
      f.createNewFile(); 
      FileOutputStream fo = new FileOutputStream(f); 
       fo.write(arg0); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     }