iPhone Proximity Sensor

后端 未结 13 1718
感动是毒
感动是毒 2020-12-01 00:47

Can the iPhone SDK take advantage of the iPhone\'s proximity sensors? If so, why hasn\'t anyone taken advantage of them? I could picture a few decent uses.

For examp

相关标签:
13条回答
  • 2020-12-01 01:25

    Just to update, this is possible.

    device = [UIDevice currentDevice];
    
    // Turn on proximity monitoring
    [device setProximityMonitoringEnabled:YES];
    
    // To determine if proximity monitoring is available, attempt to enable it.
    // If the value of the proximityMonitoringEnabled property remains NO, proximity
    // monitoring is not available.
    
    // Detect whether device supports proximity monitoring
    proxySupported = [device isProximityMonitoringEnabled];
    
    // Register for proximity notifications
    [notificationCenter addObserver:self selector:@selector(proximityChanged:) name:UIDeviceProximityStateDidChangeNotification object:device];
    

    As benzado points out, you can use:

    // Returns a BOOL, YES if device is proximate
    [device proximityState];
    
    0 讨论(0)
  • 2020-12-01 01:26

    To turn the screen off it's conceivable that more than one sensors is used to figure out if the screen should be turned off or not. The IR proximity sensor described by Cryptognome in conjunction with the Touch screen sensor described by Peter Wone could work out if the iphone is being held close to your face (or something else with a slight electric charge) or if its just very close to something in-animate.

    0 讨论(0)
  • 2020-12-01 01:31

    Those proximity sensors are basically a matrix of conductors. The vertical "wires" are tracks on one side of a thin sheet of insulator, the horizontal ones are on the other side. The intersections function as capacitors. Your finger carries an electrostatic charge, so capacitance of each junction varies with proximity. FETs amplify the signal and biasing sets a threshold. In practice the circuit is more complex than that because it has to detect a relative change and reject noise.

    But anyway, what the sensor grid tells you is that a field effect has been sensed, and that field effect is characteristic of object about the size of a fingertip and resting on the surface of the display. The centroid of the capacitive disturbance is computed (probably by hardware) and the coordinates are (presumably) reported as numbers on a port most likely brought to the attention of the device OS by an interrupt. In something as sexy as an iPhone there's probably a buffer of the last dozen or so positions so it can work out direction and speed. Probably these are also computed by hardware and presented as numbers on the same port.

    0 讨论(0)
  • 2020-12-01 01:33

    Assuming you mean the sensor that shuts off the screen when you hold it to your ear, I'm pretty sure that is just an infrared sensor inside the ear speaker. If you start the phone app (you don't have to be making a call) and hold something to cast a shadow over the ear speaker, you can make the display shut off.

    When you asked this question it was not accessible via the public API. You can now access the sensor's state via UIDevice's proximityState property. However, it wouldn't be that useful for games, since it is only an on/off thing, not a near/far measure. Plus, it's only available on the iPhone and not the iPod touch.

    0 讨论(0)
  • 2020-12-01 01:33

    Evidently the proximity sensor will never turn on if the status bar is in landscape orientation. i.e. if you call: [UIApplication sharedApplication].statusBarOrientation = UIInterfaceOrientationLandscapeLeft; You will no longer get proximity:ON notifications. This definitely happens on OS 3.0, I can't test it on a 2.X device since I don't have one with a proximity sensor. This seems like a bug. answered Jul 22 '09 at 5:49 Kevin Lambert


    I've encoutered this problem too. It took me a long time to figure out the real reason of why the proximity sensor is not working. When orientation is UIInterfaceOrientationLandscapeLeft or UIInterfaceOrientationLandscapeRight, proximity sensor does not work; while in portrait mode it works well. My iPhone is iPhone 4S (iOS SDK 5.0).

    0 讨论(0)
  • 2020-12-01 01:34

    There's a lot of confusion between the proximity sensor and the ambient light sensor. The iPhone has both. The Touch does not have a proximity sensor, making it a poor choice for user input. It would be a bad idea anyway since Apple isn't obligated to locate it in the same place in future devices; you aren't supposed to know or care where it is.

    The proximity sensor works by pulsing an infrared LED and measuring the amount of reflectance. You can see this using your iSight camera (most digital cameras are sensitive to IR.) Just launch Photo Booth, initiate a call (or play a voicemail) on the phone and point it at your iSight camera. Note the flashing light next to the earpiece; cover it with your finger and the screen will go black.

    The ambient light sensor's API is evidently private at this point.

    0 讨论(0)
提交回复
热议问题