2013-03-27 11 views
7

Ho scattato la foto e l'ho salvata nella memoria esterna. Funziona bene sul mio tablet con una scheda SD. Tuttavia, ho qualche problema con il mio telefono che non supporta la scheda SD. Qualcuno mi aiuta a scrivere i codici per salvare in storage interno. Grazie!Salvare l'immagine acquisita nella memoria interna?

((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

la stessa domanda è stato chiesto 30 minuti fa http://stackoverflow.com/ques/15662258/how-to-save-a-bitmap-on-storage interno –

+0

@ user2205173 Controllare questo http://connectcoders.blogspot.com/ –

risposta

-4

questo è molto Simple..Instead di percorso del file esterno name..You dovrebbe dare il percorso del file interno name..Which è FileOutputStream out = new FileOutputStream(new File(getFilesDir()+File.separator+"MyFile.jpg")); ..Ple provare it..Its lavorare bene

e

più

una cosa, si dovrebbe aggiungere l'autorizzazione per l'archiviazione interna in Android Manifest.xml il file

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

Tale autorizzazione non esiste e un OutputStream non è un nome file . – clemp6r

+0

Sono anche noto su outputstream. Questa è una cosa fondamentale yaar. Da quella variabile 'out' puoi scrivere i dati. Hai saputo di scrivere i dati in OutPutStream ??? –

Problemi correlati