Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
SDK
/
exoplayer
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Settings
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
9fc3ea79
authored
Apr 16, 2019
by
borrelli
Committed by
AquilesCanta
Apr 16, 2019
Browse files
Options
_('Browse Files')
Download
Email Patches
Plain Diff
Add ability to register/unregister custom CommandReceivers.
PiperOrigin-RevId: 243799572
parent
c2c7c43a
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
35 additions
and
0 deletions
RELEASENOTES.md
extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java
RELEASENOTES.md
View file @
9fc3ea79
...
@@ -2,6 +2,9 @@
...
@@ -2,6 +2,9 @@
### dev-v2 (not yet released) ###
### dev-v2 (not yet released) ###
*
MediaSession extension:
*
Allow handling of custom commands via
`registerCustomCommandReceiver`
.
### 2.10.0 ###
### 2.10.0 ###
*
Core library:
*
Core library:
...
...
extensions/mediasession/src/main/java/com/google/android/exoplayer2/ext/mediasession/MediaSessionConnector.java
View file @
9fc3ea79
...
@@ -364,6 +364,7 @@ public final class MediaSessionConnector {
...
@@ -364,6 +364,7 @@ public final class MediaSessionConnector {
private
final
Looper
looper
;
private
final
Looper
looper
;
private
final
ComponentListener
componentListener
;
private
final
ComponentListener
componentListener
;
private
final
ArrayList
<
CommandReceiver
>
commandReceivers
;
private
final
ArrayList
<
CommandReceiver
>
commandReceivers
;
private
final
ArrayList
<
CommandReceiver
>
customCommandReceivers
;
private
ControlDispatcher
controlDispatcher
;
private
ControlDispatcher
controlDispatcher
;
private
CustomActionProvider
[]
customActionProviders
;
private
CustomActionProvider
[]
customActionProviders
;
...
@@ -392,6 +393,7 @@ public final class MediaSessionConnector {
...
@@ -392,6 +393,7 @@ public final class MediaSessionConnector {
looper
=
Util
.
getLooper
();
looper
=
Util
.
getLooper
();
componentListener
=
new
ComponentListener
();
componentListener
=
new
ComponentListener
();
commandReceivers
=
new
ArrayList
<>();
commandReceivers
=
new
ArrayList
<>();
customCommandReceivers
=
new
ArrayList
<>();
controlDispatcher
=
new
DefaultControlDispatcher
();
controlDispatcher
=
new
DefaultControlDispatcher
();
customActionProviders
=
new
CustomActionProvider
[
0
];
customActionProviders
=
new
CustomActionProvider
[
0
];
customActionMap
=
Collections
.
emptyMap
();
customActionMap
=
Collections
.
emptyMap
();
...
@@ -697,6 +699,29 @@ public final class MediaSessionConnector {
...
@@ -697,6 +699,29 @@ public final class MediaSessionConnector {
}
}
}
}
/**
* Registers a custom command receiver for responding to commands delivered via {@link
* MediaSessionCompat.Callback#onCommand(String, Bundle, ResultReceiver)}.
*
* <p>Commands are only dispatched to this receiver when a player is connected.
*
* @param commandReceiver The command receiver to register.
*/
public
void
registerCustomCommandReceiver
(
CommandReceiver
commandReceiver
)
{
if
(!
customCommandReceivers
.
contains
(
commandReceiver
))
{
customCommandReceivers
.
add
(
commandReceiver
);
}
}
/**
* Unregisters a previously registered custom command receiver.
*
* @param commandReceiver The command receiver to unregister.
*/
public
void
unregisterCustomCommandReceiver
(
CommandReceiver
commandReceiver
)
{
customCommandReceivers
.
remove
(
commandReceiver
);
}
private
void
registerCommandReceiver
(
CommandReceiver
commandReceiver
)
{
private
void
registerCommandReceiver
(
CommandReceiver
commandReceiver
)
{
if
(!
commandReceivers
.
contains
(
commandReceiver
))
{
if
(!
commandReceivers
.
contains
(
commandReceiver
))
{
commandReceivers
.
add
(
commandReceiver
);
commandReceivers
.
add
(
commandReceiver
);
...
@@ -1113,6 +1138,13 @@ public final class MediaSessionConnector {
...
@@ -1113,6 +1138,13 @@ public final class MediaSessionConnector {
return
;
return
;
}
}
}
}
for
(
int
i
=
0
;
i
<
customCommandReceivers
.
size
();
i
++)
{
if
(
customCommandReceivers
.
get
(
i
)
.
onCommand
(
player
,
controlDispatcher
,
command
,
extras
,
cb
))
{
return
;
}
}
}
}
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment