EXHIBIT A 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 1 of 53 PageID #: 2973
THE UNITED STATES DISTRICT COURT 

FOR THE EASTERN DISTRICT OF TEXAS 

MARSHALL DIVISION

Case No. 2:23-CV-00103-JRG-RSP

DEFENDANTS’ NOTICE OF SUBPOENA TO GOOGLE LLC

TO ALL PARTIES AND THEIR ATTORNEYS OF RECORD:

PLEASE TAKE NOTICE that pursuant to Rules 30, 34, and 45 of the Federal Rules of 

Civil Procedure, Defendants Samsung Electronics Co., Ltd. (“SEC”) and Samsung Electronics 

America, Inc. (“SEA”) (collectively, “Defendants”) have caused or will cause the attached 

subpoenas to be served on Google LLC (“Google”).

Please take further notice that Defendants will require Google to produce the documents, 

tangible things, and items set out in Attachment A to the subpoena commanding production of 

documents, to be served on December 1, 2023, a copy of which is attached hereto. The

documents, tangible things, and items shall be produced at the place, date, and time specified in 

the subpoena or another place, date, and time agreed to by the parties. 

Please take further notice that Defendants will require Google to present a corporate 

witness for deposition to speak to the topics identified in Attachment A to the subpoena. The 

witness shall be present for the deposition at the place, date, and time specified in the subpoena or 

another place, date, and time agreed to by the parties. 

HEADWATER RESEARCH LLC,

Plaintiff, 

v.

SAMSUNG ELECTRONIC CO., LTD and 

SAMSUNG ELECTRONICS AMERICA, INC.,

Defendants. 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 2 of 53 PageID #: 2974
2

Dated: November 30, 2023 Respectfully submitted,

By: /s/ Grant Schmidt

Grant Schmidt (Texas Bar No. 24084579) 

Jon Hyland (Texas Bar No. 24046131) 

Theodore Kwong (Texas Bar No. 4087871) 

HILGERS GRABEN PLLC

7859 Walnut Hill Lane, Suite 335

Dallas, Texas 75230

Telephone: 469-751-2819 

gschmidt@hilgersgraben.com 

jhyland@hilgersgraben.com 

tkwong@hilgersgraben.com

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 3 of 53 PageID #: 2975
3

CERTIFICATE OF SERVICE

I hereby certify on November 30, 2023, a true and correct copy of the foregoing was

served on counsel of record for Plaintiff via electronic mail.

/s/ Grant Schmidt

Grant Schmidt

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 4 of 53 PageID #: 2976
AO 88A (Rev. 12/20) Subpoena to Testify at a Deposition in a Civil Action 

To: 

UNITED STATES DISTRICT COURT 

for the 

Eastern District of Texas 

HEADWATER RESEARCH LLC 

Plaintiff 

V. 

SAMSUNG ELECTRONICS CO., LTD., et al. 

Defendant 

) 

) 

) 

) 

) 

) 

Civil Action No. 2:23-cv-00103-JRG-RSP 

SUBPOENA TO TESTIFY AT A DEPOSITION IN A CIVIL ACTION 

Google LLC, Registered Agent, Corporation Service Company, 251 Little Falls Drive 

Wilmington, DE 19808 

(Name of person to whom this subpoena is directed) 

J Testimony: YOU ARE COMMANDED to appear at the time, date, and place set fo1th below to testify at a

deposition to be taken in this civil action. If you are an organization, you must promptly confer in good faith with the 

pa1ty se1ving this subpoena about the following matters, or those set fo1th in an attachment, and you must designate one 

or more officers, directors, or managing agents, or designate other persons who consent to testify on your behalf about 

these matters: See Attachment A 

Place: Date and Time: 

Wilmington, DE 19801 12/12/2023 10:00 am 

The deposition will be recorded by this method: stenographic means, LiveNote or similar, and/or videotape

J Production: You, or your representatives, must also bring with you to the deposition the following documents,

electronically stored info1mation, or objects, and must pe1mit inspection, copying, testing, or sampling of the 

material: See Attachment A 

The following provisions of Fed. R. Civ. P. 45 are attached- Rule 45(c), relating to the place of compliance; 

Rule 45(d), relating to your protection as a person subject to a subpoena; and Rule 45(e) and (g), relating to your duty to 

respond to this subpoena and the potential consequences of not doing so. 

Date: 11/29/2023 

CLERK OF COURT 

Signature of Clerk or Deputy Clerk 

OR 

/s/ Grant Schmidt 

Attorney's signature 

The name, address, e-mail address, and telephone number of the attorney representing (name of party) Defendants 

Samsung Electronics Co., Ltd., et al. 

, who issues or requests this subpoena, are:

Grant Schmidt, 7859 Walnut Hill Lane, Suite 335, Dallas, TX 75230, gschmidt@hilgersgraben.com, 469-751-2819 

Notice to the person who issues or requests this subpoena 

If this subpoena commands the production of documents, electronically stored info1mation, or tangible things before 

tiial, a notice and a copy of the subpoena must be se1ved on each party in this case before it is se1ved on the person to 

whom it is directed. Fed. R. Civ. P. 45(a)(4). 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 5 of 53 PageID #: 2977
AO 88A (Rev. 12/20) Subpoena to Testify at a Deposition in a Civil Action (Page 2)

