Thank you, Yes indeed it was a pb of permission. Now I saw some light. However still I have a pb that concerns the saving (The picture can not be saved).
In the procedure done () { ....}, the variable url = null and I dont know why Images.Media.insertImage(getContentResolver(), bm, null, null); is returning a null value, although I pressed on the button and the camera seems, it worked normally (it made the normal sound of taking a picture). thank you very much guys On Wednesday, August 29, 2012 8:48:18 AM UTC+1, cpares wrote: > > Hello! > > Have you requested for permission to use the camera in the manifest? > Something like this: > <uses-permission android:name="android.permission.CAMERA" /> > (and maybe <uses-permission android:name="android.permission.AUTOFOCUS" /> > too?) > > Good luck! > > On Wednesday, August 29, 2012 3:53:52 AM UTC+2, aek wrote: >> >> >> 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