PATENT DOCUMENT

Publication Number: US-9307358-B2
Application Number: US-201313913492-A
Country: US
Kind Code: B2

Title: Non-intrusive region notification

Abstract:
Techniques of non-intrusive region notification are described. A mobile device can be programmed to trigger an application program when the mobile device enters or exits a region. The region can be defined by various virtual fencing technologies. If, at the time of entry or exit of a region, the mobile device is in a power-saving operating mode, the mobile device can transition to an active operating mode temporarily, register a fence-crossing event (entry or exit of the region) with the application program, and then transition back to the power-saving operating mode. The mobile device can launch the registered application program in response to the mobile device receiving a user input to enter the active operating mode. The application program can provide a user interface associated with the region on a display surface of the mobile device in place of a home screen or other user interface.

Claims:
What is claimed is: 
     
       1. A method comprising:
 receiving, by a processor of a mobile device from a sensor of the mobile device and when the processor is in a power-saving operating mode, a signal indicating that the mobile device has entered or exited a virtual fence; 
 transitioning, by the processor, from the power-saving operating mode to an active operating mode and staying in the active operating mode for a specified period of time before transitioning back to the power-saving operating mode, wherein during the active operating mode, the processor registers an event of the entry or exit of the virtual fence; 
 detecting an input for activating the processor of the mobile device; and 
 executing an application program based on the registered event, wherein execution of the application program is configured to be triggered by the event of entry or exit of the virtual fence, and wherein triggering the execution of the application program is delayed from the event of entry or exit to transitioning, in response to the input, from the bower-saving operating mode to the active operating mode. 
 
     
     
       2. The method of  claim 1 , wherein the virtual fence is a geofence associated with a location or a proximity fence associated with a group of one or more signal sources. 
     
     
       3. The method of  claim 1 , wherein:
 the sensor comprises a radio frequency (RF) receiver configured to detect an RF signal identifying a signal source registered at the RF receiver, the signal source being an access point of a wireless local area network (WLAN) or a signal source of a personal area network (PAN). 
 
     
     
       4. The method of  claim 3 , wherein the signal source of the PAN includes a Bluetooth™ Low Energy (BTLE) beacon. 
     
     
       5. The method of  claim 1 , wherein:
 the signal includes a notification of the entry or exit; and 
 when the signal indicates the entry into the virtual fence, the sensor is configured to send additional notifications to the processor until the sensor detects the exit. 
 
     
     
       6. The method of  claim 1 , wherein registering the event comprises storing the event on a storage device until receiving a next signal or until execution of the application program. 
     
     
       7. The method of  claim 1 , wherein detecting the input comprises detecting an action on a home button of the mobile device or a user gesture on a display surface of the mobile device for unlocking the mobile device. 
     
     
       8. The method of  claim 1 , comprising activating a display surface of the mobile device in response to the input. 
     
     
       9. The method of  claim 8 , wherein executing the application program comprises providing information related to the virtual fence for display on the display surface based on the event in a user interface of the application program. 
     
     
       10. The method of  claim 1 , wherein executing the application program is performed by the mobile device or a server connected to the mobile device. 
     
     
       11. A mobile device comprising:
 a processor; 
 a sensor; and 
 a non-transitory storage device storing instructions operable to cause the processor to perform operations comprising:
 receiving, from the sensor of the mobile device and when the processor is in a power-saving operating mode, a signal indicating that the mobile device has entered or exited a virtual fence; 
 transitioning from the power-saving operating mode to an active operating mode and staying in the active operating mode for a specified period of time before transitioning back to the power-saving operating mode, wherein during the active operating mode, the processor registers an event of the entry or exit of the virtual fence; 
 detecting an input for activating the processor of the mobile device; and 
 executing an application program based on the registered event, wherein execution of the application program is configured to be triggered by the event of entry or exit of the virtual fence, and wherein triggering the execution of the application program is delayed from the event of entry or exit to transitioning, in response to the input, from the power-saving operating mode to the active operating mode. 
 
 
     
     
       12. The mobile device of  claim 11 , wherein the virtual fence is a geofence associated with a location or a proximity fence associated with a group of one or more signal sources. 
     
     
       13. The mobile device of  claim 11 , wherein:
 the sensor comprises a radio frequency (RF) receiver configured to detect an RF signal identifying a signal source registered at the RF receiver, the signal source being an access point of a wireless local area network (WLAN) or a signal source of a personal area network (PAN). 
 
     
     
       14. The mobile device of  claim 13 , wherein the signal source of the PAN includes a Bluetooth™ Low Energy (BTLE) beacon. 
     
     
       15. The mobile device of  claim 11 , wherein:
 the signal includes a notification of the entry or exit; and 
 when the signal indicates the entry into the virtual fence, the sensor is configured to send additional notifications to the processor until the sensor detects the exit. 
 
     
     
       16. The mobile device of  claim 11 , wherein registering the event comprises storing the event on a storage device until receiving a next signal or until execution of the application program. 
     
     
       17. The mobile device of  claim 11 , wherein detecting the input comprises detecting an action on a home button of the mobile device or a user gesture on a display surface of the mobile device for unlocking the mobile device. 
     
     
       18. The mobile device of  claim 11 , comprising activating a display surface of the mobile device in response to the input. 
     
     
       19. The mobile device of  claim 18 , wherein executing the application program comprises providing information related to the virtual fence for display on the display surface based on the event in a user interface of the application program. 
     
     
       20. The mobile device of  claim 11 , wherein executing the application program is performed by the mobile device or a server connected to the mobile device. 
     
     
       21. A non-transitory storage device coupled to a mobile device and storing instructions operable to cause a processor of the mobile device to perform operations comprising:
 receiving, from a sensor of the mobile device and when the processor is in a power-saving operating mode, a signal indicating that the mobile device has entered or exited a virtual fence; 
 transitioning from the power-saving operating mode to an active operating mode and staying in the active operating mode for a specified period of time before transitioning back to the power-saving operating mode, wherein during the active operating mode, the processor registers an event of the entry or exit of the virtual fence; 
 detecting an input for activating the processor of the mobile device; and 
 executing an application program based on the registered event, wherein execution of the application program is configured to be triggered by the event of entry or exit of the virtual fence, and wherein triggering the execution of the application program is delayed from the event of entry or exit to transitioning, in response to the input, from the power-saving operating mode to the active operating mode. 
 
     
     
       22. The non-transitory storage device of  claim 21 , wherein the virtual fence is a geofence associated with a location or a proximity fence associated with a group of one or more signal sources. 
     
     
       23. The non-transitory storage device of  claim 21 , wherein:
 the sensor comprises a radio frequency (RF) receiver configured to detect an RF signal identifying a signal source registered at the RF receiver, the signal source being an access point of a wireless local area network (WLAN) or a signal source of a personal area network (PAN). 
 
     
     
       24. The non-transitory storage device of  claim 23 , wherein the signal source of the PAN includes a Bluetooth™ Low Energy (BTLE) beacon. 
     
     
       25. The non-transitory storage device of  claim 21 , wherein:
 the signal includes a notification of the entry or exit; and 
 when the signal indicates the entry into the virtual fence, the sensor is configured to send additional notifications to the processor until the sensor detects the exit. 
 
     
     
       26. The non-transitory storage device of  claim 21 , wherein registering the event comprises storing the event on a storage device until receiving a next signal or until execution of the application program. 
     
     
       27. The non-transitory storage device of  claim 21 , wherein detecting the input comprises detecting an action on a home button of the mobile device or a user gesture on a display surface of the mobile device for unlocking the mobile device. 
     
     
       28. The non-transitory storage device of  claim 21 , comprising activating a display surface of the mobile device in response to the input. 
     
     
       29. The non-transitory storage device of  claim 28 , wherein executing the application program comprises providing information related to the virtual fence for display on the display surface based on the event in a user interface of the application program. 
     
     
       30. The non-transitory storage device of  claim 21 , wherein executing the application program is performed by the mobile device or a server connected to the mobile device.