Civil Action No.

PROOF OF SERVICE

(This section should not be filed with the court unless required by Fed. R. Civ. P. 45.)

I received this subpoena for (name of individual and title, if any)

on (date) .

’ I served the subpoena by delivering a copy to the named individual as follows:

on (date) ; or

’ I returned the subpoena unexecuted because:

.

Unless the subpoena was issued on behalf of the United States, or one of its officers or agents, I have also

tendered to the witness the fees for one day’s attendance, and the mileage allowed by law, in the amount of

$ .

My fees are $ for travel and $ for services, for a total of $ .

I declare under penalty of perjury that this information is true.

Date:

Server’s signature

Printed name and title

Server’s address

Additional information regarding attempted service, etc.:

2:23-cv-00103-JRG-RSP 0.00 Print Save As... Add Attachment Reset

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 6 of 53 PageID #: 2978
AO 88A (Rev. 12/20) Subpoena to Testify at a Deposition in a Civil Action (Page 3)

Federal Rule of Civil Procedure 45 (c), (d), (e), and (g) (Effective 12/1/13)

(c) Place of Compliance.

(1) For a Trial, Hearing, or Deposition. A subpoena may command a

person to attend a trial, hearing, or deposition only as follows:

(A) within 100 miles of where the person resides, is employed, or

regularly transacts business in person; or

(B) within the state where the person resides, is employed, or regularly

transacts business in person, if the person

(i) is a party or a party’s officer; or

(ii) is commanded to attend a trial and would not incur substantial

expense.

(2) For Other Discovery. A subpoena may command:

(A) production of documents, electronically stored information, or

tangible things at a place within 100 miles of where the person resides, is

employed, or regularly transacts business in person; and

(B) inspection of premises at the premises to be inspected.

(d) Protecting a Person Subject to a Subpoena; Enforcement.

(1) Avoiding Undue Burden or Expense; Sanctions. A party or attorney

responsible for issuing and serving a subpoena must take reasonable steps

to avoid imposing undue burden or expense on a person subject to the

subpoena. The court for the district where compliance is required must

enforce this duty and impose an appropriate sanction—which may include

lost earnings and reasonable attorney’s fees—on a party or attorney who

fails to comply.

(2) Command to Produce Materials or Permit Inspection.

(A) Appearance Not Required. A person commanded to produce

documents, electronically stored information, or tangible things, or to

permit the inspection of premises, need not appear in person at the place of

production or inspection unless also commanded to appear for a deposition,

hearing, or trial.

(B) Objections. A person commanded to produce documents or tangible

things or to permit inspection may serve on the party or attorney designated

in the subpoena a written objection to inspecting, copying, testing, or

sampling any or all of the materials or to inspecting the premises—or to

producing electronically stored information in the form or forms requested.

The objection must be served before the earlier of the time specified for

compliance or 14 days after the subpoena is served. If an objection is made,

the following rules apply:

(i) At any time, on notice to the commanded person, the serving party

may move the court for the district where compliance is required for an

order compelling production or inspection.

(ii) These acts may be required only as directed in the order, and the

order must protect a person who is neither a party nor a party’s officer from

significant expense resulting from compliance.

(3) Quashing or Modifying a Subpoena.

(A) When Required. On timely motion, the court for the district where

compliance is required must quash or modify a subpoena that:

(i) fails to allow a reasonable time to comply;

(ii) requires a person to comply beyond the geographical limits

specified in Rule 45(c);

(iii) requires disclosure of privileged or other protected matter, if no

exception or waiver applies; or

(iv) subjects a person to undue burden.

(B) When Permitted. To protect a person subject to or affected by a

subpoena, the court for the district where compliance is required may, on

motion, quash or modify the subpoena if it requires:

(i) disclosing a trade secret or other confidential research, development,

or commercial information; or

(ii) disclosing an unretained expert’s opinion or information that does

not describe specific occurrences in dispute and results from the expert’s

study that was not requested by a party.

(C) Specifying Conditions as an Alternative. In the circumstances

described in Rule 45(d)(3)(B), the court may, instead of quashing or

modifying a subpoena, order appearance or production under specified

conditions if the serving party:

(i) shows a substantial need for the testimony or material that cannot be

otherwise met without undue hardship; and

(ii) ensures that the subpoenaed person will be reasonably compensated.

(e) Duties in Responding to a Subpoena.

(1) Producing Documents or Electronically Stored Information. These

procedures apply to producing documents or electronically stored

information:

(A) Documents. A person responding to a subpoena to produce documents

must produce them as they are kept in the ordinary course of business or

must organize and label them to correspond to the categories in the demand.

(B) Form for Producing Electronically Stored Information Not Specified.

If a subpoena does not specify a form for producing electronically stored

information, the person responding must produce it in a form or forms in

which it is ordinarily maintained or in a reasonably usable form or forms.

(C) Electronically Stored Information Produced in Only One Form. The

person responding need not produce the same electronically stored

information in more than one form.

(D) Inaccessible Electronically Stored Information. The person

responding need not provide discovery of electronically stored information

from sources that the person identifies as not reasonably accessible because

of undue burden or cost. On motion to compel discovery or for a protective

