Commit Graph

6514 Commits

Author SHA1 Message Date
Jaewan Kim
71467d42e2 Merge "MediaSession2: Clean up TODOs under frameworks/base" into pi-dev am: c23ee7639b
am: a0e1b5bbf8

Change-Id: Icc1e3f57d9ec5ec1922c49df224dcec3b86b65c5
2018-03-08 09:22:57 +00:00
Jaewan Kim
525c88c2b7 MediaSession2: Clean up TODOs under frameworks/base
This change includes
  - Addressed trivial TODOs (takes less than 1min)
  - Renamed playlist controller to playlist agent
  - Renamed mplc to playlistAgent
  - Renamed mpb to player
  - Assigned buganizer issues for TODOs

Bug: 74361045
Test: Run MediaComponentsTest
Change-Id: I45e97081b5a3f24988c3daadd007edcb51be5288
2018-03-08 13:54:34 +09:00
Jean-Michel Trivi
3ec338d06d Merge "AudioService: don't send BECOMING_NOISY when dyn policy affects media" into pi-dev am: 4e532f59dc
am: f686a34d6a

Change-Id: If9b2bae295b36944b7d35fcd09ab191d6750fe6f
2018-03-07 22:30:28 +00:00
Jean-Michel Trivi
4e532f59dc Merge "AudioService: don't send BECOMING_NOISY when dyn policy affects media" into pi-dev 2018-03-07 21:37:55 +00:00
Beverly
1cf28b4990 Merge "System sounds get its own dnd toggle" into pi-dev am: 5a169cf2f6
am: dd333ffb28

Change-Id: Idb2d6232174dffd81d26639e8041ef07b211f830
2018-03-07 17:09:36 +00:00
TreeHugger Robot
5a169cf2f6 Merge "System sounds get its own dnd toggle" into pi-dev 2018-03-07 16:39:40 +00:00
Jaewan Kim
d7674002d0 Merge "MediaSession2: Fix random NPE in MediaBrowser2Test" into pi-dev am: aa79f03ca6
am: 2c10f2e660

Change-Id: Ie9819e7f8cc8b29a10634369129958ab08ffc5ad
2018-03-07 11:56:28 +00:00
TreeHugger Robot
aa79f03ca6 Merge "MediaSession2: Fix random NPE in MediaBrowser2Test" into pi-dev 2018-03-07 11:23:29 +00:00
Sungsoo Lim
b69db671b4 Merge changes from topics "mplc", "session2_onDataSourceMissingHelper" into pi-dev am: be1033fda2
am: e09bf4f7cd

Change-Id: I3180681e4ca55ace1b3de87a360b880208937598
2018-03-07 08:38:49 +00:00
Jaewan Kim
5c44f9f0ab MediaSession2: Add SessionCallback#onCurrentMediaItemChanged() am: 87086f59ad
am: 37e3316bde

Change-Id: Ie202cea8fd16670180552428fd913cf161aed67e
2018-03-07 08:35:01 +00:00
Jaewan Kim
87e1bc08b1 MediaSession2: Add onDataSourceMissingHelper am: 4d4a8c95ae
am: a062aa3afe

Change-Id: I279f108ae063907910178fc74f073705fc0ed87e
2018-03-07 08:32:41 +00:00
Jaewan Kim
37e3316bde MediaSession2: Add SessionCallback#onCurrentMediaItemChanged()
am: 87086f59ad

Change-Id: I5861b8b3d24546b0064ddd7547da6b8906385c6c
2018-03-07 08:16:27 +00:00
Jaewan Kim
a062aa3afe MediaSession2: Add onDataSourceMissingHelper
am: 4d4a8c95ae

Change-Id: I9342ba46a9a88ff8a282816a7d492fa0ea439020
2018-03-07 08:12:02 +00:00
Sungsoo Lim
be1033fda2 Merge changes from topics "mplc", "session2_onDataSourceMissingHelper" into pi-dev
* changes:
  Remove MediaPlaylistController, add MediaPlaylistAgent
  MediaSession2: Add SessionCallback#onCurrentMediaItemChanged()
  MediaSession2: Add onDataSourceMissingHelper
