Comments (6)
Does this use the same Qt GUI as desktop? If yes, what version of Qt is required? My recent PR #7 is built against 5.11 but I don't think there's anything newer than 5.8 in there.
from app-labrecorder.
Ubuntu 16.04 still ships 5.6, so I'd rather not use anything newer than that before April 2019.
In the end, we should use whichever version has precompiled binaries for a recent Android toolchain and is preinstalled on the CI systems. I have a couple of changes to liblsl-Java and liblsl-Android that simplify the android builds for liblsl and other cmake projects, after that Qt should - in theory - just work.
from app-labrecorder.
Qt should - in theory - just work.
Ha Ha Ha ..... Ha
Anyways, I put a few days into this. I was able to get it to compile (including Qt).
Using ninja, the latest version (important) of cmake and the android sdk and ndk, I am able to get LabRecorder to compile with
c:\labstreaminglayer\build>cmake .. -G "Ninja" -DQt5_DIR="C:/Qt5.12.0/5.12.0/android_armv7/lib/cmake/Qt5" -DCMAKE_SYSTEM_NAME=Android -DCMAKE_ANDROID_NDK="c:/AndroidStudio/android-sdk/ndk-bundle" -DIS_LITTLE_ENDIAN=TRUE -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a -DCMAKE_ANDROID_NDK_TOOLCHAIN_VERSION=clang -DCMAKE_ANDROID_STL_TYPE=c++_shared -DLSLAPPS_Labrecorder=ON
c:\labstreaminglayer\build>cmake --build . --config Release -target install
I had to remove
if (MINGW)
target_link_libraries (${target} PUBLIC ws2_32 wsock32 winmm)
endif()
from LSL/libllsl/CMakeLists.txt. This should be removed permanently, right? No one should be linking boost libraries anymore.
Older versions of the android ndk fail due to missing features, such as std::to_string and std::make_unique. Older versions of CMake fail because the newest android ndk deprecated a bunch of features
However, this just makes a pile of build products. I still need to build the apk, using androiddeployqt deployment tool, as described by http://doc.qt.io/qt-5/deployment-android.html, with a relatively simple test project at https://github.com/LaurentGomila/qt-android-cmake. I was making good progress adapting Laurent's project to ours, when I started getting very suspicious errors about ndk tools not being there.
I then found this: https://bugreports.qt.io/browse/QTBUG-70650. So, Qt does not yet work with NDK 18.
So, if you're keeping track, with our current source, android apks cannot be built.
I think it is best to wait until Qt fixes the issue to proceed with Qt on Android. NDK 18 is significantly better than previous versions, but in order for that to happen, some features had to get removed.
For now, if Lab Recorder functionality is needed on Android, the developer would need to make a Java wrapper around some sort of Lab Recorder library. Is someone currently building such a library?
from app-labrecorder.
For now, if Lab Recorder functionality is needed on Android, the developer would need to make a Java wrapper around some sort of Lab Recorder library. Is someone currently building such a library?
Tristan and I are not in agreement of what this library should look like.
I hope I'm not misrepresenting him, but I think he's of the opinion that the library-consuming client application should do quite a bit, including handling the data, handling the arrival of new streams, using signals and slots, etc.
I'm of the opinion that the library should do just about everything and the client should do as little as possible, maybe limited to things like get_list_of_stream_identifiers(*stream_ids, *stream_strings)
, set_stream_recording_status(stream_id, on_or_off)
, get_likely_filename(some, params)
, start_recording(filename)
, stop_recording()
, get_recorder_status(*state_struct)
. The client will never touch the data or know for sure the data are being recorded; it only knows what the state_struct tells it and only when it asks for that info.
Tristan doesn't like my approach because it's not responsive to errors and because it'll make debugging difficult.
The reason I don't like Tristan's approach is because it will require repeating a lot of functionality for each implementation. The list of implementations that we feel are necessary are C++, Python, Java, maybe something for iOS, and I think there was a good reason to have C# but I can't remember right now.
from app-labrecorder.
If you both want me to I can adjudicate this dispute, I can, but I'd need catch up on the details of the competing designs, starting with a list of desired features and use cases. We talked about it a bit in Delmenhorst, but I haven't been in the loop since then.
In other news, I was wrong about Qt being incompatible with ndk 18. That issue was actually closed. I'm now able to build and install the LabRecorder apk. It crashes on lsl_resolve_all, but progress.
from app-labrecorder.
This should be removed permanently, right? No one should be linking boost libraries anymore.
One of the guys in Delmenhorst tried the latest MinGW and it was still needed, but it might be needed by lslboost, not liblsl. Filed in sccn/liblsl#14
Older versions of the android ndk fail due to missing features, such as std::to_string and std::make_unique. Older versions of CMake fail because the newest android ndk deprecated a bunch of features
And newer versions fail because Asio uses then experimental features that have already been moved to the regular headers. I've upgraded lslboost to 1.69 so NDK19 should work have one showstopper less.
I hope I'm not misrepresenting him, but I think he's of the opinion that the library-consuming client application should do quite a bit, including handling the data, handling the arrival of new streams, using signals and slots, etc.
That sums it up quite well. I've created a separate issue for that discussion.
from app-labrecorder.
Related Issues (20)
- Timestamps of Kinect recording is different from other streams HOT 3
- How does LSL log time_stamps HOT 22
- Does not install on MacOS HOT 1
- The readme claims the Windows release includes all needed dependencies but the Visual Studio runtime is not included HOT 1
- LabRecorder quit unexpectedly - MacBook Pro 2022 (M2) HOT 4
- Code only run when "yes" in the eye tracking box
- LabRecorder crashed while closing the file; saved XDF cannot be read by load_xdf HOT 1
- can we prevent spacebar from stopping a recording? HOT 4
- Can't open Labrecorder on M1 Mac HOT 3
- Setting `PathTemplate` in the configurations file unsets other fields
- all streams selected using RCS HOT 2
- LSL Playback HOT 3
- LabRecorder from version 1.16.0 not working with Presentation LSL streams HOT 16
- MacOS .app fails to run due to bad RPATH HOT 7
- LabRecorder (LSL?) Record with different timestamps from different OS:es HOT 4
- Support for 22.04 LTS HOT 4
- Bug in which LabRecorder does not record data if the file name ends with a space HOT 4
- RequiredStreams fails for streams with whitespace
- Data conversion HOT 2
- Multiple streams with same name HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from app-labrecorder.