Docs: Adding new diagram images
Adding new images for TV and HAL components. Minor edits to adjust image float/flow.
Adding new images for DRM. Minor edits to correct orphans.
Adding changes to audio diagram
Bug: 18947698
Change-Id: I7bf808fc0bbd99a8fa77f333f933a88a4942bf80
diff --git a/src/devices/audio/images/ape_audio_tv_hdmi_tuner.png b/src/devices/audio/images/ape_audio_tv_hdmi_tuner.png
index 43a89ea..382bb45 100644
--- a/src/devices/audio/images/ape_audio_tv_hdmi_tuner.png
+++ b/src/devices/audio/images/ape_audio_tv_hdmi_tuner.png
Binary files differ
diff --git a/src/devices/audio/images/ape_audio_tv_tif.png b/src/devices/audio/images/ape_audio_tv_tif.png
index f013cfa..c8cd69e 100644
--- a/src/devices/audio/images/ape_audio_tv_tif.png
+++ b/src/devices/audio/images/ape_audio_tv_tif.png
Binary files differ
diff --git a/src/devices/audio/images/ape_audio_tv_tuner.png b/src/devices/audio/images/ape_audio_tv_tuner.png
index a25dcfb..bb062dc 100644
--- a/src/devices/audio/images/ape_audio_tv_tuner.png
+++ b/src/devices/audio/images/ape_audio_tv_tuner.png
Binary files differ
diff --git a/src/devices/audio/images/ape_fwk_audio.png b/src/devices/audio/images/ape_fwk_audio.png
new file mode 100644
index 0000000..9059a62
--- /dev/null
+++ b/src/devices/audio/images/ape_fwk_audio.png
Binary files differ
diff --git a/src/devices/audio/images/ape_fwk_hal_audio.png b/src/devices/audio/images/ape_fwk_hal_audio.png
new file mode 100644
index 0000000..f42abac
--- /dev/null
+++ b/src/devices/audio/images/ape_fwk_hal_audio.png
Binary files differ
diff --git a/src/devices/audio/index.jd b/src/devices/audio/index.jd
index c42bca7..d3868d3 100644
--- a/src/devices/audio/index.jd
+++ b/src/devices/audio/index.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -16,17 +16,26 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
+<div id="qv-wrapper">
+ <div id="qv">
+ <h2>In this document</h2>
+ <ol id="auto-toc">
+ </ol>
+ </div>
+</div>
+
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_audio.png" alt="Android Audio HAL icon" width="175" />
<p>
Android's audio Hardware Abstraction Layer (HAL) connects the higher-level, audio-specific
- framework APIs in <a href="http://developer.android.com/reference/android/media/package-summary.html">android.media</a>
- to the underlying audio driver and hardware.
+ framework APIs in <a href="http://developer.android.com/reference/android/media/package-summary.html">android.media</a> to the underlying audio driver and hardware. This section includes implementation instructions and tips for improving performance.</p>
</p>
-
+<h2 id="Architecture">Audio Architecture</h2>
<p>
The following figure and list describe how audio functionality is implemented and the relevant
source code that is involved in the implementation:
</p>
- <img src="images/audio_hal.png" alt="Audio architecture" id="figure1" />
+ <img src="images/ape_fwk_audio.png" alt="Audio architecture" id="figure1" />
<p class="img-caption">
<strong>Figure 1.</strong> Android audio architecture
</p>
@@ -100,9 +109,4 @@
<a href="https://developer.android.com/tools/sdk/ndk/index.html">Android NDK</a>,
and is at the same architecture level as
<a href="http://developer.android.com/reference/android/media/package-summary.html">android.media</a>.
-</p>
-
-<p>
- See the rest of the pages within the Audio section for implementation
- instructions and ways to improve performance.
-</p>
+</p>
\ No newline at end of file
diff --git a/src/devices/bluetooth.jd b/src/devices/bluetooth.jd
index 64cec9e..4f0482f 100644
--- a/src/devices/bluetooth.jd
+++ b/src/devices/bluetooth.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -24,15 +24,15 @@
</div>
</div>
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_bluetooth.png" alt="Android Bluetooth HAL icon" width="175" />
-<p>Android provides a default Bluetooth stack, BlueDroid, that is divided into two layers: The Bluetooth Embedded System (BTE), which implements the core
-Bluetooth functionality and the Bluetooth Application Layer (BTA), which communicates
-with Android framework applications. A Bluetooth system service communicates with the Bluetooth stack through JNI and with applications through
-Binder IPC. The system service provides developers access to various Bluetooth profiles. The following
-diagram shows the general structure of the Bluetooth stack:
+<p>Android provides a default Bluetooth stack, BlueDroid, that is divided into two layers: The Bluetooth Embedded System (BTE), which implements the core Bluetooth functionality and the Bluetooth Application Layer (BTA), which communicates with Android framework applications.</p>
+
+<h2 id="architecture">Architecture</h2>
+<p>A Bluetooth system service communicates with the Bluetooth stack through JNI and with applications through Binder IPC. The system service provides developers access to various Bluetooth profiles. The following diagram shows the general structure of the Bluetooth stack:
</p>
-<img src="images/bt.png" alt="Android Bluetooth architecture" id="figure1" />
+<img src="images/ape_fwk_bluetooth.png" alt="Android Bluetooth architecture" id="figure1" />
<p class="img-caption">
<strong>Figure 1.</strong> Bluetooth architecture
</p>
diff --git a/src/devices/camera/images/ape_fwk_camera.png b/src/devices/camera/images/ape_fwk_camera.png
new file mode 100644
index 0000000..102461e
--- /dev/null
+++ b/src/devices/camera/images/ape_fwk_camera.png
Binary files differ
diff --git a/src/devices/camera/images/ape_fwk_hal_camera.png b/src/devices/camera/images/ape_fwk_hal_camera.png
new file mode 100644
index 0000000..b4552ae
--- /dev/null
+++ b/src/devices/camera/images/ape_fwk_hal_camera.png
Binary files differ
diff --git a/src/devices/camera/index.jd b/src/devices/camera/index.jd
index 012f989..419242a 100644
--- a/src/devices/camera/index.jd
+++ b/src/devices/camera/index.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -24,12 +24,16 @@
</div>
</div>
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_camera.png" alt="Android Camera HAL icon" width="175" />
+
<p>Android's camera HAL connects the higher level
-camera framework APIs in <a href="http://developer.android.com/reference/android/hardware/package-summary.html">android.hardware</a> to your underlying camera driver and hardware.
-The following figure and list describe the components involved and where to find the source for each:
+camera framework APIs in <a href="http://developer.android.com/reference/android/hardware/package-summary.html">android.hardware</a> to your underlying camera driver and hardware.</p>
+
+<h2 id="architecture">Architecture</h2>
+<p>The following figure and list describe the components involved and where to find the source for each:
</p>
-<img src="images/camera_hal.png" alt="Android camera architecture" id="figure1" />
+<img src="images/ape_fwk_camera.png" alt="Android camera architecture" id="figure1" />
<p class="img-caption">
<strong>Figure 1.</strong> Camera architecture
</p>
diff --git a/src/devices/drm.jd b/src/devices/drm.jd
index 9a7c673..4403a71 100644
--- a/src/devices/drm.jd
+++ b/src/devices/drm.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -25,6 +25,8 @@
</div>
</div>
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_drm.png" alt="Android DRM HAL icon" width="175" />
+
<p>This document provides an overview of the Android DRM framework, and
introduces the interfaces a DRM plug-in must implement. This document does not
describe robustness rules or compliance rules that may be defined by a DRM
@@ -46,18 +48,17 @@
href="https://developer.android.com/reference/android/media/MediaDrm.html">MediaDrm</a>
for the class to obtain keys for decrypting protected media streams.</p>
- <img src="images/drm_hal.png" alt="Android DRM HAL" />
+ <img src="images/ape_fwk_drm.png" alt="Android DRM HAL" />
-<p class="img-caption"><strong>Figure 1.</strong> DRM Hardware Abastraction
+<p class="img-caption"><strong>Figure 1.</strong> DRM Hardware Abstraction
Layer</p>
<p>
Availability of rich digital content is important to users on mobile devices. To
make their content widely available, Android developers and digital content
publishers need a consistent DRM implementation supported across the Android
-ecosystem. In order to make that digital content available on Android devices
-and to ensure that there is at least one consistent DRM available across all
-devices, Google provides DRM without any license fees on compatible Android devices.
+ecosystem. To make that digital content available on Android devices and to ensure at least one consistent DRM available across all
+devices, Google provides DRM without license fees on compatible Android devices.
On Android 3.0 and higher platforms, the DRM plug-in is integrated with the
Android DRM framework and can use hardware-backed protection to secure premium
content and user credentials.
@@ -96,13 +97,13 @@
for various DRM schemes.</li>
</ul>
- <img src="images/drm_framework.png" alt="Android DRM Framework" />
+ <img src="images/ape_fwk_drm_2.png" alt="Android DRM Framework" />
<p class="img-caption"><strong>Figure 2.</strong> DRM framework</p>
-<p>See the <a
+<p>For details, refer to the <a
href="http://developer.android.com/reference/android/drm/package-summary.html">Android
-DRM package reference</a> for additional details.</p>
+DRM package reference</a>.</p>
<h2 id="plug-ins">Plug-ins</h2>
<p>As shown in the figure below, the DRM framework uses a plug-in architecture
@@ -115,7 +116,7 @@
native modules. The caller of DRM framework accesses only the DrmManagerClient
and does not have to be aware of each DRM scheme. </p>
- <img src="images/drm_plugin.png" alt="Android DRM Plug-in" />
+ <img src="images/ape_fwk_drm_plugins.png" alt="Android DRM Plug-in" />
<p class="img-caption"><strong>Figure 3.</strong> DRM framework with plug-ins</p>
@@ -125,7 +126,7 @@
them under:<br/>
<code>/system/lib/drm/plugins/native/</code></p>
-<img src="images/drm_plugin_lifecycle.png" alt="Android DRM Plug-in Lifecycle" />
+<img src="images/ape_fwk_drm_plugins_life.png" alt="Android DRM Plug-in Lifecycle" />
<p class="img-caption"><strong>Figure 4.</strong> DRM plug-in lifecycle</p>
@@ -136,14 +137,13 @@
<h3 id="IDrmEngine">IDrmEngine</h3>
-<p>IDrmEngine is an interface with a set of APIs to suit DRM use cases. Plug-in
+<p>IDrmEngine is an interface with a set of APIs for DRM use cases. Plug-in
developers must implement the interfaces specified in IDrmEngine and the
-listener interfaces specified below. This document assumes the plug-in developer
-has access to the Android source tree. The interface definition is available in
-the source tree at:<br/>
+listener interfaces specified below. The interface definition is available in
+the source tree at:<p/>
<code>
-<<platform_root>/frameworks/base/drm/libdrmframework/plugins/common/include
-</code></p>
+<platform_root>/frameworks/base/drm/libdrmframework/plugins/common/include
+</code>
<h3 id="DrmInfo">DRM Info</h3>
<p>DrmInfo is a wrapper class that wraps the protocol for communicating with the
@@ -171,13 +171,15 @@
<code>int checkRightsStatus(int uniqueId, const String8& path, int
action);</code>
+
<p>Save DRM rights to the specified rights path and make association with content path.
-The input parameters are DrmRights to be saved, rights file path where rights
-are to be saved and content file path where content was saved.</p>
+The input parameters are the DrmRights to be saved, the rights file path where rights
+are to be saved, and the content file path where content was saved.</p>
<code>status_t saveRights(int uniqueId, const DrmRights& drmRights,
const String8& rightsPath, const String8&
contentPath);</code>
+
<p>Save DRM rights to specified rights path and make association with content
path.</p>
@@ -195,7 +197,7 @@
Unique identifier for a session and path of the protected content) are required.
The action, defined as Action::DEFAULT, Action::PLAY, etc., is also required.</p>
- <img src="images/drm_license_metadata.png" alt="Android DRM License Metadata" />
+ <img src="images/ape_fwk_drm_retrieve_license.png" alt="Android DRM License Metadata" />
<p class="img-caption"><strong>Figure 5.</strong> Retrieve license metadata</p>
@@ -204,7 +206,7 @@
protected content to return key-value pairs of metadata.</p>
<h3 id="metadata">Decrypt session</h3>
-<p>To maintain the decryption session, the caller of the DRM framework has to
+<p>To maintain the decryption session, the caller of the DRM framework must
invoke openDecryptSession() at the beginning of the decryption sequence.
openDecryptSession() asks each DRM plug-in if it can handle input DRM
content.</p>
diff --git a/src/devices/graphics/images/ape_fwk_graphics.png b/src/devices/graphics/images/ape_fwk_graphics.png
new file mode 100644
index 0000000..6558864
--- /dev/null
+++ b/src/devices/graphics/images/ape_fwk_graphics.png
Binary files differ
diff --git a/src/devices/graphics/images/ape_fwk_hal_graphics.png b/src/devices/graphics/images/ape_fwk_hal_graphics.png
new file mode 100644
index 0000000..29251ba
--- /dev/null
+++ b/src/devices/graphics/images/ape_fwk_hal_graphics.png
Binary files differ
diff --git a/src/devices/graphics/index.jd b/src/devices/graphics/index.jd
index 67e9d12..e86a42f 100644
--- a/src/devices/graphics/index.jd
+++ b/src/devices/graphics/index.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -25,6 +25,8 @@
</div>
</div>
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_graphics.png" alt="Android Graphics HAL icon" width="175" />
+
<p>The Android framework offers a variety of graphics rendering APIs for 2D and
3D that interact with manufacturer implementations of graphics drivers, so it
is important to have a good understanding of how those APIs work at a higher
@@ -65,7 +67,7 @@
<p>Android implementers can test OpenGL ES functionality using the <a href="DeqpUserGuide.pdf">drawElements Quality Program</a>, also known as deqp.</p>
-<h2 id=android_graphics_components>Android graphics components</h2>
+<h2 id="android_graphics_components">Android graphics components</h2>
<p>No matter what rendering API developers use, everything is rendered onto a
"surface." The surface represents the producer side of a buffer queue that is
@@ -75,19 +77,19 @@
<p>The following diagram shows how the key components work together:</p>
-<img src="images/graphics_surface.png" alt="image-rendering components">
+<img src="images/ape_fwk_graphics.png" alt="image-rendering components">
<p class="img-caption"><strong>Figure 1.</strong> How surfaces are rendered</p>
<p>The main components are described below:</p>
-<h3 id=image_stream_producers>Image Stream Producers</h3>
+<h3 id="image_stream_producers">Image Stream Producers</h3>
<p>An image stream producer can be anything that produces graphic buffers for
consumption. Examples include OpenGL ES, Canvas 2D, and mediaserver video
decoders.</p>
-<h3 id=image_stream_consumers>Image Stream Consumers</h3>
+<h3 id="image_stream_consumers">Image Stream Consumers</h3>
<p>The most common consumer of image streams is SurfaceFlinger, the system
service that consumes the currently visible surfaces and composites them onto
@@ -99,7 +101,7 @@
app consuming a camera preview image stream. Non-GL applications can be
consumers too, for example the ImageReader class.</p>
-<h3 id=window_manager>Window Manager</h3>
+<h3 id="window_manager">Window Manager</h3>
<p>The Android system service that controls a window, which is a container for
views. A window is always backed by a surface. This service oversees
@@ -108,7 +110,7 @@
The Window Manager sends all of the window metadata to SurfaceFlinger so
SurfaceFlinger can use that data to composite surfaces on the display.</p>
-<h3 id=hardware_composer>Hardware Composer</h3>
+<h3 id="hardware_composer">Hardware Composer</h3>
<p>The hardware abstraction for the display subsystem. SurfaceFlinger can
delegate certain composition work to the Hardware Composer to offload work from
@@ -125,14 +127,14 @@
<p>See the <a href="{@docRoot}devices/graphics.html#hardware_composer_hal">Hardware Composer
HAL</a> section for more information.</p>
-<h3 id=gralloc>Gralloc</h3>
+<h3 id="gralloc">Gralloc</h3>
<p>The graphics memory allocator is needed to allocate memory that is requested
by image producers. See the <a
href="{@docRoot}devices/graphics.html#gralloc">Gralloc HAL</a> section for more
information.</p>
-<h2 id=data_flow>Data flow</h2>
+<h2 id="data_flow">Data flow</h2>
<p>See the following diagram for a depiction of the Android graphics
pipeline:</p>
@@ -146,7 +148,7 @@
the home screen, status bar, and system UI. SurfaceFlinger is the compositor
and Hardware Composer is the composer.</p>
-<h3 id=bufferqueue>BufferQueue</h3>
+<h3 id="bufferqueue">BufferQueue</h3>
<p>BufferQueues provide the glue between the Android graphics components. These
are a pair of queues that mediate the constant cycle of buffers from the
@@ -200,7 +202,7 @@
<p>The Hardware Composer HAL conducts the other half of the work. This HAL acts
as the central point for all Android graphics rendering.</p>
-<h3 id=synchronization_framework>Synchronization framework</h3>
+<h3 id="synchronization_framework">Synchronization framework</h3>
<p>Since Android graphics offer no explicit parallelism, vendors have long
implemented their own implicit synchronization within their own drivers. This
diff --git a/src/devices/images/ape_fwk.png b/src/devices/images/ape_fwk.png
new file mode 100644
index 0000000..2bded87
--- /dev/null
+++ b/src/devices/images/ape_fwk.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_all.png b/src/devices/images/ape_fwk_all.png
new file mode 100644
index 0000000..37f9af2
--- /dev/null
+++ b/src/devices/images/ape_fwk_all.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_bluetooth.png b/src/devices/images/ape_fwk_bluetooth.png
new file mode 100644
index 0000000..c79fe5b
--- /dev/null
+++ b/src/devices/images/ape_fwk_bluetooth.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_drm.png b/src/devices/images/ape_fwk_drm.png
new file mode 100644
index 0000000..817d82f
--- /dev/null
+++ b/src/devices/images/ape_fwk_drm.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_drm_2.png b/src/devices/images/ape_fwk_drm_2.png
new file mode 100644
index 0000000..6d64e33
--- /dev/null
+++ b/src/devices/images/ape_fwk_drm_2.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_drm_plugins.png b/src/devices/images/ape_fwk_drm_plugins.png
new file mode 100644
index 0000000..4b475f5
--- /dev/null
+++ b/src/devices/images/ape_fwk_drm_plugins.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_drm_plugins_life.png b/src/devices/images/ape_fwk_drm_plugins_life.png
new file mode 100644
index 0000000..f234658
--- /dev/null
+++ b/src/devices/images/ape_fwk_drm_plugins_life.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_drm_retrieve_license.png b/src/devices/images/ape_fwk_drm_retrieve_license.png
new file mode 100644
index 0000000..38f12f7
--- /dev/null
+++ b/src/devices/images/ape_fwk_drm_retrieve_license.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_hal.png b/src/devices/images/ape_fwk_hal.png
new file mode 100644
index 0000000..e415c9b
--- /dev/null
+++ b/src/devices/images/ape_fwk_hal.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_hal_bluetooth.png b/src/devices/images/ape_fwk_hal_bluetooth.png
new file mode 100644
index 0000000..46dad48
--- /dev/null
+++ b/src/devices/images/ape_fwk_hal_bluetooth.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_hal_drm.png b/src/devices/images/ape_fwk_hal_drm.png
new file mode 100644
index 0000000..50b8754
--- /dev/null
+++ b/src/devices/images/ape_fwk_hal_drm.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_hal_media.png b/src/devices/images/ape_fwk_hal_media.png
new file mode 100644
index 0000000..8a21043
--- /dev/null
+++ b/src/devices/images/ape_fwk_hal_media.png
Binary files differ
diff --git a/src/devices/images/ape_fwk_media.png b/src/devices/images/ape_fwk_media.png
new file mode 100644
index 0000000..92a731b
--- /dev/null
+++ b/src/devices/images/ape_fwk_media.png
Binary files differ
diff --git a/src/devices/index.jd b/src/devices/index.jd
index 483c3b0..68abdcd 100644
--- a/src/devices/index.jd
+++ b/src/devices/index.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -47,7 +47,7 @@
level view of how Android works:
</p>
-<img src="images/system-architecture.png">
+<img src="images/ape_fwk_all.png">
<p class="img-caption"><strong>Figure 1.</strong> Android System Architecture</p>
@@ -77,7 +77,10 @@
<h4>Hardware abstraction layer (HAL)</h4>
<p>The HAL serves as a standard interface that allows the Android system to call into the device
- driver layer while being agnostic about the lower-level implementations of your drivers and hardware.
+ driver layer while being agnostic about the lower-level implementations of your drivers and hardware.</p>
+<img src="images/ape_fwk_hal.png">
+<p class="img-caption"><strong>Figure 2.</strong> Hardware abstraction layer (HAL) components</p>
+<p>
You must implement the corresponding HAL (and driver) for the particular piece of hardware that your product
provides. Android does not mandate a standard interaction between your HAL implementation and your device drivers, so
you have free reign to do what is best for your situation. However, you must abide by the contract
diff --git a/src/devices/input/images/ape_fwk_hal_input.png b/src/devices/input/images/ape_fwk_hal_input.png
new file mode 100644
index 0000000..0c77977
--- /dev/null
+++ b/src/devices/input/images/ape_fwk_hal_input.png
Binary files differ
diff --git a/src/devices/input/index.jd b/src/devices/input/index.jd
index 80c5e5f..cb8ef09 100644
--- a/src/devices/input/index.jd
+++ b/src/devices/input/index.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2013 The Android Open Source Project
+ Copyright 2015 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.
@@ -16,7 +16,9 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
+
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_input.png" alt="Android Input HAL icon" width="175" />
+
<p>The Android input subsystem supports many different device classes,
-including keyboard, joystick, trackball, mouse and touch screen.</p>
-<p>The documentation in this section describes how to configure,
+including keyboard, joystick, trackball, mouse, and touch screen. The documentation in this section describes how to configure,
calibrate, test, and write drivers for input devices.</p>
diff --git a/src/devices/media.jd b/src/devices/media.jd
index de6901a..7987ace 100644
--- a/src/devices/media.jd
+++ b/src/devices/media.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -24,19 +24,17 @@
</div>
</div>
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_media.png" alt="Android Media HAL icon" width="175" />
+
<p>
- Android provides a media playback engine at the native level called Stagefright that comes built-in with
- software-based codecs for several popular media formats. Stagefright features for audio and video playback
- include integration with OpenMAX codecs, session management, time-synchronized rendering, transport control,
- and DRM. In addition, Stagefright supports integration with custom hardware codecs that you provide.
- There actually isn't a HAL to implement for custom codecs, but to provide a hardware path to encode and
- decode media, you must implement your hardware-based codec as an OpenMax IL (Integration Layer) component.
-</p>
-<h2 id="overview">
-Overview
-</h2>
+ Android provides a media playback engine at the native level called Stagefright that comes built-in with software-based codecs for several popular media formats. Stagefright features for audio and video playback include integration with OpenMAX codecs, session management, time-synchronized rendering, transport control, and DRM.</p>
+ <p>In addition, Stagefright supports integration with custom hardware codecs that you provide.
+ There actually isn't a HAL to implement for custom codecs, but to provide a hardware path to encode and decode media, you must implement your hardware-based codec as an OpenMax IL (Integration Layer) component.</p>
+
+
+<h2 id="architecture">Architecture</h2>
<p>The following diagram shows how media applications interact with the Android native multimedia framework.</p>
- <img src="images/media.png" alt="Android media architecture" id="figure1" />
+ <img src="images/ape_fwk_media.png" alt="Android media architecture" id="figure1" />
<p class="img-caption">
<strong>Figure 1.</strong> Media architecture
</p>
diff --git a/src/devices/sensors/images/ape_fwk_hal_sensors.png b/src/devices/sensors/images/ape_fwk_hal_sensors.png
new file mode 100644
index 0000000..1a63fa9
--- /dev/null
+++ b/src/devices/sensors/images/ape_fwk_hal_sensors.png
Binary files differ
diff --git a/src/devices/sensors/images/ape_fwk_sensors.png b/src/devices/sensors/images/ape_fwk_sensors.png
new file mode 100644
index 0000000..fcd240a
--- /dev/null
+++ b/src/devices/sensors/images/ape_fwk_sensors.png
Binary files differ
diff --git a/src/devices/sensors/index.jd b/src/devices/sensors/index.jd
index dea285b..22cda10 100644
--- a/src/devices/sensors/index.jd
+++ b/src/devices/sensors/index.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -23,27 +23,14 @@
</ol>
</div>
</div>
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_sensors.png" alt="Android Sensors HAL icon" width="175" />
- <h2 id="what_are_“android_sensors”">What are Android sensors?</h2>
- <p>Android sensors give applications access to a mobile device's underlying
- physical sensors. They are data-providing virtual devices defined by the
- implementation of <a
- href="{@docRoot}devices/halref/sensors_8h.html">sensors.h</a>,
- the sensor Hardware Abstraction Layer (HAL).</p>
- <ul>
- <li> Those virtual devices provide data coming from a set of physical sensors:
- accelerometers, gyroscopes, magnetometers, barometer, humidity, pressure,
- light, proximity and heart rate sensors.</li>
- <li> Notably, camera, fingerprint sensor, microphone and touch screen are currently
- not in the list of physical devices providing data through “Android sensors.”
- They have their own reporting mechanism.</li>
- <li> The separation is arbitrary, but in general, Android sensors provide lower
- bandwidth data. For example, “100hz x 3 channels” for an accelerometer versus
- “25hz x 8 MP x 3 channels” for a camera or “44kHz x 1 channel” for a
- microphone.</li>
- </ul>
- <p>How the different physical sensors are connected to the system on chip
- (SoC) is not defined by Android.</p>
+<p>Android sensors give applications access to a mobile device's underlying physical sensors. They are data-providing virtual devices defined by <a href="{@docRoot}devices/halref/sensors_8h.html">sensors.h</a>, the sensor Hardware Abstraction Layer (HAL).</p>
+
+<h2 id="what_are_“android_sensors”">What are Android sensors?</h2>
+<p>Android sensors are virtual devices that provide data coming from a set of physical sensors: accelerometers, gyroscopes, magnetometers, barometer, humidity, pressure, light, proximity and heart rate sensors.</p>
+<p>Not included in the list of physical devices providing data are camera, fingerprint sensor, microphone, and touch screen. These devices have their own reporting mechanism; the separation is arbitrary, but in general, Android sensors provide lower bandwidth data. For example, “100hz x 3 channels” for an accelerometer versus “25hz x 8 MP x 3 channels” for a camera or “44kHz x 1 channel” for a microphone.</p>
+ <p>Android does not define how the different physical sensors are connected to the system on chip (SoC).</p>
<ul>
<li> Often, sensor chips are connected to the SoC through a <a href="sensor-stack.html#sensor_hub">sensor hub</a>, allowing some low-power monitoring and processing of the data. </li>
<li> Often, Inter-Integrated Circuit (I2C) or Serial Peripheral Interface
diff --git a/src/devices/sensors/sensor-stack.jd b/src/devices/sensors/sensor-stack.jd
index 5ffcce8..7ff41bc 100644
--- a/src/devices/sensors/sensor-stack.jd
+++ b/src/devices/sensors/sensor-stack.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -29,7 +29,7 @@
sensors can bypass the sensor hub when it is present. Control flows from the
applications down to the sensors, and data flows from the sensors up to the
applications.</p>
-<img src="images/sensor_layers.png" alt="Layers and owners of the Android sensor stack" />
+<img src="images/ape_fwk_sensors.png" alt="Layers and owners of the Android sensor stack" />
<p class="img-caption"><strong>Figure 1.</strong> Layers of the Android sensor stack and their respective owners</p>
<h2 id="sdk">SDK</h2>
diff --git a/src/devices/storage/images/ape_fwk_hal_extstor.png b/src/devices/storage/images/ape_fwk_hal_extstor.png
new file mode 100644
index 0000000..015ea46
--- /dev/null
+++ b/src/devices/storage/images/ape_fwk_hal_extstor.png
Binary files differ
diff --git a/src/devices/storage/index.jd b/src/devices/storage/index.jd
index 1d7192d..bcc6cce 100644
--- a/src/devices/storage/index.jd
+++ b/src/devices/storage/index.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -17,6 +17,7 @@
limitations under the License.
-->
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_extstor.png" alt="Android external storage HAL icon" width="175" />
<p>Android supports devices with external storage, which is defined to be a
case-insensitive filesystem with immutable POSIX permission classes and
diff --git a/src/devices/tv/images/ape_fwk_hal_tv.png b/src/devices/tv/images/ape_fwk_hal_tv.png
new file mode 100644
index 0000000..0c04027
--- /dev/null
+++ b/src/devices/tv/images/ape_fwk_hal_tv.png
Binary files differ
diff --git a/src/devices/tv/index.jd b/src/devices/tv/index.jd
index e60b13b..7d33f80 100644
--- a/src/devices/tv/index.jd
+++ b/src/devices/tv/index.jd
@@ -2,7 +2,7 @@
@jd:body
<!--
- Copyright 2014 The Android Open Source Project
+ Copyright 2015 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.
@@ -24,19 +24,12 @@
</div>
</div>
-<h2 id=introduction>Introduction</h2>
+<img style="float: right; margin: 0px 15px 15px 0px;" src="images/ape_fwk_hal_tv.png" alt="Android TV HAL icon" width="175" />
-<p>The Android TV Input Framework (TIF) simplifies the delivery of live content to
-Android TV. The Android TIF provides a standard API for manufacturers to use to
-create input modules for controlling Android TV. It also enables live TV search
-and recommendations via metadata published by the TV Input. The framework does
-not seek to implement TV standards or regional requirements.</p>
+<p>The Android TV Input Framework (TIF) simplifies delivery of live content to Android TV. The Android TIF provides a standard API for manufacturers to create input modules for controlling Android TV, and enables live TV search and recommendations via metadata published by the TV Input.</p>
+<p>The framework does not seek to implement TV standards or regional requirements, but does makes it easier for device manufacturers to meet regional digital TV broadcast standards without re-implementation. Documentation in this section might also be useful to third-party app developers who want to create custom TV Inputs.</p>
-<p>The Android TIF makes it easier for device manufacturers to meet regional digital TV
-broadcast standards without re-implementation. This document may also inform
-third-party app developers who would like to create custom TV Inputs.</p>
-
-<h2 id=components>Components</h2>
+<h2 id="components">Components</h2>
<p>The Android TV Input Framework implementation includes a TV Input Manager.
The TIF works with the TV App, a system app that can’t be replaced by a
@@ -63,7 +56,7 @@
<img src="images/TIF_Overview.png" alt="Overview of the Android TIF architecture">
<p class="img-caption"><strong>Figure 1.</strong> Android TV Input Framework (TIF) architecture</p>
-<h2 id=flow>Flow</h2>
+<h2 id="flow">Flow</h2>
<p>Here is how the architecture is exercised:</p>
@@ -75,7 +68,7 @@
identifies the state of TV Inputs for the TV App. See <em>TV Input Manager</em> below for more details about these limitations.
</ol>
-<h2 id=permissions>Permissions</h2>
+<h2 id="permissions">Permissions</h2>
<ul>
<li>Only <code><a
@@ -96,7 +89,7 @@
add and remove its supported TV Inputs.
</ul>
-<h2 id=tv_provider>TV Provider</h2>
+<h2 id="tv_provider">TV Provider</h2>
<p>The TV Provider database stores the channels and programs from TV Inputs. The
TV Provider also publishes and manages the associated permissions so that TV
@@ -129,7 +122,7 @@
available to make certain channels unavailable in search (such as to meet
country-specific requirements for content protection).</p>
-<h3 id=tv_provider_database_field_examples>Database field examples</h3>
+<h3 id="tv_provider_database_field_examples">Database field examples</h3>
<p>The TV Provider supports structured data in channel (<code>android.provider.TvContract.Channels</code>) and program (<code>android.provider.TvContract.Programs</code>) tables. These tables are populated and accessed by TV Inputs and system apps
like the TV App. These tables have four types of fields:</p>
@@ -157,7 +150,7 @@
<p>For a more exhaustive list of the fields, see <code>android/frameworks/base/media/java/android/media/tv/TvContract.java</code></p>
-<h3 id=permissions_and_access_control>Permissions and access control</h3>
+<h3 id="permissions_and_access_control">Permissions and access control</h3>
<p>All fields are visible to anyone with access to the corresponding row. No
fields are directly accessible to users; they see only what the TV App, System
@@ -173,7 +166,7 @@
<li>Only <code>signatureOrSystem</code> apps can acquire <code>ACCESS_ALL_EPG_DATA</code> permission to access the entire database.
</ul>
-<h2 id=tv_input_manager>TV Input Manager</h2>
+<h2 id="tv_input_manager">TV Input Manager</h2>
<p>The TV Input Manager provides a central system API to the overall Android TV
Input Framework. It arbitrates interaction between apps and TV Inputs and
@@ -203,7 +196,7 @@
device manufacturers to create their own TV Apps while helping all third-party TV Inputs
work on all TV Apps.</p>
-<h2 id=tv_inputs>TV Inputs</h2>
+<h2 id="tv_inputs">TV Inputs</h2>
<p>TV Inputs are Android apps in the sense they have an AndroidManifest.xml and
are installed (via Play, pre-installed, or sideloaded). Android TV supports
@@ -267,7 +260,7 @@
<p>The TV App is responsible for knowing which system TV Input is active, meaning
selected by the user, and to disambiguate incoming <code>KeyEvents</code> and route them to the correct TV Input Manager session, calling <code>dispatchInputEvent()</code> to pass on the event to the associated TV Input. </p>
-<h3 id=mheg-5_input_example>MHEG-5 input example</h3>
+<h3 id="mheg-5_input_example">MHEG-5 input example</h3>
<p>The following diagram shows a more detailed view of how <code>KeyEvents</code> are routed through the Android TIF.</p>
@@ -295,13 +288,13 @@
<p class="note"><strong>Note</strong>: Third-party TV inputs never receive keys. </p>
-<h2 id=tv_input_hal>TV Input HAL</h2>
+<h2 id="tv_input_hal">TV Input HAL</h2>
<p>The TV Input HAL aids development of TV Inputs to access TV-specific hardware.
As with other Android HALs, the TV Input HAL (<code>tv_input</code>) is
available in the AOSP source tree and the vendor develops its implementation.</p>
-<h2 id=tv_app>TV App</h2>
+<h2 id="tv_app">TV App</h2>
<p>The TV App provides channel and program search results (via
<code>com.android.tv.search.TvProviderSearch</code>) and passes keys, tune, and
@@ -315,7 +308,7 @@
manufacturer or country-specific features. Instead, it handles these tasks by
default:</p>
-<h3 id=setup_and_configuration>Setup and configuration</h3>
+<h3 id="setup_and_configuration">Setup and configuration</h3>
<ul>
<li>Auto-detect TV Inputs
@@ -327,7 +320,7 @@
</ul>
</ul>
-<h3 id=viewing>Viewing</h3>
+<h3 id="viewing">Viewing</h3>
<ul>
<li>Access and navigate all TV channels
<li>Access TV program information bar
@@ -339,7 +332,7 @@
</ul>
</ul>
-<h2 id=parental_control>Parental Control</h2>
+<h2 id="parental_control">Parental Control</h2>
<p>Parental control lets a user block undesired channels and programs, but bypass
the block by entering a PIN code.</p>
@@ -347,20 +340,20 @@
<p>Responsibility for parental control functionality is shared amongst the TV App,
TV Input Manager service, TV Provider, and TV Input. </p>
-<h3 id=tv_provider>TV Provider</h3>
+<h3 id="tv_provider">TV Provider</h3>
<p>Each channel row has a <code>COLUMN_LOCKED</code> field that is used to lock
specific channels from viewing without entering a PIN code. The program field
<code>COLUMN_CONTENT_RATING</code> is intended for display and is not used to
enforce parental control.</p>
-<h3 id=tv_input_manager>TV Input Manager</h3>
+<h3 id="tv_input_manager">TV Input Manager</h3>
<p>The TV Input Manager stores every blocked <code>TvContentRating</code> and
responds to <code>isRatingBlocked()</code> to advise if content with the given
rating should be blocked.</p>
-<h3 id=tv_input>TV Input</h3>
+<h3 id="tv_input">TV Input</h3>
<p>The TV Input checks if the current content should be blocked by calling
<code>isRatingBlocked()</code> on the TV Input Manager when the rating of the
@@ -374,7 +367,7 @@
be blocked, the TV Input enables audio and video and notifies the TV App
the current content is allowed by calling <code>notifyContentAllowed()</code>.</p>
-<h3 id=tv_app>TV App</h3>
+<h3 id="tv_app">TV App</h3>
<p>The TV App shows parental control settings to users and a PIN code UI when it
is notified by a TV Input that the current content is blocked or when the user
@@ -385,7 +378,7 @@
<code>TvContentRating</code> is stored by the TV Input Manager, and blocked
channels are stored by the TV Provider.</p>
-<h2 id=hdmi-cec>HDMI-CEC</h2>
+<h2 id="hdmi-cec">HDMI-CEC</h2>
<p>HDMI-CEC allows one device to control another, thereby enabling a single remote
to control multiple appliances in a home theater. It is used by Android TV to
@@ -422,9 +415,9 @@
back to HDMI Control Service when the surface is set.
</ol>
-<h2 id=tv_integration_guidelines>TV integration guidelines</h2>
+<h2 id="tv_integration_guidelines">TV integration guidelines</h2>
-<h3 id=broadcast_app>Broadcast app</h3>
+<h3 id="broadcast_app">Broadcast app</h3>
<p>Because each country has broadcast-specific requirements (MHEG, Teletext,
HbbTV, and more), manufacturers are expected to supply their own solutions for
@@ -455,7 +448,7 @@
<p>For voice search/recommendation, the broadcast app may support In-app search
for voice search.</p>
-<h3 id=dvr>DVR</h3>
+<h3 id="dvr">DVR</h3>
<p>Android TV supports digital video recording (DVR) with device manufacturer development. The
DVR function works like so:</p>