order, the person responding must show that the information is not

reasonably accessible because of undue burden or cost. If that showing is

made, the court may nonetheless order discovery from such sources if the

requesting party shows good cause, considering the limitations of Rule

26(b)(2)(C). The court may specify conditions for the discovery.

(2) Claiming Privilege or Protection.

(A) Information Withheld. A person withholding subpoenaed information

under a claim that it is privileged or subject to protection as trial-preparation

material must:

(i) expressly make the claim; and

(ii) describe the nature of the withheld documents, communications, or

tangible things in a manner that, without revealing information itself

privileged or protected, will enable the parties to assess the claim.

(B) Information Produced. If information produced in response to a

subpoena is subject to a claim of privilege or of protection as

trial-preparation material, the person making the claim may notify any party

that received the information of the claim and the basis for it. After being

notified, a party must promptly return, sequester, or destroy the specified

information and any copies it has; must not use or disclose the information

until the claim is resolved; must take reasonable steps to retrieve the

information if the party disclosed it before being notified; and may promptly

present the information under seal to the court for the district where

compliance is required for a determination of the claim. The person who

produced the information must preserve the information until the claim is

resolved.

(g) Contempt.

The court for the district where compliance is required—and also, after a

motion is transferred, the issuing court—may hold in contempt a person

who, having been served, fails without adequate excuse to obey the

subpoena or an order related to it.

For access to subpoena materials, see Fed. R. Civ. P. 45(a) Committee Note (2013).

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 7 of 53 PageID #: 2979
4

ATTACHMENT A 

The following definitions and instructions apply.

DEFINITIONS

1. “You,” “Your,” and “Google LLC” mean Google LLC, and its officers, directors, 

current and former employees, counsel, agents, consultants, representatives, and any other 

persons acting on behalf of any of the foregoing, and all Google affiliates, parents, divisions, 

joint ventures, licensees, franchisees, assigns, predecessors and successors in interest, and any 

other legal entities, whether foreign or domestic, that are owned, controlled by, or under 

common control with Google and all predecessors and successors in interest to such entities.

2. “Headwater” means Headwater Research, LLC, and its officers, directors, current 

and former employees, counsel, agents, consultants, representatives, and any other persons acting 

on behalf of any of the foregoing, and all Headwater affiliates, parents, divisions, joint ventures, 

licensees, franchisees, assigns, predecessors and successors in interest, and any other legal entities, 

whether foreign or domestic, that are owned, controlled by, or under common control with 

Headwater and all predecessors and successors in interest to such entities.

3. “Asserted Patents” means United States Patent Nos. 8,406,733 (“the ’733 patent”), 

9198,117 (“the ’117 patent”), and 9,615,192 (“the ’192 patent”).

4. “Document” and “Documents” shall be interpreted in their broadest possible sense 

and, at a minimum, shall by synonymous in meaning and equal in scope to usage of the term in 

Rule 34(a)(1)(A) of the Federal Rules of Civil Procedure and means any writing of any kind, 

including originals and all non-identical copies (whether different from the originals by reason of 

any notation made on such copies or otherwise), including any medium in which information is 

stored, by Rule 1001 of the Federal Rules of Evidence, including without limitation Electronically 

Stored Information. If a draft Document has been prepared in several copies that are not identical, 

or if the original identical copies are no longer identical due to subsequent notation, each nonidentical Document is a separate Document.

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 8 of 53 PageID #: 2980
5

5. “Thing(s)” is used in the broadest sense to include everything contemplated by 

Rule 34(a)(1)(B) of the Federal Rules of Civil Procedure. 

6. “Person” or “Entity” and their plural forms include, without limitation, natural 

persons, law firms, partnerships, corporations, associations, and any other legal entities and 

divisions, departments, or other units thereof. 

7. “Communication” means any transmission of information, including drafts.

8. “And” shall be treated as a synonym for “or” and vice versa. “Any” and “each” 

shall be understood to include one another and “all” whenever necessary to expand the scope of 

the request. The words “all,” “every,” “any,” and “each” shall include each other whenever 

possible to expand the scope of the request. 

9. “Message Delivery” refers to functionality that You developed involving sending 

messages from servers to apps on devices with Android, including the “p2p messaging passing 

system” feature mentioned in P2P Service Using XMPP (Exhibit A1) and related functionalities 

implemented at least in Android versions m3-rc20a, m3-rc22a, m3-rc37a, and m5-rc14 (Exhibit 

B2) and the “Push sync” feature mentioned on Slide 9 of the May 20, 2010 Building Push 

Applications for Android presentation (attached as Exhibit C3

).

10. In construing these definitions and instructions: (i) the singular shall include the 

plural and the plural shall include the singular; (ii) the masculine, feminine or neuter pronoun shall 

not exclude the other genders; (iii) the conjunctions “and” and “or” shall be read either 

disjunctively or conjunctively so as to bring within the scope of each topic all information that 

might otherwise be construed to be outside its scope; and (iv) the word “any” shall be read to mean 

each and every.

1 Attached as Exhibit A and available at https://web.archive.org/web/20071203160805/http:/code.google.com/android/toolbox/googleapis.html 2 Attached as Exhibit B and available at https://developer.android.com/sdk/older_releases 3 Attached as Exhibit C and available at https://docs.huihoo.com/google/io/2010/android-push-applications-android.pdf 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 9 of 53 PageID #: 2981
6

