Sensor library for Android
Moderator: Moderators
Sensor library for Android
I'm pleased to announce the ZGESensor shared library used to handle sensors for Android applications. For details, downloads, demo and code see http://code.google.com/p/zgesensor/.
I tested the library on Nexus 7, ZTE Blade II and HTC One V; everything works fine.
Ville, if you think it is useful, you can include the ZGESensor library definition file and menu item to standard ZGE distribution. Its definition is in the demo project.
I tested the library on Nexus 7, ZTE Blade II and HTC One V; everything works fine.
Ville, if you think it is useful, you can include the ZGESensor library definition file and menu item to standard ZGE distribution. Its definition is in the demo project.
FYI a small howto description is available here.
Any comments to implementation, usage, documentation, demo(s), etc. are welcome. I would appreciate if you can test ZGESensor library also on other devices to be sure it works properly.
I plan to implement more demos and games soon.
Any comments to implementation, usage, documentation, demo(s), etc. are welcome. I would appreciate if you can test ZGESensor library also on other devices to be sure it works properly.
I plan to implement more demos and games soon.
- jph_wacheski
- Posts: 1005
- Joined: Sat Feb 16, 2008 8:10 pm
- Location: Canada
- Contact:
Wow, this is excellent!
I will see what type of game I can knock out quickly,. I find I spent too much time on some things never getting them 'done',. perhaps a self imposed crunch-time will work.
Nice work Rado, seems to work very well here indeed. I did not even know these devices had all this sci-fi gear in-built! I will report any thing interesting that I happen to find while working with it.
I will see what type of game I can knock out quickly,. I find I spent too much time on some things never getting them 'done',. perhaps a self imposed crunch-time will work.
Nice work Rado, seems to work very well here indeed. I did not even know these devices had all this sci-fi gear in-built! I will report any thing interesting that I happen to find while working with it.
iterationGAMES.com
I just committed v1.1 of ZGESensor library. Download it from here. The latest changes include:
- Function sensorGetData was divided to sensorGetData1, sensorGetData3 and sensorGetData4 with different numbers of parameters for different sensor types.
- Added demo project #2 for rotation vector sensor. This is a variant of the RotationVectorDemo from Android SDK samples implemented in ZGE.
- Updated ZExternalLibrary and ZGE demo projects accordingly.
Vile, please include the latest version of ZExternalLibrary for ZGESensor to ZGE. Thanks.
- Function sensorGetData was divided to sensorGetData1, sensorGetData3 and sensorGetData4 with different numbers of parameters for different sensor types.
- Added demo project #2 for rotation vector sensor. This is a variant of the RotationVectorDemo from Android SDK samples implemented in ZGE.
- Updated ZExternalLibrary and ZGE demo projects accordingly.
Vile, please include the latest version of ZExternalLibrary for ZGESensor to ZGE. Thanks.
After painful learning and experiments with JNI, version 1.2 of the ZGESensor library was produced; it is available here. It includes:
- Added function getDisplayRotation; this is necessary for creating device-independent, sensor-aware applications
- Added JNI_OnLoad function to obtain display rotation from SDK
- Removed sensorUpdateData function; sensor data is updated automatically in a callback
- Added optional logging to logcat (switched off by default)
- Updated demo projects to handle device's display rotation
To be able to access Android SDK functions by JNI, I had to update the ZGEActivity.java; see the attachment. Without this change, accessing of non-static methods and fields of objects from running ZGE instance is impossible. This change is inevitable for any library which uses JNI, not just ZGESensor.
Ville, could you please add the updated version of ZGEActivity.java and ZGESensor ZExternalLibrary to official distribution? Thanks.
- Added function getDisplayRotation; this is necessary for creating device-independent, sensor-aware applications
- Added JNI_OnLoad function to obtain display rotation from SDK
- Removed sensorUpdateData function; sensor data is updated automatically in a callback
- Added optional logging to logcat (switched off by default)
- Updated demo projects to handle device's display rotation
To be able to access Android SDK functions by JNI, I had to update the ZGEActivity.java; see the attachment. Without this change, accessing of non-static methods and fields of objects from running ZGE instance is impossible. This change is inevitable for any library which uses JNI, not just ZGESensor.
Ville, could you please add the updated version of ZGEActivity.java and ZGESensor ZExternalLibrary to official distribution? Thanks.
- Attachments
-
- ZgeActivity.zip
- Updated ZgeActivity.java
- (1.24 KiB) Downloaded 1200 times
Last edited by Rado1 on Sun Mar 24, 2013 2:40 pm, edited 1 time in total.
Good job Rado1, I know JNI coding can be very frustrating
I've added the source file and also the latest library definitions to my local files and will commit to Google code.
This is the first time I try the demo projects. Sensor demo 2 works here, but demo 1 crashes and gives the following log:
I've added the source file and also the latest library definitions to my local files and will commit to Google code.
This is the first time I try the demo projects. Sensor demo 2 works here, but demo 1 crashes and gives the following log:
E/ZgeAndroid(20238): glEnableVertexAttribArray
E/ZgeAndroid(20238): glVertexAttribPointer
E/ZgeAndroid(20238): sensorUpdateData
E/ZgeAndroid(20238): sensorUpdateData
E/ZgeAndroid(20238): sensorUpdateData
V/Sensors ( 482): int poll__setDelay(sensors_poll_device_t*, int, int64_t)
V/Sensors ( 482): int sensors_poll_context_t::setDelay(int, int64_t)
V/Sensors ( 482): setDelay - sensor Accelerometer (handle 4), rate 200 ms (5.00 Hz)
W/InputDispatcher( 482): channel '41fdfca0 com.rado1.SensorDemo1/org.zgameeditor.ZgeActivity (server)' ~ Consumer closed input channel or an error occurred.
vents=0x8
E/InputDispatcher( 482): channel '41fdfca0 com.rado1.SensorDemo1/org.zgameeditor.ZgeActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
I/ActivityManager( 482): Process com.rado1.SensorDemo1 (pid 20238) has died.
W/ActivityManager( 482): Force removing ActivityRecord{41456b88 com.rado1.SensorDemo1/org.zgameeditor.ZgeActivity}: app died, no saved state
V/Sensors ( 482): int poll__activate(sensors_poll_device_t*, int, int)
V/Sensors ( 482): int sensors_poll_context_t::activate(int, int)
E/Sensors ( 482): switch lsensor off OK!
V/Sensors ( 482): int poll__setDelay(sensors_poll_device_t*, int, int64_t)
V/Sensors ( 482): int sensors_poll_context_t::setDelay(int, int64_t)
W/InputDispatcher( 482): Attempted to unregister already unregistered input channel '41fdfca0 com.rado1.SensorDemo1/org.zgameeditor.ZgeActivity (server)'
I/WindowManager( 482): WIN DEATH: Window{42172e18 SurfaceView paused=false}
I/WindowManager( 482): WIN DEATH: Window{41fdfca0 com.rado1.SensorDemo1/org.zgameeditor.ZgeActivity paused=false}
D/memalloc( 231): ion: Freeing buffer base:0x43a40000 size:1011712 fd:68
D/memalloc( 231): ion: Unmapping buffer base:0x43a40000 size:1011712
I/Adreno200-EGLSUB( 872): <ConfigWindowMatch:2212>: Format RGBA_8888.
I/WindowManager( 482): WINDOW DIED Window{41fdfca0 com.rado1.SensorDemo1/org.zgameeditor.ZgeActivity paused=false}
Hi Ville, are you sure you used the latest version of the Demo 1 project and ZGESensor library? The function sensorUpdateData was removed and is not called from the projects. However, I forget to remove it also from ZExternalLibrary (I'm going to do it now). Can it be the problem?VilleK wrote:This is the first time I try the demo projects. Sensor demo 2 works here, but demo 1 crashes
Last edited by Rado1 on Sun Mar 24, 2013 2:59 pm, edited 1 time in total.
New sensor demo #3 shows usage of rotation vector sensor to move a player in a 3D space.
Rotate the screen to rotate the camera view, touch right side of the screen with a single finger to move forward, left side of the screen to move backward, and touch the screen with three fingers to regenerate the scene and reset player's position.
And now imagine 3D maze, physics, things to collect, enemies to avoid and destruct, ... wouldn't it be nice? I'm going to create a game like this.
The demo was tested on Nexus 7 and ZTE Blade II, but does not work on devices without rotation vector sensor, e.g., HTC One V or ARCHOS 80 G9 I tried.
Could you please try it also on your devices? Any comments are welcome. Have a fun!
Rotate the screen to rotate the camera view, touch right side of the screen with a single finger to move forward, left side of the screen to move backward, and touch the screen with three fingers to regenerate the scene and reset player's position.
And now imagine 3D maze, physics, things to collect, enemies to avoid and destruct, ... wouldn't it be nice? I'm going to create a game like this.
The demo was tested on Nexus 7 and ZTE Blade II, but does not work on devices without rotation vector sensor, e.g., HTC One V or ARCHOS 80 G9 I tried.
Could you please try it also on your devices? Any comments are welcome. Have a fun!
- Attachments
-
- screenshot
- screenshot.jpg (132.28 KiB) Viewed 37171 times
Probably this is not matter of frame update, but precision of sensors on your device. The used rotation vector sensor is a virtual (software) sensor which takes information from accelerometer, geomagnetic field, and gyroscope sensors. If any of them is missing or imprecise, rotation vector can have problems. The demo works smoothly on newer devices, such as Nexus 7 or ASUS Transformer Pad TF300.VilleK wrote:Also frame update interval is slightly sluggish. Even though Fps is around 60. Is this because of the sensors not updating more often on my device?
- jph_wacheski
- Posts: 1005
- Joined: Sat Feb 16, 2008 8:10 pm
- Location: Canada
- Contact:
Here is a little demo using the original version of the this,. I have to update my ZGE and this library to the latest,. as currently this is dependent on the screen orientation when you start,. that is if the controls are inverted (strange) just exit the app, flip your device and start it again.
I am hoping with this update I can implement it so gravity will be relative to the position of yourdevice when you start the game,. as currently down is towards the center of the earth, meaning you must be sitting upright to play,. fine for playing while taking a dump, but no good when lying down,. .
again, I get too involved in rendering/sound design to bother finishing the gameplay, so this is very simple so far. (although I think i can make it more interesting)
I am hoping with this update I can implement it so gravity will be relative to the position of yourdevice when you start the game,. as currently down is towards the center of the earth, meaning you must be sitting upright to play,. fine for playing while taking a dump, but no good when lying down,. .
again, I get too involved in rendering/sound design to bother finishing the gameplay, so this is very simple so far. (although I think i can make it more interesting)
- Attachments
-
- SwampGas-debug.zip
- .apk file in a zip folder,. .
- (818.92 KiB) Downloaded 1180 times
iterationGAMES.com