throbber

`
`11111111111111011111101011111911,110111Fgllili1,11111111110101111011110111111
`
`(19) United States
`(12) Patent Application Publication (10) Pub. No.: US 2006/0116817 Al
`Jun. 1, 2006
`Salmre et al.
`(43) Pub. Date:
`
`(54) LOCATION AWARE MOBILE-DEVICE
`SOFTWARE DEVELOPMENT
`
`(52) U.S. Cl.
`
` 701/211; 340/995.1; 340/995.14;
`701/208
`
`(75)
`
`Inventors: Ivo W. Salmre, Aachen (DE); Frank
`Mantek, Wermelskirchen (DE)
`
`Correspondence Address:
`MERCHANT & GOULD (MICROSOFT)
`P.O. BOX 2903
`MINNEAPOLIS, MN 55402-0903 (US)
`
`(73) Assignee: Microsoft Corporation, Redmond, WA
`
`(21) Appl. No.:
`
`10/998,081
`
`(22) Filed:
`
`Nov. 26, 2004
`
`Publication Classification
`
`(51) Int. Cl.
`GO1C 21/30
`
`(2006.01)
`
`(57)
`
`ABSTRACT
`
`A development environment makes it easier to develop and
`use location aware software applications. Combining the
`currently separate and complex tasks of location information
`gathering, analysis, and display and making them integrated
`such that non-experts can build location services into their
`applications increases a developer's capability to write rich
`location-aware software applications. A higher level pro-
`gramming model allows a programmer to use location
`information as a logical entity rather than just raw location
`data, such as latitude and longitude. A location data store and
`map data store may be accessed by different location aware
`applications on the device. Instead of each location appli-
`cation relying on its own data store, applications may share
`their location related information.
`
`3251
`
`S
`
`Location
`Source 1
`
`3252
`
`S
`
`Location
`Source 2
`
`325N
`
`S
`
`Location
`Source N
`
`f 300
`
`Location Manager
`
`320
`
`Location Aware Application
`
`330
`
`Map Manager
`
`340
`
`Stored Maps
`1,2,3...
`
`Map
`Generators
`
`Map Web
`Services
`
`342
`
`344
`
`346
`
`Exhibit 1006
`Page 01 of 16
`
`

`

`Patent Application Publication Jun. 1, 2006 Sheet 1 of 8
`
`US 2006/0116817 Al
`
`( -108
`
`(
`
`-100
`
`COMPUTING DEVICE
`
`104
`
`( 102
`
`105
`
`PROCESSING UNIT
`
`SYSTEM MEMORY
`
`ROM/RAM
`OPERATING
`SYSTEM
`
`APPLICATIONS
`
`LOCATION
`AWARE
`PROGRAMMING
`INTERFACE
`
`106
`
`, - ,
`
`120
`
`PROGRAM
`DATA
`
`,
`
`107
`
`REMOVABLE
`STORAGE
`
`NON-REMOVABLE
`STORAGE
`
`INPUT DEVICE(S)
`
`OUTPUT DEVICE(S)
`
`COMMUNICATION
`CONNECTION(S)
`
`109
`
`Th
`110
`
`112
`
`114
`
`116
`
`118
`
`OTHER
`COMPUTING
`DEVICES
`
`Fig. 1
`
`Exhibit 1006
`Page 02 of 16
`
`

`

`Patent Application Publication Jun. 1, 2006 Sheet 2 of 8
`
`US 2006/0116817 Al
`
`200
`
`260
`
`c
`
`\
`
`PROCESSOR
`
`lit
`
`228 N
`
`DISPLAY
`
`232
`
`-\,
`
`KEYPAD
`
`274
`
`AUDIO
`INTERFACE
`
`j
`
` ,--- 262
`
`MEMORY
`y— 264
`
`
`C OS
`
`Location
`..
`APP(S)
`C
`7- LOCATION './-
`STORE
`
`--,,,---
`c r
`MAP STORE
`
`POWER
`SUPPLY
`
`266
`
`268
`
`269
`
`270
`
`240
`
`1
`
` .i
`
`COMMUNICATION
`CONNECTION(S)
`
`LED
`
`i
`
`272
`
`Fig.2
`
`Exhibit 1006
`Page 03 of 16
`
`

`

