A mobile device like a Windows Mobile cellphone/PDA is by definition used from many kinds of locations, and should adapt accordingly. If I'm at home, I'd like it to switch to my local WLAN rather than using 3G or GPRS. If I'm in a meeting, I'd like it to be on silent buzzer rather than a loud ringtone. If I'm in a noisy environment, I'd like the ringtone to adjust accordingly. If I'm commuting home, I might want to send an automatic SMS to my SO.
There are a number of data sources I might use to determine where and what kind of environment I am in:
- The current GSM cell
- The available WLAN network SSID's
- The GPS coordinates (if that device is active)
- The calendar status (in a meeting)
- The microphone (noisy or quiet environment)
- The ActtiveSync status (probably at my computer)
I expect future generations of cellphones to allow more kinds of location-dependent configuration and behaviour. For now, I'm probably limited to writing something for myself. However, integrating location data sources and weighing evidence from different sources as to where I am and what I'm doing is something more than one application would be interested in, and something an end-user wouldn't want to configure to separate definitions in several applications.
The nearest question I've found is about how to get mobile cell ID's. Other API's are possible to locate, I guess (but any help is welcome).
Are there any frameworks or ideas which might help me integrate these data sources, let a user configure environments, and trigger events when a location or situation changes? How should I represent a location, based on evidence from several sources? Do you have quick links to applicable API's and components that could help me? Preferably for CF (and not just for Windows XP).