diff options
Diffstat (limited to 'docs/html/guide/topics')
| -rw-r--r-- | docs/html/guide/topics/admin/device-admin.jd | 7 | ||||
| -rw-r--r-- | docs/html/guide/topics/media/exoplayer.jd | 56 | ||||
| -rw-r--r-- | docs/html/guide/topics/resources/available-resources.jd | 1 | ||||
| -rw-r--r-- | docs/html/guide/topics/resources/providing-resources.jd | 18 |
4 files changed, 50 insertions, 32 deletions
diff --git a/docs/html/guide/topics/admin/device-admin.jd b/docs/html/guide/topics/admin/device-admin.jd index bed4b4d..45bd76a 100644 --- a/docs/html/guide/topics/admin/device-admin.jd +++ b/docs/html/guide/topics/admin/device-admin.jd @@ -48,6 +48,11 @@ solutions for Android-powered devices. It discusses the various features provided by the Device Administration API to provide stronger security for employee devices that are powered by Android.</p> +<p class="note"><strong>Note</strong> For information on building a Work Policy +Controller for Android for Work deployments, see <a +href="{@docRoot}training/enterprise/work-policy-ctrl.html">Building a Work +Policy Controller</a>.</p> + <h2 id="overview">Device Administration API Overview</h2> @@ -712,4 +717,4 @@ mDPM.setStorageEncryption(mDeviceAdminSample, true); </pre> <p> See the Device Administration API sample for a complete example of how to enable storage encryption. -</p>
\ No newline at end of file +</p> diff --git a/docs/html/guide/topics/media/exoplayer.jd b/docs/html/guide/topics/media/exoplayer.jd index 17b4669..1e8601f 100644 --- a/docs/html/guide/topics/media/exoplayer.jd +++ b/docs/html/guide/topics/media/exoplayer.jd @@ -72,10 +72,8 @@ page.tags="audio","video","adaptive","streaming","DASH","smoothstreaming" <ul> <li><a class="external-link" href="https://github.com/google/ExoPlayer/tree/master/library"> ExoPlayer Library</a> — This part of the project contains the core library classes.</li> - <li><a class="external-link" href="https://github.com/google/ExoPlayer/tree/master/demo/src/main/java/com/google/android/exoplayer/demo/simple"> - Simple Demo</a> — This part of the app demonstrates a basic use of ExoPlayer.</li> - <li><a class="external-link" href="https://github.com/google/ExoPlayer/tree/master/demo/src/main/java/com/google/android/exoplayer/demo/full"> - Full Demo</a> — This part of the app demonstrates more advanced features, + <li><a class="external-link" href="https://github.com/google/ExoPlayer/tree/master/demo"> + Demo App</a> — This part of the project demonstrates usage of ExoPlayer, including the ability to select between multiple audio tracks, a background audio mode, event logging and DRM protected playback. </li> </ul> @@ -137,9 +135,10 @@ player.setPlayWhenReady(true); player.release(); // Don’t forget to release when done! </pre> -<p>For a complete example, see the {@code SimplePlayerActivity} in the ExoPlayer demo app, which - correctly manages an ExoPlayer instance with respect to both the {@link android.app.Activity} and - {@link android.view.Surface} lifecycles.</p> +<p>For a complete example, see {@code PlayerActivity} and {@code DemoPlayer} in the ExoPlayer demo + app. Between them these classes correctly manage an ExoPlayer instance with respect to both the + {@link android.app.Activity} and {@link android.view.Surface} lifecycles. +</p> <h2 id="samplesource">SampleSource</h2> @@ -187,7 +186,7 @@ MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer( </pre> <p>The ExoPlayer demo app provides a complete implementation of this code in - {@code DefaultRendererBuilder}. The {@code SimplePlaybackActivity} class uses it to play one + {@code DefaultRendererBuilder}. The {@code PlayerActivity} class uses it to play one of the videos available in the demo app. Note that in the example, video and audio are muxed, meaning they are streamed together from a single URI. The {@code FrameworkSampleSource} instance provides video samples to the {@code videoRenderer} object and audio samples to the @@ -211,9 +210,9 @@ MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer( which loads chunks of media data from which individual samples can be extracted. Each {@code ChunkSampleSource} requires a {@code ChunkSource} object to be injected through its constructor, which is responsible for providing media chunks from which to load and read samples. The {@code - DashMp4ChunkSource} and {@code SmoothStreamingChunkSource} classes provide DASH and SmoothStreaming - playback using the FMP4 container format. The {@code DashWebMChunkSource} class uses the WebM - container format to provide DASH playback.</p> + DashChunkSource} class provides DASH playback using the FMP4 and WebM container formats. The + {@code SmoothStreamingChunkSource} class provides SmoothStreaming playback using the FMP4 + container format.</p> <p>All of the standard {@code ChunkSource} implementations require a {@code FormatEvaluator} and a {@code DataSource} to be injected through their constructors. The {@code FormatEvaluator} @@ -242,7 +241,7 @@ BandwidthMeter bandwidthMeter = new BandwidthMeter(); // Build the video renderer. DataSource videoDataSource = new HttpDataSource(userAgent, HttpDataSource.REJECT_PAYWALL_TYPES, bandwidthMeter); -ChunkSource videoChunkSource = new DashMp4ChunkSource(videoDataSource, +ChunkSource videoChunkSource = new DashChunkSource(videoDataSource, new AdaptiveEvaluator(bandwidthMeter), videoRepresentations); ChunkSampleSource videoSampleSource = new ChunkSampleSource(videoChunkSource, loadControl, VIDEO_BUFFER_SEGMENTS * BUFFER_SEGMENT_SIZE, true); @@ -253,7 +252,7 @@ MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer( // Build the audio renderer. DataSource audioDataSource = new HttpDataSource(userAgent, HttpDataSource.REJECT_PAYWALL_TYPES, bandwidthMeter); -ChunkSource audioChunkSource = new DashMp4ChunkSource(audioDataSource, +ChunkSource audioChunkSource = new DashChunkSource(audioDataSource, new FormatEvaluator.FixedEvaluator(), audioRepresentation); SampleSource audioSampleSource = new ChunkSampleSource(audioChunkSource, loadControl, AUDIO_BUFFER_SEGMENTS * BUFFER_SEGMENT_SIZE, true); @@ -273,9 +272,8 @@ MediaCodecAudioTrackRenderer audioRenderer = new MediaCodecAudioTrackRenderer( </p> <p>The ExoPlayer demo app provides complete implementation of this code in - {@code DashVodRendererBuilder}. The {@code SimplePlaybackActivity} class uses this builder to - construct renderers for playing DASH sample videos in the demo app. It asynchronously fetches a - specified MPD file in order to construct the required {@code Representation} objects. For an + {@code DashRendererBuilder}. The {@code PlayerActivity} class uses this builder to + construct renderers for playing DASH sample videos in the demo app. For an equivalent SmoothStreaming example, see the {@code SmoothStreamingRendererBuilder} class in the demo app.</p> @@ -313,7 +311,7 @@ if (format.width * format.height <= maxDecodableFrameSize) { } </pre> -<p>This approach is used to filter {@code Representations} in the {@code DashVodRendererBuilder} +<p>This approach is used to filter {@code Representations} in the {@code DashRendererBuilder} class of the ExoPlayer demo app, and similarly to filter track indices in {@code SmoothStreamingRendererBuilder}.</p> @@ -372,24 +370,26 @@ boolean isAdaptive = MediaCodecUtil.getDecoderInfo(MimeTypes.VIDEO_H264).adaptiv <p>In addition to high level listeners, many of the individual components provided by the ExoPlayer library allow their own event listeners. For example, {@code MediaCodecVideoTrackRenderer} has constructors that take a {@code - MediaCodecVideoTrackRenderer.EventListener}. In the ExoPlayer demo app, {@code SimplePlayerActivity} - acts as a listener so that it can adjust the dimensions of the target surface to have the correct - height and width ratio for the video being played:</p> + MediaCodecVideoTrackRenderer.EventListener}. In the ExoPlayer demo app, {@code DemoPlayer} + acts as the listener to multiple individual components, forwarding events to {@code PlayerActivity}. + This approach allows {@code PlayerActivity} to adjust the dimensions of the target surface + to have the correct height and width ratio for the video being played:</p> <pre> @Override -public void onVideoSizeChanged(int width, int height) { - surfaceView.setVideoWidthHeightRatio(height == 0 ? 1 : (float) width / height); +public void onVideoSizeChanged(int width, int height, float pixelWidthAspectRatio) { + surfaceView.setVideoWidthHeightRatio( + height == 0 ? 1 : (width * pixelWidthAspectRatio) / height); } </pre> -<p>The {@code RendererBuilder} classes in the ExoPlayer demo app inject the activity as the - listener, for example in the {@code DashVodRendererBuilder} class:</p> +<p>The {@code RendererBuilder} classes in the ExoPlayer demo app inject the {@code DemoPlayer} as + the listener to each component, for example in the {@code DashRendererBuilder} class:</p> <pre> MediaCodecVideoTrackRenderer videoRenderer = new MediaCodecVideoTrackRenderer( - videoSampleSource, null, true, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, - 0, <strong>mainHandler, playerActivity</strong>, 50); + sampleSource, null, true, MediaCodec.VIDEO_SCALING_MODE_SCALE_TO_FIT, 5000, + null, <strong>player.getMainHandler(), player</strong>, 50); </pre> <p>Note that you must pass a {@link android.os.Handler} object to the renderer, which determines @@ -441,9 +441,7 @@ player.blockingSendMessage(videoRenderer, <p>You must use a blocking message because the contract of {@link android.view.SurfaceHolder.Callback#surfaceDestroyed surfaceDestroyed()} requires that the - app does not attempt to access the surface after the method returns. The {@code - SimplePlayerActivity} class in the demo app demonstrates how the surface should be set and - cleared.</p> + app does not attempt to access the surface after the method returns.</p> <h2 id="customizing">Customizing ExoPlayer</h2> diff --git a/docs/html/guide/topics/resources/available-resources.jd b/docs/html/guide/topics/resources/available-resources.jd index 19babee..db1bf8d 100644 --- a/docs/html/guide/topics/resources/available-resources.jd +++ b/docs/html/guide/topics/resources/available-resources.jd @@ -29,6 +29,7 @@ Saved in {@code res/color/} and accessed from the {@code R.color} class.</dd> <dt><a href="{@docRoot}guide/topics/resources/drawable-resource.html">Drawable Resources</a></dt> <dd>Define various graphics with bitmaps or XML.<br/> Saved in {@code res/drawable/} and accessed from the {@code R.drawable} class.</dd> + <dt><a href="{@docRoot}guide/topics/resources/layout-resource.html">Layout Resource</a></dt> <dd>Define the layout for your application UI.<br/> Saved in {@code res/layout/} and accessed from the {@code R.layout} class.</dd> diff --git a/docs/html/guide/topics/resources/providing-resources.jd b/docs/html/guide/topics/resources/providing-resources.jd index 6d9527f..fc79970 100644 --- a/docs/html/guide/topics/resources/providing-resources.jd +++ b/docs/html/guide/topics/resources/providing-resources.jd @@ -60,18 +60,24 @@ MyProject/ MyActivity.java </span> res/ drawable/ <span style="color:black"> - icon.png </span> + graphic.png </span> layout/ <span style="color:black"> main.xml info.xml</span> + mipmap/ <span style="color:black"> + icon.png </span> values/ <span style="color:black"> strings.xml </span> </pre> <p>As you can see in this example, the {@code res/} directory contains all the resources (in -subdirectories): an image resource, two layout resources, and a string resource file. The resource +subdirectories): an image resource, two layout resources, {@code mipmap/} directories for launcher +icons, and a string resource file. The resource directory names are important and are described in table 1.</p> +<p class="note"><strong>Note:</strong> For more information about using the mipmap folders, see +<a href="{@docRoot}tools/projects/index.html#mipmap">Managing Projects Overview</a>.</p> + <p class="table-caption" id="table1"><strong>Table 1.</strong> Resource directories supported inside project {@code res/} directory.</p> @@ -104,6 +110,7 @@ State List Resource</a></td> <tr> <td><code>drawable/</code></td> + <td><p>Bitmap files ({@code .png}, {@code .9.png}, {@code .jpg}, {@code .gif}) or XML files that are compiled into the following drawable resource subtypes:</p> <ul> @@ -119,6 +126,13 @@ are compiled into the following drawable resource subtypes:</p> </tr> <tr> + <td><code>mipmap/</code></td> + <td>Drawable files for different launcher icon densities. For more information on managing + launcher icons with {@code mipmap/} folders, see + <a href="{@docRoot}tools/project/index.html#mipmap">Managing Projects Overview</a>.</td> + </tr> + + <tr> <td><code>layout/</code></td> <td>XML files that define a user interface layout. See <a href="layout-resource.html">Layout Resource</a>.</td> |
