I am developing an application in C++ on a 3650 that needs to exhibit behaviour similar to that of the prepackaged 'Camera' that comes with the Nokia 3650. I'd like to copy the way that it shows the user what the camera is currently aimed at - like a live video stream from the camera.
The only way I've been able to do this is by grabbing frame after frame in low quality from the camera and displaying them using CWindowGc's DrawBitmap functions. I cant see this being the most efficient way of displaying what the camera is seeing in near real time. Does anyone know of a better way ?
Then when the user tells my application to 'snap' the image I switch the camera server to high quality images for just one frame and save that frame. Once the save completes the application goes back to grabbing low resolution images and displaying them. This works for a couple of successive 'snaps' but even sometimes after just 1 or 2 snaps the GetImage function on RCameraServ returns a TRequestStatus of KErrTimedOut. Does anyone know what this is caused by ? I can't see it being the camera going to sleep because I am constantly grabbing those low resolution images to display to the user. It might be because of the rapid switch between the image qualities but I am having difficulty proving or disproving this theory.
I have had a look at the various example applications available on the nokia forum regarding use of a devices camera but none answer this question and none are affected by the same symptoms I am experiencing.
For anyone who is interested I was working on a prototype version of the 3650 at the time I started this thread post which might have caused the timing out.
Anyway, the only way I managed to fix this was to keep resetting the phones idle time in my main loop after each frame grab. I do this with this function :
Hope this works for you if you are experiencing similar problems. This seems to keep the camera awake because it the system never thinks the user has been inactive for more than a few milliseconds. One side effect of this is that the backlight stays on luckily in my app that is what I wanted