When I step through the code I get an error in Looper.loop() line:124 after the onCreate function.
On Aug 18, 12:26 am, Mark Murphy <mmur...@commonsware.com> wrote: > Use adb logcat, DDMS, or the DDMS perspective in Eclipse to examine > the Java stack trace associated with your error. > > > > > > On Wed, Aug 18, 2010 at 12:11 AM, Chris Maurer <cgmau...@gmail.com> wrote: > > I have a HTC Incredible and I'm trying to write a simple application > > to take a picture and save it on the SD card. When I run the tutorial > > athttp://github.com/commonsguy/cw-advandroid/tree/master/Camera/Picture > > it works fine in the emulator. However, when I try and test it on my > > phone I get "The application Picture Demo (process > > com.commonsware.android.camera) has stopped unexpectedly. Please try > > again." > > > I have set the following permissions in the AndroidManifest file. > > > <uses-feature android:name="android.hardware.camera" /> > > <uses-permission android:name="android.permission.CAMERA" /> > > <uses-permission > > android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> > > > Below is the code I am using. > > > import android.app.Activity; > > import android.graphics.PixelFormat; > > import android.hardware.Camera; > > import android.os.AsyncTask; > > import android.os.Bundle; > > import android.os.Environment; > > import android.util.Log; > > import android.view.KeyEvent; > > import android.view.SurfaceHolder; > > import android.view.SurfaceView; > > import android.widget.Toast; > > import java.io.File; > > import java.io.FileOutputStream; > > > public class PictureDemo extends Activity { > > private SurfaceView preview=null; > > private SurfaceHolder previewHolder=null; > > private Camera camera=null; > > > �...@override > > public void onCreate(Bundle savedInstanceState) { > > super.onCreate(savedInstanceState); > > setContentView(R.layout.main); > > > preview=(SurfaceView)findViewById(R.id.preview); > > previewHolder=preview.getHolder(); > > previewHolder.addCallback(surfaceCallback); > > > > previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); > > } > > > �...@override > > public boolean onKeyDown(int keyCode, KeyEvent event) { > > if (keyCode==KeyEvent.KEYCODE_CAMERA || > > keyCode==KeyEvent.KEYCODE_SEARCH) { > > takePicture(); > > > return(true); > > } > > > return(super.onKeyDown(keyCode, event)); > > } > > > private void takePicture() { > > camera.takePicture(null, null, photoCallback); > > } > > > SurfaceHolder.Callback surfaceCallback=new SurfaceHolder.Callback() { > > public void surfaceCreated(SurfaceHolder holder) { > > camera=Camera.open(); > > > try { > > camera.setPreviewDisplay(previewHolder); > > } > > catch (Throwable t) { > > Log.e("PictureDemo-surfaceCallback", > > "Exception in > > setPreviewDisplay()", t); > > Toast > > .makeText(PictureDemo.this, > > t.getMessage(), Toast.LENGTH_LONG) > > .show(); > > } > > } > > > public void surfaceChanged(SurfaceHolder holder, > > > > int format, int width, > > > > int height) { > > Camera.Parameters parameters=camera.getParameters(); > > > parameters.setPreviewSize(width, height); > > parameters.setPictureFormat(PixelFormat.JPEG); > > > camera.setParameters(parameters); > > camera.startPreview(); > > } > > > public void surfaceDestroyed(SurfaceHolder holder) { > > camera.stopPreview(); > > camera.release(); > > camera=null; > > } > > }; > > > Camera.PictureCallback photoCallback=new Camera.PictureCallback() { > > public void onPictureTaken(byte[] data, Camera camera) { > > new SavePhotoTask().execute(data); > > camera.startPreview(); > > } > > }; > > > class SavePhotoTask extends AsyncTask<byte[], String, String> { > > �...@override > > protected String doInBackground(byte[]... jpeg) { > > File photo=new > > File(Environment.getExternalStorageDirectory(), > > > > "photo.jpg"); > > > if (photo.exists()) { > > photo.delete(); > > } > > > try { > > FileOutputStream fos=new > > FileOutputStream(photo.getPath()); > > > fos.write(jpeg[0]); > > fos.close(); > > } > > catch (java.io.IOException e) { > > Log.e("PictureDemo", "Exception in > > photoCallback", e); > > } > > > return(null); > > } > > } > > } > > > -- > > You received this message because you are subscribed to the Google > > Groups "Android Developers" group. > > To post to this group, send email to android-developers@googlegroups.com > > To unsubscribe from this group, send email to > > android-developers+unsubscr...@googlegroups.com > > For more options, visit this group at > >http://groups.google.com/group/android-developers?hl=en > > -- > Mark Murphy (a Commons > Guy)http://commonsware.com|http://github.com/commonsguyhttp://commonsware.com/blog|http://twitter.com/commonsguy > > _The Busy Coder's Guide to Android Development_ Version 3.1 Available! -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en