`Patent Application Publication Jun. 1, 2006 Sheet 3 of 8
`
`US 2006/0116817 Al
`
`3251
`
`3252
`
`Location
`Source 1
`
`Location
`Source 2
`
`325N
`
`S
`
`Location
`Source N
`
`1 — 300
`
`Location Manager
`
`320
`
`Location Aware Application
`
`330
`
`Map Manager
`
`P\ 340
`J
`
`Stored Maps
`1,2,3...
`
`Map
`Generators
`
`Map Web
`Services
`
`342
`
`344
`
`346
`
`Fig. 3
`
`Exhibit 1006
`Page 04 of 16
`
`

`

`Patent Application Publication Jun. 1, 2006 Sheet 4 of 8
`
`US 2006/0116817 Al
`
`4i— 400
`
`420
`'NJ
`
`Selection of Maps
`and Map Servers
`
`•-\)410
`Designation of
` w Geographical Areas
`of Interest
`
`430
`
`Development o
`Event Based
`Location Driven
`Code
`
`4 1*
`
`t
`
`450
`
`Testing with Real
`and Simulated
`Location Sources
`
`k
`
`4
`Iterative
`Development
`
`4i
`Development of
`Event Based Map
`Rendering Code
`
`440
`
`Fig. 4
`
`Exhibit 1006
`Page 05 of 16
`
`

`

`Patent Application Publication Jun. 1, 2006 Sheet 5 of 8
`
`US 2006/0116817 Al
`
`f 500
`
`Area of interest #2
`
`;
`
`.r....,.-5,:,..
`
``.
`..-1!,'?I'''''
`017. -
`
`0
`
`,
`
`e:q1 . 71.,
`''-'.
`
`,.„
`.--' ral. a
`,_1.:
`.1,-
`'.
`.... ca
`
`..
`
`r.. .1
`
`ez V‘fe ,-;',1-
`
`Meiatener a
`'''''.1%ri,-.
`
`C.4111'cis .:1', We
`
`...,,,..'-'
`..t.
`4-^.
`.c._
`
`. -
`
`• ,,,,Jc-_6
`-••.:
`.
`[,.,.. Wei ..•..:eri`oo
`).'A°'
`
`,_s,P
`
`, pa2 i:.
`
`7
`•:,..,
`r:.:., ,.
`47
`
`--,
`
`s 42?
`
`c-•:.
`-1.
`
`2.
`;t,
`.x.
`
`,.-cs'F'
`
`
`
`y „.. -
`
`Fig. 5
`
`....;),
`4..,
`
`,
`L 'Un'Wh l
`. ^ha FF. 5.:t r all e
`
`taNIX.
`..
`.1.1
`,:c•
`7.7.
`
`:7,
`a:
`
`Area of interest #1
`
`Exhibit 1006
`Page 06 of 16
`
`

`

`Patent Application Publication Jun. 1, 2006 Sheet 6 of 8
`
`US 2006/0116817 Al
`
`600
`
`Map 1:
`
`Lat: 50.852
`Long: 5.8913
`
`Map 2:
`
`4.
`140P1)1011.01-1:41,S MAW!
`.
``, , - EVotlenix,i,1
`,,,,,1_,,,,,,,,,,,,"
`
`---
`
`Lat 50.795
`Long: 6.0433
`
`Wildbath
`
`Eys
`
`..,Celn
`
`.. ,
`
`tosiold
`
`k •
`
`Aacher?
`
`:
`
`- •Kol,1•:,:hed
`E,,,V,iNveclon „a.4,--
`5:..7.1,:oz
`o -..'.-
`Wth %e'en —
`0 .
`Limahh,G
`,..,. :/
`0
`...,,,j-7/;- i''-'-f„ ,....'„,,,, ,,,,,
`? .1 ,,,,,* •,,A,,, , '; ' :01 5 k:K.' ' h's.,,Ttl.'.„...4: 1T2::::17n-ctz:r-a714., -
`\leo.
`',truer 5 Seffenl-
`- ,
`• 1", ',--'' H.";r ic
`"
`L...; .,2
`„
`o_....(..);
`Iht,,, ,,
`,S:utb::...sg.
`n
`....
`,-
`vaats.-.:: :,!,
`rt.the Fr cp: ,.
`-
`-
`0,030,1,1 r,,,,,,cp
`
`.Z.
`
`•
`
`Vex:pack
`
`VAmptitvbel
`
`. A Aachen
`
`Lat: 50.769
`Long: 6.0957
`
`Pl t•ArT.
`
`-. - --.
`.2.11 real
`— •
`Hdr171111C.,
`• • .1 L. C5...6ite
`WA1.1.0011 kl:C10111,,jf,
`her,treolii
`
`ti,LL '.1
`
`vitml
`14, atAttAtigt,p
`
`1011,31,1o,t,m,.1L,1
`'1744;114 Lat: 50.703
`Long: 6.242,
`
`4+
`
`Map 3:
`Lat: 50.783
`Long: 6.0679
`
`Vbeztt,h,l,t
`
`Aa
`
`c
`
`h
`
`e
`
`n
`
`,7kt a1e
`
`fleS1
`TiC I n
`
`Lat: 50.779
`Long: 6.0766
`
`Map 4:
`Lat: 50.829
`Long: 6.0629
`
`Clodpe,q
`
`SLYdtlbach
`
`oVViirselen
`
`,DL;
`
`
`
`-3L.2"
`
`,c
`
`thou
`
`•
`
`d7.,1,11c
`
`CI
`
`AiCherl
`0 0
`IT2.;:7•17,1
`
`Pctrk' e Lat: 50.771
`61z-i Long: 6.1807
`

`
`Fig. 6
`
`Exhibit 1006
`Page 07 of 16
`
`