Description:
TECHNICAL FIELD 
     This disclosure relates generally to geofencing. 
     BACKGROUND 
     Some mobile devices have features for providing location-based services. For example, a mobile device can execute a pre-specified application program or present certain content when the mobile device enters or exits a geofence. The geofence can be defined by a point location and a radius. The point location can have a longitude coordinate and a latitude coordinate. The mobile device can determine that the mobile device has entered the geofence or exited the geofence by determining an estimated location of the mobile device and calculating a distance between the estimated location and the point location. Based on whether the calculated distance exceeds the radius of the geofence, the mobile device can determine whether the mobile device entered or exited the geofence. The mobile device can then launch an application associated with the geofence. For example, the mobile device can display a reminder associated with a geofence around a location designated as “office” when the mobile device enters or leaves the “office” location. 
     SUMMARY 
     Techniques of non-intrusive region notification are described. A mobile device can be programmed to trigger an application program when the mobile device enters or exits a region. The region can be defined by various virtual fencing technologies. If, at the time of entry or exit of a region, the mobile device is in a power-saving operating mode, the mobile device can transition to an active operating mode temporarily, register a fence-crossing event (entry or exit of the region) with the application program, and then transition back to the power-saving operating mode. The mobile device can launch the registered application program in response to the mobile device receiving a user input to enter the active operating mode. The application program can provide a user interface associated with the region on a display surface of the mobile device in place of a home screen or other user interface. 
     The features described in this specification can be implemented to achieve one or more advantages. Compared to conventional geofencing techniques, the features described in this specification can avoid intrusive message displays that may be considered annoying by a user. A user carrying a mobile device can move across multiple virtual fences. Instead of launching an application program, which may contain advertisements, when the mobile device crosses each virtual fence, the mobile device can register the entry or exit transparently, and launch the application program only when a user indicates interest in content associated with that particular fence. Intrusive activation of a display of the mobile device to show an advertisement or other information can be reduced or avoided. 
     Compared to conventional geofencing techniques, the features described in this specification can make a mobile device more power-efficient. User notification occurs when a display surface is activated. Accordingly, when a fence-crossing event occurs, the mobile device, if in a power-saving operating mode, can register the fence-crossing event in a short period of activation, and then go back to the power-saving operating mode. The period of activation can be minimized to keep the mobile device in the power-saving operating mode as long as possible to conserve power. 
     The features described in this specification can encourage businesses who maintain a virtual fence to provide more information of their products or services to consumers. Using conventional geofencing techniques, a business having a virtual fence can be reluctant to provide even useful information for display to a consumer, knowing that an accidental trigger of display of the information to a passer-by may be considered as intrusive. The techniques described in this specification can reduce the intrusive displays, and only display the information when a user of the mobile device appears lingering around a product and appears ready to perform some research on the product. Accordingly, the business can be more confident that people viewing the content are actually interested in the content. 
     The details of one or more implementations of non-intrusive region notification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of non-intrusive region notification will become apparent from the description, the drawings, and the claims. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
         FIG. 1  is a diagram illustrating exemplary non-intrusive region notification. 
         FIG. 2  is a diagram illustrating transitions between operating modes of an exemplary mobile device implementing non-intrusive region notification. 
         FIG. 3  is a diagram illustrating non-intrusive region notification when an exemplary mobile device crosses multiple fences in succession. 
         FIG. 4  is a block diagram illustrating components of an exemplary non-intrusive region notification subsystem of a mobile device. 
         FIG. 5  is a flowchart of an exemplary procedure of non-intrusive region notification. 
         FIG. 6  is a block diagram illustrating exemplary device architecture of a mobile device implementing the features and operations of  FIGS. 1-5 . 
         FIG. 7  is a block diagram of an exemplary network operating environment for the mobile devices implementing the features and operations of  FIGS. 1-5 . 
     
    
    
     Like reference symbols in the various drawings indicate like elements. 
     DETAILED DESCRIPTION 
     Exemplary Non-Intrusive Region Notification 
       FIG. 1  is a diagram illustrating exemplary non-intrusive region notification. Mobile device  102  can be an electronic device programmed to execute an application program when mobile device  102  enters region  104 . Region  104  can be a geographic region defined by a virtual fence, e.g., a conventional geofence or a proximity fence. A proximity fence can be a location-agnostic virtual fence defined by signal source  110  having no geographic location information (e.g., a point location fixed to latitude and longitude coordinates). Signal source  110  can be a radio frequency (RF) transmitter broadcasting a beacon signal. The beacon signal can include a payload that includes an identifier of signal source  110 . The identifier can be associated with an application program of mobile device  102 . The application program, when executed, can display information related to region  104  on display surface  112 . An fence-crossing event (e.g., entry or exit) at region  104  by mobile device  102  can trigger the launching of an application program or performance of a function of an executing application program. 
     Mobile device  102  can be programmed to trigger the launching of application program in a non-intrusive manner. Mobile device  102  can launch the application program when mobile device  102  is already in an active operating mode. When mobile device  102  is in the active operating mode, display surface  112  is activated and unlocked. If mobile device  102  is in a power-saving operating mode, e.g., when display surface  112  of mobile device  102  is inactive or is locked, mobile device  102  can register the application program for launch later, instead of launching the application program immediately. 
     For example, when mobile device  102  is outside of region  104 , mobile device  102  can be in power-saving operating mode, until mobile device  102  receives an input to activate. The input can be a user input, for example, a user pressing home button  114  of mobile device  102 . Upon receiving the input, mobile device  102  can perform a search in a registry to determine if mobile device  102  is in any region associated with an application program. The registry can be stored locally on mobile device  102  or remotely on a server. When no such region is found, mobile device  102  can display a home screen on display surface  112 . The home screen can be a default user interface configured by a user or by mobile device  102  to display on display surface  112  when mobile device  102  is activated from a power-saving operating mode. The home screen can include one or more icons  116  representing application programs. 
     Mobile device  102  can cross the virtual fence defined by signal source  110  and move into region  104 . When mobile device  102  is already in an active operating mode when mobile device  102  detects a fence-crossing event, mobile device  102  can execute the application program and display the information related to region  104 . If mobile device  102  is in a power-saving operating mode when mobile device  102  detects a fence-crossing event, mobile device can register the fence-crossing event by storing an identifier of region  104  associated with the application program in a database. The identifier can be a universally unique identifier (UUID) associated with signal source  110 . Next, when mobile device  102  receives a user input for activation, mobile device  102  can search the database and find the identifier. Based on the identifier, mobile device  102  can determine the application program. Mobile device can then launch the application program, and display information  126  on display surface  112 . 
       FIG. 2  is a diagram illustrating transitions between operating modes of exemplary mobile device  102  implementing non-intrusive region notification. Initially, mobile device  102  can be in a power-saving operating mode. In the power-saving operating mode, one or more processors of mobile device  102  can be powered off, or be configured to operate at reduced clock cycle to conserve battery power. A display surface, e.g., a touch-sensitive screen, of mobile device  102  can be locked or turned off. When locked or turned off, the display surface can be irresponsive to a touch input. In the power-saving operating mode, a wireless processor of mobile device  102  used for scanning for wireless signals may continue to operate, including continue to scan for wireless signals from wireless transmitters, e.g., cellular towers, wireless access points, or low energy beacon devices. 
     When the wireless processor of mobile device  102  detects ( 202 ) a signal from a wireless transmitter that contains an identifier pre-registered at the wireless processor, indicating that mobile device  102  has entered a fenced region, the wireless processor can wake ( 204 ) mobile device  102  into an active operating mode. Waking mobile device  102  into an active operating mode can include activating the powered off processors and operating the processors at normal clock cycle. After being awakened, mobile device  102  can operate at active (full-powered) operating mode. 
     Mobile device  102  can be awakened by various events. Once awakened, mobile device  102  can stay in the active operating mode until a pre-set time (e.g., X minutes) has passed since a last user action is performed on mobile device  102 . When mobile device  102  implements non-intrusive region notification, detection  202  can cause mobile device  102  to activate and stay in the active operating mode for a brief duration (e.g., less than a second) that is imperceptible by a user. During active operating mode, mobile device  102  need not activate a display surface. Mobile device  102  can register ( 206 ) the fenced region during active operating mode. Registering the region can include storing a signal source identifier detected in a wireless signal received by mobile device  102  on a storage device. The time period can be pre-programmed to be sufficiently long to permit completion of the registration operations. Alternatively, the time period can be specified to last until a signal indicates completion of the registration operations. After the time period ends, mobile device  102  can sleep ( 208 ), transitioning from the active operating mode back to the power-saving operating mode. 
     During power-saving operating mode, mobile device  102  can receive activation request  210 . Activation request  210  can be an event of a user pressing a home button as described above in reference to  FIG. 1 . Additionally, activation request  210  can be any other event that cause mobile device  102  to activate a display surface. For example, the event can be a headphone or microphone being plugged into mobile device  102 , an alarm event where an internal clock of mobile device  102  triggers a display surface to display an alert message, a speaker to play an alert sound, a mechanical unit to generate a vibration, or a reminder event where a reminder program triggers a message to be displayed. Upon receiving activation request  210 , mobile device  102  can transition from the power-saving operating mode to the active operating mode. 
     Upon the transition, mobile device  102  can examine the registry and determine whether mobile device  102  entered a fenced region. If mobile device  102  determines that an identifier is stored in the registry, and the identifier is associated with an application program, mobile device  102  can execute the application program. The application program can cause mobile device  102  to display a message in place of a default home screen, or play a sound. 
     In some implementations, mobile device  102  can prioritize the execution of the application program during registration. For example, mobile device  102  can designate the execution as medium priority. Upon such designation, mobile device  102  can perform high priority tasks (e.g., displaying the alert message or playing the alert sound) before executing the application program. Mobile device  102  can perform low priority tasks (e.g., displaying the home screen) after executing the application program. 
     If mobile device  102  does not receive activation request  210 , mobile device  102  may stay in power-saving operating mode until mobile device  102  wakes ( 212 ) in response to a second detection  214  by the wireless processor of mobile device  102 , and transitions from the power-saving operating mode to the active operating mode. The second detection  214  can be a detection of an exit of the fenced region that mobile device  102  previously entered. The second detection can be a detection that mobile device  102  entered another fenced region. The second detection  214  can cause mobile device  102  to stay in the active operating mode for a brief time period sufficient for modifying the registry. 
     During this time period, mobile device  102  can modify ( 216 ) the registry, currently storing an identifier corresponding to a last region mobile device  102  entered. Mobile device  102  can de-register by clearing the registry (e.g., by removing the existing identifier from the registry), if the second detection  214  indicates that mobile device exited the region without entering a new registered region. Alternatively, mobile device  102  can re-register by storing a new identifier in the registry (e.g., by replacing the registered identifier with the new identifier). When mobile device  102  finishes modifying the registry during the time period, mobile device  102  can sleep ( 218 ), transitioning back to the power-saving operating mode. 
     During power-saving operating mode, mobile device  102  can receive activation request  220 . Mobile device  102  can provide a response to activation request  220  based on content of registry. If the registry has been cleared during modification  216 , mobile device  102  can transition into active operating mode. If the registry stores a new identifier associated with a new application program, mobile device  102  can execute the new application program as described above in reference to activation request  210 . If mobile device  102  does not receive activation request  220 , or after being activated transitions back to power-saving operating mode due to inactivity, mobile device  102  may wake up ( 204 ) in response to a next detection of an entry into a fenced region. 
       FIG. 3  is a diagram illustrating non-intrusive region notification when exemplary mobile device  102  crosses multiple fences in succession. Mobile device  102  can move along path  301 . Path  301  can cross multiple virtual fences defined by signal sources  302 ,  304 , and  306 , respectively. Each of signal sources  302 ,  304 , and  306  can be a wireless beacon configured to broadcast an information snippet. In some implementations, signal sources  302 ,  304 , and  306  are radio frequency (RF) transmitters. In some implementations, signal sources  302 ,  304 , and  306  can be Institute of Electrical and Electronics Engineers (IEEE) 802.11u compliant Wi-Fi™ beacons. In some implementations, signal sources  302 ,  304 , and  306  can be Bluetooth™ low energy (BTLE) or near field communication (NFC) beacons. Signal sources  302 ,  304 , and  306  can have a same device type or different device types. Each of signal sources  302 ,  304 , and  306  can broadcast a beacon signal through one or more specified channels. Each of signal sources  302 ,  304 , and  306  can correspond to a communication range in which the respective beacon signal is detectable by mobile devices (e.g., mobile device  102 ). Each communication range can correspond to a virtual fence surrounding a region. Regions  308 ,  310 , and  312  can correspond to signal sources  302 ,  304 , and  306 , respectively. 
     When mobile device  102  moves along path  301 , mobile device  102  can successively enter and exit regions  308 ,  310 , and  312 . Each time mobile device  102  enters a region, mobile device  102  can detect a region entry. Each time mobile device  102  exits a region, mobile device  102  can detect a region exit. 
     For example, mobile device  102  can detect an entry into region  308  when a wireless processor of mobile device  102  detects a signal from signal source  302  and, in some implementations, when the wireless processor of mobile device  102  detects the signal and determines that signal strength (e.g., a received signal strength indicator or RSSI) satisfies a threshold value (e.g., X dB). When mobile device  102  detects signal source  302 , mobile device  102  can trigger the launch of an application program associated with signal source  302  by registering an identifier associated with the application program. Registration of the identifier allows mobile device  102  to display content  314  in a non-intrusive manner, e.g., only when mobile device  102  is already activated or upon mobile device  102  being activated. 
     Mobile device  102  can detect an exit from region  308  when the wireless processor of mobile device  102  fails to detect a signal from signal source  302  or when the RSSI of the signal falls below the threshold value in one or more scans of wireless communication channels. The wireless processor can initiate a scan periodically (e.g., every X minutes), upon an activation of the wireless processor (by a user or programmatically), or when mobile device  102  wakes (e.g., being activated by a user or programmatically). Upon detecting an exit, mobile device  102  can de-register the identifier, such that when mobile device  102  is activated, mobile device  102  no longer displays content  314 . 
     In some implementations, the wireless processor can be programmed to scan channels continuously when a given condition is satisfied. The condition can be specified by an application program that requires immediate notification on a fence exit. For example, mobile device  102  can move quickly through region  310  defined by signal source  304 , as indicated by a time interval (between time t+2 and time t+3) in which mobile device  102  is in region  310  is approximately half as long as the time interval (between t+0 and t+2) in which mobile device  102  is in region  308 . Here, t represents an initial time, whereas t+n is the initial time plus n time units (e.g., seconds or minutes). Mobile device  102  can cause the wireless processor to scan channels continuously to accommodate the relatively fast movement of mobile device  102  in region  310 . The continuous scan can be triggered by a motion sensor of mobile device  102  indicating mobile device  102  is moving fast, or by an indicator associated with an identifier of signal source  304 , which historically has seen fast movements of mobile devices around signal source  304 . Using the continuous scan, mobile device  102  can immediately de-register the identifier of signal source  304  when mobile device  102  leaves region  310 . 
     In some implementations, a longer stay in a region can raise the priority of an application program associated with a region. For example, mobile device  102  can stay in region  312  for a time interval between t+4 and t+9. During this time interval, mobile device  102  can receive multiple indications from the wireless processor that the wireless processor detects signal source  306 , indicating that mobile device  102  has stayed in region  312  for a duration that satisfies a dwell threshold. In response, mobile device  102  can raise the priority of the application program associated with signal source  306 , such that, when mobile device  102  is activated, content  318 , as provided by the application program, is displayed before another program (e.g., a reminder) that otherwise will have higher priority. 
     Exemplary Device Components 
       FIG. 4  is a block diagram illustrating components of exemplary non-intrusive region notification subsystem  402  of mobile device  102 . Subsystem  402  can include application subsystem  404 . Application subsystem  404  can include one or more processors (e.g., application processors) configured to execute an application program. Application subsystem  404  can include fence interface  406 . Fence interface  406  is a component of application subsystem  404  configured to communicate with an application manager and receive one or more application programs from the application manger. The application manager can be a server of a business managing virtual fences and application programs. Receiving the application programs can include downloading the application programs. Each application program received by fence interface  406  can be associated with an identifier of a group of one or more signal sources. The identifier can be a universally unique identifier (UUID). Fence interface  406  can store the application program on a storage device, and register the identifier at with wireless subsystem  420 . 
     Wireless subsystem  420  is a component of subsystem  402  that includes an antenna, a wireless processor (e.g., a baseband processor, Wi-Fi™ processor, or Bluetooth™ processor), and software or firmware that causes the wireless processor to perform operations of scan and notification. Wireless subsystem  420  can include fence identifier registry  422 . Fence identifier registry  422  can store one or more signal source identifiers for scanning. Each signal source identifier can be a fence identifier identifying a virtual fence and the region enclosed by the virtual fence. Wireless subsystem  420  can include signal source interface  424 . Signal source interface  424  is a component of wireless subsystem  420  including hardware and software configured to scan one or more communication channels for signals (e.g., beacon signals) from signal sources, to detect signal source identifiers from the scans, and to match the detected signal source identifiers with the fence identifiers stored in fence identifier registry  422 . Wireless subsystem  420  can include scan parameter registry  426  configured to store an entry threshold (M), an exit threshold (N), or both. Signal source interface  424  can generate a notification when a signal source identifier matching one of the fence identifiers is detected in at least M scans, or is undetected in at least N scans. The notification can include the matching fence identifier. 
     Wireless subsystem  420  can provide the notification to application subsystem  404 . The notification can include one or more fence identifiers for which a match is detected. Fence manager  428  of application subsystem  404  can receive the notification and determine the fence identifier from the notification. Fence manager  428  can store the identifier in fence registry  430 . Fence registry  430  can be a storage device of application subsystem  404  configured to store fence item  432  that includes the fence identifier and either the application program associated with the virtual fence or a reference to the application program. 
     Fence manager  428 , upon receiving the notification, can inform power manager interface  434  that a fence identifier is being registered or has been registered in fence registry  430 . Power manager interface  434  is a component of application subsystem  404  configured to communicate with a power manager of mobile device  102  and, if a fence identifier is stored in fence registry  430 , causes application subsystem  404  to execute the associated application upon an activation event (e.g., a power up event received from the power manager). In some implementations, fence item  432  can include a priority of the application program. An order of executing the application program, including whether to launch the application program before, while, or after another program can be determined based on the priority. Upon execution of the application program, power manager interface  434  can delete fence item  432  from fence registry  430 . 
     Application subsystem  404  can include user interface manager  436 . User interface manager  436  is a component of application subsystem  404  configured to receive a user input for activating mobile device  102  (e.g., by pressing a home button or making a gesture across a touch-sensitive surface of mobile device  102  to unlock the surface). In addition, user interface manager  436  can be configured to present content provided by the application program to the user. Presenting the content can include providing the content for display on a display surface (e.g., a display screen) or for play on an audio subsystem. 
     Exemplary Procedures 
       FIG. 5  is a flowchart of exemplary procedure  500  of non-intrusive region notification. Procedure  500  can be performed by mobile device  102 . 
     Mobile device  102  can receive ( 502 ), by a processor of mobile device  102  and from a sensor of mobile device  102 , a signal indicating that mobile device  102  has entered or exited a virtual fence. The processor can receive the signal when the processor is in a power-saving operating mode. The virtual fence can be associated with an application program configured to be executed upon an entry or an exit of the virtual fence. The virtual fence can be a geofence associated with a location defined by longitude, latitude, and altitude coordinates. The virtual fence can be a proximity fence associated with one or more signal sources. The proximity fence can be defined by a label broadcast in beacons of the signal sources. The label can include an identifier of each of the one or more signal sources. Each signal source can be a wireless access point of a wireless local area network (WLAN) or a signal source of a personal area network (PAN). For example, a signal source can be a Bluetooth™ Low Energy (BTLE) beacon. 
     The sensor of mobile device  102  can include a wireless processor, e.g., a radio frequency (RF) receiver configured to detect an RF signal. The RF signal can include an identifier of a signal source. The identifier can be pre-registered at the wireless processor. When mobile device  102  finds a match between an identifier in an RF signal detected by the wireless processor and a pre-registered identifier, mobile device  102  can determine that mobile device  102  entered or exited the virtual fence associated with the identifier. 
     The signal from the sensor can include a notification that mobile device  102  entered or exited the virtual fence. In some implementations, if the sensor includes a notification that mobile device  102  entered the virtual fence, mobile device  102  can cause the sensor to continue scanning communication channels until the sensor detects an exit of the virtual fence or the sensor detects an entry into another virtual fence. 
     Mobile device  102  can cause the processor to transition ( 504 ) from the power-saving operating mode to an active operating mode and stay in the active operating mode for a specified period of time before transitioning back to the power-saving operating mode. During the time the processor is in the active operating mode, the processor can register an event based on the received signal. The event can be the entry or exit of the virtual fence. The specified period of time can correspond to a time the processor takes to register the event. Registering the event can include storing the event on a storage device until the process receives a next signal or until the processor executes the application program. 
     Mobile device  102  can detect ( 506 ) an input activating the processor of mobile device  102 . The input can be a user input. Detecting the input can include detecting a user action on a home button of mobile device  102 . The home button can be a physical button on a front side of mobile device  102  configured to cause a display surface of mobile device  102  to show a home screen or a login screen. Detecting the input can include detecting a user gesture on a touch-sensitive display surface of mobile device  102 . 
     Mobile device  102  can execute ( 508 ) the application program based on the registered event. In some implementations, mobile device  102  can activate a display surface (e.g., a touch-sensitive screen) of mobile device  102  and provide information related to the virtual fence for display on the display surface based on the event in a user interface of the application program. For example, the application program can be configured to display price and features of a product located within a region defined by a BTLE beacon. When mobile device  102  hovers over the product, mobile device  102 , detecting a signal from the BTLE beacon, can display the price and features of the product, if a user presses the home button or unlocks the screen. The user interface for displaying the price and features can replace a home screen, which can be displayed in response to pressing the home button. 
     Exemplary Mobile Device Architecture 
       FIG. 6  is a block diagram illustrating exemplary device architecture  600  of a mobile device implementing the features and operations of  FIGS. 1-5 . A mobile device (e.g., mobile device  102 ) can include memory interface  602 , one or more data processors, image processors and/or processors  604 , and peripherals interface  606 . Memory interface  602 , one or more processors  604  and/or peripherals interface  606  can be separate components or can be integrated in one or more integrated circuits. Processors  604  can include application processors, baseband processors, and wireless processors. The various components in mobile device  102 , for example, can be coupled by one or more communication buses or signal lines. 
     Sensors, devices, and subsystems can be coupled to peripherals interface  606  to facilitate multiple functionalities. For example, motion sensor  610 , light sensor  612 , and proximity sensor  614  can be coupled to peripherals interface  606  to facilitate orientation, lighting, and proximity functions of the mobile device. Location processor  615  (e.g., GPS receiver) can be connected to peripherals interface  606  to provide geopositioning. Electronic magnetometer  616  (e.g., an integrated circuit chip) can also be connected to peripherals interface  606  to provide data that can be used to determine the direction of magnetic North. Thus, electronic magnetometer  616  can be used as an electronic compass. Motion sensor  610  can include one or more accelerometers configured to determine change of speed and direction of movement of the mobile device. Barometer  617  can include one or more devices connected to peripherals interface  606  and configured to measure pressure of atmosphere around the mobile device. 
     Camera subsystem  620  and an optical sensor  622 , e.g., a charged coupled device (CCD) or a complementary metal-oxide semiconductor (CMOS) optical sensor, can be utilized to facilitate camera functions, such as recording photographs and video clips. 
     Communication functions can be facilitated through one or more wireless communication subsystems  624 , which can include radio frequency receivers and transmitters and/or optical (e.g., infrared) receivers and transmitters. The specific design and implementation of the communication subsystem  624  can depend on the communication network(s) over which a mobile device is intended to operate. For example, a mobile device can include communication subsystems  624  designed to operate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi™ or WiMax™ network, and a Bluetooth™ network. In particular, the wireless communication subsystems  624  can include hosting protocols such that the mobile device can be configured as a base station for other wireless devices. 
     Audio subsystem  626  can be coupled to a speaker  628  and a microphone  630  to facilitate voice-enabled functions, such as voice recognition, voice replication, digital recording, and telephony functions. Audio subsystem  626  can be configured to receive voice commands from the user. 
     I/O subsystem  640  can include touch surface controller  642  and/or other input controller(s)  644 . Touch surface controller  642  can be coupled to a touch surface  646  or pad. Touch surface  646  and touch surface controller  642  can, for example, detect contact and movement or break thereof using any of a plurality of touch sensitivity technologies, including but not limited to capacitive, resistive, infrared, and surface acoustic wave technologies, as well as other proximity sensor arrays or other elements for determining one or more points of contact with touch surface  646 . Touch surface  646  can include, for example, a touch screen. 
     Other input controller(s)  644  can be coupled to other input/control devices  648 , such as one or more buttons, rocker switches, thumb-wheel, infrared port, USB port, and/or a pointer device such as a stylus. The one or more buttons (not shown) can include an up/down button for volume control of speaker  628  and/or microphone  630 . 
     In one implementation, a pressing of the button for a first duration may disengage a lock of the touch surface  646 ; and a pressing of the button for a second duration that is longer than the first duration may turn power to mobile device  102  on or off. The user may be able to customize a functionality of one or more of the buttons. The touch surface  646  can, for example, also be used to implement virtual or soft buttons and/or a keyboard. 
     In some implementations, mobile device  102  can present recorded audio and/or video files, such as MP3, AAC, and MPEG files. In some implementations, mobile device  102  can include the functionality of an MP3 player. Mobile device  102  may, therefore, include a pin connector that is compatible with the iPod®. Other input/output and control devices can also be used. 
     Memory interface  602  can be coupled to memory  650 . Memory  650  can include high-speed random access memory and/or non-volatile memory, such as one or more magnetic disk storage devices, one or more optical storage devices, and/or flash memory (e.g., NAND, NOR). Memory  650  can store operating system  652 , such as Darwin, RTXC, LINUX, UNIX, OS X, WINDOWS, iOS, or an embedded operating system such as VxWorks. Operating system  652  may include instructions for handling basic system services and for performing hardware dependent tasks. In some implementations, operating system  652  can include a kernel (e.g., UNIX kernel). 
     Memory  650  may also store communication instructions  654  to facilitate communicating with one or more additional devices, one or more computers and/or one or more servers. Memory  650  may include graphical user interface instructions  656  to facilitate graphic user interface processing; sensor processing instructions  658  to facilitate sensor-related processing and functions; phone instructions  660  to facilitate phone-related processes and functions; electronic messaging instructions  662  to facilitate electronic-messaging related processes and functions; web browsing instructions  664  to facilitate web browsing-related processes and functions; media processing instructions  666  to facilitate media processing-related processes and functions; GPS/Navigation instructions  668  to facilitate GPS and navigation-related processes and instructions; camera instructions  670  to facilitate camera-related processes and functions; magnetometer data  672  and calibration instructions  674  to facilitate magnetometer calibration. The memory  650  may also store other software instructions (not shown), such as security instructions, web video instructions to facilitate web video-related processes and functions, and/or web shopping instructions to facilitate web shopping-related processes and functions. In some implementations, the media processing instructions  666  are divided into audio processing instructions and video processing instructions to facilitate audio processing-related processes and functions and video processing-related processes and functions, respectively. An activation record and International Mobile Equipment Identity (IMEI) or similar hardware identifier can also be stored in memory  650 . Memory  650  can store region notification instructions  676  that, when executed, can cause processor  604  to perform operations of application subsystem  404  as described above in reference to  FIG. 4 . The operations can include procedure  500  as described above in  FIG. 5 . 
     Each of the above identified instructions and applications can correspond to a set of instructions for performing one or more functions described above. These instructions need not be implemented as separate software programs, procedures, or modules. Memory  650  can include additional instructions or fewer instructions. Furthermore, various functions of the mobile device may be implemented in hardware and/or in software, including in one or more signal processing and/or application specific integrated circuits. 
     Exemplary Operating Environment 
       FIG. 7  is a block diagram of exemplary network operating environment  700  for the mobile devices implementing the features and operations of  FIGS. 1-5 . Mobile devices  702   a  and  702   b  can, for example, communicate over one or more wired and/or wireless networks  710  in data communication. For example, a wireless network  712 , e.g., a cellular network, can communicate with a wide area network (WAN)  714 , such as the Internet, by use of a gateway  716 . Likewise, an access device  718 , such as an 802.11g wireless access point, can provide communication access to the wide area network  714 . Each of mobile devices  702   a  and  702   b  can be mobile device  102 . 
     In some implementations, both voice and data communications can be established over wireless network  712  and the access device  718 . For example, mobile device  702   a  can place and receive phone calls (e.g., using voice over Internet Protocol (VoIP) protocols), send and receive e-mail messages (e.g., using Post Office Protocol  3  (POP3)), and retrieve electronic documents and/or streams, such as web pages, photographs, and videos, over wireless network  712 , gateway  716 , and wide area network  714  (e.g., using Transmission Control Protocol/Internet Protocol (TCP/IP) or User Datagram Protocol (UDP)). Likewise, in some implementations, the mobile device  702   b  can place and receive phone calls, send and receive e-mail messages, and retrieve electronic documents over the access device  718  and the wide area network  714 . In some implementations, mobile device  702   a  or  702   b  can be physically connected to the access device  718  using one or more cables and the access device  718  can be a personal computer. In this configuration, mobile device  702   a  or  702   b  can be referred to as a “tethered” device. 
     Mobile devices  702   a  and  702   b  can also establish communications by other means. For example, wireless device  702   a  can communicate with other wireless devices, e.g., other mobile devices, cell phones, etc., over the wireless network  712 . Likewise, mobile devices  702   a  and  702   b  can establish peer-to-peer communications  720 , e.g., a personal area network, by use of one or more communication subsystems, such as the Bluetooth™ communication devices. Other communication protocols and topologies can also be implemented. 
     Mobile device  702   a  or  702   b  can, for example, communicate with one or more services  730  and  740  over the one or more wired and/or wireless networks. For example, one or more proximity fence services  730  can provide proximity fence-triggered application programs and associated identifiers to mobile devices  702   a  and  702   b . Category service  740  can provide published categories (e.g., businesses or organizations) and corresponding UUIDs to mobile devices  702   a  and  702   b  such that a user of mobile devices  702   a  and  702   b  can add a signal source for monitoring by adding a category. For example, mobile devices  702   a  and  702   b  can add a category “custom trucks” to add a group of signal sources related to vehicle customization businesses for monitoring. 
     Mobile device  702   a  or  702   b  can communicate with one or more signal sources  750 . Each signal source  750  can be a wireless beacon configured to broadcast a signal source identifier. The signal source identifier can include a UUID. Each signal source  750  can communicate to other devices through wide area network  714  or facilitate communication between mobile device  702   a  or  702   b  with the other devices. In some implementations, each signal source  750  can be independent from a communications network, and function solely as beacons of proximity fences. 
     Mobile device  702   a  or  702   b  can also access other data and content over the one or more wired and/or wireless networks. For example, content publishers, such as news sites, Really Simple Syndication (RSS) feeds, web sites, blogs, social networking sites, developer networks, etc., can be accessed by mobile device  702   a  or  702   b . Such access can be provided by invocation of a web browsing function or application (e.g., a browser) in response to a user touching, for example, a Web object. 
     A number of implementations of the invention have been described. Nevertheless, it will be understood that various modifications can be made without departing from the spirit and scope of the invention.

