B4A Library EasyAR (Augmented Reality) Library UPDATED!

Hello everyone, I would like to introduce this Beta version of my B4AEasyAR Library, i have been trying to wrap an AR Library for some months now but have came across some issues while wrapping some of the functions.
I read a post by someone about EasyAR, spent some time looking at the documentation and examples and decided to give it a try, i finally have something that works good and wanted to share it with everyone, please keep in mind that I am not a Java expert, however i am taking an advanced Java class in college along with Python and iOS.

Please note that the updated library requires google_ar SDK, I have linked a copy of the .aar here file but you can also download it from their website. Also check out the manifest file as there's an extra entry tag that needs to be added, the reason is that the new SDK will check if Google AR is installed on your device, it also checks the version and if it needs to be updated.
Manifest:
AddApplicationText(<meta-data android:name="com.google.ar.core" android:value="required"/>
        <meta-data android:name="com.google.ar.core.min_apk_version" android:value="181012000"/>)

AddApplicationText(<activity
            android:name="com.google.ar.core.InstallActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:excludeFromRecents="true"
            android:exported="false"
            android:launchMode="singleTop"
            android:theme="@android:style/Theme.Material.Light.Dialog.Alert" />
            <meta-data
            android:name="com.google.ar.core.min_apk_version"
            android:value="181012000" />)

Ok, in order to be able to use this library you will need to register for an account at EasyAR website once you have signed up, you can login and you will need to create an SDK License key.

Just click on the Add SDK License Key button, you will be prompted to choose what type of license key you need to generate, Select EasyAR SDK Basic option, next you will need to enter your App's name, then go ahead and Select Android for Supported Platform and lastly you need to enter the same package name you used when creating your application.

Once the SDK key is generated you will be able to see it by clicking on the Name of the application created, copy and save your key as you will need it.

I have attached a very simple example which is the very same example that comes with their SDK, what the app does is that it tracks two different images and renders a 3D cube on top of the image, as i mentioned this is a very simple example but just imagine the possibilities.

I have also attached a small video i made showing the app in action, the bxRenderer class is where all the magic happens and it an be modified to your taste granted that you are familiar with OpenGL.

I am using @agraham OpenGL2.0 library, i was almost half way wrapping the OpenGL2.0 library when i realized that it had already been done for us in the forums by @agraham so a big thanks to him for his hard work, it truly saved me lots of time, i added a few functions to his library that were needed with EasyAR library, i have sent him the updated OpenGL2.0 version 1.5 library for him to upload it to his original thread.

B4AEasyAR library uses your device's camera to track certain images that you can upload either to your device or the cloud, currently i have not wrapped any of the functions to be able to recognize images uploaded to the cloud.

I suggest you guys do some research on your own about the capabilities of this SDK, this will be an ongoing effort to maintain this library updated, I think it was definitely time that a library like this was needed in our forums.

For now I will only upload the jar and xml file, you will need to download the SDK once you are signed up with EasyAR.com and copy the EasyAR.jar file that comes with the SDK and paste it into your additional library folder.

Please test the attached APK file, and let me know what device and android version you guys test on, and of course post any problems or suggestions you come across.

Library and examples have been updated with latest EasyAR SDK 4.x Sense

Please make sure to download the latest EasyAR SDK files, find the EasyAr.jar file copy it and paste it into your additional libraries folder.



Updated library files, jar and xml files version 2.15 can be downloaded from here




APK has been updated with a few more examples and can be downloaded from here.



The updated apk file contains a few more examples and has been updated with the latest EasyAR SDK library, note that a watermark is displayed on the screen if using a free license, in order to get rid of the watermark you must purchase a license.

UPDATE
I am releasing the Source code of the Examples I have already shown, plus two more examples, one using a custom camera class which uses the Android Camera class and Surface Tracker example.
I am also attaching the documentation for the library, the library is also being updated as I have added a few more things to it.


UPDATE 10/27/2024
Source code for the new examples apk has also been updated, this updates contain two more examples, multi-tracker example and Object Tracker example. These Updates have been done with the latest EasyAR SDK library 4.6.x

Library files have also been updated 10/27/2024



Updated Source Code 10/27/2024
Example Source Code 1.2.5




You will need to either print out a copy of the two images being used in this example to test the app or just open them up on your laptop and point the camera to the image on your screen, either way will work fine.


and lastly here's the video I made to show the app in action.

Please Donate if you guys find this library useful, i have spent a lot of hours and I will keep this library updated as necessary, your donations will keep me motivated to continue maintaining this library.

Thanks all, can't wait to see what type of apps can be created with this new Library.
 
