fullpage=true
landing.page=true
page.metaDescription=Legal Notice for source.android.com
header.hide=1
@jd:body

<!--
    Copyright 2010 The Android Open Source Project

    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at

        http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
-->

<div class="wrap">

  <div class="landing-banner">
      <h1 itemprop="name" style="margin-bottom:0;">Legal Notice</h1>

    <p>Android is developed by Google Inc. and the <a
    href="http://www.openhandsetalliance.com/">Open Handset Alliance</a>. We've made it available to you
    as a development platform pursuant to our commitment to openness, freedom, and innovation in
    mobile.</p>

  </div>

<h2 id="Brands">Android Brands</h2>

<p>The "Android" name, the <img src="{@docRoot}assets/images/sac_logo.png" alt="Android"
style="margin:0;padding:0 2px;vertical-align:baseline" /> logo, and
<a href="http://www.google.com/permissions/">other trademarks</a> are property of Google Inc.
You may not use the logo or the logo's custom typeface.</p>

<p>You may use the word "Android" in a product name only as a descriptor, such as "for Android"
and the first instance should be followed by a TM symbol, "for Android&trade;." In other
messaging, the word "Android" may be used in text as a descriptor, as long as it is followed by a
proper generic term (for example, "Android&trade; application"). Any use of the Android name
must include footer attribution in your communications: "Android is a trademark of Google Inc."</p>

<p>The Android Robot logo <img src="http://developer.android.com/images/robot-tiny.png" alt=""
style="margin:0;padding:0;vertical-align:baseline" /> can be used, reproduced, and modified freely
in marketing communications. Our standard color value for print is PMS 376C. Our online hex color is
#A4C639. The Android Robot logo is licensed under the terms of the <a
href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution</a> license and any
use of it must be attributed as such.</p>

<p>For more information about Android brands, see the <a
href="http://developer.android.com/distribute/googleplay/promote/brand.html">Brand Guidelines</a>.</p>

<p>All other trademarks are the property of their respective owners.</p>

<h2 id="WebSite">Web Site Content</h2>

<p>We are pleased to license the Android documentation and sample code on this web site under terms
that encourage you to take, modify, reuse, re-purpose, and remix the content as you see fit. The
documentation content on this web site is made available to you as part of the <a
href="http://source.android.com">Android Open Source Project</a>. This documentation, including any
code shown in it, is licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache
2.0 license</a>. All other content on this site, except the license documents themselves and as
otherwise noted, is licensed under the <a
href="http://creativecommons.org/licenses/by/2.5/">Creative Commons Attribution 2.5</a> license.
</p>

<p>For more information about licenses provided for the content of this web site and the
restrictions for re-use, read the complete <a href="license.html">Content License</a>.</p>

<p>Your use of this site is subject to <a href="http://www.google.com/policies/">Google's Privacy
Policy &amp; Terms of Service</a>.</p>


<div>
