This kind of discussion should be on android-platform or
android-frameworks.  You are way way way outside the bounds of the SDK. :)

On Wed, Feb 4, 2009 at 8:03 PM, Chris Clark <[email protected]> wrote:

> I tried posting this question to the Android Internals mailing list, but
> that list seems to be inactive...
>
> Goal: I am trying to gain access to raw camera data on the G1 from native
> code (JNI C++) so that I can do real time image processing on camera frames
> at 15 fps. This will not work in the Java API because it takes too long for
> the camera preview callback to load the data.
>
> Setup: I am using the CodeSourcery C++ cross-compilation toolchain for ARM
> development on Windows. I include the relevant header files from the Android
> source code and create a shared library object using the following commands
> (my project name is flow):
>
> arm-none-linux-gnueabi-g++ -I"C:\Program Files\Java\jdk1.6.0_11\include"
>  -I"C:\Program Files\Java\jdk1.6.0_11\include\linux"
>  -I"C:\Program
> Files\Eclipse\SDK\android-sdk-windows-1.0_r2\source\core\include"
>  -I"C:\Program
> Files\Eclipse\SDK\android-sdk-windows-1.0_r2\source\base\include"
>  -I"C:\Program Files\Eclipse\SDK\android-sdk-windows-1.0_r2\source\msm7k"
>  -I"C:\Program
> Files\Eclipse\SDK\android-sdk-windows-1.0_r2\source\base\camera\libcameraservice"
>  -I"C:\Program
> Files\Eclipse\SDK\android-sdk-windows-1.0_r2\source\common\include"
>  -fpic -c flow.c
>
> arm-none-linux-gnueabi-ld
>  --dynamic-linker /system/bin/linker -nostdlib -I /system/bin/linker
>  -rpath-link /system/lib
>  -L"C:\Program Files\CodeSourcery\Sourcery G++
> Lite\arm-none-linux-gnueabi\lib\ldscripts" -L.
>  -shared -o libflow.so flow.o
>  -z now @minlibs.inc
>
> where minlibs.inc contains:
>  -lcameraservice -lcamera -lui -lpixelflinger -lhardware -lgps -lcorecg
> -lOmxH264Dec -lutils
>  -lqcamera -lwpa_client -lnetutils -lcutils -lrpc -llog -lz -lstdc++ -lm
> -lc -ldl
>
> In order to link, I pulled copies of all the libraries in the /system/lib
> folder on the device to my computer. Then I take this shared library object
> and copy it to the resource directory of my Java Android project in Eclipse.
> This Android activity uses System.load() to load my shared object and then I
> call the functions in the shared object from Java by standard JNI.
>
> What works: I am able to run activities on the phone that call JNI
> functions which contain calls to Android functions. For example, I was able
> to write a message to the log and call android::CameraService::instantiate()
> and see the log messages in the ddms debugger.
>
> Problem: The camera libraries that I would like to interface with are using
> a template class sp. A function I want to use returns type:
> android::sp<android::CameraHardwareInterface>. As soon as I declare a
> variable of this type, the constructor and destructor are required. Despite
> lengthy efforts, I have not been able to get a program to run that contains
> this type declaration. The code builds and links fine on my computer,
> without warnings, but the Activity crashes immediately upon execution and
> the ddms debugger just says that my shared object is "not found" whenever
> this type declaration is present. I do not know how to get any more detailed
> debug messages from the dynamic linker.
>
> What I've tried: I made a batch file that scans through all the libraries
> using arm-none-linux-gnueabi-nm -C -D to find the symbols needed to declare
> this type. I believe that my minlibs.inc file contains all necessary
> libraries, however I am not sure. The code for the constructor and
> destructor of sp is directly in the header files that I have included and
> the only functions they reference are incStrong and decStrong, which are
> found in libutils.so, which I have linked to. I also sorted the relevant
> libraries based on dependencies obtained using
> arm-none-linux-gnueabi-objdump -p as can be seen in the minlibs.inc file
> above. I also tried using an alternate constructor by passing in a null
> pointer:
>
>  android::QualcommCameraHardware *qcam = NULL;
>  android::sp<android::CameraHardwareInterface> cam(qcam);
>  //android::sp<android::CameraHardwareInterface> cam;
>
> My C++ function really only contains these lines, a call to
> __android_log_write, and return.
>
> Question: Any ideas on how to get this to run without crashing?
>
>
> >
>


-- 
Dianne Hackborn
Android framework engineer
[email protected]

Note: please don't send private questions to me, as I don't have time to
provide private support.  All such questions should be posted on public
forums, where I and others can see and answer them.

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to