Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-10-2012, 15:26   #1
seriud89
Junior Member
 
Iscritto dal: Jun 2012
Messaggi: 16
[ANDROID] Applicazione che utilizza fotocamera

Ciao a tutti.
Sto sviluppando una app che permetta l'utilizzo della fotocamera. Tuttavia, essendo sprovvisto di smartphone, non posso provare l'app su un cellulare e quindi sono costretto ad usare l'emulatore, ma, come penso sappiate, l'emulatore è una gran rogna, dato che fotocamera, gps e quantaltro vanno a farsi benedire.
Ora ho prodotto del codice, ma quando viene avviata l'activity della fotocamera, essa termina dandomi una NullPointerException.
Questo è il codice:
Codice:
import java.io.IOException;
import java.util.ArrayList;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.Size;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;

public class FotocameraActivity extends Activity implements SurfaceHolder.Callback {
	private SurfaceView mSurfaceView;
	private SurfaceHolder mSurfaceHolder;
	private Camera mCamera;
	private boolean mPreviewRunning;
	
	public void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
	
		getWindow().setFormat(PixelFormat.TRANSLUCENT);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN );
		ImageButton buttonPicture = (ImageButton)findViewById(R.id.buttonScatta);
		buttonPicture.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				mCamera.takePicture(null, null, jpegCallback);
			}
			
		});
		
		mSurfaceView = (SurfaceView)findViewById(R.id.surfaceViewCamera);
		mSurfaceHolder = mSurfaceView.getHolder();
		mSurfaceHolder.addCallback(this);
		mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
		
	}
	
	PictureCallback jpegCallback = new PictureCallback() {
		public void onPictureTaken(byte [] _data, Camera _camera){
			mCamera.startPreview();
		}
	};

	@Override
	public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
		
		if(mPreviewRunning)
			mCamera.stopPreview();
		
		Camera.Parameters par = mCamera.getParameters();
		par.setPreviewSize(width, height);
		ArrayList<Size> list = (ArrayList<Size>)par.getSupportedPictureSizes();
		int picture_width = list.get(list.size() - 1).width;
		int picture_height = list.get(list.size() - 1).height;
		par.setPictureSize(picture_width, picture_height);
		par.setJpegQuality(80);
		mCamera.setParameters(par);
		
		try {
			mCamera.setPreviewDisplay(holder);
			mCamera.startPreview();
			mPreviewRunning = true;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}

	@Override
	public void surfaceCreated(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		mCamera = Camera.open();
	}

	@Override
	public void surfaceDestroyed(SurfaceHolder holder) {
		// TODO Auto-generated method stub
		mCamera.stopPreview();
		mPreviewRunning = false;
		mCamera.release();
	}

}
e questo è il logcat prodotto:
Codice:
10-29 15:23:18.413: E/AndroidRuntime(287): FATAL EXCEPTION: main
10-29 15:23:18.413: E/AndroidRuntime(287): java.lang.RuntimeException: Unable to start activity ComponentInfo{your.Mobile/your.Mobile.FotocameraActivity}: java.lang.NullPointerException
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.os.Handler.dispatchMessage(Handler.java:99)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.os.Looper.loop(Looper.java:123)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.app.ActivityThread.main(ActivityThread.java:4627)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at java.lang.reflect.Method.invokeNative(Native Method)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at java.lang.reflect.Method.invoke(Method.java:521)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at dalvik.system.NativeStart.main(Native Method)
10-29 15:23:18.413: E/AndroidRuntime(287): Caused by: java.lang.NullPointerException
10-29 15:23:18.413: E/AndroidRuntime(287): 	at your.Mobile.FotocameraActivity.onCreate(FotocameraActivity.java:33)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-29 15:23:18.413: E/AndroidRuntime(287): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
10-29 15:23:18.413: E/AndroidRuntime(287): 	... 11 more
Ora io vorrei capire se l'errore prodotto è dato dal fatto che l'emulatore non possa usare la fotocamera e perciò crasha o è un errore mio, quindi mi devo spulciare il codice e capire cosa ho fatto di sbagliato.
Vi ringrazio tanto per l'aiuto.

Ciao!
seriud89 è offline   Rispondi citando il messaggio o parte di esso
Old 05-11-2012, 16:34   #2
seriud89
Junior Member
 
Iscritto dal: Jun 2012
Messaggi: 16
possibile che nessuno può aiutarmi?
seriud89 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 05:19.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v