[HTC EVO 3D] Cabe24i:
I see what you are saying, but these sort of comments seem go against the idea of a development thread. Maybe he's a developer that just wants a better idea so he can help out. I'd rather have 100pages of technical information than 30 pages of images, flaming and other off-topic crap (including this post I'm making right now) in this thread.

These are more of the kind of posts that are needed. To expand on this a little bit, read up about libraries at http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html. This will give you a bit of an idea of what these libraries do. Without the correct libraries you can't tell the camera what to do. Since libs reference parts of the kernel for various functions, if you have the wrong version libs (say, libs from Android 2.3 on Android 4.0) then the calls they make to get certain functions done then they drop out with an error.

Think of this exchange when trying to use android 2.3 libs with 4.0

camapp > let's take a picture, I'll tell the os to 'init.camera'

os > got request to 'init.camera', libs, your turn!

libs > attempting to init.camera on request of OS originally from camapp, calling 'init.hardware.camera' from kernel

kernel > got init.hardware.camera call, I don't know what to do with it? HELP! ERROROUT!

libs > got error from kernel, ahhhhhh! *die*

os > hey, this didn't work, force close camapp!

Obviously, this is not exactly what occurs, but kind of gives you the idea. In this example the kernel doesn't know what 'init.hardware' was because since the last kernel version, it's been changed to 'init.camera.hardware.'

Keep in mind, I could be way off, its been over a decade since I've done any sort of kernel/driver coding so I'm going off really old and probably bad memories.

As for what it takes? Well, since the libs for the camera are closed sourced then you must either wait for updated drivers to arrive or reverse-engineer the existing drivers. One way is to check communication between the libs and the kernel on the last known working version, from there you can modify the kernel in your newer version to understand the calls from the older libs. This makes your kernel majorly incompatible with a number of other things though. Another way people get around this is by making a wrapper that interprets the commands from the libs to the kernel. Basically going like this libs > [init.1] > wrapper > [1.init] > kernel - in this example, the wrapper turns init.1 into 1.init, which the kernel understands.

Also to get an idea of how android works with apps, framework, libs and the kernel, check this link.

This issue has nothing to do with 3D phones themselves, this issue resides in all phones. With the exception of the Nexus line; most all drivers are closed source. Touchscreen, camera, audio, wimax, wifi and just about any other device on our phones require these sort of drivers and most manufacturers are not keen about releasing their secrets. This issue exists with Motorola, Sony, HTC, Samsung, Pantec and any other android phone out there.

---------- Post added at 03:24 PM ---------- Previous post was at 03:18 PM ----------

Indeed, CDMA is a big enough hit as it is since it limits development to north american users. 3D and WiMax adds more complexity on top of that. Basic camera might seem like its an issue because of 3D but I think its just the closed source drivers issue since I've seen many AOSP ICS roms on other phones that lack camera support as well. From all that I've read, in 2D mode our camera isn't all that much different than the sensation cam.