---
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: API Reference
---

<div id="old-home">
    <h1>API Reference</h1>
    <ul>
        <li>
            <h2><a href="phonegap/accelerometer/accelerometer.html">Accelerometer</a></h2>
            <span>Tap into the device's motion sensor.</span>
        </li>
        <li>
            <h2><a href="phonegap/camera/camera.html">Camera</a></h2>
            <span><a href="phonegap/media/capture/capture.html">Capture</a> a photo using the device's camera.</span>
        </li>
        <li>
            <h2><a href="phonegap/media/capture/capture.html">Capture</a></h2>
            <span><a href="phonegap/media/capture/capture.html">Capture</a> media files using device's media capture applications.</span>
        </li>
        <li>
            <h2><a href="phonegap/compass/compass.html">Compass</a></h2>
            <span>Obtain the direction that the device is pointing.</span>
        </li>
        <li>
            <h2><a href="phonegap/connection/connection.html">Connection</a></h2>
            <span>Quickly check the network state, and cellular network information.</span>
        </li>
        <li>
            <h2><a href="phonegap/contacts/contacts.html">Contacts</a></h2>
            <span>Work with the devices contact database.</span>
        </li>
        <li>
            <h2><a href="phonegap/device/device.html">Device</a></h2>
            <span>Gather device specific information.</span>
        </li>
        <li>
            <h2><a href="phonegap/events/events.html">Events</a></h2>
            <span>Hook into native events through JavaScript.</span>
        </li>
        <li>
            <h2><a href="phonegap/file/fileobj/fileobj.html">File</a></h2>
            <span>Hook into native file system through JavaScript.</span>
        </li>
        <li>
            <h2><a href="phonegap/geolocation/geolocation.html">Geolocation</a></h2>
            <span>Make your application location aware.</span>
        </li>
        <li>
            <h2><a href="phonegap/media/media.html">Media</a></h2>
            <span>Record and play back audio files.</span>
        </li>
        <li>
            <h2><a href="phonegap/notification/notification.html">Notification</a></h2>
            <span>Visual, audible, and tactile device notifications.</span>
        </li>
        <li>
            <h2><a href="phonegap/storage/storage.html">Storage</a></h2>
            <span>Hook into the devices native storage options.</span>
        </li>
    </ul>
    <h1>Guides</h1>
    <ul>
        <li>
            <h2><a href="guide/getting-started/index.html">Getting Started Guides</a></h2>
            <span>Setup each SDK and create your first PhoneGap app.</span>
        </li>
    </ul>
</div>
