how to get byte array from camera preview in java android? -


i'm complete noob . i've managed write , understand code after reading http://developer.android.com/guide/topics/media/camera.html . want byte array preview , convert bitmap . want in real time without forced save picture file in storage . please , help! here program code.

public class camerapreview extends surfaceview implements surfaceholder.callback { private surfaceholder mholder; private camera mcamera; public camerapreview(context context, camera camera) {     super(context);     mcamera = camera;      // install surfaceholder.callback notified when     // underlying surface created , destroyed.     mholder = getholder();     mholder.addcallback(this);     // deprecated setting, required on android versions prior 3.0     mholder.settype(surfaceholder.surface_type_push_buffers); }  public void surfacecreated(surfaceholder holder) {     // surface has been created, tell camera draw preview.     try {         mcamera.setpreviewdisplay(holder);          mcamera.startpreview();     } catch (ioexception e) {         string tag = null;         log.d(tag, "error setting camera preview: " + e.getmessage());     } }  public void surfacedestroyed(surfaceholder holder) {     // empty. take care of releasing camera preview in activity. }  public void surfacechanged(surfaceholder holder, int format, int w, int h) {     // if preview can change or rotate, take care of events here.     // make sure stop preview before resizing or reformatting it.       mcamera.setdisplayorientation(90);     // set preview size , make resize, rotate or     // reformatting changes here      // start preview new settings     try {          mcamera.setpreviewdisplay(mholder);         mcamera.startpreview();      } catch (exception e){         string tag = null;         log.d(tag, "error starting camera preview: " + e.getmessage());     } } private picturecallback mpicture = new picturecallback(){      @override     public void onpicturetaken(byte[] data, camera camera)      {         // todo: implement method      } }; 

}

and main activity :

public class mainactivity extends activity {   private camera mcamera; private camerapreview mpreview;  int i; /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.main);       mcamera = getcamerainstance();     mpreview = new camerapreview(this, mcamera);      framelayout preview = (framelayout) findviewbyid(r.id.frame);     preview.addview(mpreview);    }  public static camera getcamerainstance() {     camera c = null;     try     {         c = camera.open();}     catch (exception e)     { system.out.println("blamjjjh");}     return c; } public void releasec(){     mcamera.release(); }  @override protected void onstop() {      super.onstop();     releasec(); } } 

as detailed in android developer docs here (which might have read), add implementation of picturecallback interface (see example below) activity. can use bitmapfactory convert byte array gets passed bitmap. can use required.

note: read docs here on handling bitmaps efficiently in relation memory might outofmemory errors if manipulating bitmaps.

private picturecallback mpicture = new picturecallback() {      @override     public void onpicturetaken(byte[] data, camera camera) {         //create bitmap byte array        bitmap bitmap = bitmapfactory.decodebytearray(data , 0, data.length);         //use bitmap     } }; 

you pass need pass takepicture() method against camera instance e.g.

// add listener capture button button capturebutton = (button) findviewbyid(id.button_capture); capturebutton.setonclicklistener(     new view.onclicklistener() {         @override         public void onclick(view v) {             // image camera             mcamera.takepicture(null, null, mpicture);         }     } ); 

hope helps! :-)


Comments

Popular posts from this blog

python - Specify path of savefig with pylab or matplotlib -

How to run C# code using mono without Xamarin in Android? -

c# - SharpSsh Command Execution -