INSTRUCTIONS

1. Accompanying any document production, you shall provide a written declaration 

from the custodian or other qualified person certifying that the respective document production 

identified by Bates range, was: (A) made at or near the time of the occurrence of the matters set 

forth by, or from information transmitted by, a person with knowledge of those matters; (B) kept 

in the course of the regularly conducted activity; and (C) made by the regularly conducted activity 

as a regular practice.

2. These requests shall apply to all items (e.g., documents or things) in your 

possession, custody, or control and/or the possession, custody, or control of any of your 

employees, agents, corporations, parent or subsidiary corporations, and/or divisions or affiliates.

3. If no documents are responsive to a particular request, state that no responsive 

documents exist. 

4. If You claim that a Request for Production is over-broad or unduly burdensome, 

please respond to that portion of the Request for Production to which You do not object and 

specifically state why You claim the Request for Production is over-broad or unduly burdensome. 

5. All documents requested are to be produced in the same file or other organizational 

environment in which they are maintained. For example, a document that is part of a file, docket, 

or other grouping, should be physically produced together with all other documents from said 

file, docket or grouping, in the same order or manner of arrangement as the original. 

6. A copy of the Stipulated Protective Order entered in this case is included herewith. 

Thus, pursuant to the Protective Order adopted by the Court in this case, if You deem any 

document or information produced to be confidential, designate the document pursuant to the 

Protective Order.

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 10 of 53 PageID #:

2982
7

REQUESTS FOR PRODUCTION 

REQUEST FOR PRODUCTION NO. 1: 

Documents sufficient to show research, development, design, and use of “message 

delivery,” including any predecessor to Cloud to Device Messaging, prior to September 15, 2009 

(and particularly prior to January 28, 2008). 

REQUEST FOR PRODUCTION NO. 2:

Documents sufficient to show the identity, sale, offers for sale, public use and/or public 

demonstration of “message delivery,” including any predecessor to Coud to Device Messaging, 

prior to September 15, 2009 (and particularly prior to January 28, 2008) or the earliest date 

thereafter, including the earliest sale, offer for sale, public use, or public demonstration of push 

sync. 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 11 of 53 PageID #:

2983
8

TOPICS FOR DEPOSITION

TOPIC NO. 1:

The research, development, design, and use of “message delivery,” including any predecessor to 

Coud to Device Messaging, prior to September 15, 2009. 

TOPIC NO. 2:

The identify, sale, offers for sale, public use and/or public demonstration of “message delivery,” 

including any predecessor to Cloud to Device Messaging, prior to September 15, 2009 or the earliest date 

thereafter.

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 12 of 53 PageID #:

2984
EXHIBIT A 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 13 of 53 PageID #:

2985
Site Directory 

e.g. "intent" or "activity" 

Android - An Open Handset Alliance Project Home Docs FAQ Blog Group Terms 

Documentation Google APIs and Services in Android 

What is Android? 

Since Android is an open cell phone platform, anyone will be able to build their own devices that run the core Android OS. There is no requirement that any given Getting Started 

phone include any Google software, or even be associated with Google at all. Developing Applications 

Developer However, some groups may choose to license a set of optional user applications from Google that provide convenient developer access to Google services. This Toolbox 

will generally be a collection of software included in the base system image and shipped with the phone. Reference Information 

Sample Code Because many devices will include these libraries, for the convenience of developers we're including information about those APIs here. However, please be aware 

that any APIs you use from the list below may not be available on all Android devices. If the Google software is not present, these libraries and classes will not be FAQs present. As a result, if your application uses these APIs, it may not install or run properly on devices that lack the APIs. 

Goodies 

MapView 

The MapView is an Android View that allows third-party code to display and control a Google Map. This is a complementary offering to the MapActivity provided in 

the Google Maps application that other Activities can use to display maps of a specific location. The table below summarizes the differences between the two 

approaches. 

Feature MapActivity MapView 

Embeddable directly into your own Layout? No (can only set map display) Yes 

User-controlled navigation? Yes Yes 

Navigation via code? (i.e. scroll, zoom, etc. from your application code) No Yes 

Can fire events into your own code? No Yes 

The advantage of using the MapView over the Activity is that it gives you tight integration with your own layout; for instance, you can wrap custom controls around it, 

or implement fancy input mechanisms (such as using a tilt-sensor to scroll the Map based on how the user tilts the device). The disadvantage of using the MapView 

is that it requires more code to set up and use; if you simply wish to display a Google Map with the standard UI, it will be much easier to use the Activity. 

P2P Services Using XMPP 

Applications will frequently need to communicate between devices. For instance, you might wish to send messages back and forth between two devices, to 

implement an interactive game of checkers. Or, you might develop a social application where you want to send a message to a buddy. 

One way to do this is to simply send an SMS message to the other phone. It's possible to receive notifications via an IntentReceiver of incoming SMS messages, 

inspect them to see if they contain data intended for your application, and then consume the message, preventing other applications (and the user) from ever 

seeing it directly. This works well, but it has two major down-sides: SMS messages can take several minutes to deliver, and they typically cost users money to send 

