Camera access error on some android devices -


i wrote app utlizes phone's camera. on of devices tried worked fine application crashes on opening. little debugging showed there's problem when trying access camera.

full error message:

06-14 23:15:01.550 21872-21872/bguproject.vlc e/androidruntime: fatal exception: main process: bguproject.vlc, pid: 21872 java.lang.runtimeexception: unable start activity componentinfo{bguproject.vlc/bguproject.vlc.mainactivity}: java.lang.nullpointerexception: attempt invoke virtual method 'android.hardware.camera$parameters android.hardware.camera.getparameters()' on null object reference @ android.app.activitythread.performlaunchactivity(activitythread.java:2434) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2494) @ android.app.activitythread.access$900(activitythread.java:157) @ android.app.activitythread$h.handlemessage(activitythread.java:1356) @ android.os.handler.dispatchmessage(handler.java:102) @ android.os.looper.loop(looper.java:148) @ android.app.activitythread.main(activitythread.java:5525) @ java.lang.reflect.method.invoke(native method) @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:730) @ com.android.internal.os.zygoteinit.main(zygoteinit.java:620) caused by: java.lang.nullpointerexception: attempt invoke virtual method 'android.hardware.camera$parameters android.hardware.camera.getparameters()' on null object reference @ bguproject.vlc.mainactivity.oncreate(mainactivity.java:54) @ android.app.activity.performcreate(activity.java:6272) @ android.app.instrumentation.callactivityoncreate(instrumentation.java:1107) @ android.app.activitythread.performlaunchactivity(activitythread.java:2387) @ android.app.activitythread.handlelaunchactivity(activitythread.java:2494)  @ android.app.activitythread.access$900(activitythread.java:157)  @ android.app.activitythread$h.handlemessage(activitythread.java:1356)  @ android.os.handler.dispatchmessage(handler.java:102)  @ android.os.looper.loop(looper.java:148)  @ android.app.activitythread.main(activitythread.java:5525)  @ java.lang.reflect.method.invoke(native method)  @ com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:730)  @ com.android.internal.os.zygoteinit.main(zygoteinit.java:620)  

as can see error says try invoke virtual method on null object reference wouldn't happen if writing of mcamera done properly

the code (the writing on try-catch phrase @ end):

package bguproject.vlc;  import android.app.activity; import android.content.intent; import android.content.pm.packagemanager; import android.hardware.camera; import android.net.uri; import android.os.bundle; import android.os.systemclock; import android.view.view; import android.widget.framelayout; import android.widget.scrollview;   public class mainactivity extends activity implements view.onclicklistener{     private camera mcamera = null;     private cameraview mcameraview = null;     private int fpsrate[] = new int[2];     private  boolean work = true,receiving = false;     private boolean send = false;       @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         setcontentview(r.layout.activity_main);          logger l = logger.getinstance(this); //create logger instance          logger.log("starting vlc app...");          try{             bguproject.vlc.logger.log("\taccessing camera...");             mcamera = camera.open();//you can use open(int) use different cameras         } catch (exception e){             bguproject.vlc.logger.logerror("\tfailed camera: " + e.getmessage());         } 

full code: http://pastebin.com/hxqjk3t2

all phones crushed had working camera , relatively new (samsung s6, samsung s7 , lg g4).

samsung s6 , lg g4 both upgradable android marshmallow (v6 or api 23) , samsung s7 running marshmallow on stock rom i'll assume 3 of devices running marshmallow :)

from https://developer.android.com/training/permissions/requesting.html
note: beginning android 6.0 (api level 23), users can revoke permissions app @ time, if app targets lower api level. should test app verify behaves when it's missing needed permission, regardless of api level app targets.

aside permissions set in manifest, you'll need request/check permission on runtime. there sample codes in there can use, or...


quick solution,

go settings-> apps->(your app name)->permissions , enable camera permission. done, although not recommended final product

then try app again. should working :d


Comments

Popular posts from this blog

sequelize.js - Sequelize group by with association includes id -

android - Robolectric "INTERNET permission is required" -

java - Android raising EPERM (Operation not permitted) when attempting to send UDP packet after network connection -