Last edited:

walterf25

Expert
Licensed User
Longtime User
Is this the full logs?
 
Can you post the unfiltered logs?
This full unfiltered logs

Logs:
Build fingerprint: 'samsung/b0qxxx/b0q:14/UP1A.231005.007/S908EXXUAEXH7:user/release-keys'
Revision: '12'
ABI: 'arm64'
Processor: '-1'
Timestamp: 2024-10-27 08:17:55.836144008+0400
Process uptime: 5s
Cmdline: com.tecknow.ar
pid: 15805, tid: 15919, name: GLThread 145435  >>> com.tecknow.ar <<<
uid: 10994
tagged_addr_ctrl: 0000000000000001 (PR_TAGGED_ADDR_ENABLE)
pac_enabled_keys: 000000000000000f (PR_PAC_APIAKEY, PR_PAC_APIBKEY, PR_PAC_APDAKEY, PR_PAC_APDBKEY)
signal 6 (SIGABRT), code -1 (SI_QUEUE), fault addr --------
Abort message: 'terminating with uncaught exception of type std::out_of_range: unordered_map::at: key not found'
    x0  0000000000000000  x1  0000000000003e2f  x2  0000000000000006  x3  0000006fc2b1b160
    x4  736f646277641f73  x5  736f646277641f73  x6  736f646277641f73  x7  7f7f7f7f7f7f7f7f
    x8  00000000000000f0  x9  0000007356e5b278  x10 0000000000000001  x11 0000007356ea3b60
    x12 000000737738e020  x13 000000007fffffff  x14 0000000024de4bc2  x15 000021fe15c9d2c8
    x16 0000007356f0cd18  x17 0000007356ee7680  x18 0000006f37b30000  x19 0000000000003dbd
    x20 0000000000003e2f  x21 00000000ffffffff  x22 ffffff80ffffffc8  x23 0000006fc2b1b3b0
    x24 0000006fc2b1b290  x25 0000006fc2b1b2d0  x26 0000000000000018  x27 0000000000000007
    x28 b4000070ab0c7700  x29 0000006fc2b1b1e0
    lr  0000007356e94704  sp  0000006fc2b1b140  pc  0000007356e94730  pst 0000000000001000
