take a picture with android ndk - camera api

Yes. It is necessary to go through Java. Since NDK access will be specific to particular hardware.

Inspite there are few realizations through NDK.

Check the following links for relevant details.

http://nhenze.net/?p=253

http://osdir.com/ml/android-ndk/2010-10/msg00518.html


In Android 7 (API 24) Google has added support for native camera access (Camera2 API).

In ndk-r12:

  • Headers:

    1. $NDK_ROOT/android-24/$ARCH/usr/include/camera/Ndk*.h
    2. $NDK_ROOT/android-24/$ARCH/usr/include/media/Image*.h
  • Libs:

    1. libcamera2ndk.so
    2. libmediandk.so

Post Android 7 or API version 24 : Camera 2 APIs are possible not just in Java space but in the native(NDK/C++) space too. This article give you all the details with code.


1) There was an access to Camera.h in older releases like Froyo, 2.3.3.

Now, I see a Camera.h in KitKat, 4.4.4. It changed completely.

This is an unofficial API, so it's subject to change. Be ready to code and deploy different versions for different Android releases.

2) There is a Camera component in OpenMAX. People managed to create an OpenMAX recorder for Raspbery Pi. I yet have to find a working solution for Android.

These two questions are unanswered:

  • OpenMAX recorder on Android
  • Access camera via OpenMAX in Android

and I'm going to try OpenMAX.

3) We ran into an Android device where video4linux2 works (one can access /dev/video0).