)]}'
{
  "log": [
    {
      "commit": "8b4bffcac996b4083e720310a09d315ca1c4a000",
      "tree": "56726422a371d15b204756f80bce5e487d1ed318",
      "parents": [
        "54892c8b813eb2de3c5c6bcd08c90b8dd0abbec8"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Jul 10 13:48:01 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Jul 16 12:03:45 2014 -0700"
      },
      "message": "Make MediaSession and MediaController constructors public\n\nThis makes the MediaSession/Controller constructors public and registers\nwith the system behind the scenes.\n\nThis also adds a bit about needing to call setActive(true) to start receiving\ncommands in MediaSession\u0027s docs.\n\nChange-Id: If882d229b54c36bf0831aca0255052dda667a2bc\n"
    },
    {
      "commit": "c785a78fb483fe54012175c53d3758b2412de7b9",
      "tree": "381234db29ffa13f3f34972052d282978df86915",
      "parents": [
        "550116576cce028d3c435f7c3ae9f6e3b92b5cf2"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon Jul 14 13:40:43 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon Jul 14 13:40:43 2014 -0700"
      },
      "message": "Make PlaybackState immutable with a builder\n\nbug:15862252\nChange-Id: I51f2e466bd2c41bbe80d20aa9785126a7ac6ab3f\n"
    },
    {
      "commit": "550116576cce028d3c435f7c3ae9f6e3b92b5cf2",
      "tree": "ca7bf5f9f2564ea6a34c37d94216e7f531236772",
      "parents": [
        "a4ab780877808dbee334f7c7cc4acefa0aa313b2"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Jul 09 15:05:53 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon Jul 14 11:17:06 2014 -0700"
      },
      "message": "Add API to set a default session in Activity\n\nWe may have multiple remote sessions at once so an app needs a way\nto specify a default session to route media and volume commands to\nwhen its activity is in the foreground. This adds an api that works\nin parallel with the default stream api on Activity.\n\nbug:15727927\nChange-Id: I5b67cb3e20647f9437d90aa65be63efe8c7865cf\n"
    },
    {
      "commit": "ff0215dd64e5fd4ff366930747e7943fcc40c4ab",
      "tree": "cedfda78070d778f79127503211e0d1215ecd904",
      "parents": [
        "1a937b04e63539cb1fab1bde601031d415c7156f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 14 04:05:08 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jul 14 04:38:15 2014 -0700"
      },
      "message": "Update media session test application for new media router.\n\nChange-Id: I3c19e008d211099b4d7320e3f195850cfb4dd927\n"
    },
    {
      "commit": "b2e93efcac593f5f27722219b274bd0fa5c1b0fe",
      "tree": "b36611df2d01aedf0f00c43bb6badf1dffb59c06",
      "parents": [
        "5a4e01114361b7dad4fc5465b4da00fd444fc098"
      ],
      "author": {
        "name": "Erik Pasternak",
        "email": "roboerik@android.com",
        "time": "Thu Jul 10 22:51:34 2014 +0000"
      },
      "committer": {
        "name": "Erik Pasternak",
        "email": "roboerik@android.com",
        "time": "Thu Jul 10 22:51:34 2014 +0000"
      },
      "message": "Revert \"Make PlaybackState immutable with a builder\"\n\nWill resubmit tomorrow for Build Breakage Friday as this change needs new SDK prebuilts for unbundled app branches.\n\nThis reverts commit aa746b27610680a2c0fbdf7d81a6455c4597f05e.\n\nChange-Id: I28ba7e1b09234a5eb1b725aed043b9de98e1bc16\n"
    },
    {
      "commit": "5a4e01114361b7dad4fc5465b4da00fd444fc098",
      "tree": "e589eeb34eea78fa29c02cf2f0d3ca2ed93dd1a0",
      "parents": [
        "b3d91779cb8cbb78d703095e6c880a83ab20133e"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Jul 09 13:34:32 2014 -0700"
      },
      "committer": {
        "name": "Erik Pasternak",
        "email": "roboerik@android.com",
        "time": "Thu Jul 10 22:39:03 2014 +0000"
      },
      "message": "Make PlaybackState immutable with a builder\n\nbug:15862252\nChange-Id: I8944b7753cd6a36a74b0091f71a386f77040c4ab\n"
    },
    {
      "commit": "dba34ba35cd2042d9a8fecfda56e2abe7a680bad",
      "tree": "c8dead04fe9fbdba409cfdbf11fcdbcbb9174f99",
      "parents": [
        "854157308e5426437277c9d31be64a2dedd57c7f"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jun 24 20:46:03 2014 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jun 30 16:05:25 2014 -0700"
      },
      "message": "Make MediaSessionToken an inner class of MediaSession.\n\nAlso add some missing AIDLs to the framework makefile to ensure\nthey are included in the SDK.\n\nChange-Id: If85a3091c7591e0b3bbe6cc4bb74aba2284b4f42\n"
    },
    {
      "commit": "b69ffd4dc2c8fa85e0064151141ebeee90de471e",
      "tree": "da787f506e0ac8a23a268f199096cb27e87c4f8e",
      "parents": [
        "283c907a6a84c5d9ffe38d3468e76131e6917105"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri May 30 14:57:59 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri May 30 15:47:58 2014 -0700"
      },
      "message": "Minimum work to make volume handling work with sessions\n\nThis is the minimum change to make adjusting volume work with\nMediaSessions. This only affects adjusting the volume and adjusting\nthe volume with a suggested stream. Adjusting a specific stream or\nsetting a specific stream will still use the same code.\n\nThis does not fix existing remote volume handling in RCC, which\nwill require a separate change to MediaController.\n\nChange-Id: I5b957ff4bece1ee11e2364e1f216e1c08343c983\n"
    },
    {
      "commit": "c47fa84b0a6bda48c38ba8822481ce613bafd019",
      "tree": "b3f3e177e8cd1f27909e7c9ffad292a8dffe4a3f",
      "parents": [
        "79fa4630bbca7c6c251eea99fe8997e4b45becee"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed May 28 17:36:42 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri May 30 10:35:44 2014 -0700"
      },
      "message": "Refactor transport controls APIs\n\nThis merges TransportPerformer into MediaSession + a\nTransportControlsCallback and makes TransportController into an\ninner class on MediaController called TransportControls. Also makes\nthe PlaybackState and Metadata part of the session APIs instead of\ntransport controls.\n\nChange-Id: I16ad392e6d318abe3119ad5d89656d253af25e16\n"
    },
    {
      "commit": "79fa4630bbca7c6c251eea99fe8997e4b45becee",
      "tree": "c65f1dafd3657cb016eb7fc0ebf78a46eb3a1393",
      "parents": [
        "eb61eb786af1db1f1cf6c988d78d1ddc3acb4a16"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Tue May 27 16:49:09 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu May 29 11:28:48 2014 -0700"
      },
      "message": "API changes to sessions\n\nChanges requested by API Council review. A second CL will refactor\nTransportController and TransportPerformer based on feedback.\n\nChange-Id: Ie26a7d01d7021232a66c2edf1eb58120437fdfde\n"
    },
    {
      "commit": "42ea7eecd149161ed192d3029f0d77d1d08a4aa5",
      "tree": "f3fe1644a6e7d480f5ef07983ca70d9ddef0ac37",
      "parents": [
        "8a2cfc309ab9126e90022916967c65a793c034f0"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri May 16 16:27:35 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri May 16 16:40:17 2014 -0700"
      },
      "message": "Rename session classes to have media prefix, hide routes\n\nThis renames several of the core session classes to be prefixed\nwith Media. It also adds @hide to all route references for now.\n\nChange-Id: Idb42897d490cf24626e4e93ca975b2cb93ec054c\n"
    },
    {
      "commit": "a8f951462791a16f47e8c07e552232f31dcefac5",
      "tree": "a4a8d83d851f5a031333af2b842509d4370609b2",
      "parents": [
        "e7880d8eb1903d42e4e2a90c99b58e2240e01e82"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon May 05 14:23:49 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Tue May 06 17:26:06 2014 -0700"
      },
      "message": "Add a class for managing Session priority\n\nPriority is given first to the system priorty session, then to\nactive local sessions, then to active remote sessions, then to\nthe rest of the sessions. Ordering within categories is by whoever\nlast performed an action we associate with the user.\n\nThe stack has methods for getting filtered sets of this priority.\n\nThis also:\n-Changes publish to setActive(boolean)\n-Adds a flag for handling media buttons.\n-Adds a flag for transport controls instead of enabling once.\n-Unhides the setFlags API.\n-Updates the legacy helper to use the flags.\n\nChange-Id: I6ebeb27410de1b24149fd6e1785613ac444f0774\n"
    },
    {
      "commit": "f1372428f2df781c71c71caa2f6a4db6f847cf10",
      "tree": "62b260454c523adda9dbd7ced72f273f7231edc6",
      "parents": [
        "4e8cf1508f22f88203cd9bf4467aaddd3f4502c6"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Apr 23 14:38:17 2014 -0700"
      },
      "committer": {
        "name": "Erik Pasternak",
        "email": "roboerik@android.com",
        "time": "Thu May 01 17:14:01 2014 +0000"
      },
      "message": "Add Session API calls to RCC and AudioManager\n\nThis makes RCC and MediaButtonReceiver (via AudioManager) also use the new Session APIs in parallel to their existing code. This will allow us to bring up the Session compatibility pieces without disrupting the old behavior and then switch everything over to just using the new APIs when ready.\n\nChange-Id: I33ce0a044dea3ec763f2302b91a5e415be27d4a4"
    },
    {
      "commit": "07c7077c54717dbbf2c401ea32d00fa6df6d77c6",
      "tree": "49f9e8019caa93c702c6d2d8213767de3d1499c6",
      "parents": [
        "46175e152891eabd9051523f2f077de5a5562996"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Mar 20 13:33:52 2014 -0700"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Apr 17 15:02:33 2014 -0700"
      },
      "message": "Add RouteProviders to the new Media APIs\n\nCompiles and works with OneMedia. This currently is a rough test of\nthe system for finding, connecting to, and sending messages to routes.\nThis will just connect to the first route it finds when a request to\nopen the route picker is made (and disconnect when another request is\nmade).\n\nChange-Id: I5de5521a079471b9e02664be4654c0591dfd9a6d\n"
    },
    {
      "commit": "8ae0f34db936a649ddaf9cdd086c224f6514efeb",
      "tree": "6699d2481e68c205dc62a35c1c434f05d721c03f",
      "parents": [
        "1ebd4ad6cd645830d1eca12b2108c6ab4327c108"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Mon Feb 24 18:02:08 2014 -0800"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Mar 12 15:09:42 2014 -0700"
      },
      "message": "Adds a TransportController and TransportPerformer to session\n\nThis makes transport controls a primitive interface on sessions with\na way to create the performer, register callbacks, and send commands\nand updates between controllers and performers. This still needs some\ncleanup but has been tested with OneMedia.\n\nChange-Id: I373d35f7ccc383b8421bd14044457467d80425f3\n"
    },
    {
      "commit": "2f5b057da7d05d5d699a272aa24fd7c97cdda820",
      "tree": "c11d78d206773981c7057110a54d186ed02cdcc5",
      "parents": [
        "503923220cca802f6dfc12f902ab0f6d1a12434f"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Fri Feb 21 10:30:38 2014 -0800"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Tue Feb 25 16:01:55 2014 -0800"
      },
      "message": "Move Session apis to android.media.session\n\nThis is to make it easier to distinguish the new apis from the old\nones.\n\nChange-Id: Ic5eaf65e8bd054a844f87b9118c4bb18f30ac8a7\n"
    },
    {
      "commit": "bfa153b64b4e8c2faa39a15e87fc9f0300335f20",
      "tree": "2170cb41d7a69560a0a2390528ea1319c2916e1d",
      "parents": [
        "01fe661ae5da3739215d93922412df4b24c859a2"
      ],
      "author": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Thu Feb 13 14:22:42 2014 -0800"
      },
      "committer": {
        "name": "RoboErik",
        "email": "epastern@google.com",
        "time": "Wed Feb 19 13:41:38 2014 -0800"
      },
      "message": "Initial commit for MediaSession test app\n\nThis app creates a service and UI in separate processes and uses\nthe new MediaSession APIs. This is still a rough work in progress.\n\nChange-Id: I9692c95bf2fdbee7255da86dff59044c893e3a1f\n"
    }
  ]
}
