)]}'
{
  "log": [
    {
      "commit": "282e181b58cf72b6ca770dc7ca5f91f135444502",
      "tree": "e313e7ab30ff4679562efa37bde29cfcb9e375d3",
      "parents": [
        "7023df08f14ec5dee76ac54c03e870f84e297636"
      ],
      "author": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Thu Jan 23 18:17:42 2014 -0800"
      },
      "committer": {
        "name": "Adam Lesinski",
        "email": "adamlesinski@google.com",
        "time": "Mon Jan 27 10:31:04 2014 -0800"
      },
      "message": "Revert \"Move frameworks/base/tools/ to frameworks/tools/\"\n\nThis reverts commit 9f6a119c8aa276432ece4fe2118bd8a3c9b1067e.\n"
    },
    {
      "commit": "9f6a119c8aa276432ece4fe2118bd8a3c9b1067e",
      "tree": "1391656f9ad624aa99d4c7d2880d38121801a424",
      "parents": [
        "647b6f5ed276bf93d95e5801e5e8af2802ef5fbb"
      ],
      "author": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Aug 28 09:44:17 2013 -0700"
      },
      "committer": {
        "name": "Mike Lockwood",
        "email": "lockwood@google.com",
        "time": "Wed Aug 28 09:44:17 2013 -0700"
      },
      "message": "Move frameworks/base/tools/ to frameworks/tools/\n\nChange-Id: I3ffafdab27cc4aca256c3a5806b630795b75d5c8\n"
    },
    {
      "commit": "daf5d894ef71c5674e83b11de8b408e3bdabe4c7",
      "tree": "37ab29946003c4d6b13d5f261c06f0737485241f",
      "parents": [
        "59bbef0cd781f4933fd8a0a85b6067f36e529e02"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 18:30:18 2012 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon May 07 18:30:18 2012 -0700"
      },
      "message": "Small tweaks to orientation.\n\nImproved threshold for detecting external acceleration.\n\nBug: 5976859\nChange-Id: Iaf2298fba8eda72d1cacbb2f3aea72f460a9262f\n"
    },
    {
      "commit": "5aa73ae58f049379a97bc86add541f27170c02a4",
      "tree": "d76f786422c0a173127888d180d4257e70af3eea",
      "parents": [
        "c0cb3dc2c16883f19bf1caf652b2fcdb55a1a856"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Jan 13 15:29:21 2012 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Tue Jan 17 17:07:10 2012 -0800"
      },
      "message": "Improve heuristics for orientation detection.\n\n1. Except as otherwise indicated, orientation change happens once\n   the predicted rotation has been stable for 40ms.  Noise is\n   suppressed by a low-pass filter with a 200ms time constant which\n   seems to be about as small as is practical given the quality\n   of the sensor data.\n\n2. If the magnitude exceeds a threshold (excessive noise or freefall),\n   resets the predicted orientation.\n   Doesn\u0027t happen very often even when shaking the device.\n   This heuristic mainly protects the detector from spurious tilt due\n   to inaccurate determination of the gravity vector.\n\n3. If the device was previously in a flat posture (on a table for at\n   least 1000ms), then it must move out of that posture for at least\n   500ms before the next orientation change will happen.\n   This heuristic suppresses most spurious rotations that happen while\n   picking up the device.\n\n4. If the device is tilted away from the user by 20 degrees within\n   a span of 300ms, the device is said to be swinging and at least\n   300ms must elapse after the device stops swinging before the\n   next orientation change will happen.\n   This heuristic suppresses some but not all spurious rotations that\n   happen while putting down a device.  Unfortunately, this heuristic\n   sometimes triggers a false positive when turning the device very\n   rapidly due to accelerometer noise.  The 300ms pause is a compromise\n   so that occasional mispredicted swings don\u0027t significantly delay\n   the rotation.\n\nBug: 5796249\nChange-Id: Id7b36c4c563e35b70d6a7ac36d04f3c3d6ea5811\n"
    },
    {
      "commit": "c0347aa19f354a8e1ff4fcd5372b134c0c7c16ad",
      "tree": "b442f6284e23f5b203538adb123e9fe2b704fd43",
      "parents": [
        "745f1e3a06eb504c9e4465afc987854a6269220d"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 23 17:26:09 2011 -0700"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Fri Sep 23 17:26:09 2011 -0700"
      },
      "message": "Prevent unintended rotations.\nBug: 4981385\n\nChanged the orientation listener to notify the policy whenever\nits proposed orientation changes, and changes the window manager\nto notify the orientation listener when the actual orientation\nchanges.  This allows us to better handle the case where the\npolicy has rejected a given proposal at one time (because the\ncurrent application forced orientation) but might choose\nto accept the same proposal at another time.\n\nIt\u0027s important that the proposal always be up to date.  A proposal\nbecomes irrelevant as soon as the phone posture changes such\nthat we can no longer determine the orientation with confidence\n(such as when a device is placed flat on a table).\n\nSimplified the orientation filtering.  Now we just wait 200ms\nfor the device to be still before issuing a proposal.  The idea\nis that if the device is moving around a lot, we assume that\nthe device is being picked up or put down or otherwise in\nthe process of being moved.  We don\u0027t want to change the rotation\nuntil that\u0027s all settled down.  However, we do want to tolerate\na certain amount of environmental noise.\n\n(The previous confidence algorithm was also designed along\nthese lines but it was less direct about waiting for things\nto settle.  Instead it simply made orientation changes take\nlonger than usual while unsettled, but the extra delay was often\ntoo much or too little.  This one should be easier to tune.)\n\nChange-Id: I09e6befea1f0994b6b15d424f3182859c0d9a530\n"
    },
    {
      "commit": "4519f07e9c6b993fbe7a3d3df24d71d9450a54f1",
      "tree": "3c642e9c740a54941ab46d80ebc5668ce9ab4cc3",
      "parents": [
        "a6ce081970a78233ba6b9792149ee5f1390cba7b"
      ],
      "author": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Sun Jan 23 13:16:01 2011 -0800"
      },
      "committer": {
        "name": "Jeff Brown",
        "email": "jeffbrown@google.com",
        "time": "Mon Jan 24 13:46:57 2011 -0800"
      },
      "message": "New orientation listener.\n\nThe objective in this listener is to be more careful about the\nsignal processing to prevent spurious orientation changes\nand to make all of the tweakable factors physically meaningful.\n\nThe calibration is defined in terms of time constants and\ndoes not assume a particular discrete sampling rate.  This is\nuseful because it allows us to change the accelerometer sampling\ninterval if desired without having to change the calibration.\nMoreover, the accelerometer sampling interval can vary +/- 20ms\nfrom one sample to the next even in normal circumstances.\n\nProposed orientation changes are weighted by confidence factors\nthat vary exponentially in relation to how close the device\nis to the ideal orientation change posture (screen is vertical,\nangle is exactly at the midpoint of the orientation quadrant,\nand no external acceleration beside gravity).  When not in an ideal\nposture, the device takes proportionally longer to settle into a\nnew orientation state.\n\nAdded a little tool to plot the log output of the\nWindowOrientationListener.  Check the README for more information\nabout how to use it.\n\nChange-Id: I787f02d03582ff26367df65eda8d9ce85c5cb343\n"
    }
  ]
}
