throbber
Getting the Heading and Course of a Device
`
`Core Location supports two different ways to get direction-related information:
`• Devices with a magnetometer can report the direction in which a device is pointing, also
`known as its heading.
`• Devices with GPS hardware can report the direction in which a device is moving, also known
`as its course.
`
`Heading and course information don’t represent the same information. The heading of a device
`reflects the actual orientation of the device relative to true north or magnetic north. The course
`of the device represents the direction of travel and doesn’t take into account the device
`orientation. Depending on your app, you might prefer one type of information over the other or
`use a combination of the two. For example, a navigation app might toggle between course and
`heading information depending on the user’s current speed. At walking speeds, heading
`information would be more useful for orienting the user to the current environment, whereas in
`a car, course information provides the general direction of the car’s movement.
`
`Adding a Requirement for Direction-Related
`Events
`
`If your iOS app requires direction-related information in order to function properly, include the
`UIRequiredDeviceCapabilities key in the app’s Info.plist file. This key contains an
`array of strings indicating the features that your app requires of the underlying iOS-based
`device. The App Store uses this information to prevent users from installing apps on a device
`without the minimum required hardware.
`For direction-related events, you can associate two relevant strings with the
`UIRequiredDeviceCapabilities key:
`• magnetometer—Include this string if your app requires heading information.
`• gps—Include this string if your app requires course-related information.
`
`Important: If your iOS app uses heading or course events but is able to operate successfully
`without them, don’t include the corresponding string value with the
`UIRequiredDeviceCapabilities key.
`
`Apple v. Maxell
`IPR2020-00408
`Maxell Ex. 2022
`
`Page 1 of 4
`
`

`

`In both cases, also include the location-services string in the array. For more information
`about the UIRequiredDeviceCapabilities key, see Information Property List Key Reference.
`
`Getting Heading-Related Events
`
`Heading events are available to apps running on a device that contains a magnetometer. A
`magnetometer measures nearby magnetic fields emanating from the Earth and uses them to
`determine the precise orientation of the device. Although a magnetometer can be affected by
`local magnetic fields, such as those emanating from fixed magnets found in audio speakers,
`motors, and many other types of electronic devices, Core Location is smart enough to filter out
`fields that move with the device.
`Heading values can be reported relative either to magnetic north or true north on the map.
`Magnetic north represents the point on the Earth’s surface from which the planet’s magnetic
`field emanates. This location is not the same as the North Pole, which represents true north.
`Depending on the location of the device, magnetic north may be good enough for many
`purposes, but the closer to the poles you get, the less useful this value becomes.
`To get heading events:
`1. Create a CLLocationManager object.
`2. Determine whether heading events are available by calling the headingAvailable class
`method.
`3. Assign a delegate to the location manager object.
`4. If you want true north values, start location services.
`5. Call the startUpdatingHeading method to begin the delivery of heading events.
`
`Listing 3-1 shows a custom method that configures a location manager and starts the delivery
`of heading events. In this case, the object is a view controller that displays the current heading
`to the user. Because the view controller displays the true north heading value, it starts location
`updates in addition to heading updates.
`
`Listing 3-1  Initiating the delivery of heading events
`- (void)startHeadingEvents {
` if (!self.locManager) {
` CLLocationManager* theManager = [[[CLLocationManager alloc] init]
`autorelease];
`
` // Retain the object in a property.
` self.locManager = theManager;
` locManager.delegate = self;
`
`Apple v. Maxell
`IPR2020-00408
`Maxell Ex. 2022
`
`Page 2 of 4
`
`

`

` }
`
` // Start location services to get the true heading.
` locManager.distanceFilter = 1000;
` locManager.desiredAccuracy = kCLLocationAccuracyKilometer;
` [locManager startUpdatingLocation];
`
` // Start heading updates.
` if ([CLLocationManager headingAvailable]) {
` locManager.headingFilter = 5;
` [locManager startUpdatingHeading];
` }
`}
`
`The object you assign to the delegate property must conform to the
`CLLocationManagerDelegate protocol. When a new heading event arrives, the location
`manager object calls the locationManager:didUpdateHeading: method to deliver that
`event to your app. Upon receiving a new event, check the headingAccuracy property to
`ensure that the data you just received is valid, as shown in Listing 3-2. In addition, if you are
`using the true heading value, also check whether it contains a valid value before using it.
`
`Listing 3-2  Processing heading events
`- (void)locationManager:(CLLocationManager *)manager didUpdateHeading:
`(CLHeading *)newHeading {
` if (newHeading.headingAccuracy < 0)
` return;
`
` // Use the true heading if it is valid.
` CLLocationDirection theHeading = ((newHeading.trueHeading > 0) ?
` newHeading.trueHeading : newHeading.magneticHeading);
`
` self.currentHeading = theHeading;
` [self updateHeadingDisplays];
`}
`
`Apple v. Maxell
`IPR2020-00408
`Maxell Ex. 2022
`
`Page 3 of 4
`
`

`

`Getting Course Information While the User Is
`Moving
`
`Devices that include GPS hardware can generate information that represents the device’s
`current course and speed. Course information indicates the direction in which the device is
`moving and doesn’t necessarily reflect the orientation of the device itself. As a result, course
`information is primarily intended for apps that provide navigation information while the user is
`moving.
`The actual course and speed information is returned to your app in the same CLLocation
`objects you use to get the user’s position. When you start location updates, Core Location
`automatically provides course and speed information when it’s available. The framework uses
`the incoming location events to compute the current direction of motion. For more information
`on how to start location updates, see Getting the User’s Location.
`
`Copyright © 2016 Apple Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2016-03-21
`
`Apple v. Maxell
`IPR2020-00408
`Maxell Ex. 2022
`
`Page 4 of 4
`
`

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