Thoughts on Java files and forward compatibility?
Lauri Laanmets
lauri.laanmets at proekspert.ee
Wed Jul 6 09:51:13 CEST 2011
Hi
I have used .jar files and in that case DexClassLoader definitely needs
the temp folder - it starts even whining when the exact sub folder
doesn't exist. Since there will be several .dex files (IMHO) I guess we
need to keep them in .jar. I'll try to use the cache, thanxs.
About the Thread - that's a tricky one, yes. Current android Qt app runs
in a separate (clean) thread and that by default doesn't have the
Android Looper prepared. And that's actually OK because looper can be
used only if it creates the event loop itself. IMHO we should use the
android app glue (like in the "native-activity" sample in NDK without
ANY java files) and port the QApplication.exec into Android event
looper. But of course I don't know much about that and maybe I'm totally
wrong - excuse me if I am.
So my problem was while executing
"BluetoothAdapter.getDefaultAdapter()". Somewhere in the Android
library, it needs to create a Handler and that execution must be in the
main UI thread and not in the Qt thread. So I had no other option than
to implement a general JNIRunnable so that I can register a C++ function
into it and pass it on to the main Activity to be executed. It works :)
The only trouble is that I'm not in control WHEN Android chooses to
execute it. So I have to block everything for a short time in Qt
Bluetooth API. It's OK for me but I'm a bit reluctant on releasing such
a library.
Regards
Lauri Laanmets
On 6.07.2011 8:55, BogDan wrote:
> Hi Lauri,
>
>
> AFAIK that folder is not used, I recommend you to use getCacheDir( ) [1].
>
> Regarding the error, I think you are trying to create that object from Qt thread,
> you should use UI thread for that job.
>
> Cheers,
> BogDan.
>
> [1] http://developer.android.com/reference/android/content/Context.html#getCacheDir()
>
>
> P.S. Sorry for the slow replay.
>
>
> ----- Original Message -----
>> From: Lauri Laanmets<lauri.laanmets at proekspert.ee>
>> To: BogDan<bog_dan_ro at yahoo.com>
>> Cc: necessitas-devel at kde.org
>> Sent: Tuesday, July 5, 2011 2:11 AM
>> Subject: Re: Thoughts on Java files and forward compatibility?
>>
>> Evening
>>
>> I see... ok, having .jar files in ministro folder is ok but the DexClassLoader
>> also needs a "temp" folder. Any ideas where to direct that?
>>
>> I made a prototype of generic JNIBroadcastReceiver, one can just inherit and
>> implement "onReceive" function, have a look if interested:
>> https://qt.gitorious.org/~pcspets/qt-mobility/proekspert-android-qt-mobility/commit/c5820d506b35e0e1b1bff8a4839899c01ab2722f
>>
>>
>> And I also need help, I keep getting the following error, any experience?:
>>
>> W/dalvikvm( 1513): threadid=15: thread exiting with uncaught exception
>> (group=0x4001e390)
>> E/AndroidRuntime( 1513): Uncaught handler: thread Thread-11 exiting due to
>> uncaught exception
>> E/AndroidRuntime( 1513): java.lang.RuntimeException: Can't create handler
>> inside thread that has not called Looper.prepare()
>> E/AndroidRuntime( 1513): at
>> android.os.Handler.<init>(Handler.java:121)
>> E/AndroidRuntime( 1513): at
>> android.bluetooth.BluetoothAdapter$1.<init>(BluetoothAdapter.java:807)
>> E/AndroidRuntime( 1513): at
>> android.bluetooth.BluetoothAdapter.<init>(BluetoothAdapter.java:806)
>> E/AndroidRuntime( 1513): at
>> android.bluetooth.BluetoothAdapter.getDefaultAdapter(BluetoothAdapter.java:298)
>> E/AndroidRuntime( 1513): at dalvik.system.NativeStart.run(Native Method)
>>
>> Lauri
>>
>>
>>
>> ----- Original Message -----
>> I know that class, the "problem" now is to redesign the current Java
>> part :)
>> Because the java which will be shipped with your application should be
>> VERY small and VERY stable, it should only search for Ministro and create
>> the main activity. The rest of java should be loaded from Ministro's
>> repository.
>>
More information about the Necessitas-devel
mailing list