multithreading - Android code not executed -



multithreading - Android code not executed -

i making android photographic camera app can show preview , taking photo. there 2 buttons implemented in activity: start preview , stop preview. when users click on stop preview button, app capture photo. however, when testing app, code associated stop preview seems skipped , not executed. below code:

suppresswarnings("deprecation") public class cameraopened extends activity implements surfaceholder.callback{ photographic camera camera; surfaceview surfaceview; surfaceholder surfaceholder; boolean previewing = false; static final int request_image_capture = 1; int count; picturecallback rawcallback; shuttercallback shuttercallback; picturecallback jpegcallback; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_camera_opened); button buttonstartcamerapreview = (button)findviewbyid(r.id.startcamerapreview); button buttonstopcamerapreview = (button)findviewbyid(r.id.stopcamerapreview); getwindow().setformat(pixelformat.unknown); surfaceview = (surfaceview)findviewbyid(r.id.surfaceview); surfaceholder = surfaceview.getholder(); surfaceholder.addcallback(this); surfaceholder.settype(surfaceholder.surface_type_push_buffers); shuttercallback = new shuttercallback() { public void onshutter() { log.i("log", "onshutter'd"); } }; rawcallback = new picturecallback() { public void onpicturetaken(byte[] data, photographic camera camera) { log.d("log", "onpicturetaken - raw"); } }; jpegcallback = new picturecallback() { public void onpicturetaken(byte[] data, photographic camera camera) { fileoutputstream outstream = null; seek { string dir; dir = environment.getexternalstoragedirectory().tostring() + "/dcim/"; file newdir = new file(dir); newdir.mkdirs(); file imagefilename = new file(newdir, "crop_"+ ".jpg"); outstream = new fileoutputstream(imagefilename); outstream.write(data); outstream.close(); log.d("log", "onpicturetaken - wrote bytes: " + data.length); } grab (filenotfoundexception e) { e.printstacktrace(); } grab (ioexception e) { e.printstacktrace(); } { } log.d("log", "onpicturetaken - jpeg"); } }; buttonstartcamerapreview.setonclicklistener(new button.onclicklistener(){ public void onclick(view v) { // todo auto-generated method stub if(!previewing){ photographic camera = camera.open(); camera.setdisplayorientation(90); if (camera != null){ seek { camera.setpreviewdisplay(surfaceholder); camera.startpreview(); previewing = true; } grab (ioexception e) { // todo auto-generated grab block e.printstacktrace(); } } } }}); buttonstopcamerapreview.setonclicklistener(new button.onclicklistener(){ @override public void onclick(view v) { // todo auto-generated method stub if(camera != null && previewing){ camera.takepicture(shuttercallback, rawcallback, jpegcallback); previewing = false; camera.stoppreview(); camera.release(); photographic camera = null; } }}); } public void savephoto(bitmap bmp) { string dir; dir = environment.getexternalstoragedirectory().tostring() + "/dcim/"; file newdir = new file(dir); newdir.mkdirs(); fileoutputstream out = null; //file name calendar c = calendar.getinstance(); string date = fromint(c.get(calendar.month)) + fromint(c.get(calendar.day_of_month)) + fromint(c.get(calendar.year)) + fromint(c.get(calendar.hour_of_day)) + fromint(c.get(calendar.minute)) + fromint(c.get(calendar.second)); file imagefilename = new file(newdir, "crop_"+ ".jpg"); seek { out = new fileoutputstream(imagefilename); bmp.compress(bitmap.compressformat.jpeg, 100, out); out.flush(); out.close(); out = null; } grab (exception e) { e.printstacktrace(); } } public string fromint(int val) { homecoming string.valueof(val); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.camera_opened, menu); homecoming true; } @override public boolean onoptionsitemselected(menuitem item) { // handle action bar item clicks here. action bar // automatically handle clicks on home/up button, long // specify parent activity in androidmanifest.xml. int id = item.getitemid(); if (id == r.id.action_settings) { homecoming true; } homecoming super.onoptionsitemselected(item); } @override public void surfacechanged(surfaceholder holder, int format, int width, int height) { // todo auto-generated method stub } @override public void surfacecreated(surfaceholder holder) { // todo auto-generated method stub } @override public void surfacedestroyed(surfaceholder holder) { // todo auto-generated method stub } private void captureimage() { // todo auto-generated method stub //camera.takepicture(shuttercallback, rawcallback, jpegcallback); } }

and below logcat:

10-22 20:28:38.218: d/camera(14375): [cta] photographic camera open urrentpackagename = com.camera 10-22 20:28:38.218: d/camera(14375): [cta] photographic camera open application != null 10-22 20:28:38.218: d/camera(14375): [cta] check cta permisson mallowusing = true 10-22 20:28:39.258: i/choreographer(14375): skipped 61 frames! application may doing much work on main thread. 10-22 20:28:49.318: d/camera(14375): [cta] photographic camera open urrentpackagename = com.camera 10-22 20:28:49.318: d/camera(14375): [cta] photographic camera open application != null 10-22 20:28:49.318: d/camera(14375): [cta] check cta permisson mallowusing = true 10-22 20:28:53.028: i/choreographer(14375): skipped 77 frames! application may doing much work on main thread.

any thought on how solve problem?

use background thread photographic camera operations hopeful helpful ref# asynctask android guide

android multithreading

Comments

Popular posts from this blog

xslt - DocBook 5 to PDF transform failing with error: "fo:flow" is missing child elements. Required content model: marker* -

mediawiki - How do I insert tables inside infoboxes on Wikia pages? -

Local Service User Logged into Windows -