2018-03-07 07:59:53 +00:00
Sungsoo Lim
df0e8fdffd Remove MediaPlaylistController, add MediaPlaylistAgent
MediaPlaylistAgent is the abstract class an application needs to
derive from to pass an object to a MediaSession2 that will override
default playlist handling behaviors. It contains a set of notify*
methods to signal MediaSession2 that playlist-related state has
changed.

Bug: 64098437
Test: make update-api
Change-Id: Icb3c57ddc14eba276f49d4ba85f11adbeb3e0917
2018-03-07 16:41:19 +09:00
Jaewan Kim
87086f59ad MediaSession2: Add SessionCallback#onCurrentMediaItemChanged()
Added callback for session to know the currently playing media item has
changed.

Note that the callback is called in response to the
MediaPlayerBase#PlayerEventCallback#onCurrentDataSourceChanged(mpb, dsd
is called. Session will translate dsd to the media item and calls
onCurrentMediaItemChanged().

Following changes are also included
  - Removed MediaPlaylistController#getCurrentPlaylistItem(),
    because currently playing item is managed by the MediaPlayerBase.
  - Renamed ControllerCallback#onCurrentPlaylistItemChanged() to the
    ControllerCallback#onCurrentMediaItemChanged(), to make it more
    obvious that the event is from MediaPlayerBase, not
    MediaPlaylistController.
  - Added SessionCallback#onCurrentMediaItemChanged()

Bug: 64098437
Test: Run MediaComponents test
Change-Id: I78b124a7da0f968b097b2576507b9a73e36081ec
2018-03-07 16:31:56 +09:00
Jaewan Kim
4d4a8c95ae MediaSession2: Add onDataSourceMissingHelper
This allows a developer to create DataSourceDesc when the item is about
to be played. Typical example of the usages are,

    1. For a playlist consists of FileDescriptors, its developer may not
        want to open all files when MediaSession2.setPlaylist() is
        called.
    2. A controller has called setPlaylist(), addPlaylistItem(), or
        replacePlaylistItem(). Controller cannot know the
        DataSourceDesc, and only the session developer can know about
        it.

Bug: 64098437
Test: Run MediaComponents test
Change-Id: I73f27ca0a799b1cddf5046b41f0ca01d08037103
2018-03-07 16:31:53 +09:00
Robert Shih
23d155d7f0 Merge "MediaPlayer2: embed header in uri" into pi-dev am: c943614f2c
am: d8c86aa40f

Change-Id: I430c387cd4d561718680c96cfe3688ec769dc0a3
2018-03-07 06:55:34 +00:00
TreeHugger Robot
c943614f2c Merge "MediaPlayer2: embed header in uri" into pi-dev 2018-03-07 04:26:18 +00:00
Android Build Merger (Role)
095d7cc5b0 Merge "Merge changes from topic "session2-pi-listcallback" into pi-dev am: ccf41b87a9 am: f5dbd73523" 2018-03-07 02:41:43 +00:00
TreeHugger Robot
f834155efc Merge "fix slow get caps" 2018-03-07 02:40:59 +00:00
Robert Shih
3164cbd536 MediaPlayer2: embed header in uri
Bug: 63934228
Change-Id: I3eba4a0ee8e8e784f6dcf79c739a756e957025c9
2018-03-06 18:18:52 -08:00
Jaewan Kim
ccf41b87a9 Merge changes from topic "session2-pi-listcallback" into pi-dev
* changes:
  MediaSession2: Pass player info for the callbacks from MediaPlayerBase
  MediaSession2: Add MediaPlaylistController.PlaylistEventCallback
2018-03-07 00:02:09 +00:00
Chong Zhang
90d7304a83 fix slow get caps
When get caps is called on an MediaCodec object, try to
use the codec info for that MediaCodec first as it should
be available during codec construction. Only when that
somehow failed go and initialize the full MediaCodecList,
as building the entire list could be very slow.

And when cloning the CodecCapabilities from MediaCodecInfo,
copy the fields directly and the fields (other than the ones
modifiable by client) are immutable after construction.

bug: 74073607

Test:
CTS media post submit:
cts-tradefed run cts-dev --module CtsMediaTestCases --compatibility:module-arg CtsMediaTestCases:include-annotation:android.platform.test.annotations.RequiresDevice

Change-Id: I4ae5f2431da8528e1eca093c5cfb98abcb4a5bbf
2018-03-06 23:51:27 +00:00
TreeHugger Robot
e9238246b7 Merge "MediaSession2: Ask server whether a controller is trusted" into pi-dev 2018-03-06 23:06:18 +00:00
Jean-Michel Trivi
7db2d8f1cc AudioService: don't send BECOMING_NOISY when dyn policy affects media
Only send ACTION_AUDIO_BECOMING_NOISY when there is no dynamic
  policy registered that affects media.

Bug: 67610473
Test: see bug
Change-Id: I0768718fbde35ea53c36c309086529567dfa82ac
2018-03-06 13:54:23 -08:00
Jaewan Kim
42a36c341d MediaSession2: Pass player info for the callbacks from MediaPlayerBase
Player can be updated meantime, and player event from the previous
player can be sent after the update. Providing player information will
provide developers more opportunity to filter out unecessary callbacks.

Bug: 64098437
Test: Run MediaComponents test
Change-Id: I9c23101df139e26351c008462c726ae7069130eb
2018-03-07 00:12:14 +09:00
Jaewan Kim
273130dc9a MediaSession2: Add MediaPlaylistController.PlaylistEventCallback
This includes following changes per offline discussion
  - Add MediaPlaylistController.PlaylistEventCallback
  - Add following APIs to the MediaPlaylistController
    * registerPlaylistControllerCallback() /
      unregisterPlaylistControllerCallback()
    * getRepeatMode() / setRepeatMode()
    * getShuffleMode() / setShuffleMode()
    * setPlaylist() with metadata
    * setPlaylistMetadata() / getPlaylistMetadata()
  - Add following APIs to the SessionCallback
    * onMediaPrepared()
    * onPlayerStateChanged()
    * onBufferingStateChanged()
  - Remove following methods from ControllerCallback
    * onPlaylistChanged()

Bug: 64098437
Bug: 74157064
Test: passed MediaComponentTest
Change-Id: I5ad12a9a5d6a7d9e23a577dca8ea26fbacb8f259
2018-03-07 00:11:25 +09:00
Beverly
d696476fb3 System sounds get its own dnd toggle
- Added logic for streams to be muted by dnd (unassociated with ringer)

Test: runtest -x frameworks/base/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
Bug: 73362490
Change-Id: I1101e67282f7331497e91eb510d2bf4f1ea6b4b1
2018-03-06 09:08:29 -05:00
Jaewan Kim
b10e372284 MediaSession2: Fix random NPE in MediaBrowser2Test
MediaSessionService#getSession() may be null until the
MediaSessionService#onCreate(), and its session callback can be called
before that. (e.g. System service can try connecting to the session
in another thread)

Don't use MediaSessionService#getSession() when it's unclear whether
the MediaSessionService#onCreate() is finished.

Bug: 74177171
Test: Run MediaComponents test 10 times
Change-Id: I89f3d1a59f84f5d950a14a7b412cfbbdad2c8bee
2018-03-06 19:48:32 +09:00
TreeHugger Robot
9bc5610869 Merge "MediaSession2: Update Builder" into pi-dev 2018-03-06 08:59:13 +00:00
Hyundo Moon
66bc3c1f78 MediaSession2: Update Builder
This CL updates following APIs of session builder:
 - setPlayer
 - setPlaylistController
 - setVolumeController

