Log in or register to post comments

Nexus S Compatibility

December 15, 2010 - 12:59pm #1

Hey,

I'm planning on picking up a Nexus S tomorrow, but am wondering if there will be any compatibility issues with the AR SDK, as it uses the Hummingbird instead of Snapdragon. Any ideas?

Re: Nexus S Compatibility

January 21, 2011 - 11:05am #18

There shouldn't be... Have you changed the structure of the initialization code at all?

If you could also send me your Java code (or better yet, a zip of the full project) it would be helpful.

- Kim

Re: Nexus S Compatibility

January 21, 2011 - 7:50am #17

Yes I have and it seems to work fine.
Are there any race conditions in the imagetargets example?

Rob.

Re: Nexus S Compatibility

January 21, 2011 - 7:01am #16

Could you send us your code? The email address is

Unfortunately I don't have a Nexus S for testing, so the turn around on a solution might be longer than usual. I can at least glance through the code and see if there are any red flags though.

Also, have you tested the standard ImageTargets example on your Nexus S?

- Kim

Re: Nexus S Compatibility

January 21, 2011 - 6:55am #15

Thanks for that.
It was doing a bit of openGL work for some reason (code that just didn't need to exist). I got rid of that and it still works fine on N1 but not NS.

Re: Nexus S Compatibility

January 21, 2011 - 6:25am #14

What does the initTexturesNative method do? If it's doing any OpenGL work, you need to make sure it is called from the GLThread. The initApplicationAR method is not the right place to do this.

If you look at the ImageTargets sample code you can see that the textures aren't initialized in OpenGL until the initRendering function is called from the ImageTargetsRenderer class. This is a safe point to use the OpenGL context.

- Kim

Re: Nexus S Compatibility

January 21, 2011 - 6:10am #13
W/dalvikvm(  473):              in Lcom/qualcomm/QCARSamples/ImageTargets/ImageTargets;.initTexturesNative ()V (CallObjectMethodV)
I/dalvikvm(  473): "main" prio=5 tid=1 NATIVE
I/dalvikvm(  473):   | group="main" sCount=0 dsCount=0 obj=0x4001f188 self=0xce70
I/dalvikvm(  473):   | sysTid=473 nice=0 sched=0/0 cgrp=default handle=-1345006528
I/dalvikvm(  473):   at com.qualcomm.QCARSamples.ImageTargets.ImageTargets.initTexturesNative(Native Method)
I/dalvikvm(  473):   at com.qualcomm.QCARSamples.ImageTargets.ImageTargets.initApplicationAR(ImageTargets.java:1057)
I/dalvikvm(  473):   at com.qualcomm.QCARSamples.ImageTargets.ImageTargets.updateApplicationStatus(ImageTargets.java:802)
I/dalvikvm(  473):   at com.qualcomm.QCARSamples.ImageTargets.ImageTargets.access$4(ImageTargets.java:760)
I/dalvikvm(  473):   at com.qualcomm.QCARSamples.ImageTargets.ImageTargets$InitQCARTask.onPostExecute(ImageTargets.java:211)
I/dalvikvm(  473):   at com.qualcomm.QCARSamples.ImageTargets.ImageTargets$InitQCARTask.onPostExecute(ImageTargets.java:1)
I/dalvikvm(  473):   at android.os.AsyncTask.finish(AsyncTask.java:417)
I/dalvikvm(  473):   at android.os.AsyncTask.access$300(AsyncTask.java:127)
I/dalvikvm(  473):   at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
I/dalvikvm(  473):   at android.os.Handler.dispatchMessage(Handler.java:99)
I/dalvikvm(  473):   at android.os.Looper.loop(Looper.java:123)
I/dalvikvm(  473):   at android.app.ActivityThread.main(ActivityThread.java:3647)
I/dalvikvm(  473):   at java.lang.reflect.Method.invokeNative(Native Method)
I/dalvikvm(  473):   at java.lang.reflect.Method.invoke(Method.java:507)
I/dalvikvm(  473):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
I/dalvikvm(  473):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
I/dalvikvm(  473):   at dalvik.system.NativeStart.main(Native Method)
I/dalvikvm(  473): 
E/dalvikvm(  473): VM aborting
I/DEBUG   (   72): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG   (   72): Build fingerprint: 'generic/aad_crespo/crespo:2.3/GRH55/eng.johnathan.white.20110115.162229:eng/test-keys'
I/DEBUG   (   72): pid: 473, tid: 473  >>> com.qualcomm.QCARSamples.ImageTargets <<<
I/DEBUG   (   72): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadd00d
I/DEBUG   (   72):  r0 fffffe7c  r1 deadd00d  r2 00000026  r3 00000000
I/DEBUG   (   72):  r4 aca9f608  r5 002c16d0  r6 4232970c  r7 405195d0
I/DEBUG   (   72):  r8 bec7740c  r9 4214cd14  10 4214ccfc  fp aca9f368
I/DEBUG   (   72):  ip aca9f714  sp bec773a8  lr afd1925d  pc aca40220  cpsr 20000030
I/DEBUG   (   72):  d0  74726f6261204d69  d1  617453657669746e
I/DEBUG   (   72):  d2  4965746f67795a67  d3  6874654d2474690a
I/DEBUG   (   72):  d4  677261546567616d  d5  74696e695f737465
I/DEBUG   (   72):  d6  746163696c707041  d7  766974614e6e6f69
I/DEBUG   (   72):  d8  0000000000000000  d9  0000000000000000
I/DEBUG   (   72):  d10 0000000000000000  d11 0000000000000000
I/DEBUG   (   72):  d12 0000000000000000  d13 0000000000000000
I/DEBUG   (   72):  d14 0000000000000000  d15 0000000000000000
I/DEBUG   (   72):  d16 04a8c00004a74000  d17 04abc00004aa4000
I/DEBUG   (   72):  d18 04aec00004ad4000  d19 04b1c00004b04000
I/DEBUG   (   72):  d20 000c0000000c0000  d21 000c0000000c0000
I/DEBUG   (   72):  d22 0000000100000001  d23 0000000100000001
I/DEBUG   (   72):  d24 128b04a3128504a2  d25 129704a6129104a5
I/DEBUG   (   72):  d26 1273049d126d049c  d27 127f04a01279049f
I/DEBUG   (   72):  d28 128b000012850000  d29 1297000012910000
I/DEBUG   (   72):  d30 12730000126d0000  d31 127f000012790000
I/DEBUG   (   72):  scr 60000012
I/DEBUG   (   72): 
I/DEBUG   (   72):          #00  pc 00040220  /system/lib/libdvm.so
I/DEBUG   (   72):          #01  pc 000315cc  /system/lib/libdvm.so
I/DEBUG   (   72):          #02  pc 00032382  /system/lib/libdvm.so
I/DEBUG   (   72):          #03  pc 0003a6c0  /system/lib/libdvm.so
I/DEBUG   (   72):          #04  pc 00002754  /data/data/com.qualcomm.QCARSamples.ImageTargets/lib/libImageTargets.so
I/DEBUG   (   72):          #05  pc 00002d64  /data/data/com.qualcomm.QCARSamples.ImageTargets/lib/libImageTargets.so
I/DEBUG   (   72):          #06  pc 00011df4  /system/lib/libdvm.so
I/DEBUG   (   72):          #07  pc 00043680  /system/lib/libdvm.so
I/DEBUG   (   72):          #08  pc 0003c204  /system/lib/libdvm.so
I/DEBUG   (   72):          #09  pc 00048e72  /system/lib/libdvm.so
I/DEBUG   (   72):          #10  pc 00016ff4  /system/lib/libdvm.so
I/DEBUG   (   72):          #11  pc 0001c0a4  /system/lib/libdvm.so
I/DEBUG   (   72):          #12  pc 0001af9c  /system/lib/libdvm.so
I/DEBUG   (   72):          #13  pc 00059e1e  /system/lib/libdvm.so
I/DEBUG   (   72):          #14  pc 00061ba2  /system/lib/libdvm.so
I/DEBUG   (   72):          #15  pc 00016ff4  /system/lib/libdvm.so
I/DEBUG   (   72):          #16  pc 0001c0a4  /system/lib/libdvm.so
I/DEBUG   (   72):          #17  pc 0001af9c  /system/lib/libdvm.so
I/DEBUG   (   72):          #18  pc 00059c7c  /system/lib/libdvm.so
I/DEBUG   (   72):          #19  pc 0004612a  /system/lib/libdvm.so
I/DEBUG   (   72):          #20  pc 00038fba  /system/lib/libdvm.so
I/DEBUG   (   72):          #21  pc 0003d1ae  /system/lib/libandroid_runtime.so
I/DEBUG   (   72):          #22  pc 0003e05a  /system/lib/libandroid_runtime.so
I/DEBUG   (   72):          #23  pc 00008cca  /system/bin/app_process
I/DEBUG   (   72):          #24  pc 00014b9e  /system/lib/libc.so
I/DEBUG   (   72): 
I/DEBUG   (   72): code around pc:
I/DEBUG   (   72): aca40200 447a4479 f7d14c0b 2000e982 ea86f7d1 
I/DEBUG   (   72): aca40210 447c4809 6bdb5823 4798b103 22264902 
I/DEBUG   (   72): aca40220 f7d1700a bf00eaee deadd00d 0004399f 
I/DEBUG   (   72): aca40230 0004555d 0005f3f2 fffffe7c 4b09b40e 
I/DEBUG   (   72): aca40240 4c09b517 aa05447b f852591b 6b5b1b04 
I/DEBUG   (   72): 
I/DEBUG   (   72): code around lr:
I/DEBUG   (   72): afd1923c 4a0e4b0d e92d447b 589c41f0 26004680 
I/DEBUG   (   72): afd1924c 686768a5 f9b5e006 b113300c 47c04628 
I/DEBUG   (   72): afd1925c 35544306 37fff117 6824d5f5 d1ef2c00 
I/DEBUG   (   72): afd1926c e8bd4630 bf0081f0 000282c0 ffffff88 
I/DEBUG   (   72): afd1927c b086b570 f602fb01 9004460c a804a901 
I/DEBUG   (   72): 
I/DEBUG   (   72): stack:
I/DEBUG   (   72):     bec77368  afd42664  
I/DEBUG   (   72):     bec7736c  000a64c8  
I/DEBUG   (   72):     bec77370  00000015  
I/DEBUG   (   72):     bec77374  afd18305  /system/lib/libc.so
I/DEBUG   (   72):     bec77378  afd4270c  
I/DEBUG   (   72):     bec7737c  afd426b8  
I/DEBUG   (   72):     bec77380  00000000  
I/DEBUG   (   72):     bec77384  afd1925d  /system/lib/libc.so
I/DEBUG   (   72):     bec77388  0005f3f2  
I/DEBUG   (   72):     bec7738c  002c16d0  
I/DEBUG   (   72):     bec77390  4232970c  
I/DEBUG   (   72):     bec77394  405195d0  
I/DEBUG   (   72):     bec77398  bec7740c  
I/DEBUG   (   72):     bec7739c  afd18335  /system/lib/libc.so
I/DEBUG   (   72):     bec773a0  df002777  
I/DEBUG   (   72):     bec773a4  e3a070ad  
I/DEBUG   (   72): #00 bec773a8  4232970c  
I/DEBUG   (   72):     bec773ac  aca315d1  /system/lib/libdvm.so
I/DEBUG   (   72): #01 bec773b0  4232970c  
I/DEBUG   (   72):     bec773b4  aca32387  /system/lib/libdvm.so
I/DEBUG   (   72): debuggerd committing suicide to free the zombie!
I/BootReceiver(  107): Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)
I/DEBUG   (  484): debuggerd: Jan 15 2011 16:37:34
D/dalvikvm(  107): GC_FOR_MALLOC freed 843K, 48% free 4344K/8199K, external 1625K/2137K, paused 31ms
I/dalvikvm-heap(  107): Grow heap (frag case) to 8.507MB for 138224-byte allocation
E/InputDispatcher(  107): channel '406ca708 com.qualcomm.QCARSamples.ImageTargets/com.qualcomm.QCARSamples.ImageTargets.ImageTargets (server)' ~ Consumer closed input channel or an error occurred.  events=0x8
E/InputDispatcher(  107): channel '406ca708 com.qualcomm.QCARSamples.ImageTargets/com.qualcomm.QCARSamples.ImageTargets.ImageTargets (server)' ~ Channel is unrecoverably broken and will be disposed!
D/Zygote  (   74): Process 473 terminated by signal (11)
D/dalvikvm(  107): GC_FOR_MALLOC freed 0K, 47% free 4479K/8391K, external 1625K/2137K, paused 24ms
I/ActivityManager(  107): Process com.qualcomm.QCARSamples.ImageTargets (pid 473) has died.
I/WindowManager(  107): WIN DEATH: Window{406ca708 com.qualcomm.QCARSamples.ImageTargets/com.qualcomm.QCARSamples.ImageTargets.ImageTargets paused=false}
W/GpsLocationProvider(  107): Unneeded remove listener for uid 1000
D/dalvikvm(  107): GC_FOR_MALLOC freed 206K, 49% free 4356K/8391K, external 1625K/2137K, paused 24ms
I/WindowManager(  107): Setting rotation to 0, animFlags=1
I/ActivityManager(  107): Config changed: { scale=1.0 imsi=234/15 loc=en_GB touch=3 keys=1/1/2 nav=1/1 orien=1 layout=34 uiMode=17 seq=7}

That's the rest of what was sent to me.
InitTexturesNative is just initApplicationNative
Also on another Nexus S the code runs but textures are not applied to objects. On he N1 with code exactly the same it does run.
Does the NS support opengl in the same way?

Thanks.

Re: Nexus S Compatibility

January 21, 2011 - 5:38am #12

Hmm, this is just a warning though, I'd be surprised if it was causing any real issues. Can you send us more of the log?

Also, is the initTexturesNative function yours? I don't believe that is included in the samples... Make sure your JNI call in native matches your method signature in Java :)

Also, make sure that your Nexus S is connected to the internet before running your application.

- Kim

Re: Nexus S Compatibility

January 21, 2011 - 3:04am #11

I seem to be having some issues with the Nexus S.
Code that works on the Nexus One doesn't seem to run on the NS.
Any thoughts?

Error Log:

JNI WARNING: expected return type 'L'
              calling Lcom/qualcomm/QCARSamples/ImageTargets/ImageTargets;.getTextureCount ()I
              in Lcom/qualcomm/QCARSamples/ImageTargets/ImageTargets;.initTexturesNative ()V (CallObjectMethodV)

It's plain to see that getTextureCount is expecting a return type I, not L.
Although the next method is expecting a return type L...

Like I say, this all works on N1.

Rob.

