Access Android sensors via NDK

16,723

Solution 1

I have taken a look at sensor.h, and the API looks very promising; however, a little howto on how to deal with the ASensorEventQueue and ASensorEventQueue_hasEvents and so forth would be -extremely- useful.

Ha! Update:

This looks a code example for what you want to do.

http://developer.android.com/reference/android/app/NativeActivity.html

Solution 2

Since Android SDK version 9 (for Android > 2.2) it seems to be possible to use the sensors via NDK.

See the STABLE_APIS.html file included in the docs. (Search for "sensor.h"). A mirror of that file is here.

Solution 3

Example from google https://github.com/googlesamples/android-ndk/tree/master/sensor-graph.Their code allow you controll SENSOR_REFRESH_RATE_HZ for the accelerometer.Written on c++ and connected to java code through the NDK.

Solution 4

I have recently worked on a pure C sensor application for android. Using NDK, you can access the sensors on the device without using Java. Check : https://github.com/PromiseMasango/sensor. Check : https://github.com/PromiseMasango/Android-NDK-sensor-example.

Share:
16,723
MQS
Author by

MQS

Updated on June 04, 2022

Comments

  • MQS
    MQS almost 2 years

    I need read about 100 samples per second off the accelerometer on a Android, and at a fixed sample rate. The current sensormanager does or offers neither.

    I've read Need to read android sensors really fast

    He seems to have access to the driver code which made his life easier.

    I am curious if anyone has been able to do something like this through the NDK w/o that type of knowledge.

    Thanks in advance!

  • ransh
    ransh over 7 years
    it works, but using accelerometer keeps a wakelock and prevents suspend mode. Does it make sense ?
  • ransh
    ransh over 7 years
    it works, but using accelerometer keeps a wakelock and prevents suspend mode. Does it make sense ?
  • ThunderWiring
    ThunderWiring about 3 years
    i noticed that you read only 50 events/samples, how can we change that to continuously read? i tried replacing it with infinite loop, but it blocks the main thread basically, and putting this loop in a code, i crashed my app on ALooper_pollAll: No looper for this thread! error.