`

`Patent Application Publication Jun. 1, 2006 Sheet 7 of 8
`
`US 2006/0116817 Al
`
`700
`
`d1:1141.14NrrIZTITSFIN,
`14 API
`20. 6/1/2004 6:1315 PM:Lat sa 7703235034454 degrees. Long 6.088287746269138 domes, Uncertainty. 0 met=
`18 64/20134 61312 PM:Lat 50.7715%4353178 degrees. Long 6.0889Paill18sell4 dogma. Uncertaity. 0 meters
`18. 6/1/2004 6:1309 PM:Lat 50.7726752278846 degas. Long 6081359617957301 &pm Uncertainly. 0 olden
`17. 6/1/2004 6:1a06 PKE sited are. Aachen Rely Cates
`16. 6/1/21304 6:1306 PM:Lat 50 7/S329198923 ciscoca. Long 6.0882173130%94 decocts, Uncertainty 0 mews
`15 671/2004 6:1303 Mitt 50.7744635710858 dconses, Lora: 608779645430247 degrees, Uncertainly 0 melon
`ME:=1:MIKESS=1=
`knulato Enabled
`Disconnect Simulatoi
`Simulated spume has been hooked uo to the emulator.
`
`Bq Picture:
`
`Snspl Piaule
`
`4'1/44,
`/
`
`,
`
`,
`
`\o„
`
`Snat
`stem s•
`
`'
`• '
`
`WIngertsherg
`
`.4 .
`
`tsattpne
`
`rA
`
`esti.
`
`rhsthule
`.„,skernkag
`
`am
`Teconische
`HoCheChulz
`
`Aachen
`
`ignm
`
`.-•e°
`
`%,70
`
`t
`a
`
`txpuk
`
`pork
`
`reqe
`
`O
`
`sse
`
`e
`
`I
`
`IP
`
`be
`V 1-
`
`.7.44
`py
`y
`
`.../
`
`..,9
`
`Ositriedhof
`
`,-...e°
`
`661/1
`
`7 .
`
`.
`
`,LoisenstraBe
`
`3
`
`P
`2o vam,14
`
`a ,,,,,4,04a7
`
`e —
`
`7.
`
`Fig. 7
`
`Exhibit 1006
`Page 08 of 16
`
`

`

`Patent Application Publication Jun. 1, 2006 Sheet 8 of 8
`
`US 2006/0116817 Al
`
`SERVER
`
`812 -..-7—''
`
`LOCATION STORE
`
`810,f -N,
`
`813 -____/
`
`MAP STORE
`
`f 800
`
`GATEWAY
`
`860
`
`WIDE AREA
`NETWORK/LOCAL
`AREA NETWORK
`
`CELLULAR/ PAGER
`NETWORK
`
`840
`
`850
`
`COMPUTING
`DEVICE
`
`LOCATION
`AWARE
`PROGRAMMING
`ENVIRONMENT
`
`830 832
`
`Location
`8211 ___/`
`Source 1
`
`-1F---.16.
`
`8212 ..._
`
`821N J
`
`Location
`Source 2
`
`Location
`Source N
`
`Fig. 8
`
`.r,
`
`MOBILE DEVICE
`LOCATION
`STORE
`
`\:" 824
`
`MAP STORE \J 825
`
`LOCATION
`APP
`
`820 822
`
`Exhibit 1006
`Page 09 of 16
`
`

`

