Apple, Inc. v. Motorola, Inc. et al
Filing
107
Declaration of Winslow B. Taub filed by Plaintiffs Apple, Inc., Next Softward, Inc. re: 90 Motion Requesting Claims Construction by Plaintiffs. (Attachments: # 1 Ex. A, '486 Inf. Chart, # 2 Ex. B, '354 file history excerpt, # 3 Ex. C, '354 file history excerpt, # 4 Ex. D, Spielman report excerpts, # 5 Ex. E, '983 file history excerpts, # 6 Ex. F, '983 file history excerpts, # 7 Ex. G, '337 Inf. Chart, # 8 Ex. H, '002 Inf. Chart, # 9 Ex. I, '002 file history excerpt, # 10 Ex. J, '002 file history excerpt, # 11 Ex. K, '002 file history excerpt, # 12 Ex. L, dictionary definitions, # 13 Ex. N, JPS63-167588 cert. trans., # 14 Ex. O, appl. 08/050952 file history excerpt, # 15 Ex. P, invalidity conten. excerpt, # 16 Ex. Q, 6,371,977, # 17 Ex. R, 5,474,831) (Haslam, Robert) Modified on 7/18/2011 (llj).
EXHIBIT C
Exhibit E – U.S. Patent No. 6,424,354
Motorola directly and/or indirectly infringes at least claims 1, 3, 5-8, and 41-42 of the ’354 patent, either literally or through
the doctrine of equivalents. Motorola’s infringing products include mobile devices such as smartphones and tablet computers,
including but not limited to the: Atrix, Bravo, Cliq, Cliq XT, Cliq 2, Charm, Defy, Devour, BackFlip, Devour, Droid, Droid 2, Droid 2
Global, Droid X, Droid Pro, Droid Bionic, Flipout, Flipside, i1, Xoom, (collectively, the “’354 Accused Products”).
For the purposes of this analysis, Plaintiffs will examine a representative mobile device, Motorola’s Droid X, which is shipped
operates with the Android 2.1 Platform. All other ’354 Accused Products meet the limitations of the asserted claims on the same
bases as indicated for the Droid X, unless otherwise stated.
These infringement contentions are preliminary and based only on publicly available information as to the ’354 Accused
Products. Motorola has not yet provided discovery as to its accused products and in addition Plaintiff's investigation of Motorola's
infringement is ongoing. Based on discovery and Plaintiff's continued investigations Plaintiff reserves the right to amend these
contentions to identify additional bases for infringement and additional accused products, including products that Motorola may
introduce in the future. Accordingly, Plaintiff reserves its right to amend these contentions as discovery and its investigation
proceeds. Also, these disclosures are made based on information ascertained to date, and Plaintiff expressly reserves the right to
modify or amend the disclosures contained herein based on the Court’s claim constructions or to reflect additional information that
becomes available to Plaintiff.
U.S. Patent No. 6,424,354
Infringement Contentions
1. A method for operating a computerThe ’354 Accused Products perform a method for operating a computer-implemented
implemented event notification system for event notification system for propagating, among a plurality of objects, events
propagating, among a plurality of objects, representing changes in the objects.
events representing changes in the
• For example, the Motorola Droid X includes a Texas Instruments OMAP3630
objects, the operating method comprising
processor for executing applications such as web browsers, email clients, and
the steps of:
telephony applications, and is therefore a computer. See Exh. E-8 [Motorola
Droid X Specification].
•
For example, Android uses objects called “Intents” to broadcast event
notifications: “[a]n intent is an abstract description of an operation to be
performed. It can be used with . . . broadcastIntent to send it to any interested
BroadcastReceiver components.” See Exh. E-1 [Android Dev Site, “Intent”].
U.S. Patent No. 6,424,354
Infringement Contentions
Interested objects can register to receive broadcasts of intents that they are
interested in: the Context.registerReceiver() method will “[r]egister a
BroadcastReceiver to be run in the main activity thread. The receiver will be
called with any broadcast Intent that matches filter, in the main application
thread.” See Exh. E-2 [Android Dev Site, “Context”]. An event producer can
then use the Context.sendBroadcast() method to “[b]roadcast [a] given intent to
all interested BroadcastReceivers.” Id.
The events propagated by the ’354 Accused Products include, among other things, events
representing changes in objects.
•
For example, the ’354 Accused Products include a Settings application that
includes a “Wireless controls” screen that includes a checkbox user interface
element that controls whether the phone is in “Airplane mode,” in which all of its
wireless transceivers, including its Bluetooth transceiver, are disabled.
2
U.S. Patent No. 6,424,354
Infringement Contentions
Fig. 1, Motorola Droid X with Airplane mode disabled.
•
For example, the ’354 Accused Products further include an AirplaneModeEnabler
object that tracks the Airplane mode checkbox state. Among other things, this
object includes the setAirplaneModeOn() method. In this method, the state of
the system object is changed using the Settings.System.putInt() method, so that
this object includes the AIRPLANE_MODE_ON state. The
setAirplaneModeOn() method then use the Context.sendBroadcast() method to
send an event representing the change in the Airplane Mode state that was
3
U.S. Patent No. 6,424,354
(a) creating, on behalf of a first object,
connection information representing the
first object's interest in, and an associated
object method for, receiving notification
of a change to a second object;
Infringement Contentions
reflected in the system object. See Exh. E-3 [AirplaneModeEnabler.java].
The ’354 Accused Products perform the step of creating, on behalf of a first object,
connection information representing the object’s interest in, and an associated object
method for, receiving a notification.
•
For example, the Context.registerReceiver() method allows an object to
“[r]egister to receive intent broadcasts, to run in the main activity thread.” See
Exh. E-2 [Android Dev Site, “Context”]. This method takes two arguments,
called “receiver” and “filter.” The receiver argument points to an object method
to be called to receive notification of a change to a second object: “The receiver
will be called with any broadcast intent that matches filter, in the main
application thread.” Id. The filter parameter that is passed to registerReceiver()
is an object of type IntentFilter, and “[s]elects the Intent broadcasts to be
received.” Id. The IntentFilter includes a “[s]tructured description of values to
be matched. An IntentFilter can match against actions, categories, and data
(either via its type, scheme, and/or path) in an Intent. It also includes a “priority”
value which is used to order multiple matching filters.” See Exh. E-4 [Android
Dev Site, “IntentFilter”].
•
For example, in the ’354 Accused Products, objects instantiated from the class
BluetoothService constitute part of the software interface to the Bluetooth
hardware device; methods in this class “[b]ring down bluetooth” and “tur[n]
on/off the underlying hardware.” See Exh. E-5 [BluetoothService.java].
These
objects contain an initialization method, init(), which “[m]ust be called after
construction, and before any other method.” This init() method calls the
BluetoothService method registerForAirplaneMode(), which registers a receiver
called mReceiver that includes an IntentFilter that is designed to receive events of
type ACTION_AIRPLANE_MODE_CHANGED. Id. The mReceiver object is
an instance of BroadcastReceiver instantiated by BluetoothService. Id. In
addition, mReceiver constitutes an object method for receiving notification of the
registered events. Id. The intent ACTION_AIRPLANE_MODE_CHANGED
is defined in the class android.content.Intent. See, Exh. E-6 [Intent.java]. The
call to registerReceiver above includes, via the IntentFilter object, information
representing the BluetoothService’s interest in events of type
4
U.S. Patent No. 6,424,354
(b) registering the connection information
with a connection object;
Infringement Contentions
ACTION_AIRPLANE_MODE_CHANGED. The call further includes, in the
form of the mReceiver object, information representing an object method for
receiving information of events of type
ACTION_AIRPLANE_MODE_CHANGED. The object method of mReceiver
which receives the notification is called onReceive(), inherited from
BroadcastReceiver, which notes that “[t]his method [onReceive()] is called when
the BroadcastReceiver is receiving an Intent broadcast.” See Exh. E-7 [Android
Dev Site, “BroadcastReceiver”].
The ’354 Accused Products perform the step of registering the connection information
with a connection object.
•
For example, Android’s BroadcastReceiver class is the “[b]ase class for code that
will receive intents sent by sendBroadcast(). You can either dynamically register
an instance of this class with Context.registerReceiver() or statically publish an
implementation through the tag in your AndroidManifest.xml.” See
Exh. E-7 [Android Dev Site, “BroadcastReceiver”]. The registerReceiver()
method is a method associated with the Context object, with which the relevant
connection information is registered.
The Context.registerReceiver() method, which “[r]egister[s] a BroadcastReceiver
to be run in the main activity thread,” registers connection information with the
Context object. See Exh. E-2 [Android Dev Site, “Context”]. This information
includes, among other things, a BroadcastReceiver object and an IntentFilter
object. Id. The BroadcastReceiver object includes “code that will receive
intents sent by sendBroadcast()” See Exh. E-7 [Android Dev Site,
“BroadcastReceiver”]. The IntentFilter object includes a “[s]tructured
description of Intent values to be matched” to filter out only those events the
BroadcastReceiver wishes to receive. See Exh. E-4 [Android Dev Site,
“IntentFilter”].
•
For example, as described above the BluetoothService object within the ’354
Accused Products uses the Context.registerReceiver() method to register
connection information regarding its interest in the
ACTION AIRPLANE MODE CHANGED intent with an appropriate Context
5
U.S. Patent No. 6,424,354
Infringement Contentions
object.
(c) creating an event representing a
change in the second object, responsive to
the change in the second object; and
The ’354 Accused Products perform the step of creating an event representing a change
in the second object, responsive to the change in the second object.
For example, an object that produces a notification may call the
Context.sendBroadcast() method to “[b]roadcast the given intent to all interested
BroadcastReceivers. This call is asynchronous; it returns immediately, and you
will continue executing while the receivers are run.” See Exh. E-2 [Android
Dev Site, “Context”].
•
(d) notifying the first object of the event
by invoking the associated object method
for receiving notification registered with
the connection object only if the event
information corresponds to an interest
registered on behalf of the first object.
•
For example, when the Airplane mode checkbox in the “Wireless controls” screen
of the Settings application is checked (changed to the on state), the state of the
system settings object is changed to AIRPLANE_MODE_ON, and an
ACTION_AIRPLANE_MODE_CHANGED Intent is created. See Exh. E-3
[AirplaneModeEnabler.java].
The ’354 Accused Products perform the step of notifying the first object of an event by
invoking the associated object method for receiving notification registered with the
connection object only if the event information corresponds to an interest registered on
behalf of the first object.
For example, the Context.registerReceiver() method “[r]egister[s] a
BroadcastReceiver to be run in the main activity thread. The receiver will be
called with any broadcast Intent that matches filter, in the main application
thread.” See Exh. E-2 [Android Dev Site, “Context”]. Thus, when a broadcast
Intent matches the filter settings registered by a receiver, the object method
onReceive() of the receiver that has been registered with the Context object using
the registerReceiver() method will be called.
•
3. The operating method of claim 1,
•
For example, when the action ACTION_AIRPLANE_MODE_CHANGED intent
is broadcast, the onReceive() method of the mReceiver that was registered with
the context object using the registerForAirplaneMode() method in the
BluetoothService class will be invoked.
The ’354 Accused Products have connection information which is associated with a
6
U.S. Patent No. 6,424,354
wherein the connection information is
associated with a notification type
corresponding to a connection object
method, the operating method further
comprising the step of: (c. 1) invoking the
connection object method corresponding
to the notification type specified by the
connection information in the connection
object.
Infringement Contentions
notification type corresponding to a connection object method, further performing the
step of: (c. 1) invoking the connection object method corresponding to the notification
type specified by the connection information in the connection object.
•
For example, in the ’354 Accused Products, when a broadcast Intent matches the
filter settings registered by a receiver, the object method onReceive() of the
receiver that has been registered with the Context object using the
registerReceiver() method will be called. See Exh. E-2 [Android Dev Site,
“Context”]. The onReceive() method parses the action of the received Intent
object, and invokes the corresponding object method corresponding to the
notification type. See Exh. E-4 [Android Dev Site, “IntentFilter”].
•
For example, in the ’354 Accused Products, objects instantiated from the
StatusBarPolicy class comprise a BroadcastReceiver member with an
onReceive() object method. On receipt of an Intent object with a
BluetoothAdapter.ACTION_STATE_CHANGED or
BluetoothHeadset.ACTION_STATE_CHANGED action, onReceive() invokes
the updateBluetooth() object method. See Exh. E-9 [StatusBarPolicy.java].
5. The operating method of claim 3
further comprising the step of: (c. 1.1)
invoking a connection object method
responsible for using the connection
information in the connection object to
modify a name associated with the first
object.
The ’354 Accused Products further perform the step of: (c. 1.1) invoking a connection
object method responsible for using the connection information in the connection object
to modify a name associated with the first object.
6. The operating method of claim 3
further comprising the step of: (c. 1.1)
invoking a connection object method
responsible for using the connection
information in the connection object to
The ’354 Accused Products further perform the step of: (c. 1.1) invoking a connection
object method responsible for using the connection information in the connection object
to modify a graphic associated with the first object.
•
•
For example, in the ’354 Accused Products, objects instantiated from the
StatusBarPolicy class comprise a BroadcastReceiver member with an
onReceive() object method. On receipt of an Intent object with a
BluetoothAdapter.ACTION_STATE_CHANGED or
BluetoothHeadset.ACTION_STATE_CHANGED action, onReceive() invokes
the updateBluetooth() object method, which changes the name of the Bluetooh
icon. See Exh. E-9 [StatusBarPolicy.java].
For example, in the ’354 Accused Products, objects instantiated from the
7
U.S. Patent No. 6,424,354
modify a graphic associated with the first
object.
Infringement Contentions
StatusBarPolicy class comprise a BroadcastReceiver member with an
onReceive() object method. On receipt of an Intent object with a
BluetoothAdapter.ACTION_STATE_CHANGED or
BluetoothHeadset.ACTION_STATE_CHANGED action, onReceive() invokes
the updateBluetooth() object method, which modifies the associated Bluetooth
graphical icon. See Exh. E-9 [StatusBarPolicy.java].
7. The operating method of claim 3
further comprising the step of: (c. 1.1)
invoking a connection object method
responsible for using the connection
information in the connection object to
create or modify data associated with the
first object.
The ’354 Accused Products further perform the step of: (c. 1.1) invoking a connection
object method responsible for using the connection information in the connection object
to create or modify data associated with the first object.
8. The operating method of claim 3
further comprising the step of: (C. 1.1)
invoking a connection object method
responsible for using the connection
information in the connection object to
read data associated with the first object.
The ’354 Accused Products further perform the step of: (C. 1.1) invoking a connection
object method responsible for using the connection information in the connection object
to read data associated with the first object.
•
•
For example, in the ’354 Accused Products, objects instantiated from the
StatusBarPolicy class comprise a BroadcastReceiver member with an
onReceive() object method. On receipt of an Intent object with a
BluetoothAdapter.ACTION_STATE_CHANGED or
BluetoothHeadset.ACTION_STATE_CHANGED action, onReceive() invokes
the updateBluetooth() object method, which updates the icon data. See Exh. E-9
[StatusBarPolicy.java].
For example, in the ’354 Accused Products, objects instantiated from the
StatusBarPolicy class comprise a BroadcastReceiver member with an
onReceive() object method. On receipt of an Intent object with a
BluetoothAdapter.ACTION_STATE_CHANGED or
BluetoothHeadset.ACTION_STATE_CHANGED action, onReceive() invokes
the updateBluetooth() object method, which reads the action data from the Intent.
See Exh. E-9 [StatusBarPolicy.java].
41. A method for operating a computerThe ’354 Accused Products perform a method for operating a computer-implemented
implemented event notification system for event notification system for propagating, among a plurality of objects, events
propagating, among a plurality of objects, representing changes in the objects.
events representing changes in the
• For example, the Motorola Droid X includes a Texas Instruments OMAP3630
8
U.S. Patent No. 6,424,354
objects, the operating method comprising
the steps of:
Infringement Contentions
processor for executing applications such as web browsers, email clients, and
telephony applications, and is therefore a computer. See Exh. E-8 [Motorola
Droid X Specification].
•
For example, Android uses objects called “Intents” to broadcast event
notifications: “[a]n intent is an abstract description of an operation to be
performed. It can be used with . . . broadcastIntent to send it to any interested
BroadcastReceiver components.” See Exh. E-1 [Android Dev Site, “Intent”].
Interested objects can register to receive broadcasts of intents that they are
interested in: the registerReceiver method will “[r]egister a BroadcastReceiver to
be run in the main activity thread. The receiver will be called with any broadcast
Intent that matches filter, in the main application thread.” See Exh. E-2
[Android Dev Site, “Context”]. An event producer can then use the
sendBroadcast method to “[b]roadcast [a] given intent to all interested
BroadcastReceivers.” Id.
The events propagated by the ’354 Accused Products include, among other things, events
representing changes in objects.
•
For example, the ’354 Accused Products include a Settings application that
includes a “Wireless controls” screen that includes a checkbox user interface
element that controls whether the phone is in “Airplane mode,” in which all of its
wireless transceivers, including its Bluetooth transceiver, are disabled.
9
U.S. Patent No. 6,424,354
Infringement Contentions
Fig. 1, Motorola Droid X with Airplane mode disabled.
•
For example, the ’354 Accused Products further include an AirplaneModeEnabler
object that tracks the Airplane mode checkbox state. Among other things, this
object includes the setAirplaneModeOn() method. In this method, the state of
the a system object is changed using the Settings.System.putInt() method, so that
this object now includes the AIRPLANE_MODE_ON state. The
setAirplaneModeOn() method then use the sendBroadcast method to send an
event representing the change in the Airplane Mode state that was reflected in the
10
U.S. Patent No. 6,424,354
Infringement Contentions
system object. See Exh. E-3 [AirplaneModeEnabler.java].
(a) creating, on behalf of a receiver object, The ’354 Accused Products perform the step of creating, on behalf of a receiver object,
connection information representing the
connection information representing the receiver object’s interest in, and an associated
receiver object's interest in, and an
object method for, receiving a notification regarding a change in a source object.
associated object method for, receiving
• For example, the registerReceiver method allows an object to “[r]egister to
notification of a change to a source object:
receive intent broadcasts, to run in the main activity thread.” See Exh. E-2
[Android Dev Site, “Context”]. This method takes two arguments, called
“receiver” and “filter.” The receiver argument points to an object method to be
called to receive notification of a change to a second object: “The receiver will be
called with any broadcast intent that matches filter, in the main application
thread.” Id. The filter parameter that is passed to RegisterReceiver is an object
of type IntentFilter, and “[s]elects the Intent broadcasts to be received.” Id. The
IntentFilter includes a “[s]tructured description of values to be matched. An
IntentFilter can match against actions, categories, and data (either via its type,
scheme, and/or path) in an Intent. It also includes a “priority” value which is
used to order multiple matching filters.” See Exh. E-4 [Android Dev Site,
“IntentFilter”].
•
For example, in the ’354 Accused Products, objects instantiated from the class
BluetoothService constitute part of the software interface to the Bluetooth
hardware device; methods in this class “[b]ring down bluetooth” and “tur[n]
on/off the underlying hardware.” See Exh. E-5 [BluetoothService.java].
These
objects contain an initialization method, init(), which “[m]ust be called after
construction, and before any other method.” This init() method calls the
BluetoothService method registerForAirplaneMode(), which registers a receiver
called mReceiver that includes an IntentFilter that is designed to receive events of
type ACTION_AIRPLANE_MODE_CHANGED. Id. The mReceiver object is
an instance of BroadcastReceiver instantiated by BluetoothService. Id. In
addition, mReceiver constitutes an object method for receiving notification of the
registered events. Id. The intent ACTION_AIRPLANE_MODE_CHANGED
is defined in the class android.content.Intent. See, Exh. E-6 [Intent.java]. The
call to registerReceiver above includes, via the IntentFilter object, information
11
U.S. Patent No. 6,424,354
(b) registering the connection information
using a connection object;
Infringement Contentions
representing the BluetoothService’s interest in events of type
ACTION_AIRPLANE_MODE_CHANGED. The call further includes, in the
form of the mReceiver object, information representing an object method for
receiving information of events of type
ACTION_AIRPLANE_MODE_CHANGED. The object method of mReceiver
which receives the notification is called onReceive(), inherited from
BroadcastReceiver, which notes that “[t]his method [onReceive()] is called when
the BroadcastReceiver is receiving an Intent broadcast.” See Exh. E-7 [Android
Dev Site, “BroadcastReceiver”].
The ’354 Accused Products perform the step of registering the connection information
using a connection object.
•
For example, Android’s BroadcastReceiver class is the “[b]ase class for code that
will receive intents sent by sendBroadcast(). You can either dynamically register
an instance of this class with Context.registerReceiver() or statically publish an
implementation through the tag in your AndroidManifest.xml.” See
Exh. E-7 [Android Dev Site, “BroadcastReceiver”]. The registerReceiver()
method is a method associated with the Context object, with which the relevant
connection information is registered.
The registerReceiver() method, which “[r]egister[s] a BroadcastReceiver to be
run in the main activity thread,” registers connection information with the
Context object. See Exh. E-2 [Android Dev Site, “Context”]. This information
includes, among other things, a BroadcastReceiver object and an IntentFilter
object. Id. The BroadcastReceiver object includes “code that will receive
intents sent by sendBroadcast()” See Exh. E-7 [Android Dev Site,
“BroadcastReceiver”]. The IntentFilter object includes a “[s]tructured
description of Intent values to be matched” to filter out only those events the
BroadcastReceiver wishes to receive. See Exh. E-4 [Android Dev Site,
“IntentFilter”].
•
For example, as described above the BluetoothService object within the ’354
Accused Products uses the registerReceiver() method to register connection
information regarding its interest in the
12
U.S. Patent No. 6,424,354
(c) creating an event representing a
change in the source object, responsive to
the change in the source object;
Infringement Contentions
ACTION_AIRPLANE_MODE_CHANGED intent with an appropriate Context
object.
The ’354 Accused Products perform the step of creating an event representing a change
in the source object, responsive to the change in the source object.
For example, an object that produces a notification may call the sendBroadcast()
method to “[b]roadcast the given intent to all interested BroadcastReceivers.
This call is asynchronous; it returns immediately, and you will continue executing
while the receivers are run.” See Exh. E-2 [Android Dev Site, “Context”].
•
(d) notifying the receiver object of the
event by invoking the associated object
method for receiving notification
registered using the connection object
only if the event information corresponds
to an interest registered on behalf of the
receiver object; and
•
For example, when the Airplane mode checkbox in the “Wireless controls” screen
of the Settings application is checked (changed to the on state), the state of the
system settings object is changed to AIRPLANE_MODE_ON, and an
ACTION_AIRPLANE_MODE_CHANGED Intent is created. See Exh. E-3
[AirplaneModeEnabler.java].
The ’354 Accused Products perform the step of notifying the receiver object of an event
by invoking the associated object method for receiving notification registered using the
connection object only if the event information corresponds to an interest registered on
behalf of the receiver object.
•
For example, the registerReceiver() method “[r]egister[s] a BroadcastReceiver to
be run in the main activity thread. The receiver will be called with any broadcast
Intent that matches filter, in the main application thread.” See Exh. E-2
[Android Dev Site, “Context”]. Thus, when a broadcast Intent matches the filter
settings registered by a receiver, the object method onReceive() of the receiver
that has been registered with the Context object using the registerReceiver()
method will be called.
•
For example, when the action ACTION_AIRPLANE_MODE_CHANGED intent
is broadcast, the onReceive() method of the mReceiver that was registered with
the context object using the registerForAirplaneMode() method in the
BluetoothService class will be invoked.
13
U.S. Patent No. 6,424,354
(e) using the connection information in
the connection object to configure status
information to enable the notifying step
(d).
Infringement Contentions
The ’354 Accused Products perform the step of using the connection information in the
connection object to configure status information to enable the notifying step (d).
•
For example, the ’354 Accused Products can use information regarding a
receiver stored in their Context objects to determine whether the receiver has
the appropriate permission status to allow notification to occur. The method
sendBroadcast(Intent intent, String ReceiverPermission) is used to “[b]roadcast
the given Intent to all interested BroadcastReceivers, allowing an optional
permission to be enforced.” In particular, the ReceiverPermission argument is
used to “nam[e] permissions that a receiver must hold in order to receive your
broadcast.” See Exh. E-2 [Android Dev Site, “Context”]. If a given receiver
does have the required information, notifications to it will be enabled.
42. A method for operating a computerThe ’354 Accused Products perform a method for operating a computer-implemented
implemented event notification system for event notification system for propagating, among a plurality of objects, events
propagating, among a plurality of objects, representing changes in the objects.
events representing changes in the
• For example, the Motorola Droid X includes a Texas Instruments OMAP3630
objects, the operating method comprising
processor for executing applications such as web browsers, email clients, and
the steps of:
telephony applications, and is therefore a computer. See Exh. E-8 [Motorola
Droid X Specification].
•
For example, Android uses objects called “Intents” to broadcast event
notifications: “[a]n intent is an abstract description of an operation to be
performed. It can be used with . . . broadcastIntent to send it to any interested
BroadcastReceiver components.” See Exh. E-1 [Android Dev Site, “Intent”].
Interested objects can register to receive broadcasts of intents that they are
interested in: the registerReceiver method will “[r]egister a BroadcastReceiver to
be run in the main activity thread. The receiver will be called with any broadcast
Intent that matches filter, in the main application thread.” See Exh. E-2
[Android Dev Site, “Context”]. An event producer can then use the
sendBroadcast method to “[b]roadcast [a] given intent to all interested
BroadcastReceivers.” Id.
The events propagated by the ’354 Accused Products include, among other things, events
14
U.S. Patent No. 6,424,354
Infringement Contentions
representing changes in objects.
•
For example, the ’354 Accused Products include a Settings application that
includes a “Wireless controls” screen that includes a checkbox user interface
element that controls whether the phone is in “Airplane mode,” in which all of its
wireless transceivers, including its Bluetooth transceiver, are disabled.
Fig. 1, Motorola Droid X with Airplane mode disabled.
15
U.S. Patent No. 6,424,354
•
Infringement Contentions
For example, the ’354 Accused Products further include an AirplaneModeEnabler
object that tracks the Airplane mode checkbox state. Among other things, this
object includes the setAirplaneModeOn() method. In this method, the state of
the a system object is changed using the Settings.System.putInt() method, so that
this object now includes the AIRPLANE_MODE_ON state. The
setAirplaneModeOn() method then use the sendBroadcast method to send an
event representing the change in the Airplane Mode state that was reflected in the
system object. See Exh. E-3 [AirplaneModeEnabler.java].
(a) creating, on behalf of a receiver object, The ’354 Accused Products perform the step of creating, on behalf of a receiver object,
connection information representing the
connection information representing the receiver object’s interest in, and an associated
receiver object's interest in, and an
object method for, receiving a notification regarding a change in a source object.
associated object method for, receiving
• For example, the registerReceiver method allows an object to “[r]egister to
notification of a change to a source object;
receive intent broadcasts, to run in the main activity thread.” See Exh. E-2
[Android Dev Site, “Context”]. This method takes two arguments, called
“receiver” and “filter.” The receiver argument points to an object method to be
called to receive notification of a change to a second object: “The receiver will be
called with any broadcast intent that matches filter, in the main application
thread.” Id. The filter parameter that is passed to RegisterReceiver is an object
of type IntentFilter, and “[s]elects the Intent broadcasts to be received.” Id. The
IntentFilter includes a “[s]tructured description of values to be matched. An
IntentFilter can match against actions, categories, and data (either via its type,
scheme, and/or path) in an Intent. It also includes a “priority” value which is
used to order multiple matching filters.” See Exh. E-4 [Android Dev Site,
“IntentFilter”].
•
For example, in the ’354 Accused Products, objects instantiated from the class
BluetoothService constitute part of the software interface to the Bluetooth
hardware device; methods in this class “[b]ring down bluetooth” and “tur[n]
on/off the underlying hardware.” See Exh. E-5 [BluetoothService.java].
These
objects contain an initialization method, init(), which “[m]ust be called after
construction, and before any other method.” This init() method calls the
BluetoothService method registerForAirplaneMode(), which registers a receiver
called mReceiver that includes an IntentFilter that is designed to receive events of
16
U.S. Patent No. 6,424,354
(b) registering the connection information
using a connection object;
Infringement Contentions
type ACTION_AIRPLANE_MODE_CHANGED. Id. The mReceiver object is
an instance of BroadcastReceiver instantiated by BluetoothService. Id. In
addition, mReceiver constitutes an object method for receiving notification of the
registered events. Id. The intent ACTION_AIRPLANE_MODE_CHANGED
is defined in the class android.content.Intent. See, Exh. E-6 [Intent.java]. The
call to registerReceiver above includes, via the IntentFilter object, information
representing the BluetoothService’s interest in events of type
ACTION_AIRPLANE_MODE_CHANGED. The call further includes, in the
form of the mReceiver object, information representing an object method for
receiving information of events of type
ACTION_AIRPLANE_MODE_CHANGED. The object method of mReceiver
which receives the notification is called onReceive(), inherited from
BroadcastReceiver, which notes that “[t]his method [onReceive()] is called when
the BroadcastReceiver is receiving an Intent broadcast.” See Exh. E-7 [Android
Dev Site, “BroadcastReceiver”].
The ’354 Accused Products perform the step of registering the connection information
using a connection object.
•
For example, Android’s BroadcastReceiver class is the “[b]ase class for code that
will receive intents sent by sendBroadcast(). You can either dynamically register
an instance of this class with Context.registerReceiver() or statically publish an
implementation through the tag in your AndroidManifest.xml.” See
Exh. E-7 [Android Dev Site, “BroadcastReceiver”]. The registerReceiver()
method is a method associated with the Context object, with which the relevant
connection information is registered.
The registerReceiver() method, which “[r]egister[s] a BroadcastReceiver to be
run in the main activity thread,” registers connection information with the
Context object. See Exh. E-2[ Android Dev Site at “Context”]. This
information includes, among other things, a BroadcastReceiver object and an
IntentFilter object. Id. The BroadcastReceiver object includes “code that will
receive intents sent by sendBroadcast()” See Exh. E-7 [Android Dev Site,
“BroadcastReceiver”]. The IntentFilter object includes a “[s]tructured
17
U.S. Patent No. 6,424,354
Infringement Contentions
description of Intent values to be matched” to filter out only those events the
BroadcastReceiver wishes to receive. See Exh. E-4 [Android Dev Site,
“IntentFilter”].
•
(c) creating an event representing a
change in the source object, responsive to
the change in the source object;
For example, as described above the BluetoothService object within the ’354
Accused Products uses the registerReceiver() method to register connection
information regarding its interest in the
ACTION_AIRPLANE_MODE_CHANGED intent with an appropriate Context
object.
The ’354 Accused Products perform the step of creating an event representing a change
in the source object, responsive to the change in the source object.
For example, an object that produces a notification may call the sendBroadcast()
method to “[b]roadcast the given intent to all interested BroadcastReceivers.
This call is asynchronous; it returns immediately, and you will continue executing
while the receivers are run.” See Exh. E-2 [Android Dev Site, “Context”].
•
(d) notifying the receiver object of the
event by invoking the associated object
method for receiving notification
registered using the connection object
only if the event information corresponds
to an interest registered on behalf of the
receiver object; and
•
For example, when the Airplane mode checkbox in the “Wireless controls” screen
of the Settings application is checked (changed to the on state), the state of the
system settings object is changed to AIRPLANE_MODE_ON, and an
ACTION_AIRPLANE_MODE_CHANGED Intent is created. See Exh. E-3
[AirplaneModeEnabler.java].
The ’354 Accused Products perform the step of notifying the receiver object of an event
by invoking the associated object method for receiving notification registered using the
connection object only if the event information corresponds to an interest registered on
behalf of the receiver object.
•
For example, the registerReceiver() method “[r]egister[s] a BroadcastReceiver to
be run in the main activity thread. The receiver will be called with any broadcast
Intent that matches filter, in the main application thread.” See Exh. E-2
[Android Dev Site, “Context”]. Thus, when a broadcast Intent matches the filter
settings registered by a receiver, the object method onReceive() of the receiver
that has been registered with the Context object using the registerReceiver()
method will be called.
18
U.S. Patent No. 6,424,354
•
(e) using the connection information in
the connection object to configure status
information to disable the notifying step
(d).
Infringement Contentions
For example, when the action ACTION_AIRPLANE_MODE_CHANGED intent
is broadcast, the onReceive() method of the mReceiver that was registered with
the context object using the registerForAirplaneMode() method in the
BluetoothService class will be invoked.
The ’354 Accused Products perform the step of using the connection information in the
connection object to configure status information to disable the notifying step (d).
•
For example, the ’354 Accused Products can use information regarding a receiver
stored in their Context objects to determine whether the receiver has the
appropriate permission status to allow notification to occur. The method
sendBroadcast(Intent intent, String ReceiverPermission) is used by the ’354
Accused Products to “[b]roadcast the given Intent to all interested
BroadcastReceivers, allowing an optional permission to be enforced.” In
particular, the ReceiverPermission argument is used to “nam[e] permissions that a
receiver must hold in order to receive your broadcast.” See Exh. E-2 [Android
Dev Site, “Context”]. If a given receiver does not have the required information,
notifications to it will be disabled, even it has registered to receive those
notification.
19
Disclaimer: Justia Dockets & Filings provides public litigation records from the federal appellate and district courts. These filings and docket sheets should not be considered findings of fact or liability, nor do they necessarily reflect the view of Justia.
Why Is My Information Online?