Re: Nexus S Compatibility

January 12, 2011 - 9:15am #10

Thanks Kim that answers all my questions.

Re: Nexus S Compatibility

January 12, 2011 - 5:55am #9

Look at the samples that come with SDK 0.10.0. In ImageTargets.java, for instance, there is code to handle the two possible error cases:

QCAR.INIT_DEVICE_NOT_SUPPORTED
QCAR.INIT_CANNOT_DOWNLOAD_DEVICE_SETTINGS

The second one will be returned when there is no internet connection. The application will continue to try contacting our server on consecutive runs.

We carefully calibrate each device for AR use, and these optimizations go a long way towards making the AR experience as smooth as possible on each device. Using the server model here means that your applications get new optimizations, and new device support, automatically, without having to rebuild against a new version of the SDK each time.

- Kim

Re: Nexus S Compatibility

January 12, 2011 - 4:27am #8

Hey,

Does the QCAR SDK/APP fail silently when no internet connection is available the first time the app runs or intialisation return failure allowing for activity to provide suitable notification?

Out of interest what kind of information is required per hw platform for QCAR that it can't get locally from APIs?

Thanks,

Lee

Re: Nexus S Compatibility

January 11, 2011 - 10:31am #7

No, there isn't a new version of the SDK to install. Device support is handled by our servers, and your application will download a new set of supported settings automatically. Be sure that your device is online the first time you run your application.

- Kim

Re: Nexus S Compatibility

January 11, 2011 - 1:32am #6

Does this mean having to re-install a newer version of the SDK?

Re: Nexus S Compatibility

January 10, 2011 - 5:37am #5

Yes, support for Unity is added at the same time, assuming that Unity itself works with the device.

- Kim

Re: Nexus S Compatibility

January 10, 2011 - 1:46am #4

Great! Thanks! Does the Unity extension reflect this yet??

- Aron

Re: Nexus S Compatibility

January 7, 2011 - 10:59am #3

Good news, the Nexus S is now supported! Let us know if you have any issues.

- Kim

Re: Nexus S Compatibility

December 15, 2010 - 2:44pm #2

The Nexus S will most likely not work with the QCAR SDK at this time. Support for this device will probably come early next year.

- Kim

Log in or register to post comments