57 total frames
backtrace:
      #00 pc 000000000005b730  /apex/com.android.runtime/lib64/bionic/libc.so (abort+168) (BuildId: edc1b601d9f8344c1eccd3d77a458f65)
      #01 pc 00000000002e3e9c  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/lib/arm64/libEasyAR.so (BuildId: 12904b38a733749fc8a1ce2e5efff2ffca378355)
      #02 pc 00000000002cfbcc  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/lib/arm64/libEasyAR.so (BuildId: 12904b38a733749fc8a1ce2e5efff2ffca378355)
      #03 pc 00000000002ce3bc  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/lib/arm64/libEasyAR.so (BuildId: 12904b38a733749fc8a1ce2e5efff2ffca378355)
      #04 pc 00000000002ce5d4  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/lib/arm64/libEasyAR.so (BuildId: 12904b38a733749fc8a1ce2e5efff2ffca378355)
      #05 pc 00000000002ce528  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/lib/arm64/libEasyAR.so (BuildId: 12904b38a733749fc8a1ce2e5efff2ffca378355)
      #06 pc 00000000002b18e8  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/lib/arm64/libEasyAR.so (BuildId: 12904b38a733749fc8a1ce2e5efff2ffca378355)
      #07 pc 000000000023fb10  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/lib/arm64/libEasyAR.so (Java_cn_easyar_RefBase__1t+900) (BuildId: 12904b38a733749fc8a1ce2e5efff2ffca378355)
      #08 pc 0000000000351230  /apex/com.android.art/lib64/libart.so (art_quick_generic_jni_trampoline+144) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #09 pc 00000000005b7f98  /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #10 pc 00000000000dc220  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (cn.easyar.RefBase.registerType+252)
      #11 pc 000000000033aa80  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #12 pc 0000000000510b0c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+2364) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #13 pc 0000000000490800  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+1892) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #14 pc 00000000003539d8  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #15 pc 00000000000db114  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (cn.easyar.Initializer.run+0)
      #16 pc 000000000036daec  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.18012138979834229341)+232) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #17 pc 000000000036d3e4  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+964) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #18 pc 0000000000351368  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #19 pc 00000000005b7f98  /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #20 pc 00000000000daeda  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (cn.easyar.Engine.loadLibraries+10)
      #21 pc 000000000033aa80  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #22 pc 0000000000510b0c  /apex/com.android.art/lib64/libart.so (bool art::interpreter::DoCall<false>(art::ArtMethod*, art::Thread*, art::ShadowFrame&, art::Instruction const*, unsigned short, bool, art::JValue*)+2364) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #23 pc 0000000000490800  /apex/com.android.art/lib64/libart.so (void art::interpreter::ExecuteSwitchImplCpp<false>(art::interpreter::SwitchImplContext*)+1892) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #24 pc 00000000003539d8  /apex/com.android.art/lib64/libart.so (ExecuteSwitchImplAsm+8) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #25 pc 00000000000dae18  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (cn.easyar.Engine.initialize+0)
      #26 pc 000000000036daec  /apex/com.android.art/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::CodeItemDataAccessor const&, art::ShadowFrame&, art::JValue, bool, bool) (.__uniq.112435418011751916792819755956732575238.llvm.18012138979834229341)+232) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #27 pc 000000000036d3e4  /apex/com.android.art/lib64/libart.so (artQuickToInterpreterBridge+964) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #28 pc 0000000000351368  /apex/com.android.art/lib64/libart.so (art_quick_to_interpreter_bridge+88) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #29 pc 00000000005b7f98  /apex/com.android.art/lib64/libart.so (nterp_helper+152) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #30 pc 00000000000e53d0  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (com.genesis.easyAR.B4AEasyAR.Initialize+36)
      #31 pc 00000000005b8e54  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #32 pc 00000000000f6df6  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (com.tecknow.ar.helloar._initialize+22)
      #33 pc 00000000005b8e54  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #34 pc 00000000000edc5c  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (com.tecknow.ar.baseexample._glsurface_surfacecreated+28)
      #35 pc 000000000033aa80  /apex/com.android.art/lib64/libart.so (art_quick_invoke_static_stub+640) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #36 pc 000000000037bf18  /apex/com.android.art/lib64/libart.so (_jobject* art::InvokeMethod<(art::PointerSize)8>(art::ScopedObjectAccessAlreadyRunnable const&, _jobject*, _jobject*, _jobject*, unsigned long)+1556) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #37 pc 000000000037b8f4  /apex/com.android.art/lib64/libart.so (art::Method_invoke(_JNIEnv*, _jobject*, _jobject*, _jobjectArray*) (.__uniq.165753521025965369065708152063621506277)+32) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #38 pc 00000000000a0e28  /system/framework/arm64/boot.oat (art_jni_trampoline+120) (BuildId: e95bbecbff65f3fdefe43a7cffd68de36e7b1e1a)
      #39 pc 00000000005b8eb0  /apex/com.android.art/lib64/libart.so (nterp_helper+4016) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #40 pc 00000000000c0a26  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (anywheresoftware.b4a.BA.raiseEvent2+182)
      #41 pc 00000000005b9558  /apex/com.android.art/lib64/libart.so (nterp_helper+5720) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #42 pc 00000000000c0982  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (anywheresoftware.b4a.BA.raiseEvent2+18)
      #43 pc 00000000005b9558  /apex/com.android.art/lib64/libart.so (nterp_helper+5720) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #44 pc 00000000000c0954  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (anywheresoftware.b4a.BA.raiseEvent+12)
      #45 pc 00000000005b8e54  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #46 pc 00000000000c2ae6  /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/oat/arm64/base.vdex (anywheresoftware.b4a.agraham.opengl2.GLWrapper2$GLSurfaceViewWrapper2$myRenderer.onSurfaceCreated+78)
      #47 pc 00000000005ba34c  /apex/com.android.art/lib64/libart.so (nterp_helper+9292) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #48 pc 00000000001da428  /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.guardedRun+912)
      #49 pc 00000000005b8e54  /apex/com.android.art/lib64/libart.so (nterp_helper+3924) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #50 pc 00000000001dab24  /system/framework/framework.jar (android.opengl.GLSurfaceView$GLThread.run+52)
      #51 pc 000000000033a7a4  /apex/com.android.art/lib64/libart.so (art_quick_invoke_stub+612) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #52 pc 000000000023a01c  /apex/com.android.art/lib64/libart.so (art::ArtMethod::Invoke(art::Thread*, unsigned int*, unsigned int, art::JValue*, char const*)+144) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #53 pc 0000000000539054  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallback(void*)+1600) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #54 pc 0000000000538a04  /apex/com.android.art/lib64/libart.so (art::Thread::CreateCallbackWithUffdGc(void*)+8) (BuildId: 5b1e3dce5abfbdc410d71d256d308227)
      #55 pc 00000000000c3914  /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+208) (BuildId: edc1b601d9f8344c1eccd3d77a458f65)
      #56 pc 000000000005d084  /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+68) (BuildId: edc1b601d9f8344c1eccd3d77a458f65)