Metadata:
Filing Date: 20130609
Publication Date: 20160405
Grant Date: 20160405
Priority Date: 20130609
Inventors: MARTI LUKAS M.
KAZEMI PEJMAN LOTFALI
MAYOR ROBERT
MA SHANNON M.
Assignee: APPLE INC
CPC Classifications: [{"code": "H04W4/021", "inventive": true, "first": true, "tree": "[]"}, {"code": "H04M19/04", "inventive": true, "first": false, "tree": "[]"}, {"code": "Y02B60/46", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W8/22", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/22", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/32", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/02", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/206", "inventive": false, "first": false, "tree": "[]"}, {"code": "G06F1/3203", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/18", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/52", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/535", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/52", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/535", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/60", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04L67/60", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/02", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/21", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W4/21", "inventive": false, "first": false, "tree": "[]"}, {"code": "G06F1/3209", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04M19/04", "inventive": true, "first": false, "tree": "[]"}, {"code": "Y02D30/00", "inventive": false, "first": false, "tree": "[]"}, {"code": "Y02D30/70", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W4/021", "inventive": true, "first": true, "tree": "[]"}, {"code": "Y02D30/00", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04W4/021", "inventive": true, "first": true, "tree": "[]"}, {"code": "Y02D30/70", "inventive": false, "first": false, "tree": "[]"}, {"code": "H04M19/04", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W8/22", "inventive": true, "first": false, "tree": "[]"}, {"code": "G06F1/3209", "inventive": true, "first": false, "tree": "[]"}, {"code": "H04W4/029", "inventive": true, "first": false, "tree": "[]"}]
Family ID: 51059602