java - My flashlight app is slow and crashes allot i don't know what I'm doing wrong -
so designed app basic flashlight works fine it's slow ineffective , crashes second tap on , off button fast. can improve it?
here have far :
package com.example.myfirstapp; import android.os.bundle; import android.app.activity; import android.view.menu; import android.view.view; import android.widget.togglebutton; import android.graphics.surfacetexture; import android.hardware.camera.parameters; import android.hardware.camera; public class mainactivity extends activity { public camera cam = camera.open(); public parameters p = cam.getparameters(); public void ontoggleclicked(view view) { // toggle on togglebutton button1 = (togglebutton) findviewbyid(r.id.togglebutton); if (button1.ischecked()) { p = cam.getparameters(); p.setflashmode(parameters.flash_mode_off); cam.setparameters(p); cam.stoppreview(); } else { p = cam.getparameters(); p.setflashmode(parameters.flash_mode_torch); cam.setparameters(p); cam.startpreview(); } } public camera camera; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); try { cam.setpreviewtexture(new surfacetexture(0)); } catch (exception e) { log.e("app log tag", "error", e); e.printstacktrace(); } } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.main, menu); return true; } }
log cat errors :
03-24 20:19:01.023: e/camera3-device(184): requestthread: can't output buffer, skipping request: broken pipe (-32) 03-24 20:19:01.023: e/camera3-outputstream(184): getbufferlocked: stream 0: can't dequeue next output buffer: broken pipe (-32) 03-24 20:19:01.023: e/camera3-device(184): requestthread: can't output buffer, skipping request: broken pipe (-32) 03-24 20:19:01.023: e/camera2client(184): syncwithdevice: camera 0: timed out waiting sync hal 03-24 20:19:01.073: w/camera3-outputstream(184): disconnectlocked: while disconnecting stream 0 native window, native window died under 03-24 20:19:01.153: e/mm-camera-intf(184): mm_camera_poll_thread_del_poll_fd: invalid handler 175104 (0) 03-24 20:19:01.153: e/mm-camera(196): mct_pipeline_process_set:command=8000009 03-24 20:19:01.153: e/mm-camera(196): mct_pipeline_process_set: stream_type = 1, streamid 2 03-24 20:19:01.153: e/mm-camera-sensor(196): module_sensor_module_process_event:1987 ide 10002 mct_event_control_streamoff 03-24 20:19:01.153: e/mm-camera(196): port_isp_mct_ctrl_cmd: e, identity = 0x10002, streamoff 03-24 20:19:01.153: e/mm-camera(196): cpp_module_handle_streamoff_event:2058, info: doing stream-off identity 0x10002 03-24 20:19:01.153: e/mm-camera(196): module_faceproc_port_event_func:686] fd_streamoff 0 10002 03-24 20:19:01.153: e/mm-camera-img(196): faceproc_comp_abort:608] state 2 03-24 20:19:01.153: e/mm-camera-img(196): free wmemory 0 03-24 20:19:01.153: e/mm-camera-img(196): faceproc_comp_abort:635] x 03-24 20:19:01.153: e/mm-camera(196): cpp_module_handle_streamoff_event:2112, info: stream-off done identity 0x10002 03-24 20:19:01.153: e/mm-camera(196): isp_streamoff: e, session_id = 1, stream_id = 2, stream_type = 1 03-24 20:19:01.153: e/mm-camera(196): isp_axi_util_subscribe_v4l2_event: event_type = 0x8000100, is_subscribe = 0 03-24 20:19:01.153: e/mm-camera(196): isp_axi_util_subscribe_v4l2_event: event_type = 0x8000009, is_subscribe = 0 03-24 20:19:01.233: e/mm-camera(196): ispif_streamoff: session_id = 1, active_streams = 1 03-24 20:19:01.233: e/mm-camera(196): mct_pipeline_process_set: stream on/off returned 03-24 20:19:01.263: d/qcamera3stream(184): static void* qcamera::qcamera3stream::dataprocroutine(void*): exit 03-24 20:19:01.263: e/mm-camera-intf(184): mm_camera_poll_thread_del_poll_fd: invalid handler 175616 (0) 03-24 20:19:01.263: e/mm-camera(196): mct_pipeline_process_set:command=8000009 03-24 20:19:01.263: e/mm-camera(196): mct_pipeline_process_set: stream_type = 6, streamid 3 03-24 20:19:01.263: e/mm-camera-sensor(196): module_sensor_module_process_event:1987 ide 10003 mct_event_control_streamoff 03-24 20:19:01.263: e/mm-camera(196): port_isp_mct_ctrl_cmd: e, identity = 0x10003, streamoff 03-24 20:19:01.263: e/mm-camera(196): cpp_module_handle_streamoff_event:2058, info: doing stream-off identity 0x10003 03-24 20:19:01.263: e/mm-camera(196): cpp_module_handle_streamoff_event:2112, info: stream-off done identity 0x10003 03-24 20:19:01.263: e/mm-camera(196): isp_streamoff: e, session_id = 1, stream_id = 3, stream_type = 6 03-24 20:19:01.263: e/mm-camera(196): isp_axi_util_subscribe_v4l2_event: event_type = 0x8000009, is_subscribe = 0 03-24 20:19:01.363: e/mm-camera(196): stats_action_buf_config: cfg = 0, stats_mask = 0x5b8 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 0, action = 0xb6e7f759 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 1, action = 0xb6e86569 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 2, action = 0xb6e96971 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 3, action = 0xb6e8ff6d 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 4, action = 0xb6e7b819 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 5, action = 0xb6e80225 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 7, action = 0xb6e950e9 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 8, action = 0xb6e92ab1 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 10, action = 0xb6e824c1 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 11, action = 0xb6e761b1 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 12, action = 0xb6e78f19 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 13, action = 0xb6e83ae1 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 14, action = 0xb6e7a051 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 15, action = 0xb6e93509 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 16, action = 0xb6e7d991 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 17, action = 0xb6e77169 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 18, action = 0xb6e8e295 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 19, action = 0xb6e7c4b1 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 20, action = 0xb6e95555 03-24 20:19:01.373: e/mm-camera(196): isp_pipeline_util_reset: module id = 22, action = 0xb6e8b855 03-24 20:19:01.433: e/mm-camera(196): ispif_streamoff: session_id = 1, active_streams = 0 03-24 20:19:01.433: e/mm-camera-sensor(196): module_sensor_module_process_event:2018 ide 10003 mct_event_control_streamoff 03-24 20:19:01.433: e/mm-camera(196): mct_pipeline_process_set: stream on/off returned 03-24 20:19:01.473: d/qcamera3stream(184): static void* qcamera::qcamera3stream::dataprocroutine(void*): exit 03-24 20:19:01.473: e/mm-camera(196): mct_pipeline_process_set:command=800000b 03-24 20:19:01.473: e/mm-camera(196): mct_pipeline_process_set: stream_type = 1, streamid 2 03-24 20:19:01.473: e/mm-camera-sensor(196): port_sensor_caps_unreserve:169 ide 10002 03-24 20:19:01.473: e/mm-camera(196): cpp_port_check_caps_unreserve:170, identity=0x10002 03-24 20:19:01.473: e/mm-camera(196): cpp_port_check_caps_unreserve:179, identity=0x10002, unreserved 03-24 20:19:01.473: e/mm-camera(196): cpp_port_check_caps_unreserve:170, identity=0x10002 03-24 20:19:01.473: e/mm-camera(196): cpp_port_check_caps_unreserve:179, identity=0x10002, unreserved 03-24 20:19:01.473: e/mm-camera-img(196): faceproc_comp_abort:608] state 1 03-24 20:19:01.473: e/mm-camera-img(196): faceproc_save_album:774] error no album 03-24 20:19:01.473: e/mm-camera-img(196): faceproc_comp_eng_destroy: album save failed -1 03-24 20:19:01.473: e/qcamera3channel(184): virtual qcamera::qcamera3channel::~qcamera3channel(): deleting channel 174849 03-24 20:19:01.473: e/qomx_image_core(184): omx_deinit:101] complete 03-24 20:19:01.473: d/qcamera3postproc(184): int32_t qcamera::qcamera3postprocessor::deinit(): jpeg closed, rc = 0, mjpegclienthandle = 4d00 03-24 20:19:01.473: e/mm-camera(196): mct_pipeline_process_set:command=800000b 03-24 20:19:01.473: e/mm-camera(196): mct_pipeline_process_set: stream_type = 6, streamid 3 03-24 20:19:01.473: e/mm-camera-sensor(196): port_sensor_caps_unreserve:169 ide 10003 03-24 20:19:01.473: e/mm-camera(196): cpp_port_check_caps_unreserve:170, identity=0x10003 03-24 20:19:01.473: e/mm-camera(196): cpp_port_check_caps_unreserve:179, identity=0x10003, unreserved 03-24 20:19:01.473: e/mm-camera(196): q3a_thread_aecawb_stop:308 msg_stop_thread 03-24 20:19:01.473: e/qcamera3channel(184): virtual qcamera::qcamera3channel::~qcamera3channel(): deleting channel 175362 03-24 20:19:01.473: e/mm-camera(196): mct_pipeline_process_set:command=8000009 03-24 20:19:01.473: e/mm-camera(196): mct_pipeline_process_set: stream_type = 8, streamid 1 03-24 20:19:01.473: e/mm-camera(196): mct_pipeline_process_set: stream on/off returned 03-24 20:19:01.483: d/qcamera3stream(184): static void* qcamera::qcamera3stream::dataprocroutine(void*): exit 03-24 20:19:01.483: e/mm-camera(196): mct_pipeline_process_set:command=800000b 03-24 20:19:01.483: e/mm-camera(196): mct_pipeline_process_set: stream_type = 8, streamid 1 03-24 20:19:01.483: e/qcamera3channel(184): virtual qcamera::qcamera3channel::~qcamera3channel(): deleting channel 174336 03-24 20:19:01.483: e/mm-camera(196): mct_pipeline_process_set:command=800000b 03-24 20:19:01.483: e/mm-camera(196): mct_pipeline_get_stream: no children 03-24 20:19:01.483: e/mm-camera(196): mct_pipeline_process_set:1370: couldn't find stream 03-24 20:19:01.483: e/mm-camera-sensor(196): module_sensor_stop_session:630 session 1 03-24 20:19:01.483: i/powermanagerservice(749): going sleep user request... 03-24 20:19:01.553: e/mm-camera(196): stats_module_stop_session: list =0xaf80cc30, remove port =0xb71a0ba8 name=stats_sink module=0xb70e3778, name=stats 03-24 20:19:01.553: e/mm-camera(196): stats_module_stop_session: 1 port =0xb71a0ba8 name=stats_sink 03-24 20:19:01.553: e/mm-camera(196): stats_module_stop_session: 2 port =0xb71a0ba8 name=stats_sink 03-24 20:19:01.553: i/mm-camera(196): gyro_module_stop_session: enter 03-24 20:19:01.553: i/mm-camera(196): gyro_module_stop_session: deinit dsps 03-24 20:19:01.553: i/mm-camera(196): gyro_module_stop_session: exit successful 03-24 20:19:01.553: e/mm-camera(196): stats_module_stop_session: 3 port =0xb71a0ba8 name=stats_sink 03-24 20:19:01.553: e/mm-camera(196): cpp_module_stop_session:453, info: stopping session 1 ... 03-24 20:19:01.553: e/mm-camera(196): cpp_thread_process_pipe_message:359, cpp_thread_msg_abort: cpp_thread exiting.. 03-24 20:19:01.563: e/mm-camera(196): cpp_module_stop_session:495, info: session 1 stopped. 03-24 20:19:01.563: e/mm-camera(196): c2d_module_stop_session:322, info: stopping session 1 ... 03-24 20:19:01.563: e/mm-camera(196): c2d_module_stop_session:327, info: stopping c2d_thread... 03-24 20:19:01.563: e/mm-camera(196): c2d_module_post_msg_to_thread:381, msg.type=1 03-24 20:19:01.563: e/mm-camera(196): c2d_thread_process_pipe_message:503, c2d_thread_msg_abort: c2d_thread exiting.. 03-24 20:19:01.563: e/mm-camera(196): c2d_module_stop_session:339, closing c2d subdev... 03-24 20:19:01.563: e/mm-camera(196): c2d_module_stop_session:361, info: session 1 stopped. 03-24 20:19:01.563: i/camera2client(184): camera 0: closed 03-24 20:19:01.563: i/camera2clientbase(184): closed camera 0 03-24 20:19:01.953: d/surfaceflinger(181): screen released, type=0 flinger=0xb8658450 03-24 20:19:01.953: d/qdhwcomposer(181): hwc_blank: blanking display: 0 03-24 20:19:01.983: v/keyguardhostview(863): initial transport state: 1, pbstate=2 03-24 20:19:02.073: v/keyguardhostview(863): show transport, gen:496 03-24 20:19:02.073: v/keyguardhostview(863): music state changed: 2 03-24 20:19:02.243: d/qdhwcomposer(181): hwc_blank: done blanking display: 0 03-24 20:19:02.243: d/surfacecontrol(749): excessive delay in blankdisplay() while turning screen off: 293ms 03-24 20:19:02.273: d/phonestatusbar(863): disable: < expand* icons alerts ticker* system_info back* home* recent* clock* search > 03-24 20:19:02.303: w/iinputconnectionwrapper(863): getextractedtext on inactive inputconnection 03-24 20:19:02.303: w/iinputconnectionwrapper(863): gettextbeforecursor on inactive inputconnection 03-24 20:19:02.303: w/iinputconnectionwrapper(863): getselectedtext on inactive inputconnection 03-24 20:19:02.303: w/iinputconnectionwrapper(863): gettextaftercursor on inactive inputconnection 03-24 20:19:02.313: e/inputeventmodelimpl(976): onstartinput event aborted: com.touchtype.keyboard.inputeventmodel.extractedtextunavailableexception: not obtain extracted text (class com.touchtype.keyboard.inputeventmodel.extractedtextunavailableexception) 03-24 20:19:02.323: d/nfcservice(1036): nfc-c off 03-24 20:19:10.943: i/art(20002): heap trim of managed (duration=2.543657ms, advised=796kb) , native (duration=1.751706ms, advised=72kb) heaps. managed heap utilization of 56%. 03-24 20:19:10.953: i/gcm(20002): gcm message com.google.android.googlequicksearchbox 0:1395706750356778%8b460216f9fd7ecd 03-24 20:19:11.463: d/connectivityservice(749): handleinetconditionholdend: net=1, condition=100, published condition=100 03-24 20:20:53.503: i/packagemanager(749): action: "android.intent.action.sendto" 03-24 20:20:53.503: i/packagemanager(749): category: "android.intent.category.default" 03-24 20:20:53.503: i/packagemanager(749): scheme: "sms" 03-24 20:20:53.503: i/packagemanager(749): adding preferred activity componentinfo{com.google.android.talk/com.google.android.apps.babel.phone.babelhomeactivity} user 0 : 03-24 20:20:53.523: i/packagemanager(749): action: "android.intent.action.sendto" 03-24 20:20:53.523: i/packagemanager(749): category: "android.intent.category.default" 03-24 20:20:53.523: i/packagemanager(749): scheme: "smsto" 03-24 20:20:53.523: i/packagemanager(749): adding preferred activity componentinfo{com.google.android.talk/com.google.android.apps.babel.phone.babelhomeactivity} user 0 : 03-24 20:20:53.543: i/packagemanager(749): action: "android.intent.action.sendto" 03-24 20:20:53.543: i/packagemanager(749): category: "android.intent.category.default" 03-24 20:20:53.543: i/packagemanager(749): scheme: "mms" 03-24 20:20:53.543: i/packagemanager(749): adding preferred activity componentinfo{com.google.android.talk/com.google.android.apps.babel.phone.babelhomeactivity} user 0 : 03-24 20:20:53.563: i/packagemanager(749): action: "android.intent.action.sendto" 03-24 20:20:53.563: i/packagemanager(749): category: "android.intent.category.default" 03-24 20:20:53.563: i/packagemanager(749): scheme: "mmsto" 03-24 20:20:53.563: i/packagemanager(749): adding preferred activity componentinfo{com.google.android.talk/com.google.android.apps.babel.phone.babelhomeactivity} user 0 : 03-24 20:20:53.693: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@662f66b8) 03-24 20:20:53.723: i/art(29404): heap trim of managed (duration=18.206399ms, advised=1188kb) , native (duration=5.492916ms, advised=1104kb) heaps. managed heap utilization of 67%. 03-24 20:20:53.743: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.743: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@66251ce8) 03-24 20:20:53.743: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@65ba0ca8) 03-24 20:20:53.753: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.753: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@657e9e90) 03-24 20:20:53.753: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@65ce8cb8) 03-24 20:20:53.763: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.763: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@66790968) 03-24 20:20:53.763: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@667970d8) 03-24 20:20:53.763: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.763: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@6605e2e8) 03-24 20:20:53.763: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@66147400) 03-24 20:20:53.763: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.763: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@65f808c8) 03-24 20:20:53.763: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@65f3cd98) 03-24 20:20:53.763: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.763: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@6609df98) 03-24 20:20:53.773: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@65f4e930) 03-24 20:20:53.773: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.773: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@663df8a0) 03-24 20:20:53.773: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@663e8508) 03-24 20:20:53.773: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.773: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@65bd4608) 03-24 20:20:53.773: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (com.google.android.gms.internal.gr@65b29598) 03-24 20:20:53.773: w/cursorwrapperinner(29404): cursor finalized without prior close() 03-24 20:20:53.773: e/dataholder(29404): internal data leak within databuffer object detected! sure explicitly call close() on databuffer extending objects when done them. (internal object: com.google.android.gms.common.data.d@665aafe8) 03-24 20:20:53.843: w/babel(29404): media failed load:base:content://com.android.contacts/contacts/10 account=none load:content://com.android.contacts/contacts/10 key=content://com.android.contacts/contacts/10s192-c-k-no 03-24 20:20:53.883: w/managedeglcontext(29404): doterminate failed: egl count 2 managed count 1 03-24 20:20:57.573: v/keyguardservicedelegate(749): onscreenturnedon(showlistener = com.android.internal.policy.impl.phonewindowmanager$17@66480238) 03-24 20:20:57.573: i/powermanagerservice(749): waking sleep... 03-24 20:20:57.583: d/surfaceflinger(181): screen acquired, type=0 flinger=0xb8658450 03-24 20:20:57.583: d/qdhwcomposer(181): hwc_blank: unblanking display: 0 03-24 20:20:57.623: v/keyguardservicedelegate(749): **** shown called **** 03-24 20:20:57.623: i/windowmanager(749): lock screen displayed! 03-24 20:20:57.813: d/qdhwcomposer(181): hwc_blank: done unblanking display: 0 03-24 20:20:57.813: d/surfacecontrol(749): excessive delay in unblankdisplay() while turning screen on: 239ms 03-24 20:21:00.043: d/nfcservice(1036): nfc-c on 03-24 20:21:00.043: i/userial_linux(1036): userial_open(): enter 03-24 20:21:00.043: i/userial_linux(1036): userial_open() device: /dev/bcm2079x port=5, uart_port=0 wake_delay(20) write_delay(20) power_on_delay(0) pre_power_off_delay(10) post_power_off_delay(0) 03-24 20:21:00.053: i/userial_linux(1036): userial_open(): exit 03-24 20:21:00.053: d/phonestatusbar(863): disable: < expand* icons alerts ticker* system_info back* home* recent* clock* search > 03-24 20:21:00.083: w/inputmethodmanagerservice(749): window focused, ignoring focus gain of: com.android.internal.view.iinputmethodclient$stub$proxy@663e5910 attribute=android.view.inputmethod.editorinfo@663fbc18, token = android.os.binderproxy@663e5cf8 03-24 20:21:00.133: i/gcm(20002): gcm message com.google.android.googlequicksearchbox 0:1395706815615054%8b460216f9fd7ecd 03-24 20:21:00.633: d/connectivityservice(749): handleinetconditionholdend: net=1, condition=100, published condition=100 03-24 20:21:01.473: d/audio_hw_primary(184): out_set_parameters: enter: usecase(1: low-latency-playback) kvpairs: routing=2 03-24 20:21:01.483: e/qcom_sensors_hal(749): hal_process_report_ind: bad item quality: 11 03-24 20:21:01.493: d/audio_hw_primary(184): select_devices: out_snd_device(2: speaker) in_snd_device(0: ) 03-24 20:21:01.553: i/art(749): heap trim of managed (duration=15.460886ms, advised=8mb) , native (duration=3.325208ms, advised=1456kb) heaps. managed heap utilization of 49%. 03-24 20:21:01.743: e/spannablestringbuilder(29404): span_exclusive_exclusive spans cannot have 0 length 03-24 20:21:01.743: e/spannablestringbuilder(29404): span_exclusive_exclusive spans cannot have 0 length 03-24 20:21:02.443: i/art(29404): note: end time exceeds epoch: 03-24 20:21:03.653: i/gcoreulr(19985): inserted location 03-24 20:21:03.653: i/gcoreulr(19985): not calling locationreportingservice, hasmoved: false, elapsed millis: 1705539, request: phone 03-24 20:21:13.363: i/gcm(20002): gcm message com.google.android.googlequicksearchbox 0:1395706873059911%8b460216f9fd7ecd 03-24 20:21:13.503: i/art(749): heap trim of managed (duration=12.612083ms, advised=8mb) , native (duration=2.613177ms, advised=1480kb) heaps. managed heap utilization of 48%. 03-24 20:21:13.863: d/connectivityservice(749): handleinetconditionholdend: net=1, condition=100, published condition=100 03-24 20:21:30.493: e/qcom_sensors_hal(749): hal_process_report_ind: bad item quality: 11 03-24 20:21:31.423: i/powermanagerservice(749): going sleep due screen timeout... 03-24 20:21:31.893: d/surfaceflinger(181): screen released, type=0 flinger=0xb8658450 03-24 20:21:31.893: d/qdhwcomposer(181): hwc_blank: blanking display: 0 03-24 20:21:31.993: d/nfcservice(1036): nfc-c off 03-24 20:21:32.023: i/art(976): heap trim of managed (duration=4.792968ms, advised=2mb) , native (duration=4.003073ms, advised=532kb) heaps. managed heap utilization of 35%. 03-24 20:21:32.033: w/iinputconnectionwrapper(29404): getextractedtext on inactive inputconnection 03-24 20:21:32.033: w/iinputconnectionwrapper(29404): gettextbeforecursor on inactive inputconnection 03-24 20:21:32.033: w/iinputconnectionwrapper(29404): getselectedtext on inactive inputconnection 03-24 20:21:32.033: w/iinputconnectionwrapper(29404): gettextaftercursor on inactive inputconnection 03-24 20:21:32.033: e/inputeventmodelimpl(976): onstartinput event aborted: com.touchtype.keyboard.inputeventmodel.extractedtextunavailableexception: not obtain extracted text (class com.touchtype.keyboard.inputeventmodel.extractedtextunavailableexception) 03-24 20:21:32.183: d/qdhwcomposer(181): hwc_blank: done blanking display: 0 03-24 20:21:32.183: d/surfacecontrol(749): excessive delay in blankdisplay() while turning screen off: 285ms 03-24 20:21:36.923: v/keyguardhostview(863): initial transport state: 1, pbstate=2 03-24 20:21:36.983: v/keyguardhostview(863): show transport, gen:496 03-24 20:21:36.983: v/keyguardhostview(863): music state changed: 2 03-24 20:21:37.013: d/phonestatusbar(863): disable: < expand* icons alerts ticker* system_info back* home* recent* clock* search > 03-24 20:22:45.323: i/icing.internalicingcorporaprovider(8816): updating corpora: a: scores, c: none 03-24 20:22:45.513: i/icing.internalicingcorporaprovider(8816): updatecorporatask done [took 188 ms] updated apps [took 188 ms] 03-24 20:22:46.523: i/icing(20044): indexing 52936f3e5a814571a566b6eceffa4d84bbc000b6 com.google.android.googlequicksearchbox 03-24 20:22:46.573: i/icing(20044): indexing done 52936f3e5a814571a566b6eceffa4d84bbc000b6 03-24 20:22:47.443: w/idleconnectionhandler(7124): removing connection never existed! 03-24 20:22:47.903: w/idleconnectionhandler(7124): removing connection never existed! 03-25 16:46:11.143: e/bufferqueue(28408): [unnamed-28408-0] dequeuebuffer: bufferqueue has been abandoned! 03-25 16:46:11.143: e/bufferqueue(28408): [unnamed-28408-0] dequeuebuffer: bufferqueue has been abandoned! 03-25 16:46:11.143: e/bufferqueue(28408): [unnamed-28408-0] dequeuebuffer: bufferqueue has been abandoned! 03-25 16:46:11.143: e/bufferqueue(28408): [unnamed-28408-0] dequeuebuffer: bufferqueue has been abandoned! 03-25 16:46:11.193: i/choreographer(28408): skipped 266 frames! application may doing work on main thread.
from have posted should not have major problems turning flashlight on or off, tried implement simple app toggle button myself , ran on samsung galaxy fame test out.
but first few things code: should never make class variables public, unless have reason (and should reconsider making them private).
second: since keeping camera connection open during active lifetime of app, should release hold on camera moment app not active - when onstop() called. consequence should not open camera connection until onstart() called. alternatively can put control in oncreate() , ondestroy() flashlight can active when screen locked (thus saving power longer durations , preventing user touching anything).
the app created similar yours, not crash, works fast, , literally pushed toggle button fast 2 mins before stopping. no crashing or lingering happened during time.
here full code in case want test yourself:
mainactivity.java:
import android.app.activity; import android.hardware.camera; import android.hardware.camera.parameters; import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.togglebutton; public class mainactivity extends activity { private camera cam; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); cam = camera.open(); } @override public boolean oncreateoptionsmenu(menu menu) { getmenuinflater().inflate(r.menu.main, menu); return true; } @override public boolean onoptionsitemselected(menuitem item) { int id = item.getitemid(); if (id == r.id.action_settings) { return true; } return super.onoptionsitemselected(item); } public void togglebuttonclick(view view){ parameters p; if(gettogglebutton().ischecked()){ p = cam.getparameters(); p.setflashmode(parameters.flash_mode_torch); cam.setparameters(p); cam.startpreview(); } else{ p = cam.getparameters(); p.setflashmode(parameters.flash_mode_off); cam.setparameters(p); cam.stoppreview(); } } public togglebutton gettogglebutton(){ return (togglebutton) findviewbyid(r.id.togglebutton1); } @override public void ondestroy(){ super.ondestroy(); cam.release(); } }
activity_main.xml:
<framelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.test.flashlightapp.mainactivity" tools:ignore="mergerootframe" > <togglebutton android:id="@+id/togglebutton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onclick="togglebuttonclick" android:text="togglebutton" /> </framelayout>
and added these 2 lines manifest file:
<uses-permission android:name="android.permission.camera"/> <uses-permission android:name="android.permission.flashlight"/>
i have tested code, , works on samsung galaxy fame.
hope helps.
Comments
Post a Comment