Hi guys, I am trying to learn android hardware programming. an example of camera programming, I took from a book, which is as listed bellow. However unfortunately I am geting an error. "a process stops unexpectdly". the pb I guess as per to what is shown by the log cat, is due to a pb of connecting to the camera service. guys I need your help,
thank you! --------------------------------- program package com.example.chapter7_hardware; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.PixelFormat; import android.hardware.Camera; import android.hardware.Camera.PictureCallback; import android.hardware.Camera.ShutterCallback; import android.os.Bundle; import android.provider.MediaStore.Images; import android.app.Activity; import android.content.Intent; import android.util.Log; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuItem; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.view.Window; import android.view.WindowManager; import android.widget.Button; import android.widget.Toast; import android.support.v4.app.NavUtils; public class CameraApplication extends Activity implements SurfaceHolder.Callback{ private static final String TAG = "cookbook.hardware"; private LayoutInflater mInflater = null; Camera mCamera; byte[] tempdata; boolean mPreviewRunning = false; private SurfaceHolder mSurfaceHolder; private SurfaceView mSurfaceView; Button takepicture; @Override 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); setContentView(R.layout.activity_camera_application); mSurfaceView = (SurfaceView) findViewById(R.id.surface); mSurfaceHolder = mSurfaceView.getHolder(); mSurfaceHolder.addCallback(this); mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); mInflater = LayoutInflater.from(this); View overView = mInflater.inflate(R.layout.cameraoverlay, null); this.addContentView(overView, new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); takepicture = (Button) findViewById(R.id.button1); takepicture.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub mCamera.takePicture(mShutterCallback, mPictureCallback, mjpeg); } }); } ShutterCallback mShutterCallback = new ShutterCallback(){ @Override public void onShutter(){} }; PictureCallback mPictureCallback = new PictureCallback(){ @Override public void onPictureTaken(byte[] data, Camera c){} }; PictureCallback mjpeg = new PictureCallback(){ public void onPictureTaken(byte[] data, Camera c){ if (data != null){ tempdata = data; done(); } } }; void done() { Bitmap bm = BitmapFactory.decodeByteArray(tempdata, 0, tempdata.length); String url = Images.Media.insertImage(getContentResolver(), bm, null, null); bm.recycle(); Bundle bundle = new Bundle(); if (url != null){ bundle.putString("url", url); Intent mIntent = new Intent(); mIntent.putExtras(bundle); setResult(RESULT_OK, mIntent); } else { Toast.makeText(this, "Picture can not be saved", Toast.LENGTH_LONG).show(); } finish(); } @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_camera_application, menu); return true; } @Override public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) { // TODO Auto-generated method stub Log.e(TAG, "surfaceChanged"); try{ if (mPreviewRunning){ mCamera.stopPreview(); mPreviewRunning = false; } Camera.Parameters p = mCamera.getParameters(); p.setPreviewSize(w, h); mCamera.setParameters(p); mCamera.setPreviewDisplay(holder); mCamera.startPreview(); mPreviewRunning = true; } catch (Exception e) { Log.d("", e.toString()); } } @Override public void surfaceCreated(SurfaceHolder arg0) { // TODO Auto-generated method stub Log.e(TAG, "surfaceCreated"); mCamera = Camera.open(); } @Override public void surfaceDestroyed(SurfaceHolder arg0) { // TODO Auto-generated method stub Log.e(TAG, "surfaceDestroyed"); mCamera.stopPreview(); mPreviewRunning = false; mCamera.release(); mCamera = null; } } -------------------------------- log cat 08-29 01:48:43.313: E/prog.hardware(395): surfaceCreated 08-29 01:48:43.345: D/AndroidRuntime(395): Shutting down VM 08-29 01:48:43.345: W/dalvikvm(395): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 08-29 01:48:43.383: E/AndroidRuntime(395): FATAL EXCEPTION: main 08-29 01:48:43.383: E/AndroidRuntime(395): java.lang.RuntimeException: Fail to connect to camera service 08-29 01:48:43.383: E/AndroidRuntime(395): at android.hardware.Camera.native_setup(Native Method) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.hardware.Camera.<init>(Camera.java:110) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.hardware.Camera.open(Camera.java:90) 08-29 01:48:43.383: E/AndroidRuntime(395): at com.example.chapter7_hardware.CameraApplication.surfaceCreated(CameraApplication.java:167) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.SurfaceView.updateWindow(SurfaceView.java:532) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.SurfaceView.dispatchDraw(SurfaceView.java:339) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewGroup.drawChild(ViewGroup.java:1638) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewGroup.drawChild(ViewGroup.java:1638) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.View.draw(View.java:6743) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.widget.FrameLayout.draw(FrameLayout.java:352) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewGroup.drawChild(ViewGroup.java:1640) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1367) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.View.draw(View.java:6743) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.widget.FrameLayout.draw(FrameLayout.java:352) 08-29 01:48:43.383: E/AndroidRuntime(395): at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1842) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewRoot.draw(ViewRoot.java:1407) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewRoot.performTraversals(ViewRoot.java:1163) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.os.Handler.dispatchMessage(Handler.java:99) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.os.Looper.loop(Looper.java:123) 08-29 01:48:43.383: E/AndroidRuntime(395): at android.app.ActivityThread.main(ActivityThread.java:4627) 08-29 01:48:43.383: E/AndroidRuntime(395): at java.lang.reflect.Method.invokeNative(Native Method) 08-29 01:48:43.383: E/AndroidRuntime(395): at java.lang.reflect.Method.invoke(Method.java:521) 08-29 01:48:43.383: E/AndroidRuntime(395): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 08-29 01:48:43.383: E/AndroidRuntime(395): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 08-29 01:48:43.383: E/AndroidRuntime(395): at dalvik.system.NativeStart.main(Native Method) -- 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