This plugin provides access to the device's (IR) proximity sensor. This sensor is typically used in applications to prevent touch events on the screen when the device is held close to one's face.
cordova plugin add https://github.com/awoken-well/cordova-plugin-proximity.git
- iOS
- Android
- navigator.proximity.getProximityState
- navigator.proximity.enableSensor
- navigator.proximity.disableSensor
Get the current proximity sensor state: true = near, false = far.
This proximity state is returned to the 'successCallback' callback function.
navigator.proximity.getProximityState(successCallback);
Enable the proximity sensor. In iOS the proximity sensor is disabled by default and must be enabled manually.
navigator.proximity.enableSensor();
Disable the proximity sensor.
navigator.proximity.disableSensor();
function onSuccess(state) {
alert('Proximity state: ' + (state ? 'near' : 'far'));
};
navigator.proximity.enableSensor();
setInterval(function(){
navigator.proximity.getProximityState(onSuccess);
}, 1000);
This example shows a watcher. If other things approaches the phone, 'on_approch_callback' would be called.
var proximitysensor = {
};
var proximitysensorWatchStart = function(_scope, on_approch_callback) {
if(navigator.proximity == null)
console.log("cannot find navigator.proximity");
navigator.proximity.enableSensor();
// Start watch timer to get proximity sensor value
var frequency = 100;
_scope.id = window.setInterval(function() {
navigator.proximity.getProximityState(function(val) { // on success
var timestamp = new Date().getTime();
if(timestamp - _scope.lastemittedtimestamp > 1000) { // test on each 1 secs
if( proximitysensor.lastval == 1 && val == 0 ) { // far => near changed
_scope.lastemittedtimestamp = timestamp;
_scope.lastval = val;
on_approch_callback(timestamp);
}
}
_scope.lastval = val;
});
}, frequency);
}
var proximitysensorWatchStop = function(_scope) {
if(navigator.proximity == null)
console.log("cannot find navigator.proximity");
window.clearInterval( _scope.id );
navigator.proximity.disableSensor();
};
proximitysensorWatchStart(proximitysensor, function(timestamp) {
console.log('approched on ' + timestamp);
});
// .... after testing
//proximitysensorWatchStop(proximitysensor);
- iOS will automatically dim the screen and disable touch events when the proximity sensor is in the 'near' state. This can be circumvented by using undocumented API calls, but will result in App Store rejection.