and receive. If you built an online game using SMS message-passing, it might very well be both slow and frustrating, and very expensive to your users. 

As an alternative, Google provides an API that uses the XMPP protocol to pass messages . XMPP includes presence notification, meaning that it provides a 

convenient way for phones to notify each other when they are online and available for message-passing. It also provides a programmatic model similar to SMSbased message-passing, in that the sender calls a method on a Service to send a message, and the receiver is notified via a broadcast Intent (which it can fetch via 

an IntentReceiver). However, because XMPP is a persistent socket connection, the response time is much faster than SMS, allowing for a more fluid user 

experience. 

The system currently maintains a single XMPP connection to the server, and all XMPP traffic — including both standard XMPP instant messages, and this P2P 

message-passing system — is carried on the same connection. 

©2007 Google - Code Home - Site Terms of Service - Privacy Policy - Site Directory 

Build m3-rc27 - 21 Nov 2007 18:13 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 14 of 53 PageID #:

2986
EXHIBIT B 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 15 of 53 PageID #:

2987
Essentials Design & Plan Develop More English Android Studio Sign in 

On this page 

Archived SDKs 

Android Developers Was this helpful? 

Release 1.6 r1 

Release 1.5 r3 

SDK Archives bookmark_border Release 1.1 r1 

Release 1.0 r2 

This page provides archived and obsolete versions of the Android SDK, including non-current versions of active Obsolete SDK 

releases and "early look" versions that were released before Android 1.0. Releases 

Release 1.5 r2 These are provided for informational and archival purposes only . You should instead download the latest version 

of Android Studio , through which you can download previous versions of the Android platform for app development. Release 1.5 r1 

Release 1.0 r1 

Non-Compatible 

Archived SDKs SDK Releases 

The tables below provides Android SDKs that are current in terms of their platform version, but do not provide the 

latest Android development environment and tools. You should instead download each version of the Android platform 

with Android Studio's SDK Manager . 

Release 1 . 6 r1 

September 2009 - Release Notes 

Platform Package Size MD5 Checksum 

260529085 Windows android-sdk-windows-1.6_r1.zip 2bcbacbc7af0363058ca1cac6abad848 bytes 

Mac OS X android-sdk-mac_x86-1.6_r1.zip 247412515 bytes eb13cc79602d492e89103efcf48ac1f6 (intel) 

238224860 Linux (i386) android-sdk-linux_x86-1.6_r1.tgz b4bf0e610ff6db2fb6fb09c49cba1e79 bytes 

Release 1 . 5 r3 

July 2009 - Release Notes 

Platform Package Size MD5 Checksum 

Windows android-sdk-windows-1.5_r3.zip 191477853 bytes 1725fd6963ce69102ba7192568dfc711 

Mac OS X 183024673 android-sdk-mac_x86-1.5_r3.zip b1bafdaefdcec89a14b604b504e7daec (intel) bytes 

Linux (i386) android-sdk-linux_x86-1.5_r3.zip 178117561 bytes 350d0211678ced38da926b8c9ffa4fac 

Release 1 . 1 r1 

February 2009 - Release Notes 

Platform Package Size MD5 Checksum 

86038515 Windows android-sdk-windows-1.1_r1.zip 8c4b9080b430025370689e03d20842f3 bytes 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 16 of 53 PageID #:

2988
Mac OS X android-sdk-mac_x86-1.1_r1.zip 79046151 bytes becf0f1763d61eedce15d2a903d6c1dd (intel) 

79345522 Linux (i386) android-sdk-linux_x86-1.1_r1.zip ebcb16b0cd4aef198b4dd9a1418efbf1 bytes 

Release 1 . 0 r2 

November 2008 - Release Notes 

Platform Package Size MD5 Checksum 

Windows android-sdk-windows-1.0_r2.zip 98360564 bytes a5e1af8ac145946b4a9627516ad4a711 

Mac OS X (intel) android-sdk-mac_x86-1.0_r2.zip 93771410 bytes 87b99d5e9f59b78363a63200c11498e8 

Linux (i386) android-sdk-linux_x86-1.0_r2.zip 94186463 bytes a1f3b6d854596f850f5008856d0f380e 

Obsolete SDK Releases 

These tables provide Android SDK releases that have been superseded by an active release (shown above) and that 

are now obsolete. 

Release 1 . 5 r2 

May 2009 - Release Notes 

Platform Package Size MD5 Checksum 

Windows android-sdk-windows-1.5_r2.zip 178346828 bytes ba54ac6bda45921d442b74b6de6ff6a9 

Mac OS X android-sdk-mac_x86-1.5_r2.zip 169945128 bytes f4e06a5194410243f213d0177713d6c9 (intel) 

165035130 Linux (i386) android-sdk-linux_x86-1.5_r2.zip 1d3c3d099e95a31c43a7b3e6ae307ed3 bytes 

Release 1 . 5 r1 

April 2009 - Release Notes 

Platform Package Size MD5 Checksum 

Windows android-sdk-windows-1.5_r1.zip 176263368 bytes 42be980eb2d3efaced01ea6c32c0045f 

Mac OS X android-sdk-mac_x86-1.5_r1.zip 167848675 bytes 5b2a8d9f096032db4a75bfa0d689a51b (intel) 

