I know I can get the proximity state from UIDeviceProximityStateDidChangeNotification, but what I'm really after is a distance measurement. Does anyone know of a way to do that, preferably without accessing private methods?
This questions is similar - Measure distance from an iPhone to an Object using proximity sensor but is nearly 5 years old.
I think that as far as I know it's not possible. It's only possible to know if there's something near or not (bool - true or false).
Thanks it helps.
Related
hi I want to get the acceleration of my iPhone but I dont want the acceleration values to change when the iPhone is tilted.
and I think the answer is the userAcceleration.
but I don't know how to get the userAcceleration values.
I know that I have to use the core motion and use the CMdeviceMotion but i don't know how to initialize and set it up.
I know this question was asked awhile ago, but I'm hoping I can provide some interesting perspective if you're still interested.
userAcceleration will provide watered-down (not raw) data comprised of sets of acceleration & gyroscopic information. You can get the raw acceleration data from CMMotionManager with the method -accelerometerData:
Unfortunately, the purpose of the accelerometer on the iOS device is to determine movement and orientation in a 3-dimensional axis: X, Y and Z coordinates. The iOS system doesn't differentiate between "tilting" and "movement" - they're one in the same. I don't know what purpose you have for divvying out the too, but that's what's laid out in the CoreMotion framework for us.
In iphone, I want to calculate the distance from the camera to the subject.
I was wondering maybe iphone camera's "Active Auto Focus" provide me the distance to the subject (point of interest)??
many thanks in advance.
p.s. guys if you think it is not possible plz let me know ;)
As far as I'm aware, it's not possible - see here for more info on what you can and can't do. You can tell when the camera is autofocusing, but nothing more.
I'm sure there is probably some more info you can get on focus/distance using a private API call - but unless you're not worried about getting on the App Store, it's not really an option.
That doesn't mean there's not another way though. Looks like a good discussion on the topic here: Distance using OpenCV (you can compile openCV for iOS!)
I've been investigating the ability of the camera to measure short distances and not finding anything yet I came up with this shot in the dark. I haven't tried it yet, but the docs make me think this might work:
Create and configure an AVCaptureDevice representing the camera
Through the AVCaptureSession, capture the AVCaptureStillImageOutput
From the AVCaptureStillImageOutput object check the Exif properties for kCGImagePropertyExifSubjectDistance
Love to hear if anyone has been able to use a methodology like this to be able to make accurate (less than 1 foot) distance measurements.
Yeah, I'm currently wondering about this.
In my use case the devices will be 50cm to 10m apart and I'd like it to be accurate to at least 10 cm. (Therefore GPS is not an option)
2 Ways spring to mind:
Sound: I asked about this in the dev forums and I'm in contact with laanlabs, about the code of their sonar ruler.
Picture on one device + Camera on the other: Seems easier to set up, since my user case involves the user facing one device at 90 degrees anyway. But it would be more work for the user to face the camero into the direction and it would not react to a change in distance.
Now the question: Is anyone aware of any code that does something like this already? Possibly a non-iPhone general c-Project?
Method with camera: we already know size for each device. You take a picture of device, calculate it's height/width to determine type of device (iPhone/iPod or iPad), than calculate a distance.
For example - if device is iPhone you know, that its size is 115x58 mm. On picture it NxM pixels. Now you can calculate the distance. (If N & M smaller hence distance is larger)
If you were to use the sound method one approach would be to have device A emit a sound, device B would then be listening for this at all times and on detection echo back a secondary sound. This would give you a round-trip time from which you could calculate distance - don't forget to compensate for latency between detection re-emission as well.
I am not sure about but this is what i found from one of the answers in this previous SO question How to measure distance between two iphone devices using bluetooth?
Using bluetooth for localization is a very well known research field . The short answer is: you can't. Signal strength isn't a good indicator of distance between two connected bluetooth devices, because it is too much subject to environment condition (is there a person between the devices? How is the owner holding his/her device? Is there a wall? Are there any RF reflecting surfaces?). Using bluetooth you can at best obtain a distance resolution of few meters, but you can't calculate the direction, not even roughly.
You may obtain better results by using multiple bluetooth devices and triangulating the various signal strength, but even in this case it's hard to be more accurate than few meters in your estimates.
I am working in an AR project, and we want to manipulate the focusing distance of the iPhone4 camera. Is this even possible? So far, we've found just toggling and auto focusing as options listed here : http://developer.apple.com/library/ios/#documentation/AVFoundation/Reference/AVCaptureDevice_Class/Reference/Reference.html%23//apple_ref/occ/instm/AVCaptureDevice/isAdjustingFocus
Thanks in advance for any tips! :)
Regarding the API it seems that the only supported actions are:
- check if AF is supported on the device (iPhones 3GS an 4 only I think)
- enable/disable AF
- set the point-of-interest that is NOT the distance, but only a point in the camera view.
Certainly not what you want to do.
Might be supported in private API... but that would not pass the validation process.
A workaround might be to see how much pixels move as the user shifts slightly, to get a sense of how distant some parts of the image are, and then set the AF point to a region of the image either closer or further based on that.
But, also file a Radar ticket requesting access to specify the focus distance if possible - if enough people ask Apple will add it to the API.
I know that it's mostly "approximate".
But, I must know the EXACT location of the phone, regardless of battery life or whatever.
I need the exact location of the phone! Is it possible?
It depends on what you mean by exact!
Any location technology will have a level of accuracy and much of this depends on the hardware your using. Mil spec GPS will cost a lot more than the chipset in your iPhone and use a lot more power too.
The best I've managed to get using the browser with iPhone 3GS GPS in wide open space is +/-17m
Usually its best to design you application around this for example most turn by turn sat-nav assumes you must be on a road and correct the location for this.
Uncertainty principle says no.
Define 'exact' and then we'll tell you. If it doesn't move and you've got a month, then better than a millimeter is probably possible (they track earthquake faults this way). But if it's moving, or doesn't have a good view of the sky, then it's not going to work nearly so well. And the math to do long-term averaging is pretty heavy going.
From the point of view of fundamental physics this question is meaningless. No physical measurement can ever be EXACT. There is ALWAYS a tolerance. Even if you went back to your national datum point and surveyed your position back to the point in question there will be errors in the measurements taken that will result in a non exact position.
If you then put your device on the ground - where on the device are you measuring to - the top left corner, the intersection of the diagonals across the device, the antenna position...?
"Regardless of battery life" - are you implying that the position measurement must occur in the absence of power?
Look into fine GPS location in the location API's(on Android)...that's the most "exact" you're gonna get. If you get a good GPS lock it'll probably be <10 meters. I just tested while in my house and got <5 meters.