---
license: >
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you 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.

title: Guides
---

<div id="old-home">

    <h1>Guides</h1>
    <ul>
        <li>
            <h2><a href="guide/overview/index.html">Overview</a></h2>
            <span>Start here if you are new to Cordova.</span>
        </li>
        <li>
            <h2><a href="guide/cli/index.html">The Command-line Interface</a></h2>
            <span>Create, build, and deploy from the command-line.</span>
        </li>
        <li>
            <h2><a href="guide/platforms/index.html">Platform Guides</a></h2>
            <span>Set up each SDK and update projects</span>
        </li>
        <li>
            <h2><a href="config_ref/index.html">Configuration Reference</a></h2>
            <span>Customize the features of your app.</span>
        </li>
        <li>
            <h2><a href="guide/hybrid/webviews/index.html">Embedding WebViews</a></h2>
            <span>Implement the Cordova WebView in your project.</span>
        </li>
        <li>
            <h2><a href="guide/hybrid/plugins/index.html">Plugin Development Guide</a></h2>
            <span>Develop your first plugin.</span>
        </li>
        <li>
            <h2><a href="guide/appdev/privacy/index.html">Privacy Guide</a></h2>
            <span>Learn about important mobile privacy issues.</span>
        </li>
        <li>
            <h2><a href="guide/appdev/whitelist/index.html">Domain Whitelist Guide</a></h2>
            <span>Grant an application access to external domains.</span>
        </li>
    </ul>

    <h1>API Reference</h1>
    <ul>
        <li>
            <h2><a href="cordova/accelerometer/accelerometer.html">Accelerometer</a></h2>
            <span>Tap into the device's motion sensor.</span>
        </li>
        <li>
            <h2><a href="cordova/camera/camera.html">Camera</a></h2>
            <span><a href="cordova/media/capture/capture.html">Capture</a> a photo using the device's camera.</span>
        </li>
        <li>
            <h2><a href="cordova/media/capture/capture.html">Capture</a></h2>
            <span><a href="cordova/media/capture/capture.html">Capture</a> media files using device's media capture applications.</span>
        </li>
        <li>
            <h2><a href="cordova/compass/compass.html">Compass</a></h2>
            <span>Obtain the direction that the device is pointing.</span>
        </li>
        <li>
            <h2><a href="cordova/connection/connection.html">Connection</a></h2>
            <span>Quickly check the network state, and cellular network information.</span>
        </li>
        <li>
            <h2><a href="cordova/contacts/contacts.html">Contacts</a></h2>
            <span>Work with the devices contact database.</span>
        </li>
        <li>
            <h2><a href="cordova/device/device.html">Device</a></h2>
            <span>Gather device specific information.</span>
        </li>
        <li>
            <h2><a href="cordova/events/events.html">Events</a></h2>
            <span>Hook into native events through JavaScript.</span>
        </li>
        <li>
            <h2><a href="cordova/file/fileobj/fileobj.html">File</a></h2>
            <span>Hook into native file system through JavaScript.</span>
        </li>
        <li>
            <h2><a href="cordova/geolocation/geolocation.html">Geolocation</a></h2>
            <span>Make your application location aware.</span>
        </li>
        <li>
            <h2><a href="cordova/globalization/globalization.html">Globalization</a></h2>
            <span>Enable representation of objects specific to a locale.</span>
        </li>
        <li>
            <h2><a href="cordova/inappbrowser/inappbrowser.html">InAppBrowser</a></h2>
            <span>Launch URLs in another in-app browser instance.</span>
        </li>
        <li>
            <h2><a href="cordova/media/media.html">Media</a></h2>
            <span>Record and play back audio files.</span>
        </li>
        <li>
            <h2><a href="cordova/notification/notification.html">Notification</a></h2>
            <span>Visual, audible, and tactile device notifications.</span>
        </li>
        <li>
            <h2><a href="cordova/splashscreen/splashscreen.html">Splashscreen</a></h2>
            <span>Show and hide the applications splash screen.</span>
        </li>
        <li>
            <h2><a href="cordova/storage/storage.html">Storage</a></h2>
            <span>Hook into the devices native storage options.</span>
        </li>
    </ul>

</div>
