Autore Topic: Problema Salvataggio Immagine  (Letto 969 volte)

Offline matis80

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s2
  • Sistema operativo:
    Windows 7
Problema Salvataggio Immagine
« il: 13 Maggio 2012, 14:08:51 CEST »
0
ciao a tutti, sto realizzando un app che deve salvare una foto appena scattata sul telefono. per fare questo ho seguito questo tutorialhttp://www.anddev.it/index.php/topic,203.0.html . però non mi salva l'immagine da nessuna parte e mi restituisce questi errori:
Codice: [Seleziona]
05-13 12:26:31.188: E/AndroidRuntime(31714): FATAL EXCEPTION: main
05-13 12:26:31.188: E/AndroidRuntime(31714): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=0, data=null} to activity {serie.bolg/serie.bolg.CameraView}: java.lang.NullPointerException
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.app.ActivityThread.deliverResults(ActivityThread.java:2992)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.app.ActivityThread.handleSendResult(ActivityThread.java:3035)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.app.ActivityThread.access$1100(ActivityThread.java:127)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1189)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.os.Handler.dispatchMessage(Handler.java:99)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.os.Looper.loop(Looper.java:137)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.app.ActivityThread.main(ActivityThread.java:4507)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at java.lang.reflect.Method.invokeNative(Native Method)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at java.lang.reflect.Method.invoke(Method.java:511)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:557)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at dalvik.system.NativeStart.main(Native Method)
05-13 12:26:31.188: E/AndroidRuntime(31714): Caused by: java.lang.NullPointerException
05-13 12:26:31.188: E/AndroidRuntime(31714):         at serie.bolg.CameraView.onActivityResult(CameraView.java:52)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.app.Activity.dispatchActivityResult(Activity.java:4649)
05-13 12:26:31.188: E/AndroidRuntime(31714):         at android.app.ActivityThread.deliverResults(ActivityThread.java:2988)
05-13 12:26:31.188: E/AndroidRuntime(31714):         ... 11 more
ecco il mio codice completo:
Codice (Java): [Seleziona]
import java.io.BufferedOutputStream;
import java.io.File;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.ArrayList;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.BitmapFactory;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.Size;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;

public class CameraView extends Activity implements SurfaceHolder.Callback {
       
        /* VARIABILI PRIVATE */
        private SurfaceView mSurfaceView;
        private SurfaceHolder mSurfaceHolder;
        private Camera mCamera;
        private boolean mPreviewRunning;
        private int IMAGE_CAPTURE;
         private Bitmap b;
               
               
             /** Called when the activity is first created. */
             @Override
             public void onCreate(Bundle savedInstanceState) {
                 super.onCreate(savedInstanceState);
                 getWindow().setFormat(PixelFormat.TRANSLUCENT);        //aggiungo il traslucido
                 requestWindowFeature(Window.FEATURE_NO_TITLE); //no barra titolo
                 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);  //full screen
                 setContentView(R.layout.camera);
                 ImageButton buttonPicture = (ImageButton) findViewById(R.id.scatta);
                        buttonPicture.setOnClickListener(new OnClickListener(){
                                public void onClick(View v) {
                                        mCamera.takePicture(null, null, jpegCallback);
                                }
                        });
                       
                        mSurfaceView = (SurfaceView)findViewById(R.id.camera_surface);
                 mSurfaceHolder = mSurfaceView.getHolder();     //recupero l'holder della surfaceview
                 mSurfaceHolder.addCallback(this);      //faccio la bind alla nostra activity
                 mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);       //tipo di surface, suggerito nei tutorial ufficiali
             }
             
             
             
             PictureCallback jpegCallback = new PictureCallback() {
                        public void onPictureTaken(byte[] _data, Camera _camera) {
                               
                                 String nameFile = "mio_file.jpg";
                 String imgext=new String("/external_sd/");
                 File rootext=(Environment.getExternalStorageDirectory());
                 File img1=new File(rootext,imgext);
                 File img=new File(img1,nameFile);
                 try {

                 img1.mkdirs(); // creo directory per salvare il file
                         
                     Bitmap myImage = BitmapFactory.decodeByteArray(_data,0,_data.length);
                     FileOutputStream fileOutputStream = new FileOutputStream(img);                                
                     BufferedOutputStream bos = new BufferedOutputStream(fileOutputStream);
                     myImage.compress(CompressFormat.JPEG, 100, bos);
                     bos.flush();
                     bos.close();
                 
                                 
                 } catch (FileNotFoundException e) {
                         Log.e("demo", e.toString());

                 } catch (IOException e) {                  
                                     e.printStackTrace();
                             }
                                //riparte la preview della camera
                                mCamera.startPreview();
                               
                        }
                };

                public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
                        if (mPreviewRunning)
                                mCamera.stopPreview();
                       
                        //setto le preferenze
                        Camera.Parameters p = mCamera.getParameters();  //prendo le preferenze della camera
                        p.setPreviewSize(arg2, arg3);
                        ArrayList<Size> list = (ArrayList<Size>) p.getSupportedPictureSizes();  //recuepro le risoluzioni supportate dalla camera
                 int picture_width = list.get(list.size()-1).width;
                 int picture_height = list.get(list.size()-1).height;
                 p.setPictureSize(picture_width, picture_height);       //setto la camera alla risoluzione pi� bassa
                 p.setJpegQuality(80);  // qualitˆ compressione JPEG
                 
                 // salvo le pref
                 mCamera.setParameters(p);
                 try {
                        //lancio la preview
                                mCamera.setPreviewDisplay(arg0);       
                                mCamera.startPreview();
                                mPreviewRunning = true;
                        } catch (IOException e) {
                                //gestione errore
                        }
               
                       
                }

               
                public void surfaceCreated(SurfaceHolder holder) {
                        mCamera = Camera.open();
                       
                }

               
                public void surfaceDestroyed(SurfaceHolder holder) {
                 mCamera.stopPreview();
                 mPreviewRunning = false;
                 mCamera.release();
                       
                }
         }
qualcuno sa come fare?
grazie in anticipo  :-)

Offline matis80

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s2
  • Sistema operativo:
    Windows 7
Re:Problema Salvataggio Immagine
« Risposta #1 il: 19 Maggio 2012, 12:33:02 CEST »
0
Ragazzi, qualcuno mi aiuta?

Non ne riesco a venire a capo! :-o

Offline pivoide

  • Utente junior
  • **
  • Post: 133
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab 10.1
  • Play Store ID:
    codicerosso
  • Sistema operativo:
    Ubuntu 11.04
Re:Problema Salvataggio Immagine
« Risposta #2 il: 20 Maggio 2012, 17:45:26 CEST »
0
Nulla so di uso della camera però nel tuo logcat l'errore è un null pointer e io non vedo nel tuo codice un punto in cui la variabile mCamera venga allocata.
Odio l'inglese e per un informatico non è il massimo