1

This is question about running app on the TomTom device, not on an arbitrary Android device.

I have a random exception on production devices when attempting to start native Camera activity which I can't reproduce on my dev TomTom. This is specific to TomTom devices only; it doesn't happen on any other Androids my app is running on.

I don't do anything fancy here, just start a native camera Activity for taking a picture with some URI, but randomly it crashes my app. I guess at least some TomTom devs should have experienced this issue with TomTom native Camera activity. Any help resolving this is highly appreciated.

My code is like this:

    final Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    i.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
    i.addFlags(FLAG_GRANT_WRITE_URI_PERMISSION);

    final List<ResolveInfo> resInfoList = packageManager.queryIntentActivities(i, PackageManager.MATCH_DEFAULT_ONLY);
    for (ResolveInfo resolveInfo : resInfoList)
    {
        String packageName = resolveInfo.activityInfo.packageName;
        activity.grantUriPermission(packageName, photoURI, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
    }

    activity.startActivityForResult(i, requestCode);

And exception stacktrace is like the following:

Fatal Exception: java.lang.RuntimeException: Surface was already locked at android.view.Surface.lockCanvas(Surface.java:242) at android.view.ViewRootImpl.drawSoftware(ViewRootImpl.java:2421) at android.view.ViewRootImpl.draw(ViewRootImpl.java:2395) at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2239) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1872) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1004) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5481) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:749) at android.view.Choreographer.doCallbacks(Choreographer.java:562) at android.view.Choreographer.doFrame(Choreographer.java:532) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:735) at android.os.Handler.handleCallback(Handler.java:730) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5150) at java.lang.reflect.Method.invokeNative(Method.java) at java.lang.reflect.Method.invoke(Method.java:525) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:760) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:576) at dalvik.system.NativeStart.main(NativeStart.java)

Alexander Abakumov
  • 13,617
  • 16
  • 88
  • 129

0 Answers0