`US 2006/0116817 Al
`
`Jun. 1, 2006
`
`1
`
`LOCATION AWARE MOBILE-DEVICE SOFTWARE
`DEVELOPMENT
`
`BACKGROUND OF THE INVENTION
`
`In the past several years more and more applica-
`[0001]
`tions utilizing location information have been developed.
`Some of these location applications include map programs,
`flight-tracker programs, and navigation programs. Many of
`these applications are being developed for mobile comput-
`ing devices. For example, in-car navigation systems have
`been developed to help users navigate through a city. Some
`cellular phones also include GPS based navigation pro-
`grams. It is very difficult, however, to develop these appli-
`cations. Positioning systems typically only provide location
`data, such as latitude and longitude, and require the appli-
`cation to process and interpret the information.
`
`SUMMARY OF THE INVENTION
`
`[0002] Embodiments of the present invention are related
`to a system and method for making it easier to develop and
`use location aware software applications. Combining the
`currently separate and complex tasks of location information
`gathering, analysis, and display and making them integrated
`such that non-experts can build location and mapping ser-
`vices into their applications increases a developer's capa-
`bility to write rich location-aware software applications.
`
`[0003] According to one aspect, an application program-
`ming interface for building location aware applications is
`used. This higher level programming model is directed
`towards allowing a programmer to use location information
`as a logical entity rather than just raw location data, such as
`latitude and
`longitude. The
`location
`information
`is
`abstracted into areas of interest. The developer also does not
`need to concern themselves with building their own map
`rendering software and may use rendering engines devel-
`oped by third parties.
`
`[0004] According to another aspect of the invention, an
`event driven programming model is used in building the
`location aware applications. Events may be generated in
`response to the location of an item relative to an area of
`interest. For example, a programmer designates one routine
`to be executed when a device enters a first area of interest,
`and another routine to be executed when a device leaves a
`second area of interest.
`
`[0005] According to yet another aspect of the invention, a
`location data store may be accessed by different location
`aware applications. Instead of each location application
`relying on its own data store, applications may share their
`location related information.
`
`[0006] According to yet another aspect of the invention,
`shared maps may be accessed by different location aware
`applications. Instead of each location application relying on
`its own map store and map rending technology, applications
`may work with a shared repository of maps data and map
`rendering engines.
`
`BRIEF DESCRIPTION OF THE DRAWINGS
`
`[0007] FIGS. 1 and 2 illustrate an exemplary computing
`devices that may be used in exemplary embodiments of the
`present invention;
`
`[0008] FIG. 3 illustrates a location aware system;
`
`[0009] FIG. 4 shows a state diagram of interaction for
`development of location aware applications;
`
`[0010] FIG. 5 shows defining exemplary areas of interest;
`
`[0011] FIG. 6 illustrates exemplary maps that may be used
`by a location aware application;
`
`[0012] FIG. 7 illustrates an exemplary simulation screen-
`shot for a location aware application; and
`
`[0013] FIG. 8 is a functional block diagram generally
`illustrating an location aware development system in accor-
`dance with aspects of the invention.
`
`DETAILED DESCRIPTION OF THE
`PREFERRED EMBODIMENT
`
`[0014] Generally, the present invention is directed at pro-
`viding a method and system for making it easier to develop
`and use location aware software applications. Combining
`the currently separate and complex tasks of location infor-
`mation gathering, analysis, and display and making them
`integrated such that non-experts can build location services
`into their applications increases a developer's capability to
`write rich location-aware software applications
`
`Illustrative Location Aware Development System
`
`[0015] FIG. 3 illustrates a location aware system, in
`accordance with aspects of the invention. Location system
`300 includes location manager 320, location aware applica-
`tion 330, and map manager 340. Location manager is
`coupled to location sources 325(1-N). Map manager is
`coupled to map store(s) 342, map generator(s) 344, and map
`web service(s) 346.
`
`[0016] Location manager 320 is configured to receive
`location information from on or off device location sources
`(325(1-N)) and abstract the location information into loca-
`tion events that are provided to location aware application
`330. The location sources may be anything that provides
`location information about an item. For example, one loca-
`tion source may be a GPS receiver. Another location source
`may be a user input that indicates the position of an item. For
`example, a user may indicate through a user input on a
`device that they are at a certain location. The user may enter
`a location into their device using a keypad, touch screen,
`voice recognition, and the like. Other location sources may
`be simulated location sources. Instead of a developer having
`to be in the field to test application 330, they may use
`simulated location data. Another location source may be an
`RFID tag. Each location source may provide different reso-
`lutions of location data. For example, some location sources
`may be very accurate while other location sources may only
`be accurate to within a neighborhood, on a road, and the like.
`
`[0017] A location source can correspond to a proximate or
`distant location source. A proximate source corresponds to
`location generating hardware, including, but not limited to a
`GPS receiver or to the mobile device itself which is getting
`its location from network information. A distant location
`source corresponds to location information either pushed or
`pulled from a remote networked source (e.g. such as a
`pushed SMS message arriving with the location of my
`friend's car, or location information returned (pulled) via a
`web-request). Both the proximate and distant location
`
`Exhibit 1006
`Page 10 of 16
`
`

`

