Hi guys, Thank you for your reply,
I tried this, unfortunately It doesnt solve the prob. The prob. I guess is in the function String url = Images.Media.insertImage(getContentResolver(), bm, null, null); which returns a null value for "url" ?! why I dont know ? I checked the values of the variables byte array "data" and bitmap " bm". It looks like they are not null and they are pointing to memory @'s. any idea ? thank you, aek On Wednesday, August 29, 2012 10:31:17 PM UTC+1, bob wrote: > > Maybe this will help? > > <uses-permission android:name="android.permission.* > WRITE_EXTERNAL_STORAGE*"/> > > > > On Wednesday, August 29, 2012 3:03:15 PM UTC-5, aek wrote: >> >> >> 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