Hi everyone, this is the code that I have for camera preview and image capture.I am trying to do camera preview and as I press the space button I am trying to take picture and save it in the picture gallery of the Android development phone. The code compiles fine,but as I press the space button,it captures the image and throws an exception and closes the application... I have no idea how to fix this.I have looked in a lot of places but haven't found a way to solve my problem. I desperately need help... Thanks! Sharmila.
/** * Copyright (c) 2007, Google Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.cameraapitest; import java.io.FileNotFoundException; import java.io.OutputStream; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PixelFormat; import android.graphics.Rect; import android.net.Uri; import android.os.Handler; import android.os.Message; import android.os.Bundle; import android.provider.MediaStore.Images; import android.provider.MediaStore.Video; import android.view.Menu; import android.view.MenuItem; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.KeyEvent; import android.hardware.Camera; import android.text.Layout; import android.util.Log; public class CameraApiTest extends Activity implements SurfaceHolder.Callback { private static final String TAG = "CameraApiTest"; Camera mCamera; boolean mPreviewRunning = false; public void onCreate(Bundle icicle) { super.onCreate(icicle); Log.e(TAG, "onCreate"); getWindow().setFormat(PixelFormat.TRANSLUCENT); setContentView(R.layout.camera_api_test); mSurfaceView = (SurfaceView)findViewById(R.id.surface); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.addCallback(this); mSurfaceHolder.setType (SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); } public boolean onCreateOptionsMenu(android.view.Menu menu) { MenuItem item = menu.add(0, 0, 0, "goto gallery"); item.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { Uri target = Uri.parse("content://media/external/ images/media"); Intent intent = new Intent(Intent.ACTION_VIEW, target); startActivity(intent); return true; } }); return true; } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); } Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { public void onPictureTaken(byte[] data, Camera c) { Log.e(TAG, "PICTURE CALLBACK: data.length = " + data.length); try { Bitmap bm = Bitmap.createBitmap (mSurfaceHolder.getSurfaceFrame().width(), mSurfaceHolder.getSurfaceFrame().height (),Bitmap.Config.RGB_565); OutputStream f=openFileOutput ("image.jpg",MODE_WORLD_READABLE); Canvas cnv=mSurfaceHolder.lockCanvas(); cnv.setBitmap(bm); bm.compress(Bitmap.CompressFormat.JPEG,100,f); mSurfaceHolder.unlockCanvasAndPost(cnv); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } mCamera.startPreview(); } }; public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { return super.onKeyDown(keyCode, event); } if (keyCode == KeyEvent.KEYCODE_SPACE) { mCamera.takePicture(null,null,mPictureCallback); return true; } return false; } protected void onResume() { Log.e(TAG, "onResume"); super.onResume(); } protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); } protected void onStop() { Log.e(TAG, "onStop"); super.onStop(); } public void surfaceCreated(SurfaceHolder holder) { Log.e(TAG, "surfaceCreated"); mCamera = Camera.open(); //mCamera.startPreview(); } public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { Log.e(TAG, "surfaceChanged"); // XXX stopPreview() will crash if preview is not running if (mPreviewRunning) { mCamera.stopPreview(); } Camera.Parameters p = mCamera.getParameters(); p.setPreviewSize(w, h); mCamera.setParameters(p); mCamera.setPreviewDisplay(holder); mCamera.startPreview(); mPreviewRunning = true; } public void surfaceDestroyed(SurfaceHolder holder) { Log.e(TAG, "surfaceDestroyed"); mCamera.stopPreview(); mPreviewRunning = false; mCamera.release(); } private SurfaceView mSurfaceView; private SurfaceHolder mSurfaceHolder; } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---

