i am making an Android Shapefile reader app on Android with the use of NDK. I want to use C++ to parse shape files. I found library "Shapefile C Library". Github: https://github.com/sw897/shapelib.
I am using Android studio and have no idea how to import it to my Android project so i could use functions described in: http://shapelib.maptools.org/shp_api.html
Any tips?
First, start hacking away at the Hello-JNI example from Google: https://github.com/googlesamples/android-ndk/tree/master/hello-jni
Use that as a test bed.
Then, create a Java Class with
public native
methods that let you interact with your library. Something of a high level API, probably to pass a file name or buffer to SHPOpenLL and return a pointer to the ShapeFile context (ShapeHandle
). Looks like your library is written in C, so you should be able to write a similar interface to query the shapefile passing a (jint) c-style cast of yourShapeHandle
pointer.Next, you need to play around with
javah
to generate the header for your shapefile interface. Once the header is generated, you can use it to implement your interface in a .cc file. From there you will basically make Java calls to your C interface and it will return jobjects. (jint, jbool, jstring, etc...)I'm looking at the ShapeLib that you want to use and while it's easy enough, there will be some gotchas.
C
side. However, you might be tempted to query these parameters from theSHPObject
one at a time. Will be slow, but less error prone.E.g.