162938845 Linux (i386) android-sdk-linux_x86-1.5_r1.zip 2addfd315da0ad8b5bde6b09d5ff3b06 bytes 

Release 1 . 0 r1 

September 23, 2008 - Release Notes 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 17 of 53 PageID #:

2989
Platform Package Size MD5 Checksum 

Windows android-sdk-windows-1.0_r1.zip 89.7 MB bytes d69f4ee93d4010f726c04302662fd999 

Mac OS X (intel) android-sdk-mac_x86-1.0_r1.zip 87.5 MB bytes 564876ada22872e50c2866806de9fc5c 

Linux (i386) android-sdk-linux_x86-1.0_r1.zip 87.8 MB bytes 2660b4029039b7d714e59827e9a9a11d 

Non-Compatible SDK Releases 

The SDKs listed below are "early-look" versions that were released in the year preceding the full release of Android 

1.0 in September 2008. Because these early-look SDKs were released before the Android 1.0 API specification was 

finalized, they do not provide a compliant Android execution environment. Consequently, applications that you 

develop in these SDKs will not be able to run on any Android-powered devices. 

If you have an older application that you built in one of the early-look SDKs, you must migrate it to the Android 1.0 

SDK (or later release) before you will be able to deploy it to an Android-powered device. To help with this migration, 

each SDK package below provides information about API changes from the previous version. You can find the 

migration information in the documentation included in each SDK package. 

Version 0 . 9 Beta 

August 18, 2008 - Release Notes 

Package Size MD5 Checksum 

Windows 93,126,573 305031ad8335d1b6040bdd5a65349d6d 

android-sdk-windows-0.9_beta.zip bytes 

Mac OS X 91,374,464 9a6969159091cede46302e11049fe3ca 

android-sdk-mac_x86-0.9_beta.zip (intel) bytes 

Linux (i386) 91,821,068 077e5ef549dd9c5be54bd88e6a8e196c 

android-sdk-linux_x86-0.9_beta.zip bytes 

Version m5-rc15 

March 3, 2008 - Release Notes 

Package Size MD5 Checksum 

Windows 79 MB ecce40bc50201886d95ba2690cdbc5ce 

android-sdk_m5-rc15_windows.zip 

Mac OS X (intel) 76 MB 45a6385bbc1b2cb295409cfc81fb04b4 

android-sdk_m5-rc15_mac-x86.zip 

Linux (i386) 76 MB e913f785afecdeed34c30639fd8c5862 

android-sdk_m5-rc15_linux-x86.zip 

Version m5-rc14 

February 12, 2008 - Release Notes 

Package Size MD5 Checksum 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 18 of 53 PageID #:

2990
Windows 79 MB ecc75c1e69588350634ca25867ce05a0 

android-sdk_m5-rc14_windows.zip 

Mac OS X (intel) 76 MB 844c80d0adb1a326f5a9fff262c61efc 

android-sdk_m5-rc14_windows.zip 

Linux (i386) 76 MB f8b863c8a880afe9bb84124f5976aab1 

android-sdk_m5-rc14_linux-x86.zip 

Version m3-rc37a 

December 14, 2007 - Release Notes 

Package Size MD5 Checksum 

Windows 58 MB 5db5aea20a2c2f010baefc4b1091a575 

android_sdk_windows_m3-rc37a.zip 

Mac OS X (intel) 54 MB 0b22e73fbd07b4af4009387afce3a37f 

android_sdk_darwin_m3-rc37a.zip 

Linux (i386) 54 MB 41285beecc4f9926e6ecf5f12610b356 

android_sdk_linux_m3-rc37a.zip 

Version m3-rc22a 

November 16, 2007 - Release Notes 

Package Size MD5 Checksum 

Windows 59 MB aa3dee05a9872752a3bc4efd0f93e98b 

android_sdk_windows_m3-rc22a.zip 

Mac OS X (intel) 55 MB 0547f45614ad94c3af22c3c0aa6f709f 

android_sdk_darwin_m3-rc22a.zip 

Linux (i386) 55 MB 84b3455de5cdfd841a172c13d24c382e 

android_sdk_linux_m3-rc22a.zip 

Version m3-rc20a 

November 12, 2007 - Release Notes 

Package Size MD5 Checksum 

Windows 59 MB a404b875708df7339ba77bdf2e08dc06 

android_sdk_windows_m3-rc20a.zip 

Mac OS X (intel) 55 MB 8fc29aeaa45eda84bfac854ebd02a6da 

android_sdk_darwin_m3-rc20a.zip 

Linux (i386) 55 MB 9196759df9b69cd89a220b156f133364 

android_sdk_linux_m3-rc20a.zip 

Was this helpful? 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 19 of 53 PageID #:

2991
Content and code samples on this page are subject to the licenses described in the Content License . Java and OpenJDK are trademarks or registered 

trademarks of Oracle and/or its affiliates. 

Last updated 2021-08-11 UTC. 

X YouTube LinkedIn 

Follow @AndroidDev on X Check out Android Connect with the Android 

Developers on YouTube Developers community on 

LinkedIn 

More Android Discover Android Devices Releases Documentation and Support 

Downloads 