Bug: 74093082
Test: runtest-MediaComponents
Change-Id: I88365e740df7e14edf439cbed2106f788d027f53
2018-03-06 15:56:34 +09:00
Jaewan Kim
fed495078e MediaSession2: Ask server whether a controller is trusted
Bug: 73150040
Test: Run all MediaComponents tests once
Change-Id: Ic003a40654a45e6fd367d7389216fddf320a8edc
2018-03-06 14:24:06 +09:00
Wei Jia
97d579d1ee Merge "MediaPlayer2: clarify sync/async for API's" into pi-dev 2018-03-06 03:42:25 +00:00
TreeHugger Robot
cefe0c6518 Merge "Check mMediaProvider for null" into pi-dev 2018-03-06 01:59:14 +00:00
Wei Jia
d526bc3b88 MediaPlayer2: clarify sync/async for API's
Test: MediaPlayer2 plays
Bug: 63934228
Change-Id: I48b73c75311dbb31dcebe7c7a38e444d7dc65ed8
2018-03-05 16:40:59 -08:00
Jerry Zhang
484ea675dd Check mMediaProvider for null
Getting the content provider could
return null in some cases where the user
is locked, so check for that when closing.

Bug: 73656609
Test: no crash
Change-Id: I607cd2da5348520616a1c171d0d8a1afacabe592
2018-03-05 22:25:58 +00:00
Dongwon Kang
adf77a01e8 Make MP2.prepare|play handled with task queue
Test: plays video
Bug: 63934228
Change-Id: Iecf8b2079e87241365ab6b7b7b0a5a669c948427
2018-03-05 11:33:27 -08:00
Dongwon Kang
47cab8322a Remove unused imports in MediaPlayer2.
Test: build.
Change-Id: I2f2a05ef4fc41d14f91e6805217852adf5bbb28e
2018-03-05 11:07:38 -08:00
Hyundo Moon
d4ef7b96ed MediaController2: Ensure NonNull for parameters of public methods
Bug: 73863865
Test: Passed MediaBrowser2Test
Change-Id: I65cd43045f4e7b9f16b8cf3f43688815e59dc643
2018-03-05 10:55:09 +09:00
Jaewan Kim
7a0cefa583 MediaSession2: Clean up TODOs under frameworks/base/media
This CL includes following changes
  - Remove outdated TODOs
  - Added buganizer issue if the remaining work take more than 5m

Test: Run MediaComponents tests
Change-Id: I8968e12aabcbc67f69dbf14485b3716d0e95779b
2018-03-04 18:47:49 +09:00
TreeHugger Robot
13b4d509b8 Merge "MediaPlayer2: implement some API's" 2018-03-03 03:14:38 +00:00
TreeHugger Robot
247779b31c Merge "MediaSession2: Add caller to the callback methods" 2018-03-03 00:54:31 +00:00
Wei Jia
cde2d3ff10 MediaPlayer2: implement some API's
Test: MediaPlayer2 plays
Bug: 63934228
Change-Id: I10a4086db214b88f4a3eaea71fce81e8a994589a
2018-03-02 16:20:08 -08:00
TreeHugger Robot
053a3859a8 Merge "MediaSession2: Add reset() to the MediaPlayerBase" 2018-03-02 23:58:14 +00:00
TreeHugger Robot
20b699db64 Merge "Clarify security level default in openSession()" 2018-03-02 20:42:52 +00:00
TreeHugger Robot
c7f295f0f9 Merge "MediaMetadata2: Make Javadoc of each key consistent" 2018-03-02 15:24:32 +00:00
Jaewan Kim
3fb60d56c2 MediaSession2: Add caller to the callback methods
This is to follow MediaPlayer2 and MediaPlayerBase's API style.

Bug: 64098437
Test: make update-api
Change-Id: I7fe17852d16237fac801c716eab1007cd0337867
2018-03-02 23:14:40 +09:00
Jaewan Kim
de2bbb322b MediaSession2: Add reset() to the MediaPlayerBase
This would be used in response to
  - MediaController2#play()
  - KEYCODE_MEDIA_STOP

Bug: 64098437
Test: passed MediaComponentTest
Change-Id: I7cd4d855d5e1bf8e4260a9b920f30dfe2eea44e1
2018-03-02 18:03:42 +09:00
Hyundo Moon
a68f1551f0 MediaMetadata2: Make Javadoc of each key consistent
This CL makes the Javadoc of METADATA_KEY_* to be consistent.

Bug: 73877547
Test: Builds successfully
Change-Id: Icb68d62230bb4e523da2015db76d5aeaa098c69a
2018-03-02 18:03:07 +09:00