Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. Mobile and Embedded
  4. Problem when passing an array as a paramater from QtC++ to Java
Forum Updated to NodeBB v4.3 + New Features

Problem when passing an array as a paramater from QtC++ to Java

Scheduled Pinned Locked Moved Unsolved Mobile and Embedded
1 Posts 1 Posters 363 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • carles.sole.grauC Offline
    carles.sole.grauC Offline
    carles.sole.grau
    wrote on last edited by
    #1

    Hello everybody,
    I'm trying to pass an int array from QTC++ code to a Java function. My code is:

    C++:

    (...)
    int pattern[] = {1901, 4453, 625, 1614, 625, 1588, 625, 1614, 625, 442, 625, 442, 625,
                        468, 625, 442, 625, 494, 572, 1614, 625, 1588, 625, 1614, 625, 494, 572, 442, 651,
                        442, 625, 442, 625, 442, 625, 1614, 625, 1588, 651, 1588, 625, 442, 625, 494, 598,
                        442, 625, 442, 625, 520, 572, 442, 625, 442, 625, 442, 651, 1588, 625, 1614, 625,
                        1588, 625, 1614, 625, 1588, 625, 48958};
    
    #ifdef Q_OS_ANDROID
        QtAndroid::runOnAndroidThread([=]() {
            QAndroidJniObject::callStaticMethod<void>("cat/selrac/IrManager",
                                                               "sendIrFrame",
                                                               "(I[I)V",
                                                                carrierFrequency,
                                                                pattern);
         });
    #endif
    (...)
    

    Java:

        public static void sendIrFrame(int carrierFrequency, int[] pattern)
        {        
            if( mCIR.hasIrEmitter())
            {  
                mCIR.transmit(carrierFrequency, pattern);
            }
        }
    

    The code compiles OK and I could run the application on my Android Device, but when I execute this part of code the app crashes and this messages appear in the console:

    W/dalvikvm(32419): Invalid indirect reference 0x66e7dc8c in decodeIndirectRef
    I/dalvikvm(32419): "main" prio=5 tid=1 RUNNABLE
    I/dalvikvm(32419):   | group="main" sCount=0 dsCount=0 obj=0x41dc3ea0 self=0x41db1ff0
    I/dalvikvm(32419):   | sysTid=32419 nice=0 sched=0/0 cgrp=apps handle=1073971540
    I/dalvikvm(32419):   | state=R schedstat=( 0 0 0 ) utm=176 stm=95 core=0
    I/dalvikvm(32419):   at cat.selrac.IrManager.sendIrFrame(IrManager.java:-1)
    I/dalvikvm(32419):   at org.qtproject.qt5.android.QtNative.runPendingCppRunnables(Native Method)
    I/dalvikvm(32419):   at org.qtproject.qt5.android.QtNative$1.run(QtNative.java:102)
    I/dalvikvm(32419):   at android.os.Handler.handleCallback(Handler.java:733)
    I/dalvikvm(32419):   at android.os.Handler.dispatchMessage(Handler.java:95)
    I/dalvikvm(32419):   at android.os.Looper.loop(Looper.java:146)
    I/dalvikvm(32419):   at android.app.ActivityThread.main(ActivityThread.java:5593)
    I/dalvikvm(32419):   at java.lang.reflect.Method.invokeNative(Native Method)
    I/dalvikvm(32419):   at java.lang.reflect.Method.invoke(Method.java:515)
    I/dalvikvm(32419):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1283)
    I/dalvikvm(32419):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1099)
    I/dalvikvm(32419):   at dalvik.system.NativeStart.main(Native Method)
    I/dalvikvm(32419):
    E/dalvikvm(32419): VM aborting
    F/libc    (32419): Fatal signal 6 (SIGABRT) at 0x00007ea3 (code=-6), thread 32419 (cat.selrac)
    I/DEBUG   (27858): pid: 32419, tid: 32419, name: cat.selrac  >>> cat.selrac <<<
    I/DEBUG   (27858): !@dumpstate -k -t -z -d -o /data/log/dumpstate_app_native -m 32419
    D/CrashAnrDetector(  743): pid: 32419, tid: 32419, name: cat.selrac  >>> cat.selrac <<<
    I/ActivityManager(  743): Process cat.selrac (pid 32419) (adj 9) has died.
    D/Zygote  (  192): Process 32419 terminated by signal (6)
    

    Has anyone knows if I'm doing something wrong?

    Thank you very much.

    1 Reply Last reply
    0

    • Login

    • Login or register to search.
    • First post
      Last post
    0
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    • Get Qt Extensions
    • Unsolved