/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \page mobiledevelopment.html
    \title Mobile APIs
    \brief APIs for accessing mobile hardware

    New in Qt 5 are APIs for mobile platforms. These APIs access various
    hardware and mobile features. There are also APIs for extending support
    to other devices and platforms.

    \section2 Supported Mobile Platforms

    The following pages contain information about setting up Qt Creator and
    how to get started with the mobile platforms:
    \list
        \li \l{Qt for Android}{Android}
        \li \l{Qt for iOS}{iOS}
    \endlist

    \section1 Sensors

    The Qt Sensors module's APIs allow access to various hardware
    sensors. Accelerometers, light sensors, compass, and gyroscope sensors
    are one of the many types of sensors supported by the QML and C++ APIs.

    \list
    \li \l{Qt Sensors}
    \endlist

    \section1 Positioning

    Accessing location information through Global Positioning System (GPS) or
    Cell ID positioning is available through the positioning APIs from the Qt
    Positioning module. Additionally, devices which use NMEA protocols can be
    used as a source.

    \list
    \li \l{Qt Positioning}
    \endlist

    \section1 Location

    The Qt Location module's API allows access to map, navigation, and place data.
    It is possible to interact with tile maps using gestures to pan, flick, and
    zoom. Additional information such as routes or places may be displayed on the
    map.

    \list
    \li \l{Qt Location}
    \endlist

    \section1 Bluetooth

    The Qt Bluetooth module's APIs allows access to Bluetooth-enabled devices.
    There are APIs for scanning Bluetooth devices and sharing data among
    devices. The APIs have support for radio-frequency communication (RFCOMM)
    and OBEX Object Push Profile (OPP) protocols.

    \list
    \li \l{Qt Bluetooth}
    \endlist

    \section1 NFC

    Near field communication (NFC) support is provided by the Qt NFC module. The
    QML and C++ APIs sets up communication between NFC Forum Tags and NFC Forum
    Devices through the of NFC Logical Link Control Protocol (LLCP).

    \list
    \li \l{Qt NFC}
    \endlist

   \section1 In-App Purchasing

   The Qt Purchasing module enables mobile developers to generate revenue from
   their applications on Android and iOS platforms. The module provides C++ and
   QML alternatives to support the In-App purchasing use case in Qt
   applications.

   \list
    \li \l{Qt Purchasing}
   \endlist

*/