Using CollectorTypeCMC GC.
Not starting debugger since process cannot load the jdwp agent.
setConscryptValidator
setConscryptValidator - put
Compat change id reported: 171979766; UID 10994; state: ENABLED
Compat change id reported: 242716250; UID 10994; state: ENABLED
Configuring clns-4 for other apk /data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/base.apk. target_sdk_version=34, uses_libraries=, library_path=/data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/lib/arm64:/data/app/~~1rig6XyuO70_7huRljR74w==/com.tecknow.ar-9mnZ_W6in8mkJkLhl2qX6w==/base.apk!/lib/arm64-v8a, permitted_path=/data:/mnt/expand:/data/user/0/com.tecknow.ar
Currently set values for:
  angle_gl_driver_selection_pkgs=[]
  angle_gl_driver_selection_values=[]
ANGLE GameManagerService for com.tecknow.ar: false
com.tecknow.ar is not listed in per-application setting
App is not on the allowlist for updatable production driver.
HWUI - treat SMPTE_170M as sRGB
QUALCOMM build                   : 770ea4bdb9, Ief8f71bb1e
Build Date                       : 02/01/24
OpenGL ES Shader Compiler Version: EV031.36.08.25
Local Branch                     :
Remote Branch                    :
Remote Branch                    :
Reconstruct Branch               :
Build Config                     : S P 12.1.1 AArch64
Driver Path                      : /vendor/lib64/egl/libGLESv2_adreno.so
Driver Version                   : 0615.0
common created.
Starting remote logger. Port: 34782
tagSocket(91) with statsTag=0xffffffff, statsUid=-1
PFP: 0x01730155, ME: 0x00000000
Could not find QSPM HAL service. Skipping adreno profile processing.
setWindowBackground: isPopOver=false color=fffafafa d=android.graphics.drawable.ColorDrawable@c446051
Compat change id reported: 237531167; UID 10994; state: DISABLED
[NativeCFMS] BpCustomFrequencyManager::BpCustomFrequencyManager()
setRequestedVisibleTypes: visible=false, mask=statusBars, host=com.tecknow.ar/com.tecknow.ar.main, from=android.view.InsetsController.controlAnimationUnchecked:1476 android.view.InsetsController.applyAnimation:2040 android.view.InsetsController.applyAnimation:2003 android.view.InsetsController.hide:1434 android.view.InsetsController.hide:1373 android.view.ViewRootImpl.controlInsetsForCompatibility:3570 android.view.ViewRootImpl.setView:1753 android.view.WindowManagerGlobal.addView:600 android.view.WindowManagerImpl.addView:150 android.app.ActivityThread.handleResumeActivity:5646
onStateChanged: host=com.tecknow.ar/com.tecknow.ar.main, from=android.view.ViewRootImpl.setView:1797, state=InsetsState: {mDisplayFrame=Rect(0, 0 - 1440, 3088), mDisplayCutout=DisplayCutout{insets=Rect(0, 100 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(683, 0 - 758, 100), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1440 displayHeight=3088 physicalDisplayWidth=1440 physicalDisplayHeight=3088 density={3.75} cutoutSpec={M 0,0 H -10 V 26.66666666666667 H 10 V 0 H 0 Z @dp} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=16, center=Point(16, 16)}, RoundedCorner{position=TopRight, radius=16, center=Point(1424, 16)}, RoundedCorner{position=BottomRight, radius=16, center=Point(1424, 3072)}, RoundedCorner{position=BottomLeft, radius=16, center=Point(16, 3072)}]}  mRoundedCornerFrame=Rect(0, 0 - 1440, 3088), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(0, 0 - 176, 100) rotation=0}, mDisplayShape=DisplayShape{ spec=-311912193 displayWidth=1440 displayHeight=3088 physicalPixelDisplaySizeRatio=1.0 rotation=0 offsetX=0 offsetY=0 scale=1.0}, mSources= { InsetsSource: {ff4d0001 mType=navigationBars mFrame=[0,3028][1440,3088] mVisible=true mFlags=[SUPPRESS_SCRIM]}, InsetsSource: {ff4d0004 mType=systemGestures mFrame=[0,0][120,3088] mVisible=true mFlags=[]}, InsetsSource: {ff4d0005 mType=mandatorySystemGestures mFrame=[0,2960][1440,3088] mVisible=true mFlags=[]}, InsetsSource: {ff4d0006 mType=tappableElement mFrame=[0,0][0,0] mVisible=true mFlags=[]}, InsetsSource: {ff4d0024 mType=systemGestures mFrame=[1320,0][1440,3088] mVisible=true mFlags=[]}, InsetsSource: {27 mType=displayCutout mFrame=[0,0][1440,100] mVisible=true mFlags=[]}, InsetsSource: {b250000 mType=statusBars mFrame=[0,0][1440,100] mVisible=true mFlags=[]}, InsetsSource: {b250005 mType=mandatorySystemGestures mFrame=[0,0][1440,148] mVisible=true mFlags=[]}, InsetsSource: {b250006 mType=tappableElement mFrame=[0,0][1440,100] mVisible=true mFlags=[]} }
synced displayState. AttachInfo displayState=2
setView = com.android.internal.policy.DecorView@6c1c889 TM=true
Starting IDS observe window
Getting Shared Preference for android.app.Application@e92508e uid = 10994
App android.app.Application@e92508e has not finished training
*** Service (starter) Create ***
** Service (starter) Start **
HWUI - treat SMPTE_170M as sRGB
Closing IDS observe window
Getting Shared Preference for android.app.Application@e92508e uid = 10994
IDS count updated to 2 for android.app.Application@e92508e
onStateChanged: host=com.tecknow.ar/com.tecknow.ar.main, from=android.view.ViewRootImpl.relayoutWindow:10165, state=InsetsState: {mDisplayFrame=Rect(0, 0 - 1440, 3088), mDisplayCutout=DisplayCutout{insets=Rect(0, 100 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(683, 0 - 758, 100), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1440 displayHeight=3088 physicalDisplayWidth=1440 physicalDisplayHeight=3088 density={3.75} cutoutSpec={M 0,0 H -10 V 26.66666666666667 H 10 V 0 H 0 Z @dp} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=16, center=Point(16, 16)}, RoundedCorner{position=TopRight, radius=16, center=Point(1424, 16)}, RoundedCorner{position=BottomRight, radius=16, center=Point(1424, 3072)}, RoundedCorner{position=BottomLeft, radius=16, center=Point(16, 3072)}]}  mRoundedCornerFrame=Rect(0, 0 - 1440, 3088), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(0, 0 - 176, 100) rotation=0}, mDisplayShape=DisplayShape{ spec=-311912193 displayWidth=1440 displayHeight=3088 physicalPixelDisplaySizeRatio=1.0 rotation=0 offsetX=0 offsetY=0 scale=1.0}, mSources= { InsetsSource: {ff4d0001 mType=navigationBars mFrame=[0,3028][1440,3088] mVisible=true mFlags=[SUPPRESS_SCRIM]}, InsetsSource: {ff4d0004 mType=systemGestures mFrame=[0,0][120,3088] mVisible=true mFlags=[]}, InsetsSource: {ff4d0005 mType=mandatorySystemGestures mFrame=[0,2960][1440,3088] mVisible=true mFlags=[]}, InsetsSource: {ff4d0006 mType=tappableElement mFrame=[0,0][0,0] mVisible=true mFlags=[]}, InsetsSource: {ff4d0024 mType=systemGestures mFrame=[1320,0][1440,3088] mVisible=true mFlags=[]}, InsetsSource: {3 mType=ime mFrame=[0,0][0,0] mVisible=false mFlags=[]}, InsetsSource: {27 mType=displayCutout mFrame=[0,0][1440,100] mVisible=true mFlags=[]}, InsetsSource: {b250000 mType=statusBars mFrame=[0,0][1440,100] mVisible=true mFlags=[]}, InsetsSource: {b250005 mType=mandatorySystemGestures mFrame=[0,0][1440,148] mVisible=true mFlags=[]}, InsetsSource: {b250006 mType=tappableElement mFrame=[0,0][1440,100] mVisible=true mFlags=[]} }
[](id:3e4c00000000,api:0,p:0,c:15948) setDequeueTimeout:2077252342
new BLASTBufferQueue, mName= ViewRootImpl@29db08d[main] mNativeObject= 0xb4000072bb091030 sc.mNativeObject= 0xb4000072ab0822d0 caller= android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:3085 android.view.ViewRootImpl.relayoutWindow:10224 android.view.ViewRootImpl.performTraversals:4167 android.view.ViewRootImpl.doTraversal:3345 android.view.ViewRootImpl$TraversalRunnable.run:11437 android.view.Choreographer$CallbackRecord.run:1690 android.view.Choreographer$CallbackRecord.run:1699 android.view.Choreographer.doCallbacks:1154 android.view.Choreographer.doFrame:1080 android.view.Choreographer$FrameDisplayEventReceiver.run:1647
update, w= 1440 h= 2988 mName = ViewRootImpl@29db08d[main] mNativeObject= 0xb4000072bb091030 sc.mNativeObject= 0xb4000072ab0822d0 format= -1 caller= android.graphics.BLASTBufferQueue.<init>:89 android.view.ViewRootImpl.updateBlastSurfaceIfNeeded:3085 android.view.ViewRootImpl.relayoutWindow:10224 android.view.ViewRootImpl.performTraversals:4167 android.view.ViewRootImpl.doTraversal:3345 android.view.ViewRootImpl$TraversalRunnable.run:11437
Relayout returned: old=(0,100,1440,3088) new=(0,100,1440,3088) relayoutAsync=false req=(1440,2988)0 dur=11 res=0x403 s={true 0xb40000708b0a28d0} ch=true seqId=0
performConfigurationChange setNightDimText nightDimLevel=0
mThreadedRenderer.initialize() mSurface={isValid=true 0xb40000708b0a28d0} hwInitialized=true
reportNextDraw android.view.ViewRootImpl.performTraversals:4781 android.view.ViewRootImpl.doTraversal:3345 android.view.ViewRootImpl$TraversalRunnable.run:11437 android.view.Choreographer$CallbackRecord.run:1690 android.view.Choreographer$CallbackRecord.run:1699
Setup new sync=wmsSync-ViewRootImpl@29db08d[main]#0
Creating new active sync group ViewRootImpl@29db08d[main]#1
addLocalSync=ViewRootImpl@29db08d[main]#1 to name=wmsSync-ViewRootImpl@29db08d[main]#0, callers=android.window.SurfaceSyncGroup.add:431 android.window.SurfaceSyncGroup.add:392 android.window.SurfaceSyncGroup.add:340 android.view.ViewRootImpl.createSyncIfNeeded:4912 android.view.ViewRootImpl.performTraversals:4796 android.view.ViewRootImpl.doTraversal:3345
registerCallbacksForSync syncBuffer=false
Resizing android.view.ViewRootImpl@c2d16a7: frame = [0,100][1440,3088] reportDraw = true forceLayout = false syncSeqId = -1
Received frameDrawingCallback syncResult=0 frameNum=1.
mWNT: t=0xb40000726b0c7890 mBlastBufferQueue=0xb4000072bb091030 fn= 1 mRenderHdrSdrRatio=1.0 caller= android.view.ViewRootImpl$8.onFrameDraw:13946 android.view.ThreadedRenderer$1.onFrameDraw:792 <bottom of call stack>
Setting up sync and frameCommitCallback
[ViewRootImpl@29db08d[main]#0](f:0,a:0,s:0) onFrameAvailable the first frame is available
Received frameCommittedCallback lastAttemptedDrawFrameNum=1 didProduceBuffer=true
onTransactionReady mName=wmsSync-ViewRootImpl@29db08d[main]#0 callback=247194470
CFMS:: SetUp Pid : 15948    Tid : 16028
reportDrawFinished seqId=0
tagSocket(101) with statsTag=0xffffffff, statsUid=-1
After accept
** Activity (main) Create (first time) **
Compat change id reported: 210923482; UID 10994; state: ENABLED
mReversing is false. Don't call initChildren.
mReversing is false. Don't call initChildren.
mReversing is false. Don't call initChildren.
mReversing is false. Don't call initChildren.
mReversing is false. Don't call initChildren.
mReversing is false. Don't call initChildren.
mReversing is false. Don't call initChildren.
** Activity (main) Resume **
onStateChanged: host=com.tecknow.ar/com.tecknow.ar.main, from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:7279, state=InsetsState: {mDisplayFrame=Rect(0, 0 - 1440, 3088), mDisplayCutout=DisplayCutout{insets=Rect(0, 100 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(683, 0 - 758, 100), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1440 displayHeight=3088 physicalDisplayWidth=1440 physicalDisplayHeight=3088 density={3.75} cutoutSpec={M 0,0 H -10 V 26.66666666666667 H 10 V 0 H 0 Z @dp} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=16, center=Point(16, 16)}, RoundedCorner{position=TopRight, radius=16, center=Point(1424, 16)}, RoundedCorner{position=BottomRight, radius=16, center=Point(1424, 3072)}, RoundedCorner{position=BottomLeft, radius=16, center=Point(16, 3072)}]}  mRoundedCornerFrame=Rect(0, 0 - 1440, 3088), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(0, 0 - 176, 100) rotation=0}, mDisplayShape=DisplayShape{ spec=-311912193 displayWidth=1440 displayHeight=3088 physicalPixelDisplaySizeRatio=1.0 rotation=0 offsetX=0 offsetY=0 scale=1.0}, mSources= { InsetsSource: {ff4d0001 mType=navigationBars mFrame=[0,3028][1440,3088] mVisible=true mFlags=[SUPPRESS_SCRIM]}, InsetsSource: {ff4d0004 mType=systemGestures mFrame=[0,0][120,3088] mVisible=true mFlags=[]}, InsetsSource: {ff4d0005 mType=mandatorySystemGestures mFrame=[0,2960][1440,3088] mVisible=true mFlags=[]}, InsetsSource: {ff4d0006 mType=tappableElement mFrame=[0,0][0,0] mVisible=true mFlags=[]}, InsetsSource: {ff4d0024 mType=systemGestures mFrame=[1320,0][1440,3088] mVisible=true mFlags=[]}, InsetsSource: {3 mType=ime mFrame=[0,0][0,0] mVisible=false mFlags=[]}, InsetsSource: {27 mType=displayCutout mFrame=[0,0][1440,100] mVisible=true mFlags=[]}, InsetsSource: {b250000 mType=statusBars mFrame=[0,0][1440,100] mVisible=true mFlags=[]}, InsetsSource: {b250005 mType=mandatorySystemGestures mFrame=[0,0][1440,148] mVisible=true mFlags=[]}, InsetsSource: {b250006 mType=tappableElement mFrame=[0,0][1440,100] mVisible=true mFlags=[]} }
applyRequestedVisibilityToControl: visible=true, type=navigationBars, host=com.tecknow.ar/com.tecknow.ar.main
controlAnimationUncheckedInner: Added types=statusBars, animType=1, host=com.tecknow.ar/com.tecknow.ar.main, from=android.view.InsetsController.controlAnimationUnchecked:1480 android.view.InsetsController.applyAnimation:2040 android.view.InsetsController.applyAnimation:2003
onStateChanged: host=com.tecknow.ar/com.tecknow.ar.main, from=android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:7266, state=InsetsState: {mDisplayFrame=Rect(0, 0 - 1440, 3088), mDisplayCutout=DisplayCutout{insets=Rect(0, 100 - 0, 0) waterfall=Insets{left=0, top=0, right=0, bottom=0} boundingRect={Bounds=[Rect(0, 0 - 0, 0), Rect(683, 0 - 758, 100), Rect(0, 0 - 0, 0), Rect(0, 0 - 0, 0)]} cutoutPathParserInfo={CutoutPathParserInfo{displayWidth=1440 displayHeight=3088 physicalDisplayWidth=1440 physicalDisplayHeight=3088 density={3.75} cutoutSpec={M 0,0 H -10 V 26.66666666666667 H 10 V 0 H 0 Z @dp} rotation={0} scale={1.0} physicalPixelDisplaySizeRatio={1.0}}}}, mRoundedCorners=RoundedCorners{[RoundedCorner{position=TopLeft, radius=16, center=Point(16, 16)}, RoundedCorner{position=TopRight, radius=16, center=Point(1424, 16)}, RoundedCorner{position=BottomRight, radius=16, center=Point(1424, 3072)}, RoundedCorner{position=BottomLeft, radius=16, center=Point(16, 3072)}]}  mRoundedCornerFrame=Rect(0, 0 - 1440, 3088), mPrivacyIndicatorBounds=PrivacyIndicatorBounds {static bounds=Rect(0, 0 - 176, 100) rotation=0}, mDisplayShape=DisplayShape{ spec=-311912193 displayWidth=1440 displayHeight=3088 physicalPixelDisplaySizeRatio=1.0 rotation=0 offsetX=0 offsetY=0 scale=1.0}, mSources= { InsetsSource: {ff4d0001 mType=navigationBars mFrame=[0,3028][1440,3088] mVisible=true mFlags=[SUPPRESS_SCRIM]}, InsetsSource: {ff4d0004 mType=systemGestures mFrame=[0,0][120,3088] mVisible=true mFlags=[]}, InsetsSource: {ff4d0005 mType=mandatorySystemGestures mFrame=[0,2960][1440,3088] mVisible=true mFlags=[]}, InsetsSource: {ff4d0006 mType=tappableElement mFrame=[0,0][0,0] mVisible=true mFlags=[]}, InsetsSource: {ff4d0024 mType=systemGestures mFrame=[1320,0][1440,3088] mVisible=true mFlags=[]}, InsetsSource: {3 mType=ime mFrame=[0,0][0,0] mVisible=false mFlags=[]}, InsetsSource: {27 mType=displayCutout mFrame=[0,0][1440,100] mVisible=true mFlags=[]}, InsetsSource: {b250000 mType=statusBars mFrame=[0,0][1440,100] mVisible=false mFlags=[]}, InsetsSource: {b250005 mType=mandatorySystemGestures mFrame=[0,0][1440,148] mVisible=true mFlags=[]}, InsetsSource: {b250006 mType=tappableElement mFrame=[0,0][1440,100] mVisible=true mFlags=[]} }
handleResized, msg = 5 frames=ClientWindowFrames{frame=[0,100][1440,3088] display=[0,100][1440,3088] parentFrame=[0,0][0,0]} forceNextWindowRelayout=false displayId=0 dragResizing=false compatScale=1.0 frameChanged=false attachedFrameChanged=false configChanged=false displayChanged=false compatScaleChanged=false
handleResized mSyncSeqId = 0
reportNextDraw android.view.ViewRootImpl.handleResized:2574 android.view.ViewRootImpl.-$$Nest$mhandleResized:0 android.view.ViewRootImpl$ViewRootHandler.handleMessageImpl:7267 android.view.ViewRootImpl$ViewRootHandler.handleMessage:7236 android.os.Handler.dispatchMessage:106
Setup new sync=wmsSync-ViewRootImpl@29db08d[main]#2
Creating new active sync group ViewRootImpl@29db08d[main]#3
addLocalSync=ViewRootImpl@29db08d[main]#3 to name=wmsSync-ViewRootImpl@29db08d[main]#2, callers=android.window.SurfaceSyncGroup.add:431 android.window.SurfaceSyncGroup.add:392 android.window.SurfaceSyncGroup.add:340 android.view.ViewRootImpl.createSyncIfNeeded:4912 android.view.ViewRootImpl.performTraversals:4796 android.view.ViewRootImpl.doTraversal:3345
registerCallbacksForSync syncBuffer=false
Received frameDrawingCallback syncResult=8 frameNum=3.
mWNT: t=0xb40000726b0c1850 mBlastBufferQueue=0xb4000072bb091030 fn= 3 mRenderHdrSdrRatio=1.0 caller= android.view.ViewRootImpl$8.onFrameDraw:13946 android.view.ThreadedRenderer$1.onFrameDraw:792 <bottom of call stack>
Setting up sync and frameCommitCallback
updateAppliedLetterboxDirection, direction=4, Caller=android.view.ViewRootImpl.handleDispatchLetterboxDirectionChanged:14266
Received frameCommittedCallback lastAttemptedDrawFrameNum=3 didProduceBuffer=true
onTransactionReady mName=wmsSync-ViewRootImpl@29db08d[main]#2 callback=10895737
reportDrawFinished seqId=0
handleWindowFocusChanged: 1 0 call from android.view.ViewRootImpl.-$$Nest$mhandleWindowFocusChanged:0
mThreadedRenderer.initializeIfNeeded()#2 mSurface={isValid=true 0xb40000708b0a28d0}
startInputInner - Id : 0
startInputInner - IInputMethodManagerGlobalInvoker.startInputOrWindowGainedFocus
startInputInner - Id : 0
applyRequestedVisibilityToControl: visible=false, type=ime, host=com.tecknow.ar/com.tecknow.ar.main
cancelAnimation: types=statusBars, animType=1, host=com.tecknow.ar/com.tecknow.ar.main, from=android.view.InsetsController.notifyFinished:1783 android.view.InsetsAnimationThreadControlRunner$1.lambda$notifyFinished$0:85 android.view.InsetsAnimationThreadControlRunner$1.$r8$lambda$RAf1SfIREsj9-wH5FOigMy6eLkM:0
 

walterf25

Expert
Licensed User
Longtime User
Are you trying to run my examples, or are you creating your own code?
 

walterf25

Expert
Licensed User
Longtime User
I have updated the library, there were a few changes needed, please check out the new Examples source code, the latest SDK requires Google AR SDK, I have attached the .aar file to the first post, also updated the apk file which should run fine out of the box, please let me know if you come across any issues.

Regards,
Walter
 
The apk example work fine for me , but when I use source code it not work.
I will try new one and thanks a lot for help.
 

walterf25

Expert
Licensed User
Longtime User
The apk example work fine for me , but when I use source code it not work.
I will try new one and thanks a lot for help.
Do you get an error when you run the source code?
 
Cookies are required to use this site. You must accept them to continue using the site. Learn more…