I am using Note 3 (rooted) and I used Adjustable Torch [ROOT] - Android Apps on Google Play to adjust lighting power of flash light. Can you help me answer some below questions:
How to know value of brightness of flash on default camera (some
people said that I can find it in file on android system folder, but
I cannot find)
When I use Adjustable Torch to change value of flash, how to know value of brightness.
My purpose is to compare 2 values and find the suitable value of brightness (lower is better) to calculate heart rate using camera.
Thank you!
Related
Assuming I have a new Android phone with a wide-angle back lens that can record with its native Camera App at Full-View mode (so we utilize the sensor as much as possible to not miss any visual information). Assume that the phone can even do that at 60FPS (I guess there are such phones but if not, please correct me).
The question is: Do you think that one could achieve the same footage (maybe using the NDK or CameraX) but at lower resolutions? I mean, keep the Full-View (because I do not want to crop the scene), but just lower proportionally the XY resolution. Is this something that is supported? Or are the settings offered by the native Apps the only possible options that a 3rd party developer can have?
If this can be achieved, how can one identify and use the Camera capabilities to set this up? (i.e. Full-View, Max FPS available for that Full-View and a resolution lower than 0.3MP shaped to that Full-View). Code example is more than welcome.
I am working on a simple mobile app that controls the camera from phone. I am interested to take pictures with custom shutter speed. UP to 30 second exposures are easily controlled by setting the shutter speed via API, however longer exposures require use of BULB mode.
Is there way take a picture with BULB mode from the Camera Remote API?
This seems to be a blocker for some use cases i.e. extended bracketing and some weird forms of time-lapse that I want to shoot.
PS I am struggling with few more topics - setting metering mode (spot, center, multi), setting white balance tint (green - purple axis as opposed to temperature yellow - blue). Is there way to control these parameters?
Sorry, none of those are supported in the API currently.
White balance is supported in the current API for QX series and Alpha cameras like A7, NEX-5000, RX100 MIII, however I don't believe tint axis is controllable.
Version 4 of the Camera Remote Application now supports a lot of new functions. Some of those include:
Bulb
Continuous
RAW, movie file download and deleting contents from the SD card
It seems metering mode and the actual metering result is still unavailable. The white balance still only exposes temperature (yellow/blue) and no tint(green/magenta).
These are described in the camera remote API SDK v.2.20 https://developer.sony.com/downloads/all/sony-camera-remote-api-beta-sdk/
Thank you Sony folks
In android camera i am able to set the exposure compensation and lock the camera to minimum using the given methods
params = mCamera.getParameters();
params.setExposureCompensation(params.getMinExposureCompensation());
params.setAutoExposureLock(true);
but still this is not the minimum exposure. In the program i do it by pointing the camera to a bright light source and then lock the camera exposure on click of a button. This is however not a good method. Is there any other way to reduce the exposure to absolute minimum?
Latest update : Ios 8 supports better minimum exposure compensation
Both S5 and Nexus S use Qualcomm Snapdragon. You can find the code of its HAL in AOSP. You can modify this code to allow lower manual exposure levels. You don't even need to make changes on kernel level.
No, there is no easier way to do it - neither in Java nor using NDK.
I guess that using a torch the way you described it may be automated (let SW decide when to lock exposure, instead of a button), and will work for a wider range of devices, and don't need replacing system libraries.
I know how to get a lux value from the light sensor using android.hardware.sensor.
I saw light meter tools on the market. The application description said it can get the lux value from the camera. How can it do that?
Also how can I set the shutter speed and the aperture?
The android camera API doesn't provide any absolute units for the image data it captures. In addition, it does not allow for manual control of exposure or aperture (although essentially all cell phone cameras have no adjustable aperture anyway).
You can find out what exposure time used for a still capture from the JPEG EXIF, but that's about it.
Because of those limitations, you'll have a hard time getting an absolute light measurement from a captured camera image. You may be able to calibrate a given device to convert from image pixel value to true light level, but it'll be complicated since all devices run auto-exposure and auto-white-balance. Using auto-exposure and auto-white-balance locks introduced in Android 4.0 will help a bit, but there's still an unknown conversion curve between lux and a captured pixel value (not just a scale factor, it's a gamma curve).
Take a look at the Camera.Parameters class.
It has all functions supported by the Camera. Probably setExposureCompensation.
I don't know much about photography but my guess would be that exposure compensation is changing aperture or speed.
It could be that the tool you mentioned is using a bundled native library. Also have a look at how the functions given in Camera.Parameters class work (check android source code).
you can also use Ambient light sensor to get the light level in lux units (if this is within the scope of your project). From android documentation:
Sensor.TYPE_LIGHT:
values[0]: Ambient light level in SI lux units
Android Developer: Light Sensor-Sensor Event
You can find more information about the light sensor in the documentation.
Android Developer: Sensor
Agree, the trick is taking the picture and read its EXIF data.
You can find more about ExifInterface docs
http://developer.android.com/reference/android/media/ExifInterface.html
Depending iso and aperture values, then you can calculate the shuyy
I'm trying to find out if there is any infrared source in view of the camera on an android device. (Namely a infrared LED)
Since the camera captures infrared light (I can see the LEDs light up in the preview/pictures) I thought it should be somehow possible to find out if the camera is currently capturing infrared signals, but as the IR 'color' is somehow translated to visible colors (purple like), it's apparently not as easy as just finding out if there is any purple in the picture as it might be real purple not infrared.
The Android reference tells me I can get the picture in different image formats (YCbCr, YUV ,...) but none of these formats seem to be of much help.
Now my idea is, to somehow get the "original" data from the camera, that still includes the information on what is infrared and what not or to basicaly revert the infrared to visible light conversion that apparently happens automatically in the background. Any idea on how I might achive that?
Good question, If I take the remote control for HI-FI or TV and I press the Volume up / down, than I can get the IR light source for the Nexus One camera: it is visible a light purple color flashing. So the Nexus One has IR camera :)
Digital cameras use CCD and other similar sensors to capture infrared
images. Although all digital cameras available on the market are
sensitive to infrared light, they are equipped with infrared-blocking
filters. The main reason for this is that consumer cameras are
designed to capture visible light. But sometimes these filters are
used together, giving very interesting in-camera effects like false
color, wood effects etc. To start with infrared photography, all you
need to have is A digital camera that is sensitive to infrared light.
A visible-light blocking filter (e.g. a Wratten 89B filter)
Image-editing software, such as Photoshop.
http://www.smashingmagazine.com/2009/01/11/40-incredible-near-infrared-photos/
I wrote a very-very simple online radio player. Has an asynchronous call with Media Player. Some devices are playing some not, and different mode. From my sad experience with the simple Madia Player you will have to write like 5 versions to get working in a few devices. Audio-Video has added, removed features from each manufacturer: Samsung, Sony Ericsson, Motorola and you just wonder why doesn't work your code on THAT device if is platform independent Java...
I think to get the original data from camera it would be possible via NDK, but didn't tested.
It provides headers and libraries that allow you to build activities,
handle user input, use hardware sensors, access application resources,
and more, when programming in C or C++
http://developer.android.com/sdk/ndk/index.html
If somebody found a solution using SDK and working with 2 different phone manufacturers please let me know!
My friend only way to find out infrared source in android not relying on color codes
because color spaces are only created for visible lights so no use for invisible light registered inside the sensor as a rgb value even though it happened
logically color space values are only meaningful for visible light.
and color space values are not really created to represent the wavelengths out of our visible range.
there is no correct way to interpret visible color space values such as rgb yuv as infrared unless you know the exact camera sensor detail white papers and tested the sensor with multiple highly accurate filters for each specific wavelengths this is so over kill for and app.
to keep things simple use external external infrared filter for specific wavelengths
and remove the filter inside the phone or tablet camera if you can physically modify
other way around use known model of web cam and remove the filter on top of the sensor and use external filters to protect the sensor from UV light and so on.