2013年11月7日 星期四

Build OpenNI apk in Ubuntu shell

You should have AndroidManifest.xml in the APK root first and use the following command to generate build.xml

~/ADT/android-sdk-linux/tools/android update project --target android-18 -p .
Now you can build

 ant debug/release -Dsdk.dir=/home/stevenchiu/ADT/android-sdk-linux/

Easy~

To run OpenNI Simple Viewer wth Kinect in BeagleBone Black Android

 1. Build OpenNI
git clone git://github.com/OpenNI/OpenNI
git checkout -b 1.5.4.0 Unstable-1.5.4.0
 checkout to tag 1.5.4.0, only this tag works for me
cd Platform/Android/jni
${NDK_ROOT}/ndk-build
 You have to define your NDK_ROOT of course. I use NDK r7

 If you encountered cpu_set_t can not be recognized in  NiSkeletonBenchmark.cpp, simply ignore this behaviour

 -#if (XN_PLATFORM != XN_PLATFORM_MACOSX)       
+#if (XN_PLATFORM != XN_PLATFORM_MACOSX && XN_PLATFORM != XN_PLATFORM_ANDROID_ARM)      ^M
     //we want out benchmark application will be running only on one CPU core
     cpu_set_t mask;



 2. Build SensorKinect 
export NDK_MODULE_PATH=/path/to/openni/Platform/Android/jni
git clone git://github.com/avin2/SensorKinect.git
git checkout -b unstable origin/unstable
cd Platform/Android/jni
${NDK_ROOT}/ndk-build

 3. Upload your libraries and binary to Android
    Now we have to upload the libraries located in Platform/Android/libs/armeabi-v7a/*.so to android /system/libs. We have to upload OpenNI libraries first and then SensorKinect since some libraries should be replaced according to the HW.


i.e. Kinect in this case.
    
    Please remember to upload the Sample-SimpleRead binary to /system/bin/



 4. Mount USBFS to grant USB device permission
   mount -o devmode=0666 -t usbfs none /proc/bus/usb


 5. Push xmls to /Data/ni
     adb push SamplesConfig.xml /Data/ni
      adb push modules /Data/ni
      adb push GlobalDefaultskinect.ini /Data/ni
      adb push License.xml /Data/ni

6. Run Sample-Read under /Data/ni
    You should be able to see the middle point and frame rate

#Trouble shooting
    USB open fail => sudo rmmod  gpsca_kinect