`US 2006/0116817 Al
`
`Jun. 1, 2006
`
`2
`
`sources are treated as abstract logical entities. This makes
`the programming model similar for many different kinds of
`location information.
`
`[0018] Once the location data is received, location man-
`ager 320 determines if any location event is triggered that
`relates to application 330. Instead of only being able to
`provide raw location data from the location sources to
`application 330, location manager 320 provides location
`events upon the occurrence of an item having some logical
`relationship with an area of interest, such as entering or
`leaving an area of interest.
`
`[0019] Generally, an area of interest provides an abstrac-
`tion of the location data (See FIG. 5 and related discussion).
`An area if interest can relate to any area and can be indoors
`or outdoors. For example, an indoor location could be used
`to show the location of a fixed asset (e.g. conference room)
`and/or moveable asset (e.g. people, office equipment, inven-
`tory).
`
`[0020] An outdoor area of interest could be a city block,
`an area around a building or some other landmark, or some
`other predefined area. An outdoor area of interest may also
`be a movable asset (e.g. a car or a person).
`
`Instead of an application having to interpret the raw
`[0021]
`location data, application 330 registers for location events
`based on the relation of the item to areas of interest. Upon
`the occurrence of the predefined location event, location
`manager 320 notifies application 330. At that point, appli-
`cation 330 executes an event driven code routine that was
`developed to handle the location event.
`
`[0022] Location aware application 340 responds to the
`generated location events. Upon the occurrence of a location
`event, location aware application 330 supplies a set of
`weighted criteria to MapManager 340. For example, the
`weighted criteria may include a suggested map resolution
`along with a set of objects that the applications would like
`displayed on the map they draw. The application may also
`supply objects that they want rendered on top of the existing
`map. In addition to the application responding to event
`driven rendering of maps, the application can also be self
`driven. For example, an application may have a timer that
`periodically "pulls" information and renders a new map. So
`in addition to "push" event-driven responses, the application
`can also "pull" data and take action.
`
`[0023] Map manager 340 abstracts the map information
`from the application such that it does not need to know
`details regarding how to handle maps or location informa-
`tion. Instead of the application having to include complex
`map rendering code, the application provides map manager
`340 with the name or type of map it would like displayed.
`Map generators 344 are not tied to any single application, or
`rendering engine. For example, one rendering engine may be
`vector based, whereas another rendering engine may be
`bitmap based. Location aware application 330 is provided
`with an interface to interact with map generator 344.
`
`[0024] Map Manager 340 provides a rich set of features to
`location aware application without application 330 having to
`know the details of how to implement the map code. For
`example, suppose application 330 wants to allow a user to
`point to an area on a map and then have that data translated
`to a latitude and longitude, or in the case of an indoor map
`into indoor coordinate systems. Map manager 340 provides
`
`that information to application 330. MapManager 340 acts
`as the broker between application 330 and the map-render-
`ing technologies and supplies functionality to the applica-
`tion. Some of the functionality includes mapping X/Y screen
`coordinates on the device to Lat/Long/Altitude map coor-
`dinates on the map. For example, a user may click on the
`screen that is currently displaying a map to input their
`location. In response to the user input, map manager maps
`the X/Y screen location to the Lat/Long/Altitude map loca-
`tion. Similarly, map manager 340 maps Lat/Long/Altitude
`map data to X/Y screen locations allowing the application to
`dynamically render on top of the currently displayed map.
`The altitude on some map renderings, such as a ski-area
`map, may significantly affect the X/Y location. There are
`many ways of converting an X/Y coordinate into a Lat/
`Long/Altitude coordinate. Generally, map manager receives
`the X/Y screen coordinate, matches the coordinate to the
`map, and then, based on the scale of the map, its projection
`technology and map boundaries provides the Lat/Long/
`Altitude coordinate. The application does not need to under-
`stand how the maps themselves are being rendered or what
`"projection technology" is being used. Many different map
`projection technologies are possible, including, but not
`limited to, classical map-projection techniques such as Mer-
`cator projections, Cylindrical projections, Polar projections,
`Grid projections and custom projection technologies (e.g. a
`ski-area map, a stadium seating map, etc). The application
`may seamlessly move between different projection tech-
`niques.
`
`[0025] MapManager 340 also supplies high level events
`about the set of available maps to application 330. These
`events provide the application important information such as
`when there are several maps available that meet the criteria
`requested by the application. Application 330 is not confined
`to using a single map for display. For example, one appli-
`cation may use a street map for one period of time and then
`use a metro map (e.g. showing bus routes, subway tunnels,
`etc.) during another time. Map manager 340 ranks the maps
`according to their order of suitability. When there are no
`maps available that meet the criteria provided by application
`330, but map manager 340 may locate maps that meet some
`of the criteria, then those maps may be provided.
`
`[0026] MapManager 340 also allows for the dynamic
`provisioning of new maps onto the device. The maps may be
`downloaded to the device at any time. For example, a new
`map may be downloaded for a public transportation appli-
`cation when a new transit route is added. According to one
`embodiment, these maps are represented using two files, one
`binary and opaque to MapManager and one that it under-
`stands. According to one embodiment, the map is repre-
`sented using an XML file. The map manager is able to read
`the XML file and obtain the information necessary to add the
`map to the on-device local map data store. Maps may also
`be added to the map store by the developer or through other
`sources.
`
`[0027] The following is an exemplary XML representa-
`tion.
`
`—<MapData Version="1.01"
`MapProjection="SimpleGrid"
`
`Exhibit 1006
`Page 11 of 16
`
`

`

`US 2006/0116817 Al
`
`Jun. 1, 2006
`
`3
`
`-continued
`
`MetersPerPixel="2.80253449893166"
`MapInfoClass="none" CustomMapRenderer="none">
`—<SimpleLatLongRectangle
`MapFileName="device map 1 0.PNG">
`<MapCoordinate Position="NorthWestComer"
`Latitude="50.7867" Longitude="6.07814549019608" I>
`<MapCoordinate Position="NortEastComer"
`Latitude="50.7867" Longitude="6.09407106666667" I>
`<MapCoordinate Position="SouthWestComer"
`Latitude="50.7766295454545"
`Longitude="6.07814726827094" I>
`<MapCoordinate Position="SouthEastCorner"
`Latitude="50.7766295454545"
`Longitude="6.09406985757576" I>
`</SimpleLatLongRectangle>
`</MapData>
`
`[0028] MapProjection refers to the technology that is used
`to display the map. In this particular example, the map
`projection type is a simple grid. MetersPerPixel refers to the
`average resolution of the map. MapInfoClass refers to
`whether there is a custom class that is needed to answer
`questions about this map. This field allows a developer to
`include a custom class within the programming environment
`that may be called when this map is displayed. Similarly,
`CustomMapRenderer refers to whether a custom rendering
`engine is needed to draw the map. The MapFileName field
`refers to the binary file name that contains information that
`the map-renderering engine that will be used to draw the
`map. The SimpleLatLongRectangle field identifies the map
`as a rectangle defined by latitude and longitude coordinates.
`
`[0029] The following example illustrates some of the
`custom fields being utilized.
`
`—<MapData Version="1.01" MapProjec on="S mpleGrid"
`MetersPerPixel="2.80253449893166"
`MapInfoClass="CustomMapInfol"
`CustomMapRender="CustomMapRenderr>
`<CustomMapInfol MapFileName="device_map 1 0.PNG"
`dassId="CustomMapEngine.MapInfoParser" />
`<CustmMapRenderl MapFileName="device_map 1 0.PNG"
`classId="CustomMapEngine.MapRenderEngine" />
`</MapData>
`
`[0030] MapManager 340 may have multiple maps avail-
`able on the device in a map store (342) that may be used by
`application 330. Map manager 340 searches though the set
`of maps available on the device in map store 342 and looks
`for the best map to be used. After being selected, the best fit
`map is selected and rendered.
`
`[0031] FIG. 4 shows a state diagram of interaction for
`development of location aware applications, in accordance
`with aspects of the invention.
`
`defined based on the needs of the location aware application.
`For example, suppose the location aware application being
`developed determines when a child leaves their school and
`returns home. In this particular example, areas of interest
`may be an area including the school and another area of
`interest including the child's home. Some areas of interest
`may be selected by the developer, while other areas of
`interest may be selected by a user. For example, many
`applications, such as the example described above, are
`configured after the application is provided to the user. In the
`above example, a parent may select the areas of interest.
`
`[0033] State 420 shows the selection of maps and map
`servers. A developer may select between the maps available
`in the system or may create their own maps. According to
`one embodiment of the invention, the available maps are
`shared across location applications such that different loca-
`tion aware applications may use the same map. In this way,
`each location aware application does not need to develop
`their own maps. In most instances, the specifics of the map
`rendering is hidden from the developer of the location aware
`application. Should the developer desire to include their own
`rendering software they may incorporate their rendering
`software into the environment at state 440.
`
`[0034] At state 440, the developer may also set up their
`preference for the rendering. For example, the developer
`may want to use a vector based rendering engine for one part
`of the application and a bitmap based system for another part
`of the application. The map engines may be provided by
`many different sources. Any developer who wants to build
`an engine may supply a map engine that conforms to the
`programming interface. Each map engine is plugged into the
`development system.
`
`[0035] At state 430, the developer programs the event
`based location code that is executed in response to events
`associated with the areas of interest within their application.
`This event based code is dependent upon the type of location
`aware application being developed and may include many
`different types of data. For example, a program may perform
`an action when a user reaches a predetermined location. In
`the tracking the child example above, an example routine
`may be programmed to highlight the home or school based
`on the location of the child at that particular time. The
`developer may also place items onto the map in response to
`the events.
`
`[0036] At state 450, the location aware application may be
`tested using real and/or simulated location sources. The
`system provides a simulator of a location source such that an
`application may be tested before it is put to us in the field.
`Using a simulated data source allows a developers event
`based location code to be tested upon the occurrence of a
`location event. Another use of a simulated location-source
`data is to "play back" previously recorded real-world loca-
`tion data. This is useful for application development, testing
`and debugging.
`
`[0032] Starting at state 410, geographical areas of interest
`are defined. The selection of the areas of interest may occur
`before or after the location aware application is deployed.
`Additionally, this information may be sent out to the devices
`at any time. An area of interest is a predefined region that
`relates to a map. The area of interest may be any size that is
`definable. For example, an area of interest may be the size
`a square meter or an entire country. The areas of interest are
`
`[0037] FIG. 5 shows defining exemplary areas of interest,
`in accordance with aspects of the invention. As illustrated in
`FIG. 5, two areas of interest have been defined. Area of
`interest #1 is defined by an oval boundary area and area of
`interest #2 is defined by a rectangular border. Although the
`areas of interest have been defined using predetermined
`geometric shapes, the areas of interest may be more defined
`in any way that defines the area. For example, the area of
`
`Exhibit 1006
`Page 12 of 16
`
`

`

`US 2006/0116817 Al
`
`Jun. 1, 2006
`
`4
`
`interest could be defined as a neighborhood, a county, an
`area between certain roads, and the like. According to one
`embodiment of the invention, the developer uses a set of
`predefined shapes to designate the areas of interest. The user
`may also select a point on the map and then provide a radius
`to extend from that point to be the area of interest. The area
`of interest may also be set using latitude and longitude
`coordinates.
`[0038] While the map illustrated in FIG. 5 shows a city
`map including streets, the map may be any type of map. For
`example, the map could be a ski map, a map of a forest, a
`park, a golf course, building floor plans, stadium seating
`maps and the like. As discussed above, when and area of
`interest is designated an event may be triggered based on
`something entering or leaving the area.
`[0039] While not illustrated, an area of interest may be a
`certain type of location. For example, a location aware
`application may be interested in knowing when it is close to
`a coffee shop or a movie theater. In this particular example,
`each coffee shop or movie theater known by the system
`could be an area of interest. As more coffee shops become
`available, their location could be dynamically added to the
`application such that the application is aware of them. Other
`location aware applications may define an area of interest as
`a particular store, sporting arena, bus stop, office building,
`and the like.
`[0040] FIG. 6 illustrates exemplary maps that may be
`used by a location aware application, in accordance with
`aspects of the invention. As illustrated, these maps are
`defined as a simple rectangle defined by latitude and longi-
`tude. Each of the four maps includes an upper left latitude
`and longitude and a lower right latitude and longitude. As
`discussed above with regard to FIG. 3, the maps may be
`defined in many different ways. Any location aware appli-
`cation could use these maps for display when appropriate.
`[0041] FIG. 7 illustrates an exemplary simulation screen-
`shot for a location aware application, in accordance with
`aspects of the invention. Within the simulator, two map
`views are displayed including a smaller more detailed view
`and a global, overall view. Illustrated on the maps are
`predefined areas of interest which are represented by circular
`regions and square regions. When the simulated movement
`enters or leaves an area, the developer may determine if the
`appropriate code they developed is working properly.
`Illustrative Operating Environment
`[0042] With reference to FIG. 1, one exemplary system
`for implementing the invention includes a computing
`device, such as computing device 100. In a very basic
`configuration, computing device 100 typically includes at
`least one processing unit 102 and system memory 104.
`Depending on the exact configuration and type of computing
`device, system memory 104 may be volatile (such as RAM),
`non-volatile (such as ROM, flash memory, etc.) or some
`combination of the two. System memory 104 typically
`includes an operating system 105, one or more applications
`106, and may include program data 107. In one embodiment,
`application 106 may include location aware programming
`interface 120 that is used in building location aware appli-
`cations for mobile devices. This location aware program-
`ming interface can be integrated with map selection, man-
`agement and rendering interfaces. This basic configuration
`is illustrated in FIG. 1 by those components within dashed
`line 108.
`
`[0043] Computing device 100 may have additional fea-
`tures or functionality. For example, computing device 100
`may also include additional data storage devices (removable
`and/or non-removable) such as, for example, magnetic
`disks, optical disks, or tape. Such additional storage is
`illustrated in FIG. 1 by removable storage 109 and non-
`removable storage 110. Computer storage media may
`include volatile and nonvolatile, removable and non-remov-
`able media implemented in any method or technology for
`storage of information, such as computer readable instruc-
`tions, data structures, program modules, or other data.
`System memory 104, removable storage 109 and non-
`removable storage 110 are all examples of computer storage
`media. Computer storage media includes, but is not limited
`to, RAM, ROM, EEPROM, flash memory or other memory
`technology, CD-ROM, digital versatile disks (DVD) or other
`optical storage, magnetic cassettes, magnetic tape, magnetic
`disk storage or other magnetic storage devices, or any other
`medium which can be used to store the desired information
`and which can be accessed by computing device 100. Any
`such computer storage media may be part of device 100.
`Computing device 100 may also have input device(s) 112
`such as keyboard, mouse, pen, voice input device, touch
`input device, etc. Output device(s) 114 such as a display,
`speakers, printer, etc. may also be included.
`
`[0044] Computing device 100 may also contain commu-
`nication connections 116 that allow the device to commu-
`nicate with other computing devices 118, such as over a
`network. Communication connection 116 is one example of
`communication media. Communication media may typi-
`cally be embodied by computer readable instructions, data
`structures, program modules, or other data in a modulated
`data signal, such as a carrier wave or other transport mecha-
`nism, and includes any information delivery media. The
`term "modulated data signal" means a signal that has one or
`more of its characteristics set or changed in such a manner
`as to encode information in the sig

This document is available on Docket Alarm but you must sign up to view it.


Or .

Accessing this document will incur an additional charge of $.

After purchase, you can access this document again without charge.

Accept $ Charge
throbber

Still Working On It

This document is taking longer than usual to download. This can happen if we need to contact the court directly to obtain the document and their servers are running slowly.

Give it another minute or two to complete, and then try the refresh button.

throbber

A few More Minutes ... Still Working

It can take up to 5 minutes for us to download a document if the court servers are running slowly.

Thank you for your continued patience.

This document could not be displayed.

We could not find this document within its docket. Please go back to the docket page and check the link. If that does not work, go back to the docket and refresh it to pull the newest information.

Your account does not support viewing this document.

You need a Paid Account to view this document. Click here to change your account type.

Your account does not support viewing this document.

Set your membership status to view this document.

With a Docket Alarm membership, you'll get a whole lot more, including:

  • Up-to-date information for this case.
  • Email alerts whenever there is an update.
  • Full text search for other cases.
  • Get email alerts whenever a new case matches your search.

Become a Member

One Moment Please

The filing “” is large (MB) and is being downloaded.

Please refresh this page in a few minutes to see if the filing has been downloaded. The filing will also be emailed to you when the download completes.

Your document is on its way!

If you do not receive the document in five minutes, contact support at support@docketalarm.com.

Sealed Document

We are unable to display this document, it may be under a court ordered seal.

If you have proper credentials to access the file, you may proceed directly to the court's system using your government issued username and password.


Access Government Site

We are redirecting you
to a mobile optimized page.





Document Unreadable or Corrupt

Refresh this Document
Go to the Docket

We are unable to display this document.

Refresh this Document
Go to the Docket