Android Gaming Large screens Android 13 Report platform bug 

Android Studio guide 

Android for Enterprise Machine Learning Wear OS Android 12 Report documentation bug 

Developers guides 

Security Privacy ChromeOS devices Android 11 Google Play support 

API reference 

Source 5G Android for cars Android 10 Join research studies 

Download Studio 

News Android Things Pie 

Android NDK 

Blog Android TV Oreo 

Podcasts Nougat 

Android Chrome Firebase Google Cloud Platform All products 

Privacy License Brand guidelines Get news and tips by email Subscribe English 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 20 of 53 PageID #:

2992
EXHIBIT C

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 21 of 53 PageID #:

2993
PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 22 of 53 PageID #:

2994
Building Push Applications 

for Android 

Debajit Ghosh 

May 20, 2010 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 23 of 53 PageID #:

2995
View live notes and ask questions 

about this session on Google Wave 

http://bit.ly/ac2dmwave 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 24 of 53 PageID #:

2996
4 

Outline 

• Accessing Data in the Cloud 

• Polling and Pushing 

• Android Cloud to Device Messaging 

• Demos 

• Summary 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 25 of 53 PageID #:

2997
5 

Accessing Data in the Cloud 

• Apps provide seamless access to data in the cloud 

– Mobile Alerts 

– Send to Phone 

– Background Sync 

• Challenge: How do you keep data on a device fresh? 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 26 of 53 PageID #:

2998
6 

Polling 

• Simple to implement 

• Device periodically asks server for new data 

– Radio draws a lot of power, stays on for several seconds 

– Ideally, use If-Modified-Since, If-None-Match, etc. 

• Make no-ops as cheap as possible 

• Appropriate for content that changes constantly 

– Stock Quotes, News Headlines 

– Poll infrequently, update on demand 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 27 of 53 PageID #:

2999
7 

Impact of Polling on Battery 

Source: Android development team at Google 

• Baseline: ~5-8 mA 

• Network: ~180-200 mA

– Tx more expensive than Rx 

• Radio stays on for few secs 

• ~0.50 mAh for a short poll 

– 5m frequency: ~144 mAh / day 

– 15m frequency: ~48 mAh / day 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 28 of 53 PageID #:

3000
8 

When to Poll? 

• Tradeoff between freshness and efficiency 

– Poll frequently – more fresh, less efficient 

• Desire: Push, don’t poll 

– Only fetch data when useful 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 29 of 53 PageID #:

3001
9 

Pushing 

• Enables freshness with less impact on battery 

– Only use network when necessary 

– Constant overhead of persistent connection 

• Google Contacts, Calendar, Gmail, etc., use push sync 

• Can be tricky to implement 

• Android Cloud to Device Messaging makes push easy 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 30 of 53 PageID #:

3002
10 

Android Cloud to Device Messaging 

• Simple Google API 

– Android 2.2 devices with Market 

– Will be open to all developers 

• Uses existing connection for Google services 

• Allows servers to send lightweight “data” messages to apps 

– Tell app new data available 

– Intent broadcast wakes up app 

– App supplies UI, e.g., Notification, if/as necessary

• Best effort delivery 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 31 of 53 PageID #:

3003
11 

Peeking Under the Hood 

• Background service 

– Honor background data setting 

– Start when network available 

• Maintain connection with server 

– Use heartbeats to keep alive, detect dead connections 

• Efficient 

– Minimize per connect overhead 

– Minimize heartbeat frequency 

– Minimize concurrent connections 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 32 of 53 PageID #:

3004
12 

Heartbeats 

PING 

SERVER 

ACK 

X ✓

• Use Alarms 

• (Re)schedule pings 

• Wait for acks

• Reconnect when dead 

• Can also initiate ping 

• May be half open 

• Clean up state when dead 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 33 of 53 PageID #:

3005
13 

Overview of Lifecycle 

• Enabling cloud to device messaging 

– App (on device) registers with Google, gets registration ID 

– App sends registration ID to its App Server 

• Per message 

– App Server sends (authenticated) message to Google 

– Google sends message to device 

• Disabling cloud to device messaging 

– App can unregister ID, e.g., when user no longer wants push 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 34 of 53 PageID #:

3006
14 

Life of a Message 

APP

 SERVER 

GOOGLE 

C2D MSG

 FRONTEND 

CONN

 SERVER 

APP 

WAKE 

UP! 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 35 of 53 PageID #:

3007
15 

Registration – Requesting a Registration ID 

// Use the Intent API to get a registration ID 

// Registration ID is compartmentalized per app/device 

Intent regIntent = new 

Intent(“com.google.android.c2dm.intent.REGISTER”); 

// Identify your app 

regIntent.putExtra(“app”, 

 PendingIntent.getBroadcast(this, 0, new Intent(), 0); 

// Identify role account server will use to send 

regIntent.putExtra(“sender”, emailOfSender); 

// Start the registration process 

startService(regIntent); 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 36 of 53 PageID #:

3008
16 

Registration – Receiving the Registration ID 

• App receives the ID as an Intent 

– com.google.android.c2dm.intent.REGISTRATION 

• App should send this ID to its server 

• Service may issue new registration ID at any time 

– App will receive REGISTRATION Intent broadcast 

– App must update server with new ID 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 37 of 53 PageID #:

3009
17 

Registration – Receiving the Registration ID 

// Registration ID received via an Intent 

public void onReceive(Context context, Intent intent) { 

 String action = intent.getAction(); 

 if (“...REGISTRATION”.equals(action)) { 

 handleRegistration(context, intent); 

 } } 

private void handleRegistration(Context context, Intent intent){ 

 String id = intent.getExtra(“registration_id”); 

 if ((intent.getExtra(“error”) != null) { 

 // Registration failed. Try again later, with backoff. 

 } else if (id != null) { 

 // Send the registration ID to the app’s server. 

 // Be sure to do this in a separate thread. 

 } } 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 38 of 53 PageID #:

3010
18 

Sending Messages 

• Get “ac2dm” auth token, install on server 

– http://code.google.com/apis/accounts/docs/AuthForInstalledApps.html 

• Send authenticated POST 

– https://android.apis.google.com/c2dm/send 

– Authorization: GoogleLogin auth=<auth token> 

– URL Encoded parameters 

• registration_id 

• collapse_key 

• (optional) delay_while_idle 

• (optional) data.<key>* 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 39 of 53 PageID #:

3011
19 

Sending Messages – Response Codes 

• 200 OK 

– With “id” – request succeeded, message enqueued 

– With “Error” – request failed 

• QuotaExceeded, DeviceQuotaExceeded: Retry after a while 

• InvalidRegistration, NotRegistered: Stop sending messages 

• MessageTooBig: Reduce size of message 

• MissingCollapseKey: Include collapse key in request 

• 401 Not Authorized: Get new auth token 

• 503 Service Unavailable: Retry with backoff 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 40 of 53 PageID #:

3012
20 

Receiving Messages 

• Device receives message, converts to Intent 

• App woken up/started by Intent broadcast 

– com.google.android.c2dm.intent.RECEIVE 

– data.<key>* set as Intent extras 

– App needs com.example.app.permission.C2D_MESSAGE 

public void onReceive(Context context, Intent intent) { 

 String action = intent.getAction(); 

 if (“...RECEIVE”.equals(action)) { 

 // Grab a wakelock, use IntentService to do work 

 } 

} 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 41 of 53 PageID #:

3013
21 

Collapse Keys 

• Latest message replaces older ones with same key 

• Avoids message explosion for offline device 

• App may use multiple collapse keys 

– Correspond to “feed” app will fetch 

– Max of four in flight (per device) 

• State should be in app server, not in message 

– Tell app when it should fetch data 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 42 of 53 PageID #:

3014
22 

Collapse Keys 

APP

 SERVER 

GOOGLE 

C2D MSG

 FRONTEND 

CONN

 SERVER 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 43 of 53 PageID #:

3015
23 

Attenuation 

• Messages may not be delivered to device immediately 

• Protects devices that are receiving many messages 

– Avoid constant radio wakeup 

• Attenuation per app/collapse key 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 44 of 53 PageID #:

3016
24 

Attenuation 

APP

 SERVER 

GOOGLE 

C2D MSG

 FRONTEND 

CONN

 SERVER 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 45 of 53 PageID #:

3017
25 

Delay While Idle 

• Device tells Connection Server when screen is on, off 

– Screen off == device is idle 

• Apps can request message only be delivered when active 

– Avoid waking up device with info that will not be seen/used 

– e.g., chat presence, friend location updates 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 46 of 53 PageID #:

3018
26 

Delay While Idle 

APP

 SERVER 

GOOGLE 

C2D MSG

 FRONTEND 

CONN

 SERVER 

Zzzz 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 47 of 53 PageID #:

3019
27 

Demo: Google Chrome to Phone Extension 

• Send any web page to Android device 

– Special handling for Maps, YouTube 

• Chrome Extension 

• App Engine backend 

AC2DM 

APP

 ENGINE 

ORIGIN 

SERVER 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 48 of 53 PageID #:

3020
28 

Demo: JumpNote 

• Notes, with two way push sync 

– App Engine backend, GWT UI 

• Uses Sync Framework 

• Uses Android Cloud to Device Messaging 

– Register, Unregister based on auto-sync selection 

public void onReceive(Context context, Intent intent) { 

 String action = intent.getAction(); 

 if (“...RECEIVE”.equals(action)) { 

 // Determine account, feed that changed ... 

 context.getContentResolver.requestSync(account, “...jumpnote”, extras); 

} 

} 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 49 of 53 PageID #:

3021
29 

Android Cloud to Device Messaging Signup 

• Launching in Labs, accepting signups 

• Visit http://code.google.com/android/c2dm for details 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 50 of 53 PageID #:

3022
30 

Summary 

• Many Android apps access data in cloud 

• Push keeps apps up to date, efficiently 

• Android Cloud to Device Messaging makes push simple 

• Sign up now 

– http://code.google.com/android/c2dm 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 51 of 53 PageID #:

3023
View live notes and ask questions 

about this session on Google Wave 

http://bit.ly/ac2dmwave 

PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 52 of 53 PageID #:

3024
PUBLIC VERSION

Case 2:23-cv-00103-JRG-RSP Document 84-1 Filed 04/04/24 Page 53 of 53 PageID #:

3025