2013-03-27 111 views
7

我編碼拍攝照片並保存在外部存儲。它可以在我的平板電腦上使用SD卡。但是,我遇到了一些麻煩,我的手機不支持SD卡。任何人都可以幫助我編寫代碼保存內部存儲。謝謝!保存在內部存儲器中捕獲的圖片嗎?

((Button) findViewById(R.id.btnTaken)) 
      .setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
          takeImage();        
       } 
       }); 



protected void takeImage() { 
    Log.i(TAG,"onClick event"); 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); 
     String currentDateandTime = sdf.format(new Date()); 
     String fileName = Environment.getExternalStorageDirectory().getAbsolutePath() + 
           "/Image_" + currentDateandTime + ".jpg"; 


     mCamera.takePicture(fileName); 
     Toast.makeText(this, fileName + " saved", Toast.LENGTH_SHORT).show(); 


} 
public void takePicture(final String fileName) { 
    Log.i(TAG, "Tacking picture"); 
    PictureCallback callback = new PictureCallback() { 

     private String mPictureFileName = fileName; 

     @Override 
     public void onPictureTaken(byte[] data, Camera camera) { 
      Log.i(TAG, "Saving a bitmap to file"); 
      Bitmap picture = BitmapFactory.decodeByteArray(data, 0, data.length); 
      try { 
       FileOutputStream out = new FileOutputStream(mPictureFileName); 
       picture.compress(Bitmap.CompressFormat.JPEG, 90, out); 
       picture.recycle(); 
       mCamera.startPreview(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }; 

    Camera.ShutterCallback shutter = new Camera.ShutterCallback() { 
     public void onShutter() { 
     Log.e(getClass().getSimpleName(), "SHUTTER CALLBACK"); 
     } 
     }; 
     Camera.PictureCallback raw = new Camera.PictureCallback() { 
      public void onPictureTaken(byte[] data, Camera c) { 
       Log.e(getClass().getSimpleName(), "PICTURE CALLBACK RAW: " + data); 
       mCamera.startPreview(); 
      } 
      }; 
    mCamera.takePicture(shutter, raw, callback) ; 



} 
+0

同樣的問題已經被問30分鐘前http://stackoverflow.com/ques tions/15662258/how-to-save-a-bitmap-on-internal-storage – 2013-03-27 15:52:22

+0

@ user2205173檢查此http://connectcoders.blogspot.com/ – 2013-03-27 15:55:27

回答

-4

這是外部文件路徑name..You非常Simple..Instead應給予內部文件路徑name..Which是FileOutputStream out = new FileOutputStream(new File(getFilesDir()+File.separator+"MyFile.jpg")); ..Ple嘗試it..Its工作良好

還有一件事,你要添加的權限的內部存儲到的Android Manifest.xml文件

<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/> 
+2

該權限不存在,並且OutputStream不是文件名。 – clemp6r 2014-03-06 16:34:34

+0

我也知道outputstream。這是基本的東西。從那個'out'變量,你可以寫數據。你知道關於在OutPutStream中寫入數據嗎? – 2014-03-07 06:20:49