Android Custom Camera -


i looking create custom camera in android. have gotten alot of here problem image preview orientation seems distorted. when phone in portrait mode, image been drawn in landscape ? not normal , feel here code library. please me

package com.whatsthegoss.simplecamera;  import java.io.file; import java.io.filenotfoundexception; import java.io.fileoutputstream; import java.io.ioexception; import java.util.list;  import android.app.activity; import android.content.intent; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.graphics.pixelformat; import android.hardware.camera; import android.hardware.camera.autofocuscallback; import android.net.uri; import android.os.bundle; import android.os.environment; import android.view.menu; import android.view.surfaceholder; import android.view.surfaceview; import android.view.view; import android.view.view.onclicklistener; import android.view.window; import android.view.windowmanager; import android.widget.button;  public class mainactivity extends activity implements surfaceholder.callback, onclicklistener{      private static final string external_storage_dir = environment.getexternalstoragedirectory().tostring() + "/simplecamera";     private camera mcamera;     private boolean mpreviewrunning;     private surfaceview msurfaceview;     private surfaceholder msurfaceholder;      private button mbuttoncapture;     private camera.picturecallback mpicturecallback = new camera.picturecallback() {          public void onpicturetaken(byte[] imagedata, camera c) {              final bitmap bm = bitmapfactory.decodebytearray(imagedata, 0, imagedata.length);             final bitmap a=bitmap.createbitmap(bm, 10,10,30, 60);             final file file = new file(external_storage_dir, "ic_" + system.currenttimemillis() + ".jpg");              try {                 final fileoutputstream outstream = new fileoutputstream(file);                  a.compress(bitmap.compressformat.jpeg, 100, outstream);                  if (outstream != null) {                     outstream.flush();                     outstream.close();                 }                  // update media gallery                 updatemediagallery();               } catch (filenotfoundexception e) {                 e.printstacktrace();             } catch (ioexception e) {                 e.printstacktrace();             }                         // restart camera preview             mcamera.startpreview();         }      };      @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_main);          msurfaceview = (surfaceview) findviewbyid(r.id.surface_camera);         msurfaceholder = msurfaceview.getholder();         msurfaceholder.addcallback(this);         msurfaceholder.settype(surfaceholder.surface_type_push_buffers);          mbuttoncapture = (button) findviewbyid(r.id.button_capture);         mbuttoncapture.setonclicklistener(this);          // create necessary directories         file storagepath = new file(external_storage_dir);         storagepath.mkdirs();      }      @override     public boolean oncreateoptionsmenu(menu menu) {         getmenuinflater().inflate(r.menu.activity_main, menu);         return true;     }      @override     public void surfacechanged(surfaceholder holder, int format, int width,             int height) {           if (mpreviewrunning) {             mcamera.stoppreview();         }          final camera.parameters params = mcamera.getparameters();          final list<camera.size> sizes = params.getsupportedpreviewsizes();         final camera.size size = sizes.get(sizes.size()-2);          final list<camera.size> picturesizes = params.getsupportedpicturesizes();         final camera.size picturesize = picturesizes.get(picturesizes.size()-2);          params.setpreviewsize(size.width, size.height);         params.setpicturesize(picturesize.width, picturesize.height);          mcamera.setparameters(params);          try {             mcamera.setpreviewdisplay(holder);         } catch (ioexception e) {             e.printstacktrace();         }          mcamera.startpreview();          mpreviewrunning = true;     }      @override     public void surfacecreated(surfaceholder holder) {         mcamera = camera.open();     }      @override     public void surfacedestroyed(surfaceholder holder) {          mcamera.stoppreview();          mpreviewrunning = false;          mcamera.release();      }      @override     public void onclick(view v) {         switch (v.getid())         {         case r.id.button_capture:             mcamera.autofocus(new autofocuscallback() {                  @override                 public void onautofocus(boolean success, camera camera) {                     mcamera.takepicture(null, null, mpicturecallback);                                   }             });              break;         }      }      /**      * method used notify media gallery there new image      *       */     private void updatemediagallery() {          sendbroadcast(new intent(intent.action_media_mounted, uri.parse("file://"+ external_storage_dir)));      }   } 

adapted code developer.android.com:

private void setcameradisplayorientation() {     camerainfo info = new camerainfo();     camera.getcamerainfo(0, info);     int rotation = getwindowmanager().getdefaultdisplay().getrotation();     int degrees = 0;     switch (rotation) {         case surface.rotation_0: degrees = 0; break;         case surface.rotation_90: degrees = 90; break;         case surface.rotation_180: degrees = 180; break;         case surface.rotation_270: degrees = 270; break;     }      int result;     if (info.facing == camera.camerainfo.camera_facing_front) {         result = (info.orientation + degrees) % 360;         result = (360 - result) % 360;  // compensate mirror     } else {  // back-facing         result = (info.orientation - degrees + 360) % 360;     }     mcamera.setdisplayorientation(result); } 

Comments

Popular posts from this blog

ios - UICollectionView Self Sizing Cells with Auto Layout -

node.js - ldapjs - write after end error -

DOM Manipulation in Wordpress (and elsewhere) using php -