Merge "Add totalSize and availSize queries to StorageMeasurement"
diff --git a/api/current.txt b/api/current.txt
index a126699..0d96042 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -299,6 +299,7 @@
     field public static final int anyDensity = 16843372; // 0x101026c
     field public static final int apduServiceBanner = 16843757; // 0x10103ed
     field public static final int apiKey = 16843281; // 0x1010211
+    field public static final int assistBlocked = 16844020; // 0x10104f4
     field public static final int author = 16843444; // 0x10102b4
     field public static final int authorities = 16842776; // 0x1010018
     field public static final int autoAdvanceViewId = 16843535; // 0x101030f
@@ -1723,6 +1724,7 @@
     field public static final int selectAll = 16908319; // 0x102001f
     field public static final int selectTextMode = 16908333; // 0x102002d
     field public static final int selectedIcon = 16908302; // 0x102000e
+    field public static final int shareText = 16908343; // 0x1020037
     field public static final int startSelectingText = 16908328; // 0x1020028
     field public static final int statusBarBackground = 16908335; // 0x102002f
     field public static final int stopSelectingText = 16908329; // 0x1020029
@@ -4070,6 +4072,7 @@
     method public int getWidth();
     method public boolean isAccessibilityFocused();
     method public boolean isActivated();
+    method public boolean isAssistBlocked();
     method public boolean isCheckable();
     method public boolean isChecked();
     method public boolean isClickable();
@@ -5008,6 +5011,7 @@
     field public static final java.lang.String CONTENT_MATURITY_LOW = "android.contentMaturity.low";
     field public static final java.lang.String CONTENT_MATURITY_MEDIUM = "android.contentMaturity.medium";
     field public static final java.lang.String CONTENT_PRICING_FREE = "android.contentPrice.free";
+    field public static final java.lang.String CONTENT_PRICING_PREORDER = "android.contentPrice.preorder";
     field public static final java.lang.String CONTENT_PRICING_PURCHASE = "android.contentPrice.purchase";
     field public static final java.lang.String CONTENT_PRICING_RENTAL = "android.contentPrice.rental";
     field public static final java.lang.String CONTENT_PRICING_SUBSCRIPTION = "android.contentPrice.subscription";
@@ -5651,6 +5655,7 @@
     method public void onProfileProvisioningComplete(android.content.Context, android.content.Intent);
     method public void onReadyForUserInitialization(android.content.Context, android.content.Intent);
     method public void onReceive(android.content.Context, android.content.Intent);
+    method public void onSystemUpdatePending(android.content.Context, android.content.Intent, long);
     field public static final java.lang.String ACTION_DEVICE_ADMIN_DISABLED = "android.app.action.DEVICE_ADMIN_DISABLED";
     field public static final java.lang.String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED = "android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED";
     field public static final java.lang.String ACTION_DEVICE_ADMIN_ENABLED = "android.app.action.DEVICE_ADMIN_ENABLED";
@@ -6127,6 +6132,7 @@
   }
 
   public final class UsageStatsManager {
+    method public boolean isAppIdle(java.lang.String);
     method public java.util.Map<java.lang.String, android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long);
     method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long);
     method public android.app.usage.UsageEvents queryEvents(long, long);
@@ -7774,6 +7780,7 @@
     field public static final java.lang.String MEDIA_PROJECTION_SERVICE = "media_projection";
     field public static final java.lang.String MEDIA_ROUTER_SERVICE = "media_router";
     field public static final java.lang.String MEDIA_SESSION_SERVICE = "media_session";
+    field public static final java.lang.String MIDI_SERVICE = "midi";
     field public static final int MODE_APPEND = 32768; // 0x8000
     field public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 8; // 0x8
     field public static final int MODE_MULTI_PROCESS = 4; // 0x4
@@ -9311,6 +9318,7 @@
     field public static final java.lang.String FEATURE_APP_WIDGETS = "android.software.app_widgets";
     field public static final java.lang.String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
     field public static final java.lang.String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
+    field public static final java.lang.String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
     field public static final java.lang.String FEATURE_BACKUP = "android.software.backup";
     field public static final java.lang.String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
     field public static final java.lang.String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le";
@@ -11330,6 +11338,8 @@
     method public static int getBitsPerPixel(int);
     field public static final int DEPTH16 = 1144402265; // 0x44363159
     field public static final int DEPTH_POINT_CLOUD = 257; // 0x101
+    field public static final int FLEX_RGBA_8888 = 42; // 0x2a
+    field public static final int FLEX_RGB_888 = 41; // 0x29
     field public static final int JPEG = 256; // 0x100
     field public static final int NV16 = 16; // 0x10
     field public static final int NV21 = 17; // 0x11
@@ -11340,6 +11350,8 @@
     field public static final int RGB_565 = 4; // 0x4
     field public static final int UNKNOWN = 0; // 0x0
     field public static final int YUV_420_888 = 35; // 0x23
+    field public static final int YUV_422_888 = 39; // 0x27
+    field public static final int YUV_444_888 = 40; // 0x28
     field public static final int YUY2 = 20; // 0x14
     field public static final int YV12 = 842094169; // 0x32315659
   }
@@ -12412,7 +12424,9 @@
     method public void draw(android.graphics.Canvas);
     method public android.graphics.drawable.Drawable findDrawableByLayerId(int);
     method public int findIndexByLayerId(int);
+    method public int getBottomPadding();
     method public android.graphics.drawable.Drawable getDrawable(int);
+    method public int getEndPadding();
     method public int getId(int);
     method public int getLayerGravity(int);
     method public int getLayerHeight(int);
@@ -12423,9 +12437,13 @@
     method public int getLayerInsetStart(int);
     method public int getLayerInsetTop(int);
     method public int getLayerWidth(int);
+    method public int getLeftPadding();
     method public int getNumberOfLayers();
     method public int getOpacity();
     method public int getPaddingMode();
+    method public int getRightPadding();
+    method public int getStartPadding();
+    method public int getTopPadding();
     method public void invalidateDrawable(android.graphics.drawable.Drawable);
     method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
     method public void setAlpha(int);
@@ -12446,7 +12464,9 @@
     method public void setLayerSize(int, int, int);
     method public void setLayerWidth(int, int);
     method public void setOpacity(int);
+    method public void setPadding(int, int, int, int);
     method public void setPaddingMode(int);
+    method public void setPaddingRelative(int, int, int, int);
     method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
     field public static final int PADDING_MODE_NEST = 0; // 0x0
     field public static final int PADDING_MODE_STACK = 1; // 0x1
@@ -14910,16 +14930,20 @@
 
   public class AudioRecord {
     ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException;
+    method public void addOnAudioRecordRoutingListener(android.media.OnAudioRecordRoutingListener, android.os.Handler);
     method public int getAudioFormat();
     method public int getAudioSessionId();
     method public int getAudioSource();
     method public int getChannelConfiguration();
     method public int getChannelCount();
+    method public android.media.AudioFormat getFormat();
     method public static int getMinBufferSize(int, int, int);
     method public int getNativeFrameCount() throws java.lang.IllegalStateException;
     method public int getNotificationMarkerPosition();
     method public int getPositionNotificationPeriod();
+    method public android.media.AudioDeviceInfo getPreferredInputDevice();
     method public int getRecordingState();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
     method public int getSampleRate();
     method public int getState();
     method public int read(byte[], int, int);
@@ -14930,8 +14954,10 @@
     method public int read(java.nio.ByteBuffer, int);
     method public int read(java.nio.ByteBuffer, int, int);
     method public void release();
+    method public void removeOnAudioRecordRoutingListener(android.media.OnAudioRecordRoutingListener);
     method public int setNotificationMarkerPosition(int);
     method public int setPositionNotificationPeriod(int);
+    method public boolean setPreferredInputDevice(android.media.AudioDeviceInfo);
     method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener);
     method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener, android.os.Handler);
     method public void startRecording() throws java.lang.IllegalStateException;
@@ -14972,12 +14998,14 @@
     ctor public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
     ctor public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
     ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
+    method public void addOnAudioTrackRoutingListener(android.media.OnAudioTrackRoutingListener, android.os.Handler);
     method public int attachAuxEffect(int);
     method public void flush();
     method public int getAudioFormat();
     method public int getAudioSessionId();
     method public int getChannelConfiguration();
     method public int getChannelCount();
+    method public android.media.AudioFormat getFormat();
     method public static float getMaxVolume();
     method public static int getMinBufferSize(int, int, int);
     method public static float getMinVolume();
@@ -14987,8 +15015,10 @@
     method public int getPlayState();
     method public int getPlaybackHeadPosition();
     method public int getPlaybackRate();
+    method public android.media.PlaybackSettings getPlaybackSettings();
     method public int getPositionNotificationPeriod();
     method public android.media.AudioDeviceInfo getPreferredOutputDevice();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
     method public int getSampleRate();
     method public int getState();
     method public int getStreamType();
@@ -14997,6 +15027,7 @@
     method public void play() throws java.lang.IllegalStateException;
     method public void release();
     method public int reloadStaticData();
+    method public void removeOnAudioTrackRoutingListener(android.media.OnAudioTrackRoutingListener);
     method public int setAuxEffectSendLevel(float);
     method public int setLoopPoints(int, int, int);
     method public int setNotificationMarkerPosition(int);
@@ -15004,6 +15035,7 @@
     method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
     method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
     method public int setPlaybackRate(int);
+    method public void setPlaybackSettings(android.media.PlaybackSettings);
     method public int setPositionNotificationPeriod(int);
     method public boolean setPreferredOutputDevice(android.media.AudioDeviceInfo);
     method protected deprecated void setState(int);
@@ -15262,6 +15294,7 @@
     method public static android.media.MediaCodec createDecoderByType(java.lang.String) throws java.io.IOException;
     method public static android.media.MediaCodec createEncoderByType(java.lang.String) throws java.io.IOException;
     method public final android.view.Surface createInputSurface();
+    method public static android.view.Surface createPersistentInputSurface();
     method public final int dequeueInputBuffer(long);
     method public final int dequeueOutputBuffer(android.media.MediaCodec.BufferInfo, long);
     method public final void flush();
@@ -15282,12 +15315,16 @@
     method public final void releaseOutputBuffer(int, boolean);
     method public final void releaseOutputBuffer(int, long);
     method public final void reset();
+    method public void setCallback(android.media.MediaCodec.Callback, android.os.Handler);
     method public void setCallback(android.media.MediaCodec.Callback);
+    method public void setOnFrameRenderedListener(android.media.MediaCodec.OnFrameRenderedListener, android.os.Handler);
     method public final void setParameters(android.os.Bundle);
+    method public void setSurface(android.view.Surface);
     method public final void setVideoScalingMode(int);
     method public final void signalEndOfInputStream();
     method public final void start();
     method public final void stop();
+    method public void usePersistentInputSurface(android.view.Surface);
     field public static final int BUFFER_FLAG_CODEC_CONFIG = 2; // 0x2
     field public static final int BUFFER_FLAG_END_OF_STREAM = 4; // 0x4
     field public static final int BUFFER_FLAG_KEY_FRAME = 1; // 0x1
@@ -15351,6 +15388,10 @@
     field public int numSubSamples;
   }
 
+  public static abstract interface MediaCodec.OnFrameRenderedListener {
+    method public abstract void onFrameRendered(android.media.MediaCodec, long, long);
+  }
+
   public final class MediaCodecInfo {
     method public final android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(java.lang.String);
     method public final java.lang.String getName();
@@ -15390,22 +15431,24 @@
     field public static final deprecated int COLOR_Format24BitABGR6666 = 43; // 0x2b
     field public static final deprecated int COLOR_Format24BitARGB6666 = 42; // 0x2a
     field public static final deprecated int COLOR_Format24bitARGB1887 = 13; // 0xd
-    field public static final deprecated int COLOR_Format24bitBGR888 = 12; // 0xc
-    field public static final int COLOR_Format24bitRGB888 = 11; // 0xb
+    field public static final int COLOR_Format24bitBGR888 = 12; // 0xc
+    field public static final deprecated int COLOR_Format24bitRGB888 = 11; // 0xb
     field public static final deprecated int COLOR_Format25bitARGB1888 = 14; // 0xe
-    field public static final deprecated int COLOR_Format32BitRGBA8888 = 2130747392; // 0x7f00a000
-    field public static final int COLOR_Format32bitARGB8888 = 16; // 0x10
-    field public static final int COLOR_Format32bitBGRA8888 = 15; // 0xf
+    field public static final int COLOR_Format32bitABGR8888 = 2130747392; // 0x7f00a000
+    field public static final deprecated int COLOR_Format32bitARGB8888 = 16; // 0x10
+    field public static final deprecated int COLOR_Format32bitBGRA8888 = 15; // 0xf
     field public static final deprecated int COLOR_Format8bitRGB332 = 2; // 0x2
     field public static final deprecated int COLOR_FormatCbYCrY = 27; // 0x1b
     field public static final deprecated int COLOR_FormatCrYCbY = 28; // 0x1c
     field public static final int COLOR_FormatL16 = 36; // 0x24
     field public static final deprecated int COLOR_FormatL2 = 33; // 0x21
     field public static final deprecated int COLOR_FormatL24 = 37; // 0x25
-    field public static final int COLOR_FormatL32 = 38; // 0x26
+    field public static final deprecated int COLOR_FormatL32 = 38; // 0x26
     field public static final deprecated int COLOR_FormatL4 = 34; // 0x22
     field public static final int COLOR_FormatL8 = 35; // 0x23
     field public static final deprecated int COLOR_FormatMonochrome = 1; // 0x1
+    field public static final int COLOR_FormatRGBAFlexible = 2134288520; // 0x7f36a888
+    field public static final int COLOR_FormatRGBFlexible = 2134292616; // 0x7f36b888
     field public static final int COLOR_FormatRawBayer10bit = 31; // 0x1f
     field public static final int COLOR_FormatRawBayer8bit = 30; // 0x1e
     field public static final int COLOR_FormatRawBayer8bitcompressed = 32; // 0x20
@@ -15424,7 +15467,8 @@
     field public static final deprecated int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28
     field public static final deprecated int COLOR_FormatYUV422Planar = 22; // 0x16
     field public static final deprecated int COLOR_FormatYUV422SemiPlanar = 24; // 0x18
-    field public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d
+    field public static final int COLOR_FormatYUV444Flexible = 2135181448; // 0x7f444888
+    field public static final deprecated int COLOR_FormatYUV444Interleaved = 29; // 0x1d
     field public static final deprecated int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
     field public static final deprecated int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
     field public static final java.lang.String FEATURE_AdaptivePlayback = "adaptive-playback";
@@ -15558,6 +15602,7 @@
 
   public static final class MediaCodecInfo.VideoCapabilities {
     method public boolean areSizeAndRateSupported(int, int, double);
+    method public android.util.Range<java.lang.Double> getAchievableFrameRatesFor(int, int);
     method public android.util.Range<java.lang.Integer> getBitrateRange();
     method public int getHeightAlignment();
     method public android.util.Range<java.lang.Integer> getSupportedFrameRates();
@@ -15791,6 +15836,7 @@
     field public static final java.lang.String KEY_IS_FORCED_SUBTITLE = "is-forced-subtitle";
     field public static final java.lang.String KEY_I_FRAME_INTERVAL = "i-frame-interval";
     field public static final java.lang.String KEY_LANGUAGE = "language";
+    field public static final java.lang.String KEY_LEVEL = "level";
     field public static final java.lang.String KEY_MAX_HEIGHT = "max-height";
     field public static final java.lang.String KEY_MAX_INPUT_SIZE = "max-input-size";
     field public static final java.lang.String KEY_MAX_WIDTH = "max-width";
@@ -15800,7 +15846,10 @@
     field public static final java.lang.String KEY_PROFILE = "profile";
     field public static final java.lang.String KEY_PUSH_BLANK_BUFFERS_ON_STOP = "push-blank-buffers-on-shutdown";
     field public static final java.lang.String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
+    field public static final java.lang.String KEY_ROTATION = "rotation-degrees";
     field public static final java.lang.String KEY_SAMPLE_RATE = "sample-rate";
+    field public static final java.lang.String KEY_SLICE_HEIGHT = "slice-height";
+    field public static final java.lang.String KEY_STRIDE = "stride";
     field public static final java.lang.String KEY_TEMPORAL_LAYERING = "ts-schema";
     field public static final java.lang.String KEY_WIDTH = "width";
     field public static final java.lang.String MIMETYPE_AUDIO_AAC = "audio/mp4a-latm";
@@ -15976,7 +16025,10 @@
     method public int getAudioSessionId();
     method public int getCurrentPosition();
     method public int getDuration();
+    method public android.media.PlaybackSettings getPlaybackSettings();
     method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
+    method public android.media.SyncSettings getSyncSettings();
+    method public android.media.MediaTimestamp getTimestamp();
     method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
     method public int getVideoHeight();
     method public int getVideoWidth();
@@ -16012,8 +16064,10 @@
     method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
     method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
     method public void setPlaybackRate(float, int);
+    method public void setPlaybackSettings(android.media.PlaybackSettings);
     method public void setScreenOnWhilePlaying(boolean);
     method public void setSurface(android.view.Surface);
+    method public void setSyncSettings(android.media.SyncSettings);
     method public void setVideoScalingMode(int);
     method public void setVolume(float, float);
     method public void setWakeMode(android.content.Context, int);
@@ -16037,7 +16091,9 @@
     field public static final int MEDIA_INFO_VIDEO_RENDERING_START = 3; // 0x3
     field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc
     field public static final java.lang.String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
-    field public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 0; // 0x0
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0; // 0x0
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 2; // 0x2
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_STRETCH = 1; // 0x1
     field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
     field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
   }
@@ -16125,6 +16181,7 @@
     method public void setVideoSource(int) throws java.lang.IllegalStateException;
     method public void start() throws java.lang.IllegalStateException;
     method public void stop() throws java.lang.IllegalStateException;
+    method public void usePersistentSurface(android.view.Surface);
     field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
     field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1
     field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320
@@ -16327,15 +16384,22 @@
 
   public final class MediaSync {
     ctor public MediaSync();
-    method public void configureAudioTrack(android.media.AudioTrack);
-    method public void configureSurface(android.view.Surface);
     method public final android.view.Surface createInputSurface();
-    method public boolean getTimestamp(android.media.MediaTimestamp);
+    method public void flush();
+    method public android.media.PlaybackSettings getPlaybackSettings();
+    method public android.media.SyncSettings getSyncSettings();
+    method public android.media.MediaTimestamp getTimestamp();
     method public void queueAudio(java.nio.ByteBuffer, int, int, long);
     method public final void release();
+    method public void setAudioTrack(android.media.AudioTrack);
     method public void setCallback(android.media.MediaSync.Callback, android.os.Handler);
     method public void setPlaybackRate(float, int);
-    field public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 0; // 0x0
+    method public void setPlaybackSettings(android.media.PlaybackSettings);
+    method public void setSurface(android.view.Surface);
+    method public void setSyncSettings(android.media.SyncSettings);
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0; // 0x0
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 2; // 0x2
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_STRETCH = 1; // 0x1
   }
 
   public static abstract class MediaSync.Callback {
@@ -16353,10 +16417,9 @@
   }
 
   public final class MediaTimestamp {
-    ctor public MediaTimestamp();
-    field public float clockRate;
-    field public long mediaTimeUs;
-    field public long nanoTime;
+    field public final float clockRate;
+    field public final long mediaTimeUs;
+    field public final long nanoTime;
   }
 
   public final class NotProvisionedException extends android.media.MediaDrmException {
@@ -16367,6 +16430,32 @@
     method public abstract void onAudioDeviceConnection();
   }
 
+  public final class PlaybackSettings {
+    ctor public PlaybackSettings();
+    method public android.media.PlaybackSettings allowDefaults();
+    method public int getAudioFallbackMode();
+    method public int getAudioStretchMode();
+    method public float getPitch();
+    method public float getSpeed();
+    method public android.media.PlaybackSettings setAudioFallbackMode(int);
+    method public android.media.PlaybackSettings setAudioStretchMode(int);
+    method public android.media.PlaybackSettings setPitch(float);
+    method public android.media.PlaybackSettings setSpeed(float);
+    field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
+    field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
+    field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
+    field public static final int AUDIO_STRETCH_MODE_DEFAULT = 0; // 0x0
+    field public static final int AUDIO_STRETCH_MODE_VOICE = 1; // 0x1
+  }
+
+  public abstract interface OnAudioRecordRoutingListener {
+    method public abstract void onAudioRecordRouting(android.media.AudioRecord);
+  }
+
+  public abstract interface OnAudioTrackRoutingListener {
+    method public abstract void onAudioTrackRouting(android.media.AudioTrack);
+  }
+
   public final class Rating implements android.os.Parcelable {
     method public int describeContents();
     method public float getPercentRating();
@@ -16552,6 +16641,26 @@
     method public abstract void onLoadComplete(android.media.SoundPool, int, int);
   }
 
+  public final class SyncSettings {
+    ctor public SyncSettings();
+    method public android.media.SyncSettings allowDefaults();
+    method public int getAudioAdjustMode();
+    method public float getFrameRate();
+    method public int getSyncSource();
+    method public float getTolerance();
+    method public android.media.SyncSettings setAudioAdjustMode(int);
+    method public android.media.SyncSettings setFrameRate(float);
+    method public android.media.SyncSettings setSyncSource(int);
+    method public android.media.SyncSettings setTolerance(float);
+    field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
+    field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
+    field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
+    field public static final int SYNC_SOURCE_AUDIO = 2; // 0x2
+    field public static final int SYNC_SOURCE_DEFAULT = 0; // 0x0
+    field public static final int SYNC_SOURCE_SYSTEM_CLOCK = 1; // 0x1
+    field public static final int SYNC_SOURCE_VSYNC = 3; // 0x3
+  }
+
   public class ThumbnailUtils {
     ctor public ThumbnailUtils();
     method public static android.graphics.Bitmap createVideoThumbnail(java.lang.String, int);
@@ -18205,11 +18314,8 @@
     method public void reportNetworkConnectivity(android.net.Network, boolean);
     method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback);
     method public void requestNetwork(android.net.NetworkRequest, android.app.PendingIntent);
-    method public deprecated boolean requestRouteToHost(int, int);
     method public deprecated void setNetworkPreference(int);
     method public static deprecated boolean setProcessDefaultNetwork(android.net.Network);
-    method public deprecated int startUsingNetworkFeature(int, java.lang.String);
-    method public deprecated int stopUsingNetworkFeature(int, java.lang.String);
     method public void unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback);
     field public static final deprecated java.lang.String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
     field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
@@ -18228,9 +18334,9 @@
     field public static final int TYPE_ETHERNET = 9; // 0x9
     field public static final int TYPE_MOBILE = 0; // 0x0
     field public static final int TYPE_MOBILE_DUN = 4; // 0x4
-    field public static final int TYPE_MOBILE_HIPRI = 5; // 0x5
-    field public static final int TYPE_MOBILE_MMS = 2; // 0x2
-    field public static final int TYPE_MOBILE_SUPL = 3; // 0x3
+    field public static final deprecated int TYPE_MOBILE_HIPRI = 5; // 0x5
+    field public static final deprecated int TYPE_MOBILE_MMS = 2; // 0x2
+    field public static final deprecated int TYPE_MOBILE_SUPL = 3; // 0x3
     field public static final int TYPE_VPN = 17; // 0x11
     field public static final int TYPE_WIFI = 1; // 0x1
     field public static final int TYPE_WIMAX = 6; // 0x6
@@ -26609,6 +26715,8 @@
     field public static final java.lang.String EXTRA_DO_NOT_DISTURB_MODE_ENABLED = "android.settings.extra.do_not_disturb_mode_enabled";
     field public static final java.lang.String EXTRA_DO_NOT_DISTURB_MODE_MINUTES = "android.settings.extra.do_not_disturb_mode_minutes";
     field public static final java.lang.String EXTRA_INPUT_METHOD_ID = "input_method_id";
+    field public static final java.lang.String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
+    field public static final java.lang.String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
   }
 
   public static final class Settings.Global extends android.provider.Settings.NameValueTable {
@@ -30025,8 +30133,8 @@
     field public static final int STATE_DISCONNECTING = 10; // 0xa
     field public static final int STATE_HOLDING = 3; // 0x3
     field public static final int STATE_NEW = 0; // 0x0
-    field public static final int STATE_PRE_DIAL_WAIT = 8; // 0x8
     field public static final int STATE_RINGING = 2; // 0x2
+    field public static final int STATE_SELECT_PHONE_ACCOUNT = 8; // 0x8
   }
 
   public static abstract class Call.Callback {
@@ -30086,20 +30194,6 @@
     field public static final int CONFERENCE = 1; // 0x1
   }
 
-  public final class CallState {
-    method public static java.lang.String toString(int);
-    field public static final int ABORTED = 8; // 0x8
-    field public static final int ACTIVE = 5; // 0x5
-    field public static final int CONNECTING = 1; // 0x1
-    field public static final int DIALING = 3; // 0x3
-    field public static final int DISCONNECTED = 7; // 0x7
-    field public static final int DISCONNECTING = 9; // 0x9
-    field public static final int NEW = 0; // 0x0
-    field public static final int ON_HOLD = 6; // 0x6
-    field public static final int PRE_DIAL_WAIT = 2; // 0x2
-    field public static final int RINGING = 4; // 0x4
-  }
-
   public final class CameraCapabilities implements android.os.Parcelable {
     ctor public CameraCapabilities(int, int);
     method public int describeContents();
@@ -30516,6 +30610,7 @@
     method public boolean handleMmi(java.lang.String, android.telecom.PhoneAccountHandle);
     method public boolean isInCall();
     method public boolean isVoiceMailNumber(android.telecom.PhoneAccountHandle, java.lang.String);
+    method public void placeCall(android.net.Uri, android.os.Bundle);
     method public void registerPhoneAccount(android.telecom.PhoneAccount);
     method public void showInCallScreen(boolean);
     method public void silenceRinger();
@@ -30580,6 +30675,7 @@
     method public android.os.Bundle getConfigForSubId(int);
     method public void reloadCarrierConfigForSubId(int);
     field public static final java.lang.String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED";
+    field public static final java.lang.String BOOL_APN_EXPAND = "bool_apn_expand";
     field public static final java.lang.String BOOL_CARRIER_VOLTE_AVAILABLE = "bool_carrier_volte_available";
     field public static final java.lang.String BOOL_CARRIER_VOLTE_PROVISIONED = "bool_carrier_volte_provisioned";
     field public static final java.lang.String BOOL_CARRIER_VOLTE_TTY_SUPPORTED = "bool_carrier_volte_tty_supported";
@@ -30888,6 +30984,7 @@
     method public int getEvdoSnr();
     method public int getGsmBitErrorRate();
     method public int getGsmSignalStrength();
+    method public int getLevel();
     method public boolean isGsm();
     method public void writeToParcel(android.os.Parcel, int);
   }
@@ -35975,6 +36072,7 @@
     method public void invalidateOutline();
     method public boolean isAccessibilityFocused();
     method public boolean isActivated();
+    method public boolean isAssistBlocked();
     method public boolean isAttachedToWindow();
     method public boolean isClickable();
     method public boolean isDirty();
@@ -36117,6 +36215,7 @@
     method public void setActivated(boolean);
     method public void setAlpha(float);
     method public void setAnimation(android.view.animation.Animation);
+    method public void setAssistBlocked(boolean);
     method public void setBackground(android.graphics.drawable.Drawable);
     method public void setBackgroundColor(int);
     method public deprecated void setBackgroundDrawable(android.graphics.drawable.Drawable);
@@ -36479,6 +36578,7 @@
     method public abstract android.view.ViewAssistStructure newChild(int);
     method public abstract void setAccessibilityFocused(boolean);
     method public abstract void setActivated(boolean);
+    method public abstract void setAssistBlocked(boolean);
     method public abstract void setCheckable(boolean);
     method public abstract void setChecked(boolean);
     method public abstract void setChildCount(int);
diff --git a/api/removed.txt b/api/removed.txt
index 326b05d..a722e17 100644
--- a/api/removed.txt
+++ b/api/removed.txt
@@ -35,6 +35,13 @@
 
 package android.net {
 
+  public class ConnectivityManager {
+    method public deprecated boolean requestRouteToHost(int, int);
+    method public deprecated boolean requestRouteToHostAddress(int, java.net.InetAddress);
+    method public deprecated int startUsingNetworkFeature(int, java.lang.String);
+    method public deprecated int stopUsingNetworkFeature(int, java.lang.String);
+  }
+
   public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
     method public static deprecated org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int, android.net.SSLSessionCache);
   }
diff --git a/api/system-current.txt b/api/system-current.txt
index e149048..18199b7 100644
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -372,6 +372,7 @@
     field public static final int anyDensity = 16843372; // 0x101026c
     field public static final int apduServiceBanner = 16843757; // 0x10103ed
     field public static final int apiKey = 16843281; // 0x1010211
+    field public static final int assistBlocked = 16844020; // 0x10104f4
     field public static final int author = 16843444; // 0x10102b4
     field public static final int authorities = 16842776; // 0x1010018
     field public static final int autoAdvanceViewId = 16843535; // 0x101030f
@@ -1800,6 +1801,7 @@
     field public static final int selectAll = 16908319; // 0x102001f
     field public static final int selectTextMode = 16908333; // 0x102002d
     field public static final int selectedIcon = 16908302; // 0x102000e
+    field public static final int shareText = 16908343; // 0x1020037
     field public static final int startSelectingText = 16908328; // 0x1020028
     field public static final int statusBarBackground = 16908335; // 0x102002f
     field public static final int stopSelectingText = 16908329; // 0x1020029
@@ -4161,6 +4163,7 @@
     method public int getWidth();
     method public boolean isAccessibilityFocused();
     method public boolean isActivated();
+    method public boolean isAssistBlocked();
     method public boolean isCheckable();
     method public boolean isChecked();
     method public boolean isClickable();
@@ -5099,6 +5102,7 @@
     field public static final java.lang.String CONTENT_MATURITY_LOW = "android.contentMaturity.low";
     field public static final java.lang.String CONTENT_MATURITY_MEDIUM = "android.contentMaturity.medium";
     field public static final java.lang.String CONTENT_PRICING_FREE = "android.contentPrice.free";
+    field public static final java.lang.String CONTENT_PRICING_PREORDER = "android.contentPrice.preorder";
     field public static final java.lang.String CONTENT_PRICING_PURCHASE = "android.contentPrice.purchase";
     field public static final java.lang.String CONTENT_PRICING_RENTAL = "android.contentPrice.rental";
     field public static final java.lang.String CONTENT_PRICING_SUBSCRIPTION = "android.contentPrice.subscription";
@@ -5746,6 +5750,7 @@
     method public void onProfileProvisioningComplete(android.content.Context, android.content.Intent);
     method public void onReadyForUserInitialization(android.content.Context, android.content.Intent);
     method public void onReceive(android.content.Context, android.content.Intent);
+    method public void onSystemUpdatePending(android.content.Context, android.content.Intent, long);
     field public static final java.lang.String ACTION_DEVICE_ADMIN_DISABLED = "android.app.action.DEVICE_ADMIN_DISABLED";
     field public static final java.lang.String ACTION_DEVICE_ADMIN_DISABLE_REQUESTED = "android.app.action.DEVICE_ADMIN_DISABLE_REQUESTED";
     field public static final java.lang.String ACTION_DEVICE_ADMIN_ENABLED = "android.app.action.DEVICE_ADMIN_ENABLED";
@@ -5851,6 +5856,7 @@
     method public boolean isProfileOwnerApp(java.lang.String);
     method public boolean isUninstallBlocked(android.content.ComponentName, java.lang.String);
     method public void lockNow();
+    method public void notifyPendingSystemUpdate(long);
     method public void removeActiveAdmin(android.content.ComponentName);
     method public boolean removeCrossProfileWidgetProvider(android.content.ComponentName, java.lang.String);
     method public boolean removeUser(android.content.ComponentName, android.os.UserHandle);
@@ -6314,6 +6320,7 @@
   }
 
   public final class UsageStatsManager {
+    method public boolean isAppIdle(java.lang.String);
     method public java.util.Map<java.lang.String, android.app.usage.UsageStats> queryAndAggregateUsageStats(long, long);
     method public java.util.List<android.app.usage.ConfigurationStats> queryConfigurations(int, long, long);
     method public android.app.usage.UsageEvents queryEvents(long, long);
@@ -7991,6 +7998,7 @@
     field public static final java.lang.String MEDIA_PROJECTION_SERVICE = "media_projection";
     field public static final java.lang.String MEDIA_ROUTER_SERVICE = "media_router";
     field public static final java.lang.String MEDIA_SESSION_SERVICE = "media_session";
+    field public static final java.lang.String MIDI_SERVICE = "midi";
     field public static final int MODE_APPEND = 32768; // 0x8000
     field public static final int MODE_ENABLE_WRITE_AHEAD_LOGGING = 8; // 0x8
     field public static final int MODE_MULTI_PROCESS = 4; // 0x4
@@ -9570,6 +9578,7 @@
     field public static final java.lang.String FEATURE_APP_WIDGETS = "android.software.app_widgets";
     field public static final java.lang.String FEATURE_AUDIO_LOW_LATENCY = "android.hardware.audio.low_latency";
     field public static final java.lang.String FEATURE_AUDIO_OUTPUT = "android.hardware.audio.output";
+    field public static final java.lang.String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
     field public static final java.lang.String FEATURE_BACKUP = "android.software.backup";
     field public static final java.lang.String FEATURE_BLUETOOTH = "android.hardware.bluetooth";
     field public static final java.lang.String FEATURE_BLUETOOTH_LE = "android.hardware.bluetooth_le";
@@ -11624,6 +11633,8 @@
     method public static int getBitsPerPixel(int);
     field public static final int DEPTH16 = 1144402265; // 0x44363159
     field public static final int DEPTH_POINT_CLOUD = 257; // 0x101
+    field public static final int FLEX_RGBA_8888 = 42; // 0x2a
+    field public static final int FLEX_RGB_888 = 41; // 0x29
     field public static final int JPEG = 256; // 0x100
     field public static final int NV16 = 16; // 0x10
     field public static final int NV21 = 17; // 0x11
@@ -11634,6 +11645,8 @@
     field public static final int RGB_565 = 4; // 0x4
     field public static final int UNKNOWN = 0; // 0x0
     field public static final int YUV_420_888 = 35; // 0x23
+    field public static final int YUV_422_888 = 39; // 0x27
+    field public static final int YUV_444_888 = 40; // 0x28
     field public static final int YUY2 = 20; // 0x14
     field public static final int YV12 = 842094169; // 0x32315659
   }
@@ -12706,7 +12719,9 @@
     method public void draw(android.graphics.Canvas);
     method public android.graphics.drawable.Drawable findDrawableByLayerId(int);
     method public int findIndexByLayerId(int);
+    method public int getBottomPadding();
     method public android.graphics.drawable.Drawable getDrawable(int);
+    method public int getEndPadding();
     method public int getId(int);
     method public int getLayerGravity(int);
     method public int getLayerHeight(int);
@@ -12717,9 +12732,13 @@
     method public int getLayerInsetStart(int);
     method public int getLayerInsetTop(int);
     method public int getLayerWidth(int);
+    method public int getLeftPadding();
     method public int getNumberOfLayers();
     method public int getOpacity();
     method public int getPaddingMode();
+    method public int getRightPadding();
+    method public int getStartPadding();
+    method public int getTopPadding();
     method public void invalidateDrawable(android.graphics.drawable.Drawable);
     method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
     method public void setAlpha(int);
@@ -12740,7 +12759,9 @@
     method public void setLayerSize(int, int, int);
     method public void setLayerWidth(int, int);
     method public void setOpacity(int);
+    method public void setPadding(int, int, int, int);
     method public void setPaddingMode(int);
+    method public void setPaddingRelative(int, int, int, int);
     method public void unscheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable);
     field public static final int PADDING_MODE_NEST = 0; // 0x0
     field public static final int PADDING_MODE_STACK = 1; // 0x1
@@ -16120,16 +16141,20 @@
   public class AudioRecord {
     ctor public AudioRecord(int, int, int, int, int) throws java.lang.IllegalArgumentException;
     ctor public AudioRecord(android.media.AudioAttributes, android.media.AudioFormat, int, int) throws java.lang.IllegalArgumentException;
+    method public void addOnAudioRecordRoutingListener(android.media.OnAudioRecordRoutingListener, android.os.Handler);
     method public int getAudioFormat();
     method public int getAudioSessionId();
     method public int getAudioSource();
     method public int getChannelConfiguration();
     method public int getChannelCount();
+    method public android.media.AudioFormat getFormat();
     method public static int getMinBufferSize(int, int, int);
     method public int getNativeFrameCount() throws java.lang.IllegalStateException;
     method public int getNotificationMarkerPosition();
     method public int getPositionNotificationPeriod();
+    method public android.media.AudioDeviceInfo getPreferredInputDevice();
     method public int getRecordingState();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
     method public int getSampleRate();
     method public int getState();
     method public int read(byte[], int, int);
@@ -16140,8 +16165,10 @@
     method public int read(java.nio.ByteBuffer, int);
     method public int read(java.nio.ByteBuffer, int, int);
     method public void release();
+    method public void removeOnAudioRecordRoutingListener(android.media.OnAudioRecordRoutingListener);
     method public int setNotificationMarkerPosition(int);
     method public int setPositionNotificationPeriod(int);
+    method public boolean setPreferredInputDevice(android.media.AudioDeviceInfo);
     method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener);
     method public void setRecordPositionUpdateListener(android.media.AudioRecord.OnRecordPositionUpdateListener, android.os.Handler);
     method public void startRecording() throws java.lang.IllegalStateException;
@@ -16184,12 +16211,14 @@
     ctor public AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
     ctor public AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
     ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
+    method public void addOnAudioTrackRoutingListener(android.media.OnAudioTrackRoutingListener, android.os.Handler);
     method public int attachAuxEffect(int);
     method public void flush();
     method public int getAudioFormat();
     method public int getAudioSessionId();
     method public int getChannelConfiguration();
     method public int getChannelCount();
+    method public android.media.AudioFormat getFormat();
     method public static float getMaxVolume();
     method public static int getMinBufferSize(int, int, int);
     method public static float getMinVolume();
@@ -16199,8 +16228,10 @@
     method public int getPlayState();
     method public int getPlaybackHeadPosition();
     method public int getPlaybackRate();
+    method public android.media.PlaybackSettings getPlaybackSettings();
     method public int getPositionNotificationPeriod();
     method public android.media.AudioDeviceInfo getPreferredOutputDevice();
+    method public android.media.AudioDeviceInfo getRoutedDevice();
     method public int getSampleRate();
     method public int getState();
     method public int getStreamType();
@@ -16209,6 +16240,7 @@
     method public void play() throws java.lang.IllegalStateException;
     method public void release();
     method public int reloadStaticData();
+    method public void removeOnAudioTrackRoutingListener(android.media.OnAudioTrackRoutingListener);
     method public int setAuxEffectSendLevel(float);
     method public int setLoopPoints(int, int, int);
     method public int setNotificationMarkerPosition(int);
@@ -16216,6 +16248,7 @@
     method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener);
     method public void setPlaybackPositionUpdateListener(android.media.AudioTrack.OnPlaybackPositionUpdateListener, android.os.Handler);
     method public int setPlaybackRate(int);
+    method public void setPlaybackSettings(android.media.PlaybackSettings);
     method public int setPositionNotificationPeriod(int);
     method public boolean setPreferredOutputDevice(android.media.AudioDeviceInfo);
     method protected deprecated void setState(int);
@@ -16474,6 +16507,7 @@
     method public static android.media.MediaCodec createDecoderByType(java.lang.String) throws java.io.IOException;
     method public static android.media.MediaCodec createEncoderByType(java.lang.String) throws java.io.IOException;
     method public final android.view.Surface createInputSurface();
+    method public static android.view.Surface createPersistentInputSurface();
     method public final int dequeueInputBuffer(long);
     method public final int dequeueOutputBuffer(android.media.MediaCodec.BufferInfo, long);
     method public final void flush();
@@ -16494,12 +16528,16 @@
     method public final void releaseOutputBuffer(int, boolean);
     method public final void releaseOutputBuffer(int, long);
     method public final void reset();
+    method public void setCallback(android.media.MediaCodec.Callback, android.os.Handler);
     method public void setCallback(android.media.MediaCodec.Callback);
+    method public void setOnFrameRenderedListener(android.media.MediaCodec.OnFrameRenderedListener, android.os.Handler);
     method public final void setParameters(android.os.Bundle);
+    method public void setSurface(android.view.Surface);
     method public final void setVideoScalingMode(int);
     method public final void signalEndOfInputStream();
     method public final void start();
     method public final void stop();
+    method public void usePersistentInputSurface(android.view.Surface);
     field public static final int BUFFER_FLAG_CODEC_CONFIG = 2; // 0x2
     field public static final int BUFFER_FLAG_END_OF_STREAM = 4; // 0x4
     field public static final int BUFFER_FLAG_KEY_FRAME = 1; // 0x1
@@ -16563,6 +16601,10 @@
     field public int numSubSamples;
   }
 
+  public static abstract interface MediaCodec.OnFrameRenderedListener {
+    method public abstract void onFrameRendered(android.media.MediaCodec, long, long);
+  }
+
   public final class MediaCodecInfo {
     method public final android.media.MediaCodecInfo.CodecCapabilities getCapabilitiesForType(java.lang.String);
     method public final java.lang.String getName();
@@ -16602,22 +16644,24 @@
     field public static final deprecated int COLOR_Format24BitABGR6666 = 43; // 0x2b
     field public static final deprecated int COLOR_Format24BitARGB6666 = 42; // 0x2a
     field public static final deprecated int COLOR_Format24bitARGB1887 = 13; // 0xd
-    field public static final deprecated int COLOR_Format24bitBGR888 = 12; // 0xc
-    field public static final int COLOR_Format24bitRGB888 = 11; // 0xb
+    field public static final int COLOR_Format24bitBGR888 = 12; // 0xc
+    field public static final deprecated int COLOR_Format24bitRGB888 = 11; // 0xb
     field public static final deprecated int COLOR_Format25bitARGB1888 = 14; // 0xe
-    field public static final deprecated int COLOR_Format32BitRGBA8888 = 2130747392; // 0x7f00a000
-    field public static final int COLOR_Format32bitARGB8888 = 16; // 0x10
-    field public static final int COLOR_Format32bitBGRA8888 = 15; // 0xf
+    field public static final int COLOR_Format32bitABGR8888 = 2130747392; // 0x7f00a000
+    field public static final deprecated int COLOR_Format32bitARGB8888 = 16; // 0x10
+    field public static final deprecated int COLOR_Format32bitBGRA8888 = 15; // 0xf
     field public static final deprecated int COLOR_Format8bitRGB332 = 2; // 0x2
     field public static final deprecated int COLOR_FormatCbYCrY = 27; // 0x1b
     field public static final deprecated int COLOR_FormatCrYCbY = 28; // 0x1c
     field public static final int COLOR_FormatL16 = 36; // 0x24
     field public static final deprecated int COLOR_FormatL2 = 33; // 0x21
     field public static final deprecated int COLOR_FormatL24 = 37; // 0x25
-    field public static final int COLOR_FormatL32 = 38; // 0x26
+    field public static final deprecated int COLOR_FormatL32 = 38; // 0x26
     field public static final deprecated int COLOR_FormatL4 = 34; // 0x22
     field public static final int COLOR_FormatL8 = 35; // 0x23
     field public static final deprecated int COLOR_FormatMonochrome = 1; // 0x1
+    field public static final int COLOR_FormatRGBAFlexible = 2134288520; // 0x7f36a888
+    field public static final int COLOR_FormatRGBFlexible = 2134292616; // 0x7f36b888
     field public static final int COLOR_FormatRawBayer10bit = 31; // 0x1f
     field public static final int COLOR_FormatRawBayer8bit = 30; // 0x1e
     field public static final int COLOR_FormatRawBayer8bitcompressed = 32; // 0x20
@@ -16636,7 +16680,8 @@
     field public static final deprecated int COLOR_FormatYUV422PackedSemiPlanar = 40; // 0x28
     field public static final deprecated int COLOR_FormatYUV422Planar = 22; // 0x16
     field public static final deprecated int COLOR_FormatYUV422SemiPlanar = 24; // 0x18
-    field public static final int COLOR_FormatYUV444Interleaved = 29; // 0x1d
+    field public static final int COLOR_FormatYUV444Flexible = 2135181448; // 0x7f444888
+    field public static final deprecated int COLOR_FormatYUV444Interleaved = 29; // 0x1d
     field public static final deprecated int COLOR_QCOM_FormatYUV420SemiPlanar = 2141391872; // 0x7fa30c00
     field public static final deprecated int COLOR_TI_FormatYUV420PackedSemiPlanar = 2130706688; // 0x7f000100
     field public static final java.lang.String FEATURE_AdaptivePlayback = "adaptive-playback";
@@ -16770,6 +16815,7 @@
 
   public static final class MediaCodecInfo.VideoCapabilities {
     method public boolean areSizeAndRateSupported(int, int, double);
+    method public android.util.Range<java.lang.Double> getAchievableFrameRatesFor(int, int);
     method public android.util.Range<java.lang.Integer> getBitrateRange();
     method public int getHeightAlignment();
     method public android.util.Range<java.lang.Integer> getSupportedFrameRates();
@@ -17004,6 +17050,7 @@
     field public static final java.lang.String KEY_IS_FORCED_SUBTITLE = "is-forced-subtitle";
     field public static final java.lang.String KEY_I_FRAME_INTERVAL = "i-frame-interval";
     field public static final java.lang.String KEY_LANGUAGE = "language";
+    field public static final java.lang.String KEY_LEVEL = "level";
     field public static final java.lang.String KEY_MAX_HEIGHT = "max-height";
     field public static final java.lang.String KEY_MAX_INPUT_SIZE = "max-input-size";
     field public static final java.lang.String KEY_MAX_WIDTH = "max-width";
@@ -17013,7 +17060,10 @@
     field public static final java.lang.String KEY_PROFILE = "profile";
     field public static final java.lang.String KEY_PUSH_BLANK_BUFFERS_ON_STOP = "push-blank-buffers-on-shutdown";
     field public static final java.lang.String KEY_REPEAT_PREVIOUS_FRAME_AFTER = "repeat-previous-frame-after";
+    field public static final java.lang.String KEY_ROTATION = "rotation-degrees";
     field public static final java.lang.String KEY_SAMPLE_RATE = "sample-rate";
+    field public static final java.lang.String KEY_SLICE_HEIGHT = "slice-height";
+    field public static final java.lang.String KEY_STRIDE = "stride";
     field public static final java.lang.String KEY_TEMPORAL_LAYERING = "ts-schema";
     field public static final java.lang.String KEY_WIDTH = "width";
     field public static final java.lang.String MIMETYPE_AUDIO_AAC = "audio/mp4a-latm";
@@ -17189,7 +17239,10 @@
     method public int getAudioSessionId();
     method public int getCurrentPosition();
     method public int getDuration();
+    method public android.media.PlaybackSettings getPlaybackSettings();
     method public int getSelectedTrack(int) throws java.lang.IllegalStateException;
+    method public android.media.SyncSettings getSyncSettings();
+    method public android.media.MediaTimestamp getTimestamp();
     method public android.media.MediaPlayer.TrackInfo[] getTrackInfo() throws java.lang.IllegalStateException;
     method public int getVideoHeight();
     method public int getVideoWidth();
@@ -17225,8 +17278,10 @@
     method public void setOnTimedTextListener(android.media.MediaPlayer.OnTimedTextListener);
     method public void setOnVideoSizeChangedListener(android.media.MediaPlayer.OnVideoSizeChangedListener);
     method public void setPlaybackRate(float, int);
+    method public void setPlaybackSettings(android.media.PlaybackSettings);
     method public void setScreenOnWhilePlaying(boolean);
     method public void setSurface(android.view.Surface);
+    method public void setSyncSettings(android.media.SyncSettings);
     method public void setVideoScalingMode(int);
     method public void setVolume(float, float);
     method public void setWakeMode(android.content.Context, int);
@@ -17250,7 +17305,9 @@
     field public static final int MEDIA_INFO_VIDEO_RENDERING_START = 3; // 0x3
     field public static final int MEDIA_INFO_VIDEO_TRACK_LAGGING = 700; // 0x2bc
     field public static final java.lang.String MEDIA_MIMETYPE_TEXT_SUBRIP = "application/x-subrip";
-    field public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 0; // 0x0
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0; // 0x0
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 2; // 0x2
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_STRETCH = 1; // 0x1
     field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT = 1; // 0x1
     field public static final int VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING = 2; // 0x2
   }
@@ -17338,6 +17395,7 @@
     method public void setVideoSource(int) throws java.lang.IllegalStateException;
     method public void start() throws java.lang.IllegalStateException;
     method public void stop() throws java.lang.IllegalStateException;
+    method public void usePersistentSurface(android.view.Surface);
     field public static final int MEDIA_ERROR_SERVER_DIED = 100; // 0x64
     field public static final int MEDIA_RECORDER_ERROR_UNKNOWN = 1; // 0x1
     field public static final int MEDIA_RECORDER_INFO_MAX_DURATION_REACHED = 800; // 0x320
@@ -17542,15 +17600,22 @@
 
   public final class MediaSync {
     ctor public MediaSync();
-    method public void configureAudioTrack(android.media.AudioTrack);
-    method public void configureSurface(android.view.Surface);
     method public final android.view.Surface createInputSurface();
-    method public boolean getTimestamp(android.media.MediaTimestamp);
+    method public void flush();
+    method public android.media.PlaybackSettings getPlaybackSettings();
+    method public android.media.SyncSettings getSyncSettings();
+    method public android.media.MediaTimestamp getTimestamp();
     method public void queueAudio(java.nio.ByteBuffer, int, int, long);
     method public final void release();
+    method public void setAudioTrack(android.media.AudioTrack);
     method public void setCallback(android.media.MediaSync.Callback, android.os.Handler);
     method public void setPlaybackRate(float, int);
-    field public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 0; // 0x0
+    method public void setPlaybackSettings(android.media.PlaybackSettings);
+    method public void setSurface(android.view.Surface);
+    method public void setSyncSettings(android.media.SyncSettings);
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0; // 0x0
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 2; // 0x2
+    field public static final int PLAYBACK_RATE_AUDIO_MODE_STRETCH = 1; // 0x1
   }
 
   public static abstract class MediaSync.Callback {
@@ -17568,10 +17633,9 @@
   }
 
   public final class MediaTimestamp {
-    ctor public MediaTimestamp();
-    field public float clockRate;
-    field public long mediaTimeUs;
-    field public long nanoTime;
+    field public final float clockRate;
+    field public final long mediaTimeUs;
+    field public final long nanoTime;
   }
 
   public final class NotProvisionedException extends android.media.MediaDrmException {
@@ -17582,6 +17646,32 @@
     method public abstract void onAudioDeviceConnection();
   }
 
+  public final class PlaybackSettings {
+    ctor public PlaybackSettings();
+    method public android.media.PlaybackSettings allowDefaults();
+    method public int getAudioFallbackMode();
+    method public int getAudioStretchMode();
+    method public float getPitch();
+    method public float getSpeed();
+    method public android.media.PlaybackSettings setAudioFallbackMode(int);
+    method public android.media.PlaybackSettings setAudioStretchMode(int);
+    method public android.media.PlaybackSettings setPitch(float);
+    method public android.media.PlaybackSettings setSpeed(float);
+    field public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0; // 0x0
+    field public static final int AUDIO_FALLBACK_MODE_FAIL = 2; // 0x2
+    field public static final int AUDIO_FALLBACK_MODE_MUTE = 1; // 0x1
+    field public static final int AUDIO_STRETCH_MODE_DEFAULT = 0; // 0x0
+    field public static final int AUDIO_STRETCH_MODE_VOICE = 1; // 0x1
+  }
+
+  public abstract interface OnAudioRecordRoutingListener {
+    method public abstract void onAudioRecordRouting(android.media.AudioRecord);
+  }
+
+  public abstract interface OnAudioTrackRoutingListener {
+    method public abstract void onAudioTrackRouting(android.media.AudioTrack);
+  }
+
   public final class Rating implements android.os.Parcelable {
     method public int describeContents();
     method public float getPercentRating();
@@ -17767,6 +17857,26 @@
     method public abstract void onLoadComplete(android.media.SoundPool, int, int);
   }
 
+  public final class SyncSettings {
+    ctor public SyncSettings();
+    method public android.media.SyncSettings allowDefaults();
+    method public int getAudioAdjustMode();
+    method public float getFrameRate();
+    method public int getSyncSource();
+    method public float getTolerance();
+    method public android.media.SyncSettings setAudioAdjustMode(int);
+    method public android.media.SyncSettings setFrameRate(float);
+    method public android.media.SyncSettings setSyncSource(int);
+    method public android.media.SyncSettings setTolerance(float);
+    field public static final int AUDIO_ADJUST_MODE_DEFAULT = 0; // 0x0
+    field public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2; // 0x2
+    field public static final int AUDIO_ADJUST_MODE_STRETCH = 1; // 0x1
+    field public static final int SYNC_SOURCE_AUDIO = 2; // 0x2
+    field public static final int SYNC_SOURCE_DEFAULT = 0; // 0x0
+    field public static final int SYNC_SOURCE_SYSTEM_CLOCK = 1; // 0x1
+    field public static final int SYNC_SOURCE_VSYNC = 3; // 0x3
+  }
+
   public class ThumbnailUtils {
     ctor public ThumbnailUtils();
     method public static android.graphics.Bitmap createVideoThumbnail(java.lang.String, int);
@@ -19663,11 +19773,8 @@
     method public void reportNetworkConnectivity(android.net.Network, boolean);
     method public void requestNetwork(android.net.NetworkRequest, android.net.ConnectivityManager.NetworkCallback);
     method public void requestNetwork(android.net.NetworkRequest, android.app.PendingIntent);
-    method public deprecated boolean requestRouteToHost(int, int);
     method public deprecated void setNetworkPreference(int);
     method public static deprecated boolean setProcessDefaultNetwork(android.net.Network);
-    method public deprecated int startUsingNetworkFeature(int, java.lang.String);
-    method public deprecated int stopUsingNetworkFeature(int, java.lang.String);
     method public void unregisterNetworkCallback(android.net.ConnectivityManager.NetworkCallback);
     field public static final deprecated java.lang.String ACTION_BACKGROUND_DATA_SETTING_CHANGED = "android.net.conn.BACKGROUND_DATA_SETTING_CHANGED";
     field public static final java.lang.String CONNECTIVITY_ACTION = "android.net.conn.CONNECTIVITY_CHANGE";
@@ -19686,9 +19793,9 @@
     field public static final int TYPE_ETHERNET = 9; // 0x9
     field public static final int TYPE_MOBILE = 0; // 0x0
     field public static final int TYPE_MOBILE_DUN = 4; // 0x4
-    field public static final int TYPE_MOBILE_HIPRI = 5; // 0x5
-    field public static final int TYPE_MOBILE_MMS = 2; // 0x2
-    field public static final int TYPE_MOBILE_SUPL = 3; // 0x3
+    field public static final deprecated int TYPE_MOBILE_HIPRI = 5; // 0x5
+    field public static final deprecated int TYPE_MOBILE_MMS = 2; // 0x2
+    field public static final deprecated int TYPE_MOBILE_SUPL = 3; // 0x3
     field public static final int TYPE_VPN = 17; // 0x11
     field public static final int TYPE_WIFI = 1; // 0x1
     field public static final int TYPE_WIMAX = 6; // 0x6
@@ -28611,6 +28718,8 @@
     field public static final java.lang.String EXTRA_DO_NOT_DISTURB_MODE_ENABLED = "android.settings.extra.do_not_disturb_mode_enabled";
     field public static final java.lang.String EXTRA_DO_NOT_DISTURB_MODE_MINUTES = "android.settings.extra.do_not_disturb_mode_minutes";
     field public static final java.lang.String EXTRA_INPUT_METHOD_ID = "input_method_id";
+    field public static final java.lang.String INTENT_CATEGORY_USAGE_ACCESS_CONFIG = "android.intent.category.USAGE_ACCESS_CONFIG";
+    field public static final java.lang.String METADATA_USAGE_ACCESS_REASON = "android.settings.metadata.USAGE_ACCESS_REASON";
   }
 
   public static final class Settings.Global extends android.provider.Settings.NameValueTable {
@@ -32130,8 +32239,9 @@
     field public static final int STATE_DISCONNECTING = 10; // 0xa
     field public static final int STATE_HOLDING = 3; // 0x3
     field public static final int STATE_NEW = 0; // 0x0
-    field public static final int STATE_PRE_DIAL_WAIT = 8; // 0x8
+    field public static final deprecated int STATE_PRE_DIAL_WAIT = 8; // 0x8
     field public static final int STATE_RINGING = 2; // 0x2
+    field public static final int STATE_SELECT_PHONE_ACCOUNT = 8; // 0x8
   }
 
   public static abstract class Call.Callback {
@@ -32195,20 +32305,6 @@
     field public static final int CONFERENCE = 1; // 0x1
   }
 
-  public final class CallState {
-    method public static java.lang.String toString(int);
-    field public static final int ABORTED = 8; // 0x8
-    field public static final int ACTIVE = 5; // 0x5
-    field public static final int CONNECTING = 1; // 0x1
-    field public static final int DIALING = 3; // 0x3
-    field public static final int DISCONNECTED = 7; // 0x7
-    field public static final int DISCONNECTING = 9; // 0x9
-    field public static final int NEW = 0; // 0x0
-    field public static final int ON_HOLD = 6; // 0x6
-    field public static final int PRE_DIAL_WAIT = 2; // 0x2
-    field public static final int RINGING = 4; // 0x4
-  }
-
   public final class CameraCapabilities implements android.os.Parcelable {
     ctor public CameraCapabilities(int, int);
     method public int describeContents();
@@ -32664,6 +32760,7 @@
     method public boolean isRinging();
     method public boolean isTtySupported();
     method public boolean isVoiceMailNumber(android.telecom.PhoneAccountHandle, java.lang.String);
+    method public void placeCall(android.net.Uri, android.os.Bundle);
     method public void registerPhoneAccount(android.telecom.PhoneAccount);
     method public void showInCallScreen(boolean);
     method public void silenceRinger();
@@ -32733,6 +32830,7 @@
     method public void reloadCarrierConfigForSubId(int);
     method public void updateConfigForPhoneId(int, java.lang.String);
     field public static final java.lang.String ACTION_CARRIER_CONFIG_CHANGED = "android.telephony.action.CARRIER_CONFIG_CHANGED";
+    field public static final java.lang.String BOOL_APN_EXPAND = "bool_apn_expand";
     field public static final java.lang.String BOOL_CARRIER_VOLTE_AVAILABLE = "bool_carrier_volte_available";
     field public static final java.lang.String BOOL_CARRIER_VOLTE_PROVISIONED = "bool_carrier_volte_provisioned";
     field public static final java.lang.String BOOL_CARRIER_VOLTE_TTY_SUPPORTED = "bool_carrier_volte_tty_supported";
@@ -33041,6 +33139,7 @@
     method public int getEvdoSnr();
     method public int getGsmBitErrorRate();
     method public int getGsmSignalStrength();
+    method public int getLevel();
     method public boolean isGsm();
     method public void writeToParcel(android.os.Parcel, int);
   }
@@ -38174,6 +38273,7 @@
     method public void invalidateOutline();
     method public boolean isAccessibilityFocused();
     method public boolean isActivated();
+    method public boolean isAssistBlocked();
     method public boolean isAttachedToWindow();
     method public boolean isClickable();
     method public boolean isDirty();
@@ -38316,6 +38416,7 @@
     method public void setActivated(boolean);
     method public void setAlpha(float);
     method public void setAnimation(android.view.animation.Animation);
+    method public void setAssistBlocked(boolean);
     method public void setBackground(android.graphics.drawable.Drawable);
     method public void setBackgroundColor(int);
     method public deprecated void setBackgroundDrawable(android.graphics.drawable.Drawable);
@@ -38678,6 +38779,7 @@
     method public abstract android.view.ViewAssistStructure newChild(int);
     method public abstract void setAccessibilityFocused(boolean);
     method public abstract void setActivated(boolean);
+    method public abstract void setAssistBlocked(boolean);
     method public abstract void setCheckable(boolean);
     method public abstract void setChecked(boolean);
     method public abstract void setChildCount(int);
@@ -41488,10 +41590,19 @@
     ctor public WebViewFactory();
     method public static android.content.pm.PackageInfo getLoadedPackageInfo();
     method public static java.lang.String getWebViewPackageName();
+    method public static int loadWebViewNativeLibraryFromPackage(java.lang.String);
     method public static void onWebViewUpdateInstalled();
     method public static void prepareWebViewInSystemServer();
     method public static void prepareWebViewInZygote();
     field public static final java.lang.String CHROMIUM_WEBVIEW_VMSIZE_SIZE_PROPERTY = "persist.sys.webview.vmsize";
+    field public static final int LIBLOAD_ADDRESS_SPACE_NOT_RESERVED = 2; // 0x2
+    field public static final int LIBLOAD_FAILED_JNI_CALL = 7; // 0x7
+    field public static final int LIBLOAD_FAILED_LISTING_WEBVIEW_PACKAGES = 4; // 0x4
+    field public static final int LIBLOAD_FAILED_TO_LOAD_LIBRARY = 6; // 0x6
+    field public static final int LIBLOAD_FAILED_TO_OPEN_RELRO_FILE = 5; // 0x5
+    field public static final int LIBLOAD_FAILED_WAITING_FOR_RELRO = 3; // 0x3
+    field public static final int LIBLOAD_SUCCESS = 0; // 0x0
+    field public static final int LIBLOAD_WRONG_PACKAGE_NAME = 1; // 0x1
   }
 
   public abstract interface WebViewFactoryProvider {
diff --git a/api/system-removed.txt b/api/system-removed.txt
index 326b05d..a722e17 100644
--- a/api/system-removed.txt
+++ b/api/system-removed.txt
@@ -35,6 +35,13 @@
 
 package android.net {
 
+  public class ConnectivityManager {
+    method public deprecated boolean requestRouteToHost(int, int);
+    method public deprecated boolean requestRouteToHostAddress(int, java.net.InetAddress);
+    method public deprecated int startUsingNetworkFeature(int, java.lang.String);
+    method public deprecated int stopUsingNetworkFeature(int, java.lang.String);
+  }
+
   public class SSLCertificateSocketFactory extends javax.net.ssl.SSLSocketFactory {
     method public static deprecated org.apache.http.conn.ssl.SSLSocketFactory getHttpSocketFactory(int, android.net.SSLSessionCache);
   }
diff --git a/cmds/am/src/com/android/commands/am/Am.java b/cmds/am/src/com/android/commands/am/Am.java
index 8ba2a5a..219d35b 100644
--- a/cmds/am/src/com/android/commands/am/Am.java
+++ b/cmds/am/src/com/android/commands/am/Am.java
@@ -142,6 +142,8 @@
                 "       am task resizeable <TASK_ID> [true|false]\n" +
                 "       am task resize <TASK_ID> <LEFT,TOP,RIGHT,BOTTOM>\n" +
                 "       am get-config\n" +
+                "       am set-idle [--user <USER_ID>] <PACKAGE> true|false\n" +
+                "       am get-idle [--user <USER_ID>] <PACKAGE>\n" +
                 "\n" +
                 "am start: start an Activity.  Options are:\n" +
                 "    -D: enable debugging\n" +
@@ -282,6 +284,11 @@
                 "am get-config: retrieve the configuration and any recent configurations\n" +
                 "  of the device\n" +
                 "\n" +
+                "am set-idle: sets the idle state of an app\n" +
+                "\n" +
+                "am get-idle: returns the idle state of an app\n" +
+                "\n" +
+                "\n" +
                 "<INTENT> specifications include these flags and arguments:\n" +
                 "    [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]\n" +
                 "    [-c <CATEGORY> [-c <CATEGORY>] ...]\n" +
@@ -388,6 +395,10 @@
             runTask();
         } else if (op.equals("get-config")) {
             runGetConfig();
+        } else if (op.equals("set-idle")) {
+            runSetIdle();
+        } else if (op.equals("get-idle")) {
+            runGetIdle();
         } else {
             showError("Error: unknown command '" + op + "'");
         }
@@ -2019,6 +2030,46 @@
         }
     }
 
+    private void runSetIdle() throws Exception {
+        int userId = UserHandle.USER_OWNER;
+
+        String opt;
+        while ((opt=nextOption()) != null) {
+            if (opt.equals("--user")) {
+                userId = parseUserArg(nextArgRequired());
+            } else {
+                System.err.println("Error: Unknown option: " + opt);
+                return;
+            }
+        }
+        String packageName = nextArgRequired();
+        String value = nextArgRequired();
+
+        IUsageStatsManager usm = IUsageStatsManager.Stub.asInterface(ServiceManager.getService(
+                Context.USAGE_STATS_SERVICE));
+        usm.setAppIdle(packageName, Boolean.parseBoolean(value), userId);
+    }
+
+    private void runGetIdle() throws Exception {
+        int userId = UserHandle.USER_OWNER;
+
+        String opt;
+        while ((opt=nextOption()) != null) {
+            if (opt.equals("--user")) {
+                userId = parseUserArg(nextArgRequired());
+            } else {
+                System.err.println("Error: Unknown option: " + opt);
+                return;
+            }
+        }
+        String packageName = nextArgRequired();
+
+        IUsageStatsManager usm = IUsageStatsManager.Stub.asInterface(ServiceManager.getService(
+                Context.USAGE_STATS_SERVICE));
+        boolean isIdle = usm.isAppIdle(packageName, userId);
+        System.out.println("Idle=" + isIdle);
+    }
+
     /**
      * Open the given file for sending into the system process. This verifies
      * with SELinux that the system will have access to the file.
diff --git a/cmds/pm/src/com/android/commands/pm/Pm.java b/cmds/pm/src/com/android/commands/pm/Pm.java
index d5cc8cc..b84b1e2 100644
--- a/cmds/pm/src/com/android/commands/pm/Pm.java
+++ b/cmds/pm/src/com/android/commands/pm/Pm.java
@@ -51,9 +51,11 @@
 import android.os.IUserManager;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.text.TextUtils;
+import android.text.format.DateUtils;
 import android.util.Log;
 
 import libcore.io.IoUtils;
@@ -1283,20 +1285,6 @@
         }
     }
 
-    class LocalPackageMoveObserver extends IPackageMoveObserver.Stub {
-        boolean finished;
-        int returnCode;
-
-        @Override
-        public void packageMoved(String packageName, int returnCode) throws RemoteException {
-            synchronized (this) {
-                this.finished = true;
-                this.returnCode = returnCode;
-                notifyAll();
-            }
-        }
-    }
-
     public int runMove() {
         final String packageName = nextArg();
         String volumeUuid = nextArg();
@@ -1304,24 +1292,21 @@
             volumeUuid = null;
         }
 
-        final LocalPackageMoveObserver obs = new LocalPackageMoveObserver();
         try {
-            mPm.movePackageAndData(packageName, volumeUuid, obs);
+            final int moveId = mPm.movePackage(packageName, volumeUuid);
 
-            synchronized (obs) {
-                while (!obs.finished) {
-                    try {
-                        obs.wait();
-                    } catch (InterruptedException e) {
-                    }
-                }
-                if (obs.returnCode == PackageManager.MOVE_SUCCEEDED) {
-                    System.out.println("Success");
-                    return 0;
-                } else {
-                    System.err.println("Failure [" + obs.returnCode + "]");
-                    return 1;
-                }
+            int status = mPm.getMoveStatus(moveId);
+            while (!PackageManager.isMoveStatusFinished(status)) {
+                SystemClock.sleep(DateUtils.SECOND_IN_MILLIS);
+                status = mPm.getMoveStatus(moveId);
+            }
+
+            if (status == PackageManager.MOVE_SUCCEEDED) {
+                System.out.println("Success");
+                return 0;
+            } else {
+                System.err.println("Failure [" + status + "]");
+                return 1;
             }
         } catch (RemoteException e) {
             throw e.rethrowAsRuntimeException();
diff --git a/core/java/android/animation/AnimatorInflater.java b/core/java/android/animation/AnimatorInflater.java
index 224e8e9..e47d017 100644
--- a/core/java/android/animation/AnimatorInflater.java
+++ b/core/java/android/animation/AnimatorInflater.java
@@ -790,6 +790,31 @@
         return valuesArray;
     }
 
+    // When no value type is provided in keyframe, we need to infer the type from the value. i.e.
+    // if value is defined in the style of a color value, then the color type is returned.
+    // Otherwise, default float type is returned.
+    private static int inferValueTypeOfKeyframe(Resources res, Theme theme, AttributeSet attrs) {
+        int valueType;
+        TypedArray a;
+        if (theme != null) {
+            a = theme.obtainStyledAttributes(attrs, R.styleable.Keyframe, 0, 0);
+        } else {
+            a = res.obtainAttributes(attrs, R.styleable.Keyframe);
+        }
+
+        TypedValue keyframeValue = a.peekValue(R.styleable.Keyframe_value);
+        boolean hasValue = (keyframeValue != null);
+        // When no value type is provided, check whether it's a color type first.
+        // If not, fall back to default value type (i.e. float type).
+        if (hasValue && isColorType(keyframeValue.type)) {
+            valueType = VALUE_TYPE_COLOR;
+        } else {
+            valueType = VALUE_TYPE_FLOAT;
+        }
+        a.recycle();
+        return valueType;
+    }
+
     private static void dumpKeyframes(Object[] keyframes, String header) {
         if (keyframes == null || keyframes.length == 0) {
             return;
@@ -817,6 +842,9 @@
                 type != XmlPullParser.END_DOCUMENT) {
             String name = parser.getName();
             if (name.equals("keyframe")) {
+                if (valueType == VALUE_TYPE_UNDEFINED) {
+                    valueType = inferValueTypeOfKeyframe(res, theme, Xml.asAttributeSet(parser));
+                }
                 Keyframe keyframe = loadKeyframe(res, theme, Xml.asAttributeSet(parser), valueType);
                 if (keyframe != null) {
                     if (keyframes == null) {
diff --git a/core/java/android/annotation/BinderThread.java b/core/java/android/annotation/BinderThread.java
new file mode 100644
index 0000000..c69ba10
--- /dev/null
+++ b/core/java/android/annotation/BinderThread.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+package android.annotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+/**
+ * Denotes that the annotated method should only be called on the binder thread.
+ * If the annotated element is a class, then all methods in the class should be called
+ * on the binder thread.
+ * <p>
+ * Example:
+ * <pre>{@code
+ *  (&#64;BinderThread
+ *  public BeamShareData createBeamShareData() { ... }
+ * }</pre>
+ *
+ * {@hide}
+ */
+@Retention(SOURCE)
+@Target({METHOD,CONSTRUCTOR,TYPE})
+public @interface BinderThread {
+}
\ No newline at end of file
diff --git a/core/java/android/annotation/MainThread.java b/core/java/android/annotation/MainThread.java
new file mode 100644
index 0000000..18a4283
--- /dev/null
+++ b/core/java/android/annotation/MainThread.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+package android.annotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+/**
+ * Denotes that the annotated method should only be called on the main thread.
+ * If the annotated element is a class, then all methods in the class should be called
+ * on the main thread.
+ * <p>
+ * Example:
+ * <pre>{@code
+ *  &#64;MainThread
+ *  public void deliverResult(D data) { ... }
+ * }</pre>
+ *
+ * {@hide}
+ */
+@Retention(SOURCE)
+@Target({METHOD,CONSTRUCTOR,TYPE})
+public @interface MainThread {
+}
\ No newline at end of file
diff --git a/core/java/android/annotation/RequiresPermission.java b/core/java/android/annotation/RequiresPermission.java
new file mode 100644
index 0000000..4aed5c1
--- /dev/null
+++ b/core/java/android/annotation/RequiresPermission.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+package android.annotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.ANNOTATION_TYPE;
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+/**
+ * Denotes that the annotated element requires (or may require) one or more permissions.
+ * <p/>
+ * Example of requiring a single permission:
+ * <pre>{@code
+ *   &#64;RequiresPermission(Manifest.permission.SET_WALLPAPER)
+ *   public abstract void setWallpaper(Bitmap bitmap) throws IOException;
+ *
+ *   &#64;RequiresPermission(ACCESS_COARSE_LOCATION)
+ *   public abstract Location getLastKnownLocation(String provider);
+ * }</pre>
+ * Example of requiring at least one permission from a set:
+ * <pre>{@code
+ *   &#64;RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
+ *   public abstract Location getLastKnownLocation(String provider);
+ * }</pre>
+ * Example of requiring multiple permissions:
+ * <pre>{@code
+ *   &#64;RequiresPermission(allOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
+ *   public abstract Location getLastKnownLocation(String provider);
+ * }</pre>
+ * Example of requiring separate read and write permissions for a content provider:
+ * <pre>{@code
+ *   &#64;RequiresPermission.Read(&#64;RequiresPermission(READ_HISTORY_BOOKMARKS))
+ *   &#64;RequiresPermission.Write(&#64;RequiresPermission(WRITE_HISTORY_BOOKMARKS))
+ *   public static final Uri BOOKMARKS_URI = Uri.parse("content://browser/bookmarks");
+ * }</pre>
+ *
+ * @hide
+ */
+@Retention(SOURCE)
+@Target({ANNOTATION_TYPE,METHOD,CONSTRUCTOR,FIELD})
+public @interface RequiresPermission {
+    /**
+     * The name of the permission that is required, if precisely one permission
+     * is required. If more than one permission is required, specify either
+     * {@link #allOf()} or {@link #anyOf()} instead.
+     * <p>
+     * If specified, {@link #anyOf()} and {@link #allOf()} must both be null.
+     */
+    String value() default "";
+
+    /**
+     * Specifies a list of permission names that are all required.
+     * <p>
+     * If specified, {@link #anyOf()} and {@link #value()} must both be null.
+     */
+    String[] allOf() default {};
+
+    /**
+     * Specifies a list of permission names where at least one is required
+     * <p>
+     * If specified, {@link #allOf()} and {@link #value()} must both be null.
+     */
+    String[] anyOf() default {};
+
+    /**
+     * If true, the permission may not be required in all cases (e.g. it may only be
+     * enforced on certain platforms, or for certain call parameters, etc.
+     */
+    boolean conditional() default false;
+
+    /**
+     * Specifies that the given permission is required for read operations
+     */
+    @Target(FIELD)
+    @interface Read {
+        RequiresPermission value();
+    }
+
+    /**
+     * Specifies that the given permission is required for write operations
+     */
+    @Target(FIELD)
+    @interface Write {
+        RequiresPermission value();
+    }
+}
diff --git a/core/java/android/annotation/UiThread.java b/core/java/android/annotation/UiThread.java
new file mode 100644
index 0000000..b814600
--- /dev/null
+++ b/core/java/android/annotation/UiThread.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+package android.annotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+/**
+ * Denotes that the annotated method or constructor should only be called on the UI thread.
+ * If the annotated element is a class, then all methods in the class should be called
+ * on the UI thread.
+ * <p>
+ * Example:
+ * <pre>{@code
+ *  &#64;UiThread
+ *  public abstract void setText(&#64;NonNull String text) { ... }
+ * }</pre>
+ *
+ * {@hide}
+ */
+@Retention(SOURCE)
+@Target({METHOD,CONSTRUCTOR,TYPE})
+public @interface UiThread {
+}
\ No newline at end of file
diff --git a/core/java/android/annotation/WorkerThread.java b/core/java/android/annotation/WorkerThread.java
new file mode 100644
index 0000000..dd12e05
--- /dev/null
+++ b/core/java/android/annotation/WorkerThread.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+package android.annotation;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.CONSTRUCTOR;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.ElementType.TYPE;
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+/**
+ * Denotes that the annotated method should only be called on a worker thread.
+ * If the annotated element is a class, then all methods in the class should be called
+ * on a worker thread.
+ * <p>
+ * Example:
+ * <pre>{@code
+ *  (&#64;WorkerThread
+ *  protected abstract FilterResults performFiltering(CharSequence constraint);
+ * }</pre>
+ *
+ * {@hide}
+ */
+@Retention(SOURCE)
+@Target({METHOD,CONSTRUCTOR,TYPE})
+public @interface WorkerThread {
+}
\ No newline at end of file
diff --git a/core/java/android/app/ActivityManagerNative.java b/core/java/android/app/ActivityManagerNative.java
index 7f062d9..b11c509 100644
--- a/core/java/android/app/ActivityManagerNative.java
+++ b/core/java/android/app/ActivityManagerNative.java
@@ -2513,6 +2513,14 @@
             return true;
         }
 
+        case UPDATE_DEVICE_OWNER_TRANSACTION: {
+            data.enforceInterface(IActivityManager.descriptor);
+            String packageName = data.readString();
+            updateDeviceOwner(packageName);
+            reply.writeNoException();
+            return true;
+        }
+
         case GET_PACKAGE_PROCESS_STATE_TRANSACTION: {
             data.enforceInterface(IActivityManager.descriptor);
             String pkg = data.readString();
@@ -5801,6 +5809,18 @@
     }
 
     @Override
+    public void updateDeviceOwner(String packageName) throws RemoteException {
+        Parcel data = Parcel.obtain();
+        Parcel reply = Parcel.obtain();
+        data.writeInterfaceToken(IActivityManager.descriptor);
+        data.writeString(packageName);
+        mRemote.transact(UPDATE_DEVICE_OWNER_TRANSACTION, data, reply, 0);
+        reply.readException();
+        data.recycle();
+        reply.recycle();
+    }
+
+    @Override
     public int getPackageProcessState(String packageName) throws RemoteException {
         Parcel data = Parcel.obtain();
         Parcel reply = Parcel.obtain();
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index 10d6d01..ab5f811 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -2541,11 +2541,16 @@
             if (cmd.requestType == ActivityManager.ASSIST_CONTEXT_FULL) {
                 data.putParcelable(AssistStructure.ASSIST_KEY, new AssistStructure(r.activity));
                 AssistContent content = new AssistContent();
-                Intent intent = new Intent(r.activity.getIntent());
-                intent.setFlags(intent.getFlags() & ~(Intent.FLAG_GRANT_WRITE_URI_PERMISSION
-                        | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION));
-                intent.removeUnsafeExtras();
-                content.setIntent(intent);
+                Intent activityIntent = r.activity.getIntent();
+                if (activityIntent != null) {
+                    Intent intent = new Intent(activityIntent);
+                    intent.setFlags(intent.getFlags() & ~(Intent.FLAG_GRANT_WRITE_URI_PERMISSION
+                            | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION));
+                    intent.removeUnsafeExtras();
+                    content.setIntent(intent);
+                } else {
+                    content.setIntent(new Intent());
+                }
                 r.activity.onProvideAssistContent(content);
                 data.putParcelable(AssistContent.ASSIST_KEY, content);
             }
diff --git a/core/java/android/app/AlarmManager.java b/core/java/android/app/AlarmManager.java
index 179957d..9d1d312 100644
--- a/core/java/android/app/AlarmManager.java
+++ b/core/java/android/app/AlarmManager.java
@@ -597,6 +597,15 @@
         }
     }
 
+    /** @hide */
+    public long getNextWakeFromIdleTime() {
+        try {
+            return mService.getNextWakeFromIdleTime();
+        } catch (RemoteException ex) {
+            return Long.MAX_VALUE;
+        }
+    }
+
     /**
      * Gets information about the next alarm clock currently scheduled.
      *
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index dfe7e18..10f5960 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -62,6 +62,9 @@
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.SystemProperties;
@@ -81,7 +84,9 @@
 
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Objects;
 
 /*package*/
 final class ApplicationPackageManager extends PackageManager {
@@ -98,6 +103,9 @@
     @GuardedBy("mLock")
     private PackageInstaller mInstaller;
 
+    @GuardedBy("mDelegates")
+    private final ArrayList<MoveCallbackDelegate> mDelegates = new ArrayList<>();
+
     UserManager getUserManager() {
         synchronized (mLock) {
             if (mUserManager == null) {
@@ -1410,57 +1418,100 @@
     }
 
     @Override
-    public void movePackage(String packageName, IPackageMoveObserver observer, int flags) {
+    public String getInstallerPackageName(String packageName) {
         try {
-            mPM.movePackage(packageName, observer, flags);
+            return mPM.getInstallerPackageName(packageName);
+        } catch (RemoteException e) {
+            // Should never happen!
+        }
+        return null;
+    }
+
+    @Override
+    public int getMoveStatus(int moveId) {
+        try {
+            return mPM.getMoveStatus(moveId);
         } catch (RemoteException e) {
             throw e.rethrowAsRuntimeException();
         }
     }
 
     @Override
-    public void movePackageAndData(String packageName, String volumeUuid,
-            IPackageMoveObserver observer) {
-        try {
-            mPM.movePackageAndData(packageName, volumeUuid, observer);
-        } catch (RemoteException e) {
-            throw e.rethrowAsRuntimeException();
+    public void registerMoveCallback(MoveCallback callback, Handler handler) {
+        synchronized (mDelegates) {
+            final MoveCallbackDelegate delegate = new MoveCallbackDelegate(callback,
+                    handler.getLooper());
+            try {
+                mPM.registerMoveCallback(delegate);
+            } catch (RemoteException e) {
+                throw e.rethrowAsRuntimeException();
+            }
+            mDelegates.add(delegate);
         }
     }
 
     @Override
-    public @NonNull VolumeInfo getApplicationCurrentVolume(ApplicationInfo app) {
-        final StorageManager storage = mContext.getSystemService(StorageManager.class);
-        if (app.isInternal()) {
-            return Preconditions.checkNotNull(
-                    storage.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL));
-        } else if (app.isExternalAsec()) {
-            final List<VolumeInfo> vols = storage.getVolumes();
-            for (VolumeInfo vol : vols) {
-                if ((vol.getType() == VolumeInfo.TYPE_PUBLIC) && vol.isPrimary()) {
-                    return vol;
+    public void unregisterMoveCallback(MoveCallback callback) {
+        synchronized (mDelegates) {
+            for (Iterator<MoveCallbackDelegate> i = mDelegates.iterator(); i.hasNext();) {
+                final MoveCallbackDelegate delegate = i.next();
+                if (delegate.mCallback == callback) {
+                    try {
+                        mPM.unregisterMoveCallback(delegate);
+                    } catch (RemoteException e) {
+                        throw e.rethrowAsRuntimeException();
+                    }
+                    i.remove();
                 }
             }
-            throw new IllegalStateException("Failed to find primary public volume");
-        } else {
-            return Preconditions.checkNotNull(storage.findVolumeByUuid(app.volumeUuid));
         }
     }
 
     @Override
-    public @NonNull List<VolumeInfo> getApplicationCandidateVolumes(ApplicationInfo app) {
+    public int movePackage(String packageName, VolumeInfo vol) {
+        try {
+            final String volumeUuid;
+            if (VolumeInfo.ID_PRIVATE_INTERNAL.equals(vol.id)) {
+                volumeUuid = StorageManager.UUID_PRIVATE_INTERNAL;
+            } else if (vol.isPrimaryPhysical()) {
+                volumeUuid = StorageManager.UUID_PRIMARY_PHYSICAL;
+            } else {
+                volumeUuid = Preconditions.checkNotNull(vol.fsUuid);
+            }
+
+            return mPM.movePackage(packageName, volumeUuid);
+        } catch (RemoteException e) {
+            throw e.rethrowAsRuntimeException();
+        }
+    }
+
+    @Override
+    public @Nullable VolumeInfo getPackageCurrentVolume(ApplicationInfo app) {
         final StorageManager storage = mContext.getSystemService(StorageManager.class);
+        if (app.isInternal()) {
+            return storage.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL);
+        } else if (app.isExternalAsec()) {
+            return storage.getPrimaryPhysicalVolume();
+        } else {
+            return storage.findVolumeByUuid(app.volumeUuid);
+        }
+    }
+
+    @Override
+    public @NonNull List<VolumeInfo> getPackageCandidateVolumes(ApplicationInfo app) {
+        final StorageManager storage = mContext.getSystemService(StorageManager.class);
+        final VolumeInfo currentVol = getPackageCurrentVolume(app);
         final List<VolumeInfo> vols = storage.getVolumes();
         final List<VolumeInfo> candidates = new ArrayList<>();
         for (VolumeInfo vol : vols) {
-            if (isCandidateVolume(app, vol)) {
+            if (Objects.equals(vol, currentVol) || isPackageCandidateVolume(app, vol)) {
                 candidates.add(vol);
             }
         }
         return candidates;
     }
 
-    private static boolean isCandidateVolume(ApplicationInfo app, VolumeInfo vol) {
+    private static boolean isPackageCandidateVolume(ApplicationInfo app, VolumeInfo vol) {
         // Private internal is always an option
         if (VolumeInfo.ID_PRIVATE_INTERNAL.equals(vol.getId())) {
             return true;
@@ -1473,10 +1524,14 @@
             return false;
         }
 
-        // Moving into an ASEC on public primary is only an option when app is
-        // internal, or already in ASEC
-        if ((vol.getType() == VolumeInfo.TYPE_PUBLIC) && vol.isPrimary()) {
-            return app.isInternal() || app.isExternalAsec();
+        // Gotta be able to write there
+        if (!vol.isMountedWritable()) {
+            return false;
+        }
+
+        // Moving into an ASEC on public primary is only option internal
+        if (vol.isPrimaryPhysical()) {
+            return app.isInternal();
         }
 
         // Otherwise we can move to any private volume
@@ -1484,13 +1539,66 @@
     }
 
     @Override
-    public String getInstallerPackageName(String packageName) {
+    public int movePrimaryStorage(VolumeInfo vol) {
         try {
-            return mPM.getInstallerPackageName(packageName);
+            final String volumeUuid;
+            if (VolumeInfo.ID_PRIVATE_INTERNAL.equals(vol.id)) {
+                volumeUuid = StorageManager.UUID_PRIVATE_INTERNAL;
+            } else if (vol.isPrimaryPhysical()) {
+                volumeUuid = StorageManager.UUID_PRIMARY_PHYSICAL;
+            } else {
+                volumeUuid = Preconditions.checkNotNull(vol.fsUuid);
+            }
+
+            return mPM.movePrimaryStorage(volumeUuid);
         } catch (RemoteException e) {
-            // Should never happen!
+            throw e.rethrowAsRuntimeException();
         }
-        return null;
+    }
+
+    public @Nullable VolumeInfo getPrimaryStorageCurrentVolume() {
+        final StorageManager storage = mContext.getSystemService(StorageManager.class);
+        final String volumeUuid = storage.getPrimaryStorageUuid();
+        if (Objects.equals(StorageManager.UUID_PRIVATE_INTERNAL, volumeUuid)) {
+            return storage.findVolumeById(VolumeInfo.ID_PRIVATE_INTERNAL);
+        } else if (Objects.equals(StorageManager.UUID_PRIMARY_PHYSICAL, volumeUuid)) {
+            return storage.getPrimaryPhysicalVolume();
+        } else {
+            return storage.findVolumeByUuid(volumeUuid);
+        }
+    }
+
+    public @NonNull List<VolumeInfo> getPrimaryStorageCandidateVolumes() {
+        final StorageManager storage = mContext.getSystemService(StorageManager.class);
+        final VolumeInfo currentVol = getPrimaryStorageCurrentVolume();
+        final List<VolumeInfo> vols = storage.getVolumes();
+        final List<VolumeInfo> candidates = new ArrayList<>();
+        for (VolumeInfo vol : vols) {
+            if (Objects.equals(vol, currentVol) || isPrimaryStorageCandidateVolume(vol)) {
+                candidates.add(vol);
+            }
+        }
+        return candidates;
+    }
+
+    private static boolean isPrimaryStorageCandidateVolume(VolumeInfo vol) {
+        // Private internal is always an option
+        if (VolumeInfo.ID_PRIVATE_INTERNAL.equals(vol.getId())) {
+            return true;
+        }
+
+        // Gotta be able to write there
+        if (!vol.isMountedWritable()) {
+            return false;
+        }
+
+        // We can move to public volumes on legacy devices
+        if ((vol.getType() == VolumeInfo.TYPE_PUBLIC) && vol.getDisk().isDefaultPrimary()) {
+            return true;
+        }
+
+        // Otherwise we can move to any private volume
+        return (vol.getType() == VolumeInfo.TYPE_PRIVATE);
     }
 
     @Override
@@ -1941,6 +2049,45 @@
         return null;
     }
 
+    /** {@hide} */
+    private static class MoveCallbackDelegate extends IPackageMoveObserver.Stub implements
+            Handler.Callback {
+        private static final int MSG_STARTED = 1;
+        private static final int MSG_STATUS_CHANGED = 2;
+
+        final MoveCallback mCallback;
+        final Handler mHandler;
+
+        public MoveCallbackDelegate(MoveCallback callback, Looper looper) {
+            mCallback = callback;
+            mHandler = new Handler(looper, this);
+        }
+
+        @Override
+        public boolean handleMessage(Message msg) {
+            final int moveId = msg.arg1;
+            switch (msg.what) {
+                case MSG_STARTED:
+                    mCallback.onStarted(moveId, (String) msg.obj);
+                    return true;
+                case MSG_STATUS_CHANGED:
+                    mCallback.onStatusChanged(moveId, msg.arg2, (long) msg.obj);
+                    return true;
+            }
+            return false;
+        }
+
+        @Override
+        public void onStarted(int moveId, String title) {
+            mHandler.obtainMessage(MSG_STARTED, moveId, 0, title).sendToTarget();
+        }
+
+        @Override
+        public void onStatusChanged(int moveId, int status, long estMillis) {
+            mHandler.obtainMessage(MSG_STATUS_CHANGED, moveId, status, estMillis).sendToTarget();
+        }
+    }
+
     private final ContextImpl mContext;
     private final IPackageManager mPM;
 
diff --git a/core/java/android/app/AssistStructure.java b/core/java/android/app/AssistStructure.java
index 1e159a3..9946d79 100644
--- a/core/java/android/app/AssistStructure.java
+++ b/core/java/android/app/AssistStructure.java
@@ -218,6 +218,7 @@
         static final int FLAGS_FOCUSED = 0x00000020;
         static final int FLAGS_ACCESSIBILITY_FOCUSED = 0x04000000;
         static final int FLAGS_SELECTED = 0x00000040;
+        static final int FLAGS_ASSIST_BLOCKED = 0x00000080;
         static final int FLAGS_ACTIVATED = 0x40000000;
         static final int FLAGS_CHECKABLE = 0x00000100;
         static final int FLAGS_CHECKED = 0x00000200;
@@ -356,6 +357,10 @@
             return mFlags&ViewNode.FLAGS_VISIBILITY_MASK;
         }
 
+        public boolean isAssistBlocked() {
+            return (mFlags&ViewNode.FLAGS_ASSIST_BLOCKED) == 0;
+        }
+
         public boolean isEnabled() {
             return (mFlags&ViewNode.FLAGS_DISABLED) == 0;
         }
@@ -484,6 +489,12 @@
         }
 
         @Override
+        public void setAssistBlocked(boolean state) {
+            mNode.mFlags = (mNode.mFlags&~ViewNode.FLAGS_ASSIST_BLOCKED)
+                    | (state ? 0 : ViewNode.FLAGS_ASSIST_BLOCKED);
+        }
+
+        @Override
         public void setEnabled(boolean state) {
             mNode.mFlags = (mNode.mFlags&~ViewNode.FLAGS_DISABLED)
                     | (state ? 0 : ViewNode.FLAGS_DISABLED);
diff --git a/core/java/android/app/IActivityManager.java b/core/java/android/app/IActivityManager.java
index 7e03faa..00558fe 100644
--- a/core/java/android/app/IActivityManager.java
+++ b/core/java/android/app/IActivityManager.java
@@ -495,6 +495,7 @@
     public void setVoiceKeepAwake(IVoiceInteractionSession session, boolean keepAwake)
             throws RemoteException;
     public void updateLockTaskPackages(int userId, String[] packages) throws RemoteException;
+    public void updateDeviceOwner(String packageName) throws RemoteException;
 
     public int getPackageProcessState(String packageName) throws RemoteException;
 
@@ -837,4 +838,5 @@
     int NOTE_ALARM_FINISH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+292;
     int GET_PACKAGE_PROCESS_STATE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+293;
     int SHOW_LOCK_TASK_ESCAPE_MESSAGE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+294;
+    int UPDATE_DEVICE_OWNER_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION+295;
 }
diff --git a/core/java/android/app/IAlarmManager.aidl b/core/java/android/app/IAlarmManager.aidl
index d5719f5..327c00b 100644
--- a/core/java/android/app/IAlarmManager.aidl
+++ b/core/java/android/app/IAlarmManager.aidl
@@ -33,6 +33,7 @@
     boolean setTime(long millis);
     void setTimeZone(String zone);
     void remove(in PendingIntent operation);
+    long getNextWakeFromIdleTime();
     AlarmManager.AlarmClockInfo getNextAlarmClock(int userId);
 }
 
diff --git a/core/java/android/app/KeyguardManager.java b/core/java/android/app/KeyguardManager.java
index 56cd53e..ebb3c43 100644
--- a/core/java/android/app/KeyguardManager.java
+++ b/core/java/android/app/KeyguardManager.java
@@ -16,6 +16,8 @@
 
 package android.app;
 
+import android.Manifest;
+import android.annotation.RequiresPermission;
 import android.app.trust.ITrustManager;
 import android.content.Context;
 import android.content.Intent;
@@ -111,6 +113,7 @@
          *
          * @see #reenableKeyguard()
          */
+        @RequiresPermission(Manifest.permission.DISABLE_KEYGUARD)
         public void disableKeyguard() {
             try {
                 mWM.disableKeyguard(mToken, mTag);
@@ -132,6 +135,7 @@
          *
          * @see #disableKeyguard()
          */
+        @RequiresPermission(Manifest.permission.DISABLE_KEYGUARD)
         public void reenableKeyguard() {
             try {
                 mWM.reenableKeyguard(mToken);
@@ -302,6 +306,7 @@
      *   once the user has gotten past the keyguard.
      */
     @Deprecated
+    @RequiresPermission(Manifest.permission.DISABLE_KEYGUARD)
     public void exitKeyguardSecurely(final OnKeyguardExitResult callback) {
         try {
             mWM.exitKeyguardSecurely(new IOnKeyguardExitResult.Stub() {
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index e7f8f6d..2cf23af 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -5648,6 +5648,13 @@
 
         /**
          * Value to be used with {@link #setPricingInformation} to indicate that the content
+         * referred by the notification item is available currently as a pre-order, and the price
+         * value provided is the purchase price for the item.
+         */
+        public static final String CONTENT_PRICING_PREORDER = "android.contentPrice.preorder";
+
+        /**
+         * Value to be used with {@link #setPricingInformation} to indicate that the content
          * referred by the notification item is available as part of a subscription based service,
          * and the price value provided is the subscription price for the service.
          */
diff --git a/core/java/android/app/admin/DeviceAdminReceiver.java b/core/java/android/app/admin/DeviceAdminReceiver.java
index fe284ce..aea413d 100644
--- a/core/java/android/app/admin/DeviceAdminReceiver.java
+++ b/core/java/android/app/admin/DeviceAdminReceiver.java
@@ -264,6 +264,20 @@
     public static final String EXTRA_CHOOSE_PRIVATE_KEY_RESPONSE = "android.app.extra.CHOOSE_PRIVATE_KEY_RESPONSE";
 
     /**
+     * Broadcast action: notify device owner that there is a pending system update.
+     * @hide
+     */
+    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+    public static final String ACTION_NOTIFY_PENDING_SYSTEM_UPDATE = "android.app.action.NOTIFY_PENDING_SYSTEM_UPDATE";
+
+    /**
+     * A long type extra for {@link #onSystemUpdatePending} recording the system time as given by
+     * {@link System#currentTimeMillis()} when the current pending system update is first available.
+     * @hide
+     */
+    public static final String EXTRA_SYSTEM_UPDATE_RECEIVED_TIME = "android.app.extra.SYSTEM_UPDATE_RECEIVED_TIME";
+
+    /**
      * Name under which a DevicePolicy component publishes information
      * about itself.  This meta-data must reference an XML resource containing
      * a device-admin tag.
@@ -486,6 +500,22 @@
     }
 
     /**
+     * Allows the receiver to be notified when information about a pending system update is
+     * available from the system update service. The same pending system update can trigger multiple
+     * calls to this method, so it is necessary to examine the incoming parameters for details about
+     * the update.
+     * <p>
+     * This callback is only applicable to device owners.
+     *
+     * @param context The running context as per {@link #onReceive}.
+     * @param intent The received intent as per {@link #onReceive}.
+     * @param receivedTime The time as given by {@link System#currentTimeMillis()} indicating when
+     *        the current pending update was first available. -1 if no pending update is available.
+     */
+    public void onSystemUpdatePending(Context context, Intent intent, long receivedTime) {
+    }
+
+    /**
      * Intercept standard device administrator broadcasts.  Implementations
      * should not override this method; it is better to implement the
      * convenience callbacks for each action.
@@ -530,6 +560,9 @@
             onLockTaskModeExiting(context, intent);
         } else if (ACTION_READY_FOR_USER_INITIALIZATION.equals(action)) {
             onReadyForUserInitialization(context, intent);
+        } else if (ACTION_NOTIFY_PENDING_SYSTEM_UPDATE.equals(action)) {
+            long receivedTime = intent.getLongExtra(EXTRA_SYSTEM_UPDATE_RECEIVED_TIME, -1);
+            onSystemUpdatePending(context, intent, receivedTime);
         }
     }
 }
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 9e2da61..47133d4 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -2651,14 +2651,12 @@
 
     /**
      * @hide
-     * Sets the given package as the device owner. The package must already be installed and there
-     * shouldn't be an existing device owner registered, for this call to succeed. Also, this
-     * method must be called before the device is provisioned.
+     * Sets the given package as the device owner.
+     * Same as {@link #setDeviceOwner(String, String)} but without setting a device owner name.
      * @param packageName the package name of the application to be registered as the device owner.
      * @return whether the package was successfully registered as the device owner.
      * @throws IllegalArgumentException if the package name is null or invalid
-     * @throws IllegalStateException if a device owner is already registered or the device has
-     *         already been provisioned.
+     * @throws IllegalStateException If the preconditions mentioned are not met.
      */
     public boolean setDeviceOwner(String packageName) throws IllegalArgumentException,
             IllegalStateException {
@@ -2667,15 +2665,17 @@
 
     /**
      * @hide
-     * Sets the given package as the device owner. The package must already be installed and there
-     * shouldn't be an existing device owner registered, for this call to succeed. Also, this
-     * method must be called before the device is provisioned.
+     * Sets the given package as the device owner. The package must already be installed. There
+     * must not already be a device owner.
+     * Only apps with the MANAGE_PROFILE_AND_DEVICE_OWNERS permission and the shell uid can call
+     * this method.
+     * Calling this after the setup phase of the primary user has completed is allowed only if
+     * the caller is the shell uid, and there are no additional users and no accounts.
      * @param packageName the package name of the application to be registered as the device owner.
      * @param ownerName the human readable name of the institution that owns this device.
      * @return whether the package was successfully registered as the device owner.
      * @throws IllegalArgumentException if the package name is null or invalid
-     * @throws IllegalStateException if a device owner is already registered or the device has
-     *         already been provisioned.
+     * @throws IllegalStateException If the preconditions mentioned are not met.
      */
     public boolean setDeviceOwner(String packageName, String ownerName)
             throws IllegalArgumentException, IllegalStateException {
@@ -2961,14 +2961,18 @@
     /**
      * @hide
      * Sets the given component as the profile owner of the given user profile. The package must
-     * already be installed and there shouldn't be an existing profile owner registered for this
-     * user. Only the system can call this API if the user has already completed setup.
+     * already be installed. There must not already be a profile owner for this user.
+     * Only apps with the MANAGE_PROFILE_AND_DEVICE_OWNERS permission and the shell uid can call
+     * this method.
+     * Calling this after the setup phase of the specified user has completed is allowed only if:
+     * - the caller is SYSTEM_UID.
+     * - or the caller is the shell uid, and there are no accounts on the specified user.
      * @param admin the component name to be registered as profile owner.
      * @param ownerName the human readable name of the organisation associated with this DPM.
      * @param userHandle the userId to set the profile owner for.
      * @return whether the component was successfully registered as the profile owner.
-     * @throws IllegalArgumentException if admin is null, the package isn't installed, or
-     *         the user has already been set up.
+     * @throws IllegalArgumentException if admin is null, the package isn't installed, or the
+     * preconditions mentioned are not met.
      */
     public boolean setProfileOwner(ComponentName admin, String ownerName, int userHandle)
             throws IllegalArgumentException {
@@ -4301,4 +4305,24 @@
             Log.w(TAG, "Failed talking with device policy service", re);
         }
     }
+
+    /**
+     * Callable by the system update service to notify device owners about pending updates.
+     * The caller must hold {@link android.Manifest.permission#NOTIFY_PENDING_SYSTEM_UPDATE}
+     * permission.
+     *
+     * @param updateReceivedTime The time as given by {@link System#currentTimeMillis()} indicating
+     *        when the current pending update was first available. -1 if no update is available.
+     * @hide
+     */
+    @SystemApi
+    public void notifyPendingSystemUpdate(long updateReceivedTime) {
+        if (mService != null) {
+            try {
+                mService.notifyPendingSystemUpdate(updateReceivedTime);
+            } catch (RemoteException re) {
+                Log.w(TAG, "Could not notify device owner about pending system update", re);
+            }
+        }
+    }
 }
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index 1f7498e..087fc88 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -225,4 +225,6 @@
     boolean setKeyguardEnabledState(in ComponentName admin, boolean enabled);
     void setStatusBarEnabledState(in ComponentName who, boolean enabled);
     boolean getDoNotAskCredentialsOnBoot();
+
+    void notifyPendingSystemUpdate(in long updateReceivedTime);
 }
diff --git a/core/java/android/app/usage/IUsageStatsManager.aidl b/core/java/android/app/usage/IUsageStatsManager.aidl
index 4ed1489..23659e3 100644
--- a/core/java/android/app/usage/IUsageStatsManager.aidl
+++ b/core/java/android/app/usage/IUsageStatsManager.aidl
@@ -30,4 +30,6 @@
     ParceledListSlice queryConfigurationStats(int bucketType, long beginTime, long endTime,
             String callingPackage);
     UsageEvents queryEvents(long beginTime, long endTime, String callingPackage);
+    void setAppIdle(String packageName, boolean idle, int userId);
+    boolean isAppIdle(String packageName, int userId);
 }
diff --git a/core/java/android/app/usage/UsageStatsManager.java b/core/java/android/app/usage/UsageStatsManager.java
index bc6099a..8a01d66 100644
--- a/core/java/android/app/usage/UsageStatsManager.java
+++ b/core/java/android/app/usage/UsageStatsManager.java
@@ -19,6 +19,7 @@
 import android.content.Context;
 import android.content.pm.ParceledListSlice;
 import android.os.RemoteException;
+import android.os.UserHandle;
 import android.util.ArrayMap;
 
 import java.util.Collections;
@@ -217,4 +218,20 @@
         }
         return aggregatedStats;
     }
+
+    /**
+     * Returns whether the specified app is currently considered idle. This will be true if the
+     * app hasn't been used directly or indirectly for a period of time defined by the system. This
+     * could be of the order of several hours or days.
+     * @param packageName The package name of the app to query
+     * @return whether the app is currently considered idle
+     */
+    public boolean isAppIdle(String packageName) {
+        try {
+            return mService.isAppIdle(packageName, UserHandle.myUserId());
+        } catch (RemoteException e) {
+            // fall through and return default
+        }
+        return false;
+    }
 }
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index 2418e82..79e560f 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -792,7 +792,6 @@
                 //          mService is null, handle that case
             }
         } catch (RemoteException e) {Log.e(TAG, "", e);}
-        if (DBG) Log.d(TAG, "" + hashCode() + ": getState() :  mService = null. Returning STATE_OFF");
         return STATE_OFF;
     }
 
diff --git a/core/java/android/content/ContentProvider.java b/core/java/android/content/ContentProvider.java
index 393cf8e..fd65d56 100644
--- a/core/java/android/content/ContentProvider.java
+++ b/core/java/android/content/ContentProvider.java
@@ -26,6 +26,7 @@
 import android.content.res.AssetFileDescriptor;
 import android.content.res.Configuration;
 import android.database.Cursor;
+import android.database.MatrixCursor;
 import android.database.SQLException;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -204,8 +205,13 @@
             validateIncomingUri(uri);
             uri = getUriWithoutUserId(uri);
             if (enforceReadPermission(callingPkg, uri, null) != AppOpsManager.MODE_ALLOWED) {
-                return rejectQuery(uri, projection, selection, selectionArgs, sortOrder,
-                        CancellationSignal.fromTransport(cancellationSignal));
+                // The caller has no access to the data, so return an empty cursor with
+                // the columns in the requested order. The caller may ask for an invalid
+                // column and we would not catch that but this is not a problem in practice.
+                // We do not call ContentProvider#query with a modified where clause since
+                // the implementation is not guaranteed to be backed by a SQL database, hence
+                // it may not handle properly the tautology where clause we would have created.
+                return new MatrixCursor(projection, 0);
             }
             final String original = setCallingPackage(callingPkg);
             try {
@@ -817,31 +823,6 @@
     }
 
     /**
-     * @hide
-     * Implementation when a caller has performed a query on the content
-     * provider, but that call has been rejected for the operation given
-     * to {@link #setAppOps(int, int)}.  The default implementation
-     * rewrites the <var>selection</var> argument to include a condition
-     * that is never true (so will always result in an empty cursor)
-     * and calls through to {@link #query(android.net.Uri, String[], String, String[],
-     * String, android.os.CancellationSignal)} with that.
-     */
-    public Cursor rejectQuery(Uri uri, String[] projection,
-            String selection, String[] selectionArgs, String sortOrder,
-            CancellationSignal cancellationSignal) {
-        // The read is not allowed...  to fake it out, we replace the given
-        // selection statement with a dummy one that will always be false.
-        // This way we will get a cursor back that has the correct structure
-        // but contains no rows.
-        if (selection == null || selection.isEmpty()) {
-            selection = "'A' = 'B'";
-        } else {
-            selection = "'A' = 'B' AND (" + selection + ")";
-        }
-        return query(uri, projection, selection, selectionArgs, sortOrder, cancellationSignal);
-    }
-
-    /**
      * Implement this to handle query requests from clients.
      * This method can be called from multiple threads, as described in
      * <a href="{@docRoot}guide/topics/fundamentals/processes-and-threads.html#Threads">Processes
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 3bf3f85..5eacce3 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -3098,7 +3098,6 @@
      * {@link android.media.midi.MidiManager} for accessing the MIDI service.
      *
      * @see #getSystemService
-     * @hide
      */
     public static final String MIDI_SERVICE = "midi";
 
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 447c668..ae59bfc 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -50,7 +50,6 @@
 import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
 import android.content.IntentSender;
-import com.android.internal.os.IResultReceiver;
 
 /**
  *  See {@link PackageManager} for documentation on most of the APIs
@@ -431,8 +430,13 @@
 
     PackageCleanItem nextPackageToClean(in PackageCleanItem lastPackage);
 
-    void movePackage(String packageName, IPackageMoveObserver observer, int flags);
-    void movePackageAndData(String packageName, String volumeUuid, IPackageMoveObserver observer);
+    int getMoveStatus(int moveId);
+
+    void registerMoveCallback(in IPackageMoveObserver callback);
+    void unregisterMoveCallback(in IPackageMoveObserver callback);
+
+    int movePackage(in String packageName, in String volumeUuid);
+    int movePrimaryStorage(in String volumeUuid);
 
     boolean addPermissionAsync(in PermissionInfo info);
 
diff --git a/core/java/android/content/pm/IPackageMoveObserver.aidl b/core/java/android/content/pm/IPackageMoveObserver.aidl
index baa1595..50ab3b5 100644
--- a/core/java/android/content/pm/IPackageMoveObserver.aidl
+++ b/core/java/android/content/pm/IPackageMoveObserver.aidl
@@ -22,6 +22,6 @@
  * @hide
  */
 oneway interface IPackageMoveObserver {
-    void packageMoved(in String packageName, int returnCode);
+    void onStarted(int moveId, String title);
+    void onStatusChanged(int moveId, int status, long estMillis);
 }
-
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index a0cec50..e1c271d 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -42,6 +42,7 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Environment;
+import android.os.Handler;
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.storage.VolumeInfo;
@@ -875,7 +876,8 @@
      *
      * @hide
      */
-    public static final int MOVE_SUCCEEDED = 1;
+    public static final int MOVE_SUCCEEDED = -100;
+
     /**
      * Error code that is passed to the {@link IPackageMoveObserver} by
      * {@link #movePackage(android.net.Uri, IPackageMoveObserver)}
@@ -941,6 +943,7 @@
      * been installed on external media.
      * @hide
      */
+    @Deprecated
     public static final int MOVE_INTERNAL = 0x00000001;
 
     /**
@@ -948,8 +951,12 @@
      * the package should be moved to external media.
      * @hide
      */
+    @Deprecated
     public static final int MOVE_EXTERNAL_MEDIA = 0x00000002;
 
+    /** {@hide} */
+    public static final String EXTRA_MOVE_ID = "android.content.pm.extra.MOVE_ID";
+
     /**
      * Usable by the required verifier as the {@code verificationCode} argument
      * for {@link PackageManager#verifyPendingInstall} to indicate that it will
@@ -1574,6 +1581,21 @@
     /**
      * Feature for {@link #getSystemAvailableFeatures} and
      * {@link #hasSystemFeature}: This is a device dedicated to showing UI
+     * on a vehicle headunit. A headunit here is defined to be inside a
+     * vehicle that may or may not be moving. A headunit uses either a
+     * primary display in the center console and/or additional displays in
+     * the instrument cluster or elsewhere in the vehicle. Headunit display(s)
+     * have limited size and resolution. The user will likely be focused on
+     * driving so limiting driver distraction is a primary concern. User input
+     * can be a variety of hard buttons, touch, rotary controllers and even mouse-
+     * like interfaces.
+     */
+    @SdkConstant(SdkConstantType.FEATURE)
+    public static final String FEATURE_AUTOMOTIVE = "android.hardware.type.automotive";
+
+    /**
+     * Feature for {@link #getSystemAvailableFeatures} and
+     * {@link #hasSystemFeature}: This is a device dedicated to showing UI
      * on a television.  Television here is defined to be a typical living
      * room television experience: displayed on a big screen, where the user
      * is sitting far away from it, and the dominant form of input will be
@@ -4168,17 +4190,42 @@
      * @hide
      */
     @Deprecated
-    public abstract void movePackage(String packageName, IPackageMoveObserver observer, int flags);
+    public void movePackage(String packageName, IPackageMoveObserver observer, int flags) {
+        throw new UnsupportedOperationException();
+    }
 
     /** {@hide} */
-    public abstract void movePackageAndData(String packageName, String volumeUuid,
-            IPackageMoveObserver observer);
+    public static boolean isMoveStatusFinished(int status) {
+        return (status < 0 || status > 100);
+    }
 
     /** {@hide} */
-    public abstract @Nullable VolumeInfo getApplicationCurrentVolume(ApplicationInfo app);
+    public static abstract class MoveCallback {
+        public abstract void onStarted(int moveId, String title);
+        public abstract void onStatusChanged(int moveId, int status, long estMillis);
+    }
 
     /** {@hide} */
-    public abstract @NonNull List<VolumeInfo> getApplicationCandidateVolumes(ApplicationInfo app);
+    public abstract int getMoveStatus(int moveId);
+
+    /** {@hide} */
+    public abstract void registerMoveCallback(MoveCallback callback, Handler handler);
+    /** {@hide} */
+    public abstract void unregisterMoveCallback(MoveCallback callback);
+
+    /** {@hide} */
+    public abstract int movePackage(String packageName, VolumeInfo vol);
+    /** {@hide} */
+    public abstract @Nullable VolumeInfo getPackageCurrentVolume(ApplicationInfo app);
+    /** {@hide} */
+    public abstract @NonNull List<VolumeInfo> getPackageCandidateVolumes(ApplicationInfo app);
+
+    /** {@hide} */
+    public abstract int movePrimaryStorage(VolumeInfo vol);
+    /** {@hide} */
+    public abstract @Nullable VolumeInfo getPrimaryStorageCurrentVolume();
+    /** {@hide} */
+    public abstract @NonNull List<VolumeInfo> getPrimaryStorageCandidateVolumes();
 
     /**
      * Returns the device identity that verifiers can use to associate their scheme to a particular
diff --git a/core/java/android/hardware/camera2/CameraCaptureSession.java b/core/java/android/hardware/camera2/CameraCaptureSession.java
index 31e6e25..0cf8df1 100644
--- a/core/java/android/hardware/camera2/CameraCaptureSession.java
+++ b/core/java/android/hardware/camera2/CameraCaptureSession.java
@@ -65,6 +65,12 @@
 public abstract class CameraCaptureSession implements AutoCloseable {
 
     /**
+     * Used to identify invalid session ID.
+     * @hide
+     */
+    public static final int SESSION_ID_NONE = -1;
+
+    /**
      * Get the camera device that this session is created for.
      */
     public abstract CameraDevice getDevice();
@@ -168,10 +174,11 @@
      * @throws IllegalArgumentException if the request targets no Surfaces or Surfaces that are not
      *                                  configured as outputs for this session; or a reprocess
      *                                  capture request is submitted in a non-reprocessible capture
-     *                                  session; or the capture targets a Surface in the middle
-     *                                  of being {@link #prepare prepared}; or the handler is
-     *                                  null, the listener is not null, and the calling thread has
-     *                                  no looper.
+     *                                  session; or the reprocess capture request was created with
+     *                                  a {@link TotalCaptureResult} from a different session; or
+     *                                  the capture targets a Surface in the middle of being
+     *                                  {@link #prepare prepared}; or the handler is null, the
+     *                                  listener is not null, and the calling thread has no looper.
      *
      * @see #captureBurst
      * @see #setRepeatingRequest
@@ -226,7 +233,9 @@
      *                                  capture request is submitted in a non-reprocessible capture
      *                                  session; or the list of requests contains both requests to
      *                                  capture images from the camera and reprocess capture
-     *                                  requests; or one of the captures targets a Surface in the
+     *                                  requests; or one of the reprocess capture requests was
+     *                                  created with a {@link TotalCaptureResult} from a different
+     *                                  session; or one of the captures targets a Surface in the
      *                                  middle of being {@link #prepare prepared}; or if the handler
      *                                  is null, the listener is not null, and the calling thread
      *                                  has no looper.
diff --git a/core/java/android/hardware/camera2/CaptureRequest.java b/core/java/android/hardware/camera2/CaptureRequest.java
index 35727e8..19d17b1 100644
--- a/core/java/android/hardware/camera2/CaptureRequest.java
+++ b/core/java/android/hardware/camera2/CaptureRequest.java
@@ -158,6 +158,9 @@
     private final HashSet<Surface> mSurfaceSet;
     private final CameraMetadataNative mSettings;
     private boolean mIsReprocess;
+    // Each reprocess request must be tied to a reprocessible session ID.
+    // Valid only for reprocess requests (mIsReprocess == true).
+    private int mReprocessibleSessionId;
 
     private Object mUserTag;
 
@@ -170,6 +173,7 @@
         mSettings = new CameraMetadataNative();
         mSurfaceSet = new HashSet<Surface>();
         mIsReprocess = false;
+        mReprocessibleSessionId = CameraCaptureSession.SESSION_ID_NONE;
     }
 
     /**
@@ -182,6 +186,7 @@
         mSettings = new CameraMetadataNative(source.mSettings);
         mSurfaceSet = (HashSet<Surface>) source.mSurfaceSet.clone();
         mIsReprocess = source.mIsReprocess;
+        mReprocessibleSessionId = source.mReprocessibleSessionId;
         mUserTag = source.mUserTag;
     }
 
@@ -189,11 +194,36 @@
      * Take ownership of passed-in settings.
      *
      * Used by the Builder to create a mutable CaptureRequest.
+     *
+     * @param settings Settings for this capture request.
+     * @param isReprocess Indicates whether to create a reprocess capture request. {@code true}
+     *                    to create a reprocess capture request. {@code false} to create a regular
+     *                    capture request.
+     * @param reprocessibleSessionId The ID of the camera capture session this capture is created
+     *                               for. This is used to validate if the application submits a
+     *                               reprocess capture request to the same session where
+     *                               the {@link TotalCaptureResult}, used to create the reprocess
+     *                               capture, came from.
+     *
+     * @throws IllegalArgumentException If creating a reprocess capture request with an invalid
+     *                                  reprocessibleSessionId.
+     *
+     * @see CameraDevice#createReprocessCaptureRequest
      */
-    private CaptureRequest(CameraMetadataNative settings, boolean isReprocess) {
+    private CaptureRequest(CameraMetadataNative settings, boolean isReprocess,
+            int reprocessibleSessionId) {
         mSettings = CameraMetadataNative.move(settings);
         mSurfaceSet = new HashSet<Surface>();
         mIsReprocess = isReprocess;
+        if (isReprocess) {
+            if (reprocessibleSessionId == CameraCaptureSession.SESSION_ID_NONE) {
+                throw new IllegalArgumentException("Create a reprocess capture request with an " +
+                        "invalid session ID: " + reprocessibleSessionId);
+            }
+            mReprocessibleSessionId = reprocessibleSessionId;
+        } else {
+            mReprocessibleSessionId = CameraCaptureSession.SESSION_ID_NONE;
+        }
     }
 
     /**
@@ -277,6 +307,23 @@
     }
 
     /**
+     * Get the reprocessible session ID this reprocess capture request is associated with.
+     *
+     * @return the reprocessible session ID this reprocess capture request is associated with
+     *
+     * @throws IllegalStateException if this capture request is not a reprocess capture request.
+     * @hide
+     */
+    public int getReprocessibleSessionId() {
+        if (mIsReprocess == false ||
+                mReprocessibleSessionId == CameraCaptureSession.SESSION_ID_NONE) {
+            throw new IllegalStateException("Getting the reprocessible session ID for a "+
+                    "non-reprocess capture request is illegal.");
+        }
+        return mReprocessibleSessionId;
+    }
+
+    /**
      * Determine whether this CaptureRequest is equal to another CaptureRequest.
      *
      * <p>A request is considered equal to another is if it's set of key/values is equal, it's
@@ -298,7 +345,8 @@
                 && Objects.equals(mUserTag, other.mUserTag)
                 && mSurfaceSet.equals(other.mSurfaceSet)
                 && mSettings.equals(other.mSettings)
-                && mIsReprocess == other.mIsReprocess;
+                && mIsReprocess == other.mIsReprocess
+                && mReprocessibleSessionId == other.mReprocessibleSessionId;
     }
 
     @Override
@@ -347,6 +395,7 @@
         }
 
         mIsReprocess = (in.readInt() == 0) ? false : true;
+        mReprocessibleSessionId = CameraCaptureSession.SESSION_ID_NONE;
     }
 
     @Override
@@ -397,10 +446,23 @@
          * Initialize the builder using the template; the request takes
          * ownership of the template.
          *
+         * @param template Template settings for this capture request.
+         * @param reprocess Indicates whether to create a reprocess capture request. {@code true}
+         *                  to create a reprocess capture request. {@code false} to create a regular
+         *                  capture request.
+         * @param reprocessibleSessionId The ID of the camera capture session this capture is
+         *                               created for. This is used to validate if the application
+         *                               submits a reprocess capture request to the same session
+         *                               where the {@link TotalCaptureResult}, used to create the
+         *                               reprocess capture, came from.
+         *
+         * @throws IllegalArgumentException If creating a reprocess capture request with an invalid
+         *                                  reprocessibleSessionId.
          * @hide
          */
-        public Builder(CameraMetadataNative template, boolean reprocess) {
-            mRequest = new CaptureRequest(template, reprocess);
+        public Builder(CameraMetadataNative template, boolean reprocess,
+                int reprocessibleSessionId) {
+            mRequest = new CaptureRequest(template, reprocess, reprocessibleSessionId);
         }
 
         /**
diff --git a/core/java/android/hardware/camera2/TotalCaptureResult.java b/core/java/android/hardware/camera2/TotalCaptureResult.java
index 6f7dd78..fb3c098 100644
--- a/core/java/android/hardware/camera2/TotalCaptureResult.java
+++ b/core/java/android/hardware/camera2/TotalCaptureResult.java
@@ -50,6 +50,7 @@
 public final class TotalCaptureResult extends CaptureResult {
 
     private final List<CaptureResult> mPartialResults;
+    private final int mSessionId;
 
     /**
      * Takes ownership of the passed-in camera metadata and the partial results
@@ -58,7 +59,7 @@
      * @hide
      */
     public TotalCaptureResult(CameraMetadataNative results, CaptureRequest parent,
-            CaptureResultExtras extras, List<CaptureResult> partials) {
+            CaptureResultExtras extras, List<CaptureResult> partials, int sessionId) {
         super(results, parent, extras);
 
         if (partials == null) {
@@ -66,6 +67,8 @@
         } else {
             mPartialResults = partials;
         }
+
+        mSessionId = sessionId;
     }
 
     /**
@@ -78,6 +81,7 @@
         super(results, sequenceId);
 
         mPartialResults = new ArrayList<>();
+        mSessionId = CameraCaptureSession.SESSION_ID_NONE;
     }
 
     /**
@@ -95,4 +99,14 @@
     public List<CaptureResult> getPartialResults() {
         return Collections.unmodifiableList(mPartialResults);
     }
+
+    /**
+     * Get the ID of the session where the capture request of this result was submitted.
+     *
+     * @return The session ID
+     * @hide
+     */
+    public int getSessionId() {
+        return mSessionId;
+    }
 }
diff --git a/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java
index c74204d..3c19529 100644
--- a/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java
@@ -156,9 +156,10 @@
         } else if (request.isReprocess() && !isReprocessible()) {
             throw new IllegalArgumentException("this capture session cannot handle reprocess " +
                     "requests");
+        } else if (request.isReprocess() && request.getReprocessibleSessionId() != mId) {
+            throw new IllegalArgumentException("capture request was created for another session");
         }
 
-
         checkNotClosed();
 
         handler = checkHandler(handler, callback);
@@ -185,12 +186,17 @@
         if (reprocess && !isReprocessible()) {
             throw new IllegalArgumentException("this capture session cannot handle reprocess " +
                     "requests");
+        } else if (reprocess && requests.get(0).getReprocessibleSessionId() != mId) {
+            throw new IllegalArgumentException("capture request was created for another session");
         }
 
         for (int i = 1; i < requests.size(); i++) {
             if (requests.get(i).isReprocess() != reprocess) {
                 throw new IllegalArgumentException("cannot mix regular and reprocess capture " +
                         " requests");
+            } else if (reprocess && requests.get(i).getReprocessibleSessionId() != mId) {
+                throw new IllegalArgumentException("capture request was created for another " +
+                    "session");
             }
         }
 
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index 1e680dfd..ff4ad79 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -585,8 +585,8 @@
                 return null;
             }
 
-            CaptureRequest.Builder builder =
-                    new CaptureRequest.Builder(templatedRequest, /*reprocess*/false);
+            CaptureRequest.Builder builder = new CaptureRequest.Builder(
+                    templatedRequest, /*reprocess*/false, CameraCaptureSession.SESSION_ID_NONE);
 
             return builder;
         }
@@ -601,7 +601,8 @@
             CameraMetadataNative resultMetadata = new
                     CameraMetadataNative(inputResult.getNativeCopy());
 
-            return new CaptureRequest.Builder(resultMetadata, /*reprocess*/true);
+            return new CaptureRequest.Builder(resultMetadata, /*reprocess*/true,
+                    inputResult.getSessionId());
         }
     }
 
@@ -763,7 +764,7 @@
 
             if (callback != null) {
                 mCaptureCallbackMap.put(requestId, new CaptureCallbackHolder(callback,
-                        requestList, handler, repeating));
+                        requestList, handler, repeating, mNextSessionId - 1));
             } else {
                 if (DEBUG) {
                     Log.d(TAG, "Listen for request " + requestId + " is null");
@@ -1095,9 +1096,10 @@
         private final CaptureCallback mCallback;
         private final List<CaptureRequest> mRequestList;
         private final Handler mHandler;
+        private final int mSessionId;
 
         CaptureCallbackHolder(CaptureCallback callback, List<CaptureRequest> requestList,
-                Handler handler, boolean repeating) {
+                Handler handler, boolean repeating, int sessionId) {
             if (callback == null || handler == null) {
                 throw new UnsupportedOperationException(
                     "Must have a valid handler and a valid callback");
@@ -1106,6 +1108,7 @@
             mHandler = handler;
             mRequestList = new ArrayList<CaptureRequest>(requestList);
             mCallback = callback;
+            mSessionId = sessionId;
         }
 
         public boolean isRepeating() {
@@ -1140,6 +1143,10 @@
             return mHandler;
         }
 
+        public int getSessionId() {
+            return mSessionId;
+        }
+
     }
 
     /**
@@ -1643,8 +1650,8 @@
                     List<CaptureResult> partialResults =
                             mFrameNumberTracker.popPartialResults(frameNumber);
 
-                    final TotalCaptureResult resultAsCapture =
-                            new TotalCaptureResult(result, request, resultExtras, partialResults);
+                    final TotalCaptureResult resultAsCapture = new TotalCaptureResult(result,
+                            request, resultExtras, partialResults, holder.getSessionId());
 
                     // Final capture result
                     resultDispatch = new Runnable() {
@@ -1665,7 +1672,8 @@
                 holder.getHandler().post(resultDispatch);
 
                 // Collect the partials for a total result; or mark the frame as totally completed
-                mFrameNumberTracker.updateTracker(frameNumber, finalResult, isPartialResult, isReprocess);
+                mFrameNumberTracker.updateTracker(frameNumber, finalResult, isPartialResult,
+                        isReprocess);
 
                 // Fire onCaptureSequenceCompleted
                 if (!isPartialResult) {
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index a48b324..63f48cf 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -305,6 +305,9 @@
      * same network interface as {@link #TYPE_MOBILE} or it may use a different
      * one.  This is used by applications needing to talk to the carrier's
      * Multimedia Messaging Service servers.
+     *
+     * @deprecated Applications should instead use {@link #requestNetwork} to request a network that
+     *         provides the {@link NetworkCapabilities#NET_CAPABILITY_MMS} capability.
      */
     public static final int TYPE_MOBILE_MMS  = 2;
     /**
@@ -312,6 +315,9 @@
      * same network interface as {@link #TYPE_MOBILE} or it may use a different
      * one.  This is used by applications needing to talk to the carrier's
      * Secure User Plane Location servers for help locating the device.
+     *
+     * @deprecated Applications should instead use {@link #requestNetwork} to request a network that
+     *         provides the {@link NetworkCapabilities#NET_CAPABILITY_SUPL} capability.
      */
     public static final int TYPE_MOBILE_SUPL = 3;
     /**
@@ -324,9 +330,10 @@
     /**
      * A High Priority Mobile data connection.  This network type uses the
      * same network interface as {@link #TYPE_MOBILE} but the routing setup
-     * is different.  Only requesting processes will have access to the
-     * Mobile DNS servers and only IP's explicitly requested via {@link #requestRouteToHost}
-     * will route over this interface if no default route exists.
+     * is different.
+     *
+     * @deprecated Applications should instead use {@link #requestNetwork} to request a network that
+     *         uses the {@link NetworkCapabilities#TRANSPORT_CELLULAR} transport.
      */
     public static final int TYPE_MOBILE_HIPRI = 5;
     /**
@@ -386,7 +393,7 @@
      */
     public static final int TYPE_MOBILE_IA = 14;
 
-/**
+    /**
      * Emergency PDN connection for emergency calls
      * {@hide}
      */
@@ -736,7 +743,7 @@
     }
 
     /**
-     * Returns an array of of {@link NetworkCapabilities} objects, representing
+     * Returns an array of {@link android.net.NetworkCapabilities} objects, representing
      * the Networks that applications run by the given user will use by default.
      * @hide
      */
@@ -826,11 +833,11 @@
     }
 
     /**
-     * Get the {@link NetworkCapabilities} for the given {@link Network}.  This
+     * Get the {@link android.net.NetworkCapabilities} for the given {@link Network}.  This
      * will return {@code null} if the network is unknown.
      *
      * @param network The {@link Network} object identifying the network in question.
-     * @return The {@link NetworkCapabilities} for the network, or {@code null}.
+     * @return The {@link android.net.NetworkCapabilities} for the network, or {@code null}.
      */
     public NetworkCapabilities getNetworkCapabilities(Network network) {
         try {
@@ -854,6 +861,7 @@
      * always indicates failure.
      *
      * @deprecated Deprecated in favor of the cleaner {@link #requestNetwork} api.
+     * @removed
      */
     public int startUsingNetworkFeature(int networkType, String feature) {
         NetworkCapabilities netCap = networkCapabilitiesForFeature(networkType, feature);
@@ -901,6 +909,7 @@
      * always indicates failure.
      *
      * @deprecated Deprecated in favor of the cleaner {@link #requestNetwork} api.
+     * @removed
      */
     public int stopUsingNetworkFeature(int networkType, String feature) {
         NetworkCapabilities netCap = networkCapabilitiesForFeature(networkType, feature);
@@ -1179,6 +1188,7 @@
      *
      * @deprecated Deprecated in favor of the {@link #requestNetwork},
      *             {@link #bindProcessToNetwork} and {@link Network#getSocketFactory} api.
+     * @removed
      */
     public boolean requestRouteToHost(int networkType, int hostAddress) {
         return requestRouteToHostAddress(networkType, NetworkUtils.intToInetAddress(hostAddress));
@@ -1197,6 +1207,7 @@
      * @hide
      * @deprecated Deprecated in favor of the {@link #requestNetwork} and
      *             {@link #bindProcessToNetwork} api.
+     * @removed
      */
     public boolean requestRouteToHostAddress(int networkType, InetAddress hostAddress) {
         try {
@@ -2057,7 +2068,7 @@
          * changes capabilities but still satisfies the stated need.
          *
          * @param network The {@link Network} whose capabilities have changed.
-         * @param networkCapabilities The new {@link NetworkCapabilities} for this network.
+         * @param networkCapabilities The new {@link android.net.NetworkCapabilities} for this network.
          */
         public void onCapabilitiesChanged(Network network,
                 NetworkCapabilities networkCapabilities) {}
@@ -2299,7 +2310,7 @@
     }
 
     /**
-     * Request a network to satisfy a set of {@link NetworkCapabilities}.
+     * Request a network to satisfy a set of {@link android.net.NetworkCapabilities}.
      *
      * This {@link NetworkRequest} will live until released via
      * {@link #unregisterNetworkCallback} or the calling application exits.
@@ -2318,7 +2329,7 @@
     }
 
     /**
-     * Request a network to satisfy a set of {@link NetworkCapabilities}, limited
+     * Request a network to satisfy a set of {@link android.net.NetworkCapabilities}, limited
      * by a timeout.
      *
      * This function behaves identically to the non-timedout version, but if a suitable
@@ -2365,7 +2376,7 @@
 
 
     /**
-     * Request a network to satisfy a set of {@link NetworkCapabilities}.
+     * Request a network to satisfy a set of {@link android.net.NetworkCapabilities}.
      *
      * This function behaves identically to the version that takes a NetworkCallback, but instead
      * of {@link NetworkCallback} a {@link PendingIntent} is used.  This means
diff --git a/core/java/android/os/FileUtils.java b/core/java/android/os/FileUtils.java
index b302f95..931cd3e 100644
--- a/core/java/android/os/FileUtils.java
+++ b/core/java/android/os/FileUtils.java
@@ -16,11 +16,13 @@
 
 package android.os;
 
+import android.provider.DocumentsContract.Document;
 import android.system.ErrnoException;
 import android.system.Os;
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.Slog;
+import android.webkit.MimeTypeMap;
 
 import java.io.BufferedInputStream;
 import java.io.ByteArrayOutputStream;
@@ -34,6 +36,7 @@
 import java.io.InputStream;
 import java.util.Arrays;
 import java.util.Comparator;
+import java.util.Objects;
 import java.util.regex.Pattern;
 import java.util.zip.CRC32;
 import java.util.zip.CheckedInputStream;
@@ -533,4 +536,76 @@
         }
         return null;
     }
+
+    /**
+     * Generates a unique file name under the given parent directory. If the display name doesn't
+     * have an extension that matches the requested MIME type, the default extension for that MIME
+     * type is appended. If a file already exists, the name is appended with a numerical value to
+     * make it unique.
+     *
+     * For example, the display name 'example' with 'text/plain' MIME might produce
+     * 'example.txt' or 'example (1).txt', etc.
+     *
+     * @throws FileNotFoundException
+     */
+    public static File buildUniqueFile(File parent, String mimeType, String displayName)
+            throws FileNotFoundException {
+        String name;
+        String ext;
+
+        if (Document.MIME_TYPE_DIR.equals(mimeType)) {
+            name = displayName;
+            ext = null;
+        } else {
+            String mimeTypeFromExt;
+
+            // Extract requested extension from display name
+            final int lastDot = displayName.lastIndexOf('.');
+            if (lastDot >= 0) {
+                name = displayName.substring(0, lastDot);
+                ext = displayName.substring(lastDot + 1);
+                mimeTypeFromExt = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
+                        ext.toLowerCase());
+            } else {
+                name = displayName;
+                ext = null;
+                mimeTypeFromExt = null;
+            }
+
+            if (mimeTypeFromExt == null) {
+                mimeTypeFromExt = "application/octet-stream";
+            }
+
+            final String extFromMimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType(
+                    mimeType);
+            if (Objects.equals(mimeType, mimeTypeFromExt) || Objects.equals(ext, extFromMimeType)) {
+                // Extension maps back to requested MIME type; allow it
+            } else {
+                // No match; insist that create file matches requested MIME
+                name = displayName;
+                ext = extFromMimeType;
+            }
+        }
+
+        File file = buildFile(parent, name, ext);
+
+        // If conflicting file, try adding counter suffix
+        int n = 0;
+        while (file.exists()) {
+            if (n++ >= 32) {
+                throw new FileNotFoundException("Failed to create unique file");
+            }
+            file = buildFile(parent, name + " (" + n + ")", ext);
+        }
+
+        return file;
+    }
+
+    private static File buildFile(File parent, String name, String ext) {
+        if (TextUtils.isEmpty(ext)) {
+            return new File(parent, name);
+        } else {
+            return new File(parent, name + "." + ext);
+        }
+    }
 }
diff --git a/core/java/android/os/storage/DiskInfo.java b/core/java/android/os/storage/DiskInfo.java
index 64f2a05..9623695 100644
--- a/core/java/android/os/storage/DiskInfo.java
+++ b/core/java/android/os/storage/DiskInfo.java
@@ -36,7 +36,10 @@
  * @hide
  */
 public class DiskInfo implements Parcelable {
-    public static final String EXTRA_DISK_ID = "android.os.storage.extra.DISK_ID";
+    public static final String ACTION_DISK_SCANNED =
+            "android.os.storage.action.DISK_SCANNED";
+    public static final String EXTRA_DISK_ID =
+            "android.os.storage.extra.DISK_ID";
 
     public static final int FLAG_ADOPTABLE = 1 << 0;
     public static final int FLAG_DEFAULT_PRIMARY = 1 << 1;
@@ -96,6 +99,14 @@
         }
     }
 
+    public boolean isAdoptable() {
+        return (flags & FLAG_ADOPTABLE) != 0;
+    }
+
+    public boolean isDefaultPrimary() {
+        return (flags & FLAG_DEFAULT_PRIMARY) != 0;
+    }
+
     public boolean isSd() {
         return (flags & FLAG_SD) != 0;
     }
@@ -104,10 +115,6 @@
         return (flags & FLAG_USB) != 0;
     }
 
-    public boolean isAdoptable() {
-        return (flags & FLAG_ADOPTABLE) != 0;
-    }
-
     @Override
     public String toString() {
         final CharArrayWriter writer = new CharArrayWriter();
diff --git a/core/java/android/os/storage/IMountService.java b/core/java/android/os/storage/IMountService.java
index 0a8187e..0b1031c 100644
--- a/core/java/android/os/storage/IMountService.java
+++ b/core/java/android/os/storage/IMountService.java
@@ -1063,6 +1063,38 @@
                     _data.recycle();
                 }
             }
+
+            @Override
+            public String getPrimaryStorageUuid() throws RemoteException {
+                Parcel _data = Parcel.obtain();
+                Parcel _reply = Parcel.obtain();
+                String _result;
+                try {
+                    _data.writeInterfaceToken(DESCRIPTOR);
+                    mRemote.transact(Stub.TRANSACTION_getPrimaryStorageUuid, _data, _reply, 0);
+                    _reply.readException();
+                    _result = _reply.readString();
+                } finally {
+                    _reply.recycle();
+                    _data.recycle();
+                }
+                return _result;
+            }
+
+            @Override
+            public void setPrimaryStorageUuid(String volumeUuid) throws RemoteException {
+                Parcel _data = Parcel.obtain();
+                Parcel _reply = Parcel.obtain();
+                try {
+                    _data.writeInterfaceToken(DESCRIPTOR);
+                    _data.writeString(volumeUuid);
+                    mRemote.transact(Stub.TRANSACTION_setPrimaryStorageUuid, _data, _reply, 0);
+                    _reply.readException();
+                } finally {
+                    _reply.recycle();
+                    _data.recycle();
+                }
+            }
         }
 
         private static final String DESCRIPTOR = "IMountService";
@@ -1169,6 +1201,9 @@
         static final int TRANSACTION_setVolumeNickname = IBinder.FIRST_CALL_TRANSACTION + 52;
         static final int TRANSACTION_setVolumeUserFlags = IBinder.FIRST_CALL_TRANSACTION + 53;
 
+        static final int TRANSACTION_getPrimaryStorageUuid = IBinder.FIRST_CALL_TRANSACTION + 54;
+        static final int TRANSACTION_setPrimaryStorageUuid = IBinder.FIRST_CALL_TRANSACTION + 55;
+
         /**
          * Cast an IBinder object into an IMountService interface, generating a
          * proxy if needed.
@@ -1669,6 +1704,20 @@
                     reply.writeNoException();
                     return true;
                 }
+                case TRANSACTION_getPrimaryStorageUuid: {
+                    data.enforceInterface(DESCRIPTOR);
+                    String volumeUuid = getPrimaryStorageUuid();
+                    reply.writeNoException();
+                    reply.writeString(volumeUuid);
+                    return true;
+                }
+                case TRANSACTION_setPrimaryStorageUuid: {
+                    data.enforceInterface(DESCRIPTOR);
+                    String volumeUuid = data.readString();
+                    setPrimaryStorageUuid(volumeUuid);
+                    reply.writeNoException();
+                    return true;
+                }
             }
             return super.onTransact(code, data, reply, flags);
         }
@@ -1969,4 +2018,7 @@
 
     public void setVolumeNickname(String volId, String nickname) throws RemoteException;
     public void setVolumeUserFlags(String volId, int flags, int mask) throws RemoteException;
+
+    public String getPrimaryStorageUuid() throws RemoteException;
+    public void setPrimaryStorageUuid(String volumeUuid) throws RemoteException;
 }
diff --git a/core/java/android/os/storage/IMountServiceListener.java b/core/java/android/os/storage/IMountServiceListener.java
index 8e878a4..fcb4779 100644
--- a/core/java/android/os/storage/IMountServiceListener.java
+++ b/core/java/android/os/storage/IMountServiceListener.java
@@ -98,10 +98,11 @@
                     reply.writeNoException();
                     return true;
                 }
-                case TRANSACTION_onDiskUnsupported: {
+                case TRANSACTION_onDiskScanned: {
                     data.enforceInterface(DESCRIPTOR);
                     final DiskInfo disk = (DiskInfo) data.readParcelable(null);
-                    onDiskUnsupported(disk);
+                    final int volumeCount = data.readInt();
+                    onDiskScanned(disk, volumeCount);
                     reply.writeNoException();
                     return true;
                 }
@@ -207,13 +208,14 @@
             }
 
             @Override
-            public void onDiskUnsupported(DiskInfo disk) throws RemoteException {
+            public void onDiskScanned(DiskInfo disk, int volumeCount) throws RemoteException {
                 Parcel _data = Parcel.obtain();
                 Parcel _reply = Parcel.obtain();
                 try {
                     _data.writeInterfaceToken(DESCRIPTOR);
                     _data.writeParcelable(disk, 0);
-                    mRemote.transact(Stub.TRANSACTION_onDiskUnsupported, _data, _reply,
+                    _data.writeInt(volumeCount);
+                    mRemote.transact(Stub.TRANSACTION_onDiskScanned, _data, _reply,
                             android.os.IBinder.FLAG_ONEWAY);
                     _reply.readException();
                 } finally {
@@ -224,12 +226,10 @@
         }
 
         static final int TRANSACTION_onUsbMassStorageConnectionChanged = (IBinder.FIRST_CALL_TRANSACTION + 0);
-
         static final int TRANSACTION_onStorageStateChanged = (IBinder.FIRST_CALL_TRANSACTION + 1);
-
         static final int TRANSACTION_onVolumeStateChanged = (IBinder.FIRST_CALL_TRANSACTION + 2);
         static final int TRANSACTION_onVolumeMetadataChanged = (IBinder.FIRST_CALL_TRANSACTION + 3);
-        static final int TRANSACTION_onDiskUnsupported = (IBinder.FIRST_CALL_TRANSACTION + 4);
+        static final int TRANSACTION_onDiskScanned = (IBinder.FIRST_CALL_TRANSACTION + 4);
     }
 
     /**
@@ -255,5 +255,5 @@
 
     public void onVolumeMetadataChanged(VolumeInfo vol) throws RemoteException;
 
-    public void onDiskUnsupported(DiskInfo disk) throws RemoteException;
+    public void onDiskScanned(DiskInfo disk, int volumeCount) throws RemoteException;
 }
diff --git a/core/java/android/os/storage/StorageEventListener.java b/core/java/android/os/storage/StorageEventListener.java
index ad2fae0..6a0140e 100644
--- a/core/java/android/os/storage/StorageEventListener.java
+++ b/core/java/android/os/storage/StorageEventListener.java
@@ -44,6 +44,6 @@
     public void onVolumeMetadataChanged(VolumeInfo vol) {
     }
 
-    public void onDiskUnsupported(DiskInfo disk) {
+    public void onDiskScanned(DiskInfo disk, int volumeCount) {
     }
 }
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index f101352..747fb40 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -73,6 +73,11 @@
     public static final String PROP_FORCE_ADOPTABLE = "persist.fw.force_adoptable";
 
     /** {@hide} */
+    public static final String UUID_PRIVATE_INTERNAL = null;
+    /** {@hide} */
+    public static final String UUID_PRIMARY_PHYSICAL = "primary_physical";
+
+    /** {@hide} */
     public static final int FLAG_ALL_METADATA = 1 << 0;
 
     private final Context mContext;
@@ -89,7 +94,7 @@
         private static final int MSG_STORAGE_STATE_CHANGED = 1;
         private static final int MSG_VOLUME_STATE_CHANGED = 2;
         private static final int MSG_VOLUME_METADATA_CHANGED = 3;
-        private static final int MSG_DISK_UNSUPPORTED = 4;
+        private static final int MSG_DISK_SCANNED = 4;
 
         final StorageEventListener mCallback;
         final Handler mHandler;
@@ -116,8 +121,8 @@
                     mCallback.onVolumeMetadataChanged((VolumeInfo) args.arg1);
                     args.recycle();
                     return true;
-                case MSG_DISK_UNSUPPORTED:
-                    mCallback.onDiskUnsupported((DiskInfo) args.arg1);
+                case MSG_DISK_SCANNED:
+                    mCallback.onDiskScanned((DiskInfo) args.arg1, args.argi2);
                     args.recycle();
                     return true;
             }
@@ -156,10 +161,11 @@
         }
 
         @Override
-        public void onDiskUnsupported(DiskInfo disk) {
+        public void onDiskScanned(DiskInfo disk, int volumeCount) {
             final SomeArgs args = SomeArgs.obtain();
             args.arg1 = disk;
-            mHandler.obtainMessage(MSG_DISK_UNSUPPORTED, args).sendToTarget();
+            args.argi2 = volumeCount;
+            mHandler.obtainMessage(MSG_DISK_SCANNED, args).sendToTarget();
         }
     }
 
@@ -534,17 +540,26 @@
     /** {@hide} */
     public @Nullable String getBestVolumeDescription(VolumeInfo vol) {
         String descrip = vol.getDescription();
-
         if (vol.disk != null) {
             if (TextUtils.isEmpty(descrip)) {
                 descrip = vol.disk.getDescription();
             }
         }
-
         return descrip;
     }
 
     /** {@hide} */
+    public @Nullable VolumeInfo getPrimaryPhysicalVolume() {
+        final List<VolumeInfo> vols = getVolumes();
+        for (VolumeInfo vol : vols) {
+            if (vol.isPrimaryPhysical()) {
+                return vol;
+            }
+        }
+        return null;
+    }
+
+    /** {@hide} */
     public void mount(String volId) {
         try {
             mMountService.mount(volId);
@@ -628,6 +643,24 @@
     }
 
     /** {@hide} */
+    public String getPrimaryStorageUuid() {
+        try {
+            return mMountService.getPrimaryStorageUuid();
+        } catch (RemoteException e) {
+            throw e.rethrowAsRuntimeException();
+        }
+    }
+
+    /** {@hide} */
+    public void setPrimaryStorageUuid(String volumeUuid) {
+        try {
+            mMountService.setPrimaryStorageUuid(volumeUuid);
+        } catch (RemoteException e) {
+            throw e.rethrowAsRuntimeException();
+        }
+    }
+
+    /** {@hide} */
     public @Nullable StorageVolume getStorageVolume(File file) {
         return getStorageVolume(getVolumeList(), file);
     }
diff --git a/core/java/android/os/storage/VolumeInfo.java b/core/java/android/os/storage/VolumeInfo.java
index f3498d5..4e9cfc7 100644
--- a/core/java/android/os/storage/VolumeInfo.java
+++ b/core/java/android/os/storage/VolumeInfo.java
@@ -242,6 +242,10 @@
         return (mountFlags & MOUNT_FLAG_PRIMARY) != 0;
     }
 
+    public boolean isPrimaryPhysical() {
+        return isPrimary() && (getType() == TYPE_PUBLIC);
+    }
+
     public boolean isVisible() {
         return (mountFlags & MOUNT_FLAG_VISIBLE) != 0;
     }
diff --git a/core/java/android/provider/Browser.java b/core/java/android/provider/Browser.java
index 69a05c4..bae06b8 100644
--- a/core/java/android/provider/Browser.java
+++ b/core/java/android/provider/Browser.java
@@ -16,6 +16,7 @@
 
 package android.provider;
 
+import android.annotation.RequiresPermission;
 import android.content.ContentResolver;
 import android.content.ContentUris;
 import android.content.ContentValues;
@@ -32,6 +33,9 @@
 import android.util.Log;
 import android.webkit.WebIconDatabase;
 
+import static android.Manifest.permission.READ_HISTORY_BOOKMARKS;
+import static android.Manifest.permission.WRITE_HISTORY_BOOKMARKS;
+
 public class Browser {
     private static final String LOGTAG = "browser";
 
@@ -41,6 +45,8 @@
      * {@link android.Manifest.permission#READ_HISTORY_BOOKMARKS} permission and writing to it
      * requires the {@link android.Manifest.permission#WRITE_HISTORY_BOOKMARKS} permission.
      */
+    @RequiresPermission.Read(@RequiresPermission(READ_HISTORY_BOOKMARKS))
+    @RequiresPermission.Write(@RequiresPermission(WRITE_HISTORY_BOOKMARKS))
     public static final Uri BOOKMARKS_URI = Uri.parse("content://browser/bookmarks");
 
     /**
@@ -122,6 +128,8 @@
      * {@link android.Manifest.permission#READ_HISTORY_BOOKMARKS} permission and writing to it
      * requires the {@link android.Manifest.permission#WRITE_HISTORY_BOOKMARKS} permission.
      */
+    @RequiresPermission.Read(@RequiresPermission(READ_HISTORY_BOOKMARKS))
+    @RequiresPermission.Write(@RequiresPermission(WRITE_HISTORY_BOOKMARKS))
     public static final Uri SEARCHES_URI = Uri.parse("content://browser/searches");
 
     /**
@@ -233,6 +241,7 @@
      *
      *  @param cr   The ContentResolver used to access the database.
      */
+    @RequiresPermission(READ_HISTORY_BOOKMARKS)
     public static final Cursor getAllBookmarks(ContentResolver cr) throws
             IllegalStateException {
         return cr.query(Bookmarks.CONTENT_URI,
@@ -248,6 +257,7 @@
      *
      *  @param cr   The ContentResolver used to access the database.
      */
+    @RequiresPermission(READ_HISTORY_BOOKMARKS)
     public static final Cursor getAllVisitedUrls(ContentResolver cr) throws
             IllegalStateException {
         return cr.query(Combined.CONTENT_URI,
@@ -308,6 +318,7 @@
      *  @param real If true, this is an actual visit, and should add to the
      *              number of visits.  If false, the user entered it manually.
      */
+    @RequiresPermission(allOf = {READ_HISTORY_BOOKMARKS, WRITE_HISTORY_BOOKMARKS})
     public static final void updateVisitedHistory(ContentResolver cr,
                                                   String url, boolean real) {
         long now = System.currentTimeMillis();
@@ -358,6 +369,7 @@
      *  @param cr   The ContentResolver used to access the database.
      *  @hide pending API council approval
      */
+    @RequiresPermission(READ_HISTORY_BOOKMARKS)
     public static final String[] getVisitedHistory(ContentResolver cr) {
         Cursor c = null;
         String[] str = null;
@@ -393,6 +405,7 @@
      *
      * @param cr The ContentResolver used to access the database.
      */
+    @RequiresPermission(allOf = {READ_HISTORY_BOOKMARKS, WRITE_HISTORY_BOOKMARKS})
     public static final void truncateHistory(ContentResolver cr) {
         // TODO make a single request to the provider to do this in a single transaction
         Cursor cursor = null;
@@ -424,6 +437,7 @@
      * @param cr   The ContentResolver used to access the database.
      * @return boolean  True if the history can be cleared.
      */
+    @RequiresPermission(READ_HISTORY_BOOKMARKS)
     public static final boolean canClearHistory(ContentResolver cr) {
         Cursor cursor = null;
         boolean ret = false;
@@ -446,6 +460,7 @@
      *  Requires {@link android.Manifest.permission#WRITE_HISTORY_BOOKMARKS}
      *  @param cr   The ContentResolver used to access the database.
      */
+    @RequiresPermission(WRITE_HISTORY_BOOKMARKS)
     public static final void clearHistory(ContentResolver cr) {
         deleteHistoryWhere(cr, null);
     }
@@ -461,6 +476,7 @@
      * @param whereClause   String to limit the items affected.
      *                      null means all items.
      */
+    @RequiresPermission(allOf = {READ_HISTORY_BOOKMARKS, WRITE_HISTORY_BOOKMARKS})
     private static final void deleteHistoryWhere(ContentResolver cr, String whereClause) {
         Cursor cursor = null;
         try {
@@ -486,6 +502,7 @@
      * @param end   Last date to remove. If -1, all dates after begin.
      *              Non-inclusive.
      */
+    @RequiresPermission(WRITE_HISTORY_BOOKMARKS)
     public static final void deleteHistoryTimeFrame(ContentResolver cr,
             long begin, long end) {
         String whereClause;
@@ -511,6 +528,7 @@
      * @param cr    The ContentResolver used to access the database.
      * @param url   url to remove.
      */
+    @RequiresPermission(WRITE_HISTORY_BOOKMARKS)
     public static final void deleteFromHistory(ContentResolver cr,
                                                String url) {
         cr.delete(History.CONTENT_URI, History.URL + "=?", new String[] { url });
@@ -523,6 +541,7 @@
      * @param cr   The ContentResolver used to access the database.
      * @param search    The string to add to the searches database.
      */
+    @RequiresPermission(allOf = {READ_HISTORY_BOOKMARKS, WRITE_HISTORY_BOOKMARKS})
     public static final void addSearchUrl(ContentResolver cr, String search) {
         // The content provider will take care of updating existing searches instead of duplicating
         ContentValues values = new ContentValues();
@@ -536,6 +555,7 @@
      *  Requires {@link android.Manifest.permission#WRITE_HISTORY_BOOKMARKS}
      * @param cr   The ContentResolver used to access the database.
      */
+    @RequiresPermission(WRITE_HISTORY_BOOKMARKS)
     public static final void clearSearches(ContentResolver cr) {
         // FIXME: Should this clear the urls to which these searches lead?
         // (i.e. remove google.com/query= blah blah blah)
@@ -557,6 +577,7 @@
      *  @param  listener IconListener that gets the icons once they are
      *          retrieved.
      */
+    @RequiresPermission(READ_HISTORY_BOOKMARKS)
     public static final void requestAllIcons(ContentResolver cr, String where,
             WebIconDatabase.IconListener listener) {
         // Do nothing: this is no longer used.
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index a622a21..00c851b 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -189,6 +189,36 @@
             "android.settings.USAGE_ACCESS_SETTINGS";
 
     /**
+     * Activity Category: Show application settings related to usage access.
+     * <p>
+     * An activity that provides a user interface for adjusting usage access related
+     * preferences for its containing application. Optional but recommended for apps that
+     * use {@link android.Manifest.permission#PACKAGE_USAGE_STATS}.
+     * <p>
+     * The activity may define meta-data to describe what usage access is
+     * used for within their app with {@link #METADATA_USAGE_ACCESS_REASON}, which
+     * will be displayed in Settings.
+     * <p>
+     * Input: Nothing.
+     * <p>
+     * Output: Nothing.
+     */
+    @SdkConstant(SdkConstantType.INTENT_CATEGORY)
+    public static final String INTENT_CATEGORY_USAGE_ACCESS_CONFIG =
+            "android.intent.category.USAGE_ACCESS_CONFIG";
+
+    /**
+     * Metadata key: Reason for needing usage access.
+     * <p>
+     * A key for metadata attached to an activity that receives action
+     * {@link #INTENT_CATEGORY_USAGE_ACCESS_CONFIG}, shown to the
+     * user as description of how the app uses usage access.
+     * <p>
+     */
+    public static final String METADATA_USAGE_ACCESS_REASON =
+            "android.settings.metadata.USAGE_ACCESS_REASON";
+
+    /**
      * Activity Action: Show settings to allow configuration of security and
      * location privacy.
      * <p>
@@ -5361,6 +5391,12 @@
         public static final String SMS_DEFAULT_APPLICATION = "sms_default_application";
 
         /**
+         * Specifies the package name currently configured to be the default dialer application
+         * @hide
+         */
+        public static final String DIALER_DEFAULT_APPLICATION = "dialer_default_application";
+
+        /**
          * Specifies the package name currently configured to be the emergency assistance application
          *
          * @see android.telephony.TelephonyManager#ACTION_EMERGENCY_ASSISTANCE
diff --git a/core/java/android/service/chooser/ChooserTarget.java b/core/java/android/service/chooser/ChooserTarget.java
index d21cc3c..f0ca276 100644
--- a/core/java/android/service/chooser/ChooserTarget.java
+++ b/core/java/android/service/chooser/ChooserTarget.java
@@ -78,7 +78,8 @@
      * <p>The creator of a target may supply a ranking score. This score is assumed to be relative
      * to the other targets supplied by the same
      * {@link ChooserTargetService#onGetChooserTargets(ComponentName, IntentFilter) query}.
-     * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).</p>
+     * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).
+     * Scores for a set of targets do not need to sum to 1.</p>
      *
      * <p>Before being sent, the PendingIntent supplied will be
      * {@link Intent#fillIn(Intent, int) filled in} by the Intent originally supplied
@@ -113,7 +114,8 @@
      * <p>The creator of a target may supply a ranking score. This score is assumed to be relative
      * to the other targets supplied by the same
      * {@link ChooserTargetService#onGetChooserTargets(ComponentName, IntentFilter) query}.
-     * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).</p>
+     * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).
+     * Scores for a set of targets do not need to sum to 1.</p>
      *
      * <p>Before being sent, the IntentSender supplied will be
      * {@link Intent#fillIn(Intent, int) filled in} by the Intent originally supplied
@@ -144,6 +146,32 @@
         mIntentSender = intentSender;
     }
 
+    /**
+     * Construct a deep link target for presentation by a chooser UI.
+     *
+     * <p>A target is composed of a title and an icon for presentation to the user.
+     * The UI presenting this target may truncate the title if it is too long to be presented
+     * in the available space, as well as crop, resize or overlay the supplied icon.</p>
+     *
+     * <p>The creator of a target may supply a ranking score. This score is assumed to be relative
+     * to the other targets supplied by the same
+     * {@link ChooserTargetService#onGetChooserTargets(ComponentName, IntentFilter) query}.
+     * Scores should be in the range from 0.0f (unlikely match) to 1.0f (very relevant match).
+     * Scores for a set of targets do not need to sum to 1.</p>
+     *
+     * <p>Before being sent, the Intent supplied will be
+     * {@link Intent#fillIn(Intent, int) filled in} by the Intent originally supplied
+     * to the chooser.</p>
+     *
+     * <p>Take care not to place custom {@link android.os.Parcelable} types into
+     * the Intent as extras, as the system will not be able to unparcel it to merge
+     * additional extras.</p>
+     *
+     * @param title title of this target that will be shown to a user
+     * @param icon icon to represent this target
+     * @param score ranking score for this target between 0.0f and 1.0f, inclusive
+     * @param intent Intent to fill in and send if the user chooses this target
+     */
     public ChooserTarget(CharSequence title, Bitmap icon, float score, Intent intent) {
         mTitle = title;
         mIcon = icon;
@@ -358,6 +386,10 @@
         }
         dest.writeFloat(mScore);
         IntentSender.writeIntentSenderOrNullToParcel(mIntentSender, dest);
+        dest.writeInt(mIntent != null ? 1 : 0);
+        if (mIntent != null) {
+            mIntent.writeToParcel(dest, 0);
+        }
     }
 
     public static final Creator<ChooserTarget> CREATOR
diff --git a/core/java/android/view/ScaleGestureDetector.java b/core/java/android/view/ScaleGestureDetector.java
index 6544c73..b055efe 100644
--- a/core/java/android/view/ScaleGestureDetector.java
+++ b/core/java/android/view/ScaleGestureDetector.java
@@ -212,9 +212,14 @@
         mMinSpan = res.getDimensionPixelSize(com.android.internal.R.dimen.config_minScalingSpan);
         mHandler = handler;
         // Quick scale is enabled by default after JB_MR2
-        if (context.getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.JELLY_BEAN_MR2) {
+        final int targetSdkVersion = context.getApplicationInfo().targetSdkVersion;
+        if (targetSdkVersion > Build.VERSION_CODES.JELLY_BEAN_MR2) {
             setQuickScaleEnabled(true);
         }
+        // Stylus scale is enabled by default after LOLLIPOP_MR1
+        if (targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1) {
+            setStylusScaleEnabled(true);
+        }
     }
 
     /**
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 9741239..5c6ce76 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -631,6 +631,7 @@
  * </p>
  *
  * @attr ref android.R.styleable#View_alpha
+ * @attr ref android.R.styleable#View_assistBlocked
  * @attr ref android.R.styleable#View_background
  * @attr ref android.R.styleable#View_clickable
  * @attr ref android.R.styleable#View_contentDescription
@@ -2324,6 +2325,10 @@
      *                               1   PFLAG3_IS_LAID_OUT
      *                              1    PFLAG3_MEASURE_NEEDED_BEFORE_LAYOUT
      *                             1     PFLAG3_CALLED_SUPER
+     *                            1      PFLAG3_APPLYING_INSETS
+     *                           1       PFLAG3_FITTING_SYSTEM_WINDOWS
+     *                          1        PFLAG3_NESTED_SCROLLING_ENABLED
+     *                         1         PFLAG3_ASSIST_BLOCKED
      * |-------|-------|-------|-------|
      */
 
@@ -2381,6 +2386,12 @@
     static final int DRAG_MASK = PFLAG2_DRAG_CAN_ACCEPT | PFLAG2_DRAG_HOVERED;
 
     /**
+     * <p>Indicates that we are allowing {@link android.view.ViewAssistStructure} to traverse
+     * into this view.<p>
+     */
+    static final int PFLAG3_ASSIST_BLOCKED = 0x100;
+
+    /**
      * Always allow a user to over-scroll this view, provided it is a
      * view that can scroll.
      *
@@ -3869,6 +3880,11 @@
                         viewFlagMasks |= SAVE_DISABLED_MASK;
                     }
                     break;
+                case com.android.internal.R.styleable.View_assistBlocked:
+                    if (a.getBoolean(attr, false)) {
+                        mPrivateFlags3 |= PFLAG3_ASSIST_BLOCKED;
+                    }
+                    break;
                 case com.android.internal.R.styleable.View_duplicateParentState:
                     if (a.getBoolean(attr, false)) {
                         viewFlagValues |= DUPLICATE_PARENT_STATE;
@@ -5775,7 +5791,7 @@
         } else {
             structure.setId(id, null, null, null);
         }
-        structure.setDimens(mLeft, mTop, mScrollX, mScrollY, mRight-mLeft, mBottom-mTop);
+        structure.setDimens(mLeft, mTop, mScrollX, mScrollY, mRight - mLeft, mBottom - mTop);
         structure.setVisibility(getVisibility());
         structure.setEnabled(isEnabled());
         if (isClickable()) {
@@ -5890,8 +5906,13 @@
      * {@link #onProvideVirtualAssistStructure}.
      */
     public void dispatchProvideAssistStructure(ViewAssistStructure structure) {
-        onProvideAssistStructure(structure);
-        onProvideVirtualAssistStructure(structure);
+        if (!isAssistBlocked()) {
+            onProvideAssistStructure(structure);
+            onProvideVirtualAssistStructure(structure);
+        } else {
+            structure.setClassName(getAccessibilityClassName().toString());
+            structure.setAssistBlocked(true);
+        }
     }
 
     /**
@@ -7458,6 +7479,42 @@
     }
 
     /**
+     * Indicates whether this view will participate in data collection through
+     * {@link android.view.ViewAssistStructure}.  If true, it will not provide any data
+     * for itself or its children.  If false, the normal data collection will be allowed.
+     *
+     * @return Returns false if assist data collection is not blocked, else true.
+     *
+     * @see #setAssistBlocked(boolean)
+     * @attr ref android.R.styleable#View_assistBlocked
+     */
+    public boolean isAssistBlocked() {
+        return (mPrivateFlags3 & PFLAG3_ASSIST_BLOCKED) != 0;
+    }
+
+    /**
+     * Controls whether assist data collection from this view and its children is enabled
+     * (that is, whether {@link #onProvideAssistStructure} and
+     * {@link #onProvideVirtualAssistStructure} will be called).  The default value is false,
+     * allowing normal assist collection.  Setting this to false will disable assist collection.
+     *
+     * @param enabled Set to true to <em>disable</em> assist data collection, or false
+     * (the default) to allow it.
+     *
+     * @see #isAssistBlocked()
+     * @see #onProvideAssistStructure
+     * @see #onProvideVirtualAssistStructure
+     * @attr ref android.R.styleable#View_assistBlocked
+     */
+    public void setAssistBlocked(boolean enabled) {
+        if (enabled) {
+            mPrivateFlags3 |= PFLAG3_ASSIST_BLOCKED;
+        } else {
+            mPrivateFlags3 &= ~PFLAG3_ASSIST_BLOCKED;
+        }
+    }
+
+    /**
      * Indicates whether this view will save its state (that is,
      * whether its {@link #onSaveInstanceState} method will be called).
      *
diff --git a/core/java/android/view/ViewAssistStructure.java b/core/java/android/view/ViewAssistStructure.java
index 7d263c5..346b8ec 100644
--- a/core/java/android/view/ViewAssistStructure.java
+++ b/core/java/android/view/ViewAssistStructure.java
@@ -32,6 +32,8 @@
 
     public abstract void setVisibility(int visibility);
 
+    public abstract void setAssistBlocked(boolean state);
+
     public abstract void setEnabled(boolean state);
 
     public abstract void setClickable(boolean state);
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 8f2be99..4324e75 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -2881,21 +2881,23 @@
      */
     public void dispatchProvideAssistStructure(ViewAssistStructure structure) {
         super.dispatchProvideAssistStructure(structure);
-        if (structure.getChildCount() == 0) {
-            final int childrenCount = getChildCount();
-            if (childrenCount > 0) {
-                structure.setChildCount(childrenCount);
-                final ArrayList<View> preorderedList = buildOrderedChildList();
-                final boolean customOrder = preorderedList == null
-                        && isChildrenDrawingOrderEnabled();
-                final View[] children = mChildren;
-                for (int i=0; i<childrenCount; i++) {
-                    final int childIndex = customOrder
-                            ? getChildDrawingOrder(childrenCount, i) : i;
-                    final View child = (preorderedList == null)
-                            ? children[childIndex] : preorderedList.get(childIndex);
-                    ViewAssistStructure cstructure = structure.newChild(i);
-                    child.dispatchProvideAssistStructure(cstructure);
+        if (!isAssistBlocked()) {
+            if (structure.getChildCount() == 0) {
+                final int childrenCount = getChildCount();
+                if (childrenCount > 0) {
+                    structure.setChildCount(childrenCount);
+                    final ArrayList<View> preorderedList = buildOrderedChildList();
+                    final boolean customOrder = preorderedList == null
+                            && isChildrenDrawingOrderEnabled();
+                    final View[] children = mChildren;
+                    for (int i=0; i<childrenCount; i++) {
+                        final int childIndex = customOrder
+                                ? getChildDrawingOrder(childrenCount, i) : i;
+                        final View child = (preorderedList == null)
+                                ? children[childIndex] : preorderedList.get(childIndex);
+                        ViewAssistStructure cstructure = structure.newChild(i);
+                        child.dispatchProvideAssistStructure(cstructure);
+                    }
                 }
             }
         }
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index 943beb0..453e4f5 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -900,7 +900,9 @@
      * and therefore secure policy, this setting should be disabled.
      * Note that this setting affects only JavaScript access to file scheme
      * resources. Other access to such resources, for example, from image HTML
-     * elements, is unaffected.
+     * elements, is unaffected. To prevent possible violation of same domain policy
+     * on {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} and earlier
+     * devices, you should explicitly set this value to {@code false}.
      * <p>
      * The default value is true for API level
      * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below,
@@ -920,7 +922,9 @@
      * the value of {@link #getAllowUniversalAccessFromFileURLs} is true.
      * Note too, that this setting affects only JavaScript access to file scheme
      * resources. Other access to such resources, for example, from image HTML
-     * elements, is unaffected.
+     * elements, is unaffected. To prevent possible violation of same domain policy
+     * on {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH} and earlier
+     * devices, you should explicitly set this value to {@code false}.
      * <p>
      * The default value is true for API level
      * {@link android.os.Build.VERSION_CODES#ICE_CREAM_SANDWICH_MR1} and below,
diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java
index 3340c73..9782d72 100644
--- a/core/java/android/webkit/WebViewFactory.java
+++ b/core/java/android/webkit/WebViewFactory.java
@@ -76,6 +76,18 @@
     private static boolean sAddressSpaceReserved = false;
     private static PackageInfo sPackageInfo;
 
+    // Error codes for loadWebViewNativeLibraryFromPackage
+    public static final int LIBLOAD_SUCCESS = 0;
+    public static final int LIBLOAD_WRONG_PACKAGE_NAME = 1;
+    public static final int LIBLOAD_ADDRESS_SPACE_NOT_RESERVED = 2;
+    public static final int LIBLOAD_FAILED_WAITING_FOR_RELRO = 3;
+    public static final int LIBLOAD_FAILED_LISTING_WEBVIEW_PACKAGES = 4;
+
+    // native relro loading error codes
+    public static final int LIBLOAD_FAILED_TO_OPEN_RELRO_FILE = 5;
+    public static final int LIBLOAD_FAILED_TO_LOAD_LIBRARY = 6;
+    public static final int LIBLOAD_FAILED_JNI_CALL = 7;
+
     private static class MissingWebViewPackageException extends AndroidRuntimeException {
         public MissingWebViewPackageException(String message) { super(message); }
         public MissingWebViewPackageException(Exception e) { super(e); }
@@ -136,6 +148,18 @@
         return sPackageInfo;
     }
 
+    /**
+     * Load the native library for the given package name iff that package
+     * name is the same as the one providing the current webview.
+     */
+    public static int loadWebViewNativeLibraryFromPackage(String packageName) {
+        sPackageInfo = findPreferredWebViewPackage();
+        if (packageName != null && packageName.equals(sPackageInfo.packageName)) {
+            return loadNativeLibrary();
+        }
+        return LIBLOAD_WRONG_PACKAGE_NAME;
+    }
+
     static WebViewFactoryProvider getProvider() {
         synchronized (sProviderLock) {
             // For now the main purpose of this function (and the factory abstraction) is to keep
@@ -434,32 +458,34 @@
         }
     }
 
-    private static void loadNativeLibrary() {
+    private static int loadNativeLibrary() {
         if (!sAddressSpaceReserved) {
             Log.e(LOGTAG, "can't load with relro file; address space not reserved");
-            return;
+            return LIBLOAD_ADDRESS_SPACE_NOT_RESERVED;
         }
 
         try {
             getUpdateService().waitForRelroCreationCompleted(VMRuntime.getRuntime().is64Bit());
         } catch (RemoteException e) {
             Log.e(LOGTAG, "error waiting for relro creation, proceeding without", e);
-            return;
+            return LIBLOAD_FAILED_WAITING_FOR_RELRO;
         }
 
         try {
             String[] args = getWebViewNativeLibraryPaths();
-            boolean result = nativeLoadWithRelroFile(args[0] /* path32 */,
+            int result = nativeLoadWithRelroFile(args[0] /* path32 */,
                                                      args[1] /* path64 */,
                                                      CHROMIUM_WEBVIEW_NATIVE_RELRO_32,
                                                      CHROMIUM_WEBVIEW_NATIVE_RELRO_64);
-            if (!result) {
+            if (result != LIBLOAD_SUCCESS) {
                 Log.w(LOGTAG, "failed to load with relro file, proceeding without");
             } else if (DEBUG) {
                 Log.v(LOGTAG, "loaded with relro file");
             }
+            return result;
         } catch (MissingWebViewPackageException e) {
             Log.e(LOGTAG, "Failed to list WebView package libraries for loadNativeLibrary", e);
+            return LIBLOAD_FAILED_LISTING_WEBVIEW_PACKAGES;
         }
     }
 
@@ -470,6 +496,6 @@
     private static native boolean nativeReserveAddressSpace(long addressSpaceToReserve);
     private static native boolean nativeCreateRelroFile(String lib32, String lib64,
                                                         String relro32, String relro64);
-    private static native boolean nativeLoadWithRelroFile(String lib32, String lib64,
+    private static native int nativeLoadWithRelroFile(String lib32, String lib64,
                                                           String relro32, String relro64);
 }
diff --git a/core/java/android/widget/DayPickerView.java b/core/java/android/widget/DayPickerView.java
index c6b4d7e..113e597 100644
--- a/core/java/android/widget/DayPickerView.java
+++ b/core/java/android/widget/DayPickerView.java
@@ -196,9 +196,23 @@
     }
 
     @Override
+    public void onRtlPropertiesChanged(@ResolvedLayoutDir int layoutDirection) {
+        super.onRtlPropertiesChanged(layoutDirection);
+
+        requestLayout();
+    }
+
+    @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
-        final ImageButton leftButton = mPrevButton;
-        final ImageButton rightButton = mNextButton;
+        final ImageButton leftButton;
+        final ImageButton rightButton;
+        if (isLayoutRtl()) {
+            leftButton = mNextButton;
+            rightButton = mPrevButton;
+        } else {
+            leftButton = mPrevButton;
+            rightButton = mNextButton;
+        }
 
         final int width = right - left;
         final int height = bottom - top;
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 7d3a41e..652fff2 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -1957,6 +1957,9 @@
         if (mPositionListener != null) {
             mPositionListener.onScrollChanged();
         }
+        if (mSelectionActionMode != null) {
+            mSelectionActionMode.invalidateContentRect();
+        }
     }
 
     /**
@@ -3079,10 +3082,18 @@
                                 MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
             }
 
-            menu.add(0, TextView.ID_SELECT_ALL, 0, com.android.internal.R.string.selectAll).
-                    setAlphabeticShortcut('a').
-                    setShowAsAction(
-                            MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+            if (mTextView.canShare()) {
+                menu.add(0, TextView.ID_SHARE, 0, com.android.internal.R.string.share).
+                        setShowAsAction(
+                                MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+            }
+
+            if (canSelectText() && !hasPasswordTransformationMethod()) {
+                menu.add(0, TextView.ID_SELECT_ALL, 0, com.android.internal.R.string.selectAll).
+                        setAlphabeticShortcut('a').
+                        setShowAsAction(
+                                MenuItem.SHOW_AS_ACTION_ALWAYS | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+            }
 
             updateReplaceItem(menu);
         }
@@ -4045,9 +4056,9 @@
                 positionCursor = true;
             } else if (offset + mTouchWordOffset < mPreviousOffset) {
                 // User is shrinking the selection.
-                if (currLine > mPrevLine) {
+                if (currLine < mPrevLine) {
                     // We're on a different line, so we'll snap to word boundaries.
-                    offset = getWordStart(offset);
+                    offset = start;
                 }
                 offset += mTouchWordOffset;
                 positionCursor = true;
diff --git a/core/java/android/widget/GridView.java b/core/java/android/widget/GridView.java
index 9ecdc9c..c959774 100644
--- a/core/java/android/widget/GridView.java
+++ b/core/java/android/widget/GridView.java
@@ -1854,20 +1854,19 @@
                     moved = true;
                 }
                 break;
-            case FOCUS_LEFT:
-                if (selectedPosition > startOfRowPos) {
-                    mLayoutMode = LAYOUT_MOVE_SELECTION;
-                    setSelectionInt(Math.max(0, selectedPosition - 1));
-                    moved = true;
-                }
-                break;
-            case FOCUS_RIGHT:
-                if (selectedPosition < endOfRowPos) {
-                    mLayoutMode = LAYOUT_MOVE_SELECTION;
-                    setSelectionInt(Math.min(selectedPosition + 1, mItemCount - 1));
-                    moved = true;
-                }
-                break;
+        }
+
+        final boolean isLayoutRtl = isLayoutRtl();
+        if (selectedPosition > startOfRowPos && ((direction == FOCUS_LEFT && !isLayoutRtl) ||
+                (direction == FOCUS_RIGHT && isLayoutRtl))) {
+            mLayoutMode = LAYOUT_MOVE_SELECTION;
+            setSelectionInt(Math.max(0, selectedPosition - 1));
+            moved = true;
+        } else if (selectedPosition < endOfRowPos && ((direction == FOCUS_LEFT && isLayoutRtl) ||
+                (direction == FOCUS_RIGHT && !isLayoutRtl))) {
+            mLayoutMode = LAYOUT_MOVE_SELECTION;
+            setSelectionInt(Math.min(selectedPosition + 1, mItemCount - 1));
+            moved = true;
         }
 
         if (moved) {
diff --git a/core/java/android/widget/SimpleMonthView.java b/core/java/android/widget/SimpleMonthView.java
index 0249c22..2778f0f 100644
--- a/core/java/android/widget/SimpleMonthView.java
+++ b/core/java/android/widget/SimpleMonthView.java
@@ -162,7 +162,6 @@
         mTitleFormatter = new SimpleDateFormat(titleFormat, locale);
         mDayOfWeekFormatter = new SimpleDateFormat(DAY_OF_WEEK_FORMAT, locale);
 
-        setClickable(true);
         initPaints(res);
     }
 
@@ -318,7 +317,8 @@
         final int x = (int) (event.getX() + 0.5f);
         final int y = (int) (event.getY() + 0.5f);
 
-        switch (event.getAction()) {
+        final int action = event.getAction();
+        switch (action) {
             case MotionEvent.ACTION_DOWN:
             case MotionEvent.ACTION_MOVE:
                 final int touchedItem = getDayAtLocation(x, y);
@@ -326,6 +326,10 @@
                     mTouchedItem = touchedItem;
                     invalidate();
                 }
+                if (action == MotionEvent.ACTION_DOWN && touchedItem < 0) {
+                    // Touch something that's not an item, reject event.
+                    return false;
+                }
                 break;
 
             case MotionEvent.ACTION_UP:
@@ -376,9 +380,16 @@
 
         for (int col = 0; col < DAYS_IN_WEEK; col++) {
             final int colCenter = colWidth * col + colWidth / 2;
+            final int colCenterRtl;
+            if (isLayoutRtl()) {
+                colCenterRtl = mPaddedWidth - colCenter;
+            } else {
+                colCenterRtl = colCenter;
+            }
+
             final int dayOfWeek = (col + mWeekStart) % DAYS_IN_WEEK;
             final String label = getDayOfWeekLabel(dayOfWeek);
-            canvas.drawText(label, colCenter, rowCenter - halfLineHeight, p);
+            canvas.drawText(label, colCenterRtl, rowCenter - halfLineHeight, p);
         }
     }
 
@@ -402,6 +413,13 @@
 
         for (int day = 1, col = findDayOffset(); day <= mDaysInMonth; day++) {
             final int colCenter = colWidth * col + colWidth / 2;
+            final int colCenterRtl;
+            if (isLayoutRtl()) {
+                colCenterRtl = mPaddedWidth - colCenter;
+            } else {
+                colCenterRtl = colCenter;
+            }
+
             int stateMask = 0;
 
             if (day >= mEnabledDayStart && day <= mEnabledDayEnd) {
@@ -413,12 +431,12 @@
                 stateMask |= StateSet.VIEW_STATE_ACTIVATED;
 
                 // Adjust the circle to be centered on the row.
-                canvas.drawCircle(colCenter, rowCenter, mDaySelectorRadius, mDaySelectorPaint);
+                canvas.drawCircle(colCenterRtl, rowCenter, mDaySelectorRadius, mDaySelectorPaint);
             } else if (mTouchedItem == day) {
                 stateMask |= StateSet.VIEW_STATE_PRESSED;
 
                 // Adjust the circle to be centered on the row.
-                canvas.drawCircle(colCenter, rowCenter, mDaySelectorRadius, mDayHighlightPaint);
+                canvas.drawCircle(colCenterRtl, rowCenter, mDaySelectorRadius, mDayHighlightPaint);
             }
 
             final boolean isDayToday = mToday == day;
@@ -431,7 +449,7 @@
             }
             p.setColor(dayTextColor);
 
-            canvas.drawText(Integer.toString(day), colCenter, rowCenter - halfLineHeight, p);
+            canvas.drawText(Integer.toString(day), colCenterRtl, rowCenter - halfLineHeight, p);
 
             col++;
 
@@ -583,6 +601,13 @@
     }
 
     @Override
+    public void onRtlPropertiesChanged(@ResolvedLayoutDir int layoutDirection) {
+        super.onRtlPropertiesChanged(layoutDirection);
+
+        requestLayout();
+    }
+
+    @Override
     protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
         if (!changed) {
             return;
@@ -657,8 +682,16 @@
             return -1;
         }
 
+        // Adjust for RTL after applying padding.
+        final int paddedXRtl;
+        if (isLayoutRtl()) {
+            paddedXRtl = mPaddedWidth - paddedX;
+        } else {
+            paddedXRtl = paddedX;
+        }
+
         final int row = (paddedY - headerHeight) / mDayHeight;
-        final int col = (paddedX * DAYS_IN_WEEK) / mPaddedWidth;
+        final int col = (paddedXRtl * DAYS_IN_WEEK) / mPaddedWidth;
         final int index = col + row * DAYS_IN_WEEK;
         final int day = index + 1 - findDayOffset();
         if (day < 1 || day > mDaysInMonth) {
@@ -681,10 +714,15 @@
 
         final int index = id - 1 + findDayOffset();
 
-        // Compute left edge.
+        // Compute left edge, taking into account RTL.
         final int col = index % DAYS_IN_WEEK;
         final int colWidth = mCellWidth;
-        final int left = getPaddingLeft() + col * colWidth;
+        final int left;
+        if (isLayoutRtl()) {
+            left = getWidth() - getPaddingRight() - (col + 1) * colWidth;
+        } else {
+            left = getPaddingLeft() + col * colWidth;
+        }
 
         // Compute top edge.
         final int row = index / DAYS_IN_WEEK;
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 726b89a..3e8df08 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -8955,13 +8955,14 @@
     static final int ID_CUT = android.R.id.cut;
     static final int ID_COPY = android.R.id.copy;
     static final int ID_PASTE = android.R.id.paste;
+    static final int ID_SHARE = android.R.id.shareText;
     static final int ID_PASTE_AS_PLAIN_TEXT = android.R.id.pasteAsPlainText;
     static final int ID_REPLACE = android.R.id.replaceText;
 
     /**
      * Called when a context menu option for the text view is selected.  Currently
      * this will be one of {@link android.R.id#selectAll}, {@link android.R.id#cut},
-     * {@link android.R.id#copy} or {@link android.R.id#paste}.
+     * {@link android.R.id#copy}, {@link android.R.id#paste} or {@link android.R.id#shareText}.
      *
      * @return true if the context menu item action was performed.
      */
@@ -9014,6 +9015,10 @@
                 setPrimaryClip(ClipData.newPlainText(null, getTransformedText(min, max)));
                 stopSelectionActionMode();
                 return true;
+
+            case ID_SHARE:
+                shareSelectedText();
+                return true;
         }
         return false;
     }
@@ -9091,15 +9096,15 @@
      * If provided, this ActionMode.Callback will be used to create the ActionMode when text
      * selection is initiated in this View.
      *
-     * The standard implementation populates the menu with a subset of Select All, Cut, Copy and
-     * Paste actions, depending on what this View supports.
+     * The standard implementation populates the menu with a subset of Select All, Cut, Copy,
+     * Paste and Share actions, depending on what this View supports.
      *
      * A custom implementation can add new entries in the default menu in its
      * {@link android.view.ActionMode.Callback#onPrepareActionMode(ActionMode, Menu)} method. The
      * default actions can also be removed from the menu using
      * {@link android.view.Menu#removeItem(int)} and passing {@link android.R.id#selectAll},
-     * {@link android.R.id#cut}, {@link android.R.id#copy} or {@link android.R.id#paste} ids as
-     * parameters.
+     * {@link android.R.id#cut}, {@link android.R.id#copy}, {@link android.R.id#paste} or
+     * {@link android.R.id#shareText} ids as parameters.
      *
      * Returning false from
      * {@link android.view.ActionMode.Callback#onCreateActionMode(ActionMode, Menu)} will prevent
@@ -9168,6 +9173,10 @@
         return false;
     }
 
+    boolean canShare() {
+        return canCopy();
+    }
+
     boolean canPaste() {
         return (mText instanceof Editable &&
                 mEditor != null && mEditor.mKeyListener != null &&
@@ -9241,6 +9250,18 @@
         }
     }
 
+    private void shareSelectedText() {
+        String selectedText = getSelectedText();
+        if (selectedText != null && !selectedText.isEmpty()) {
+            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
+            sharingIntent.setType("text/plain");
+            sharingIntent.removeExtra(android.content.Intent.EXTRA_TEXT);
+            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, selectedText);
+            getContext().startActivity(Intent.createChooser(sharingIntent, null));
+            stopSelectionActionMode();
+        }
+    }
+
     private void setPrimaryClip(ClipData clip) {
         ClipboardManager clipboard = (ClipboardManager) getContext().
                 getSystemService(Context.CLIPBOARD_SERVICE);
diff --git a/core/java/android/widget/ZoomButtonsController.java b/core/java/android/widget/ZoomButtonsController.java
index f7e9648..c0c8aec 100644
--- a/core/java/android/widget/ZoomButtonsController.java
+++ b/core/java/android/widget/ZoomButtonsController.java
@@ -403,7 +403,7 @@
             // No longer care about configuration changes
             mContext.unregisterReceiver(mConfigurationChangedReceiver);
 
-            mWindowManager.removeView(mContainer);
+            mWindowManager.removeViewImmediate(mContainer);
             mHandler.removeCallbacks(mPostedVisibleInitializer);
 
             if (mCallback != null) {
@@ -490,7 +490,7 @@
                     setVisible(false);
                     return true;
                 }
-                
+
             } else {
                 dismissControlsDelayed(ZOOM_CONTROLS_TIMEOUT);
             }
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 8403e77..a6c39e6 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -401,6 +401,11 @@
         }
 
         @Override
+        public boolean shouldGetResolvedFilter() {
+            return true;
+        }
+
+        @Override
         public int getCount() {
             int count = super.getCount();
             if (mServiceTargets != null) {
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 3cd69a1..7f51d92 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -1062,7 +1062,7 @@
             } else {
                 currentResolveList = mOrigResolveList = mPm.queryIntentActivities(mIntent,
                         PackageManager.MATCH_DEFAULT_ONLY
-                        | (mFilterLastUsed ? PackageManager.GET_RESOLVED_FILTER : 0)
+                        | (shouldGetResolvedFilter() ? PackageManager.GET_RESOLVED_FILTER : 0)
                         | (shouldGetActivityMetadata() ? PackageManager.GET_META_DATA : 0)
                 );
                 // Filter out any activities that the launched uid does not
@@ -1188,6 +1188,10 @@
             // This space for rent
         }
 
+        public boolean shouldGetResolvedFilter() {
+            return mFilterLastUsed;
+        }
+
         private void processGroup(List<ResolveInfo> rList, int start, int end, ResolveInfo ro,
                 CharSequence roLabel) {
             // Process labels from start to i
diff --git a/core/java/com/android/internal/util/Preconditions.java b/core/java/com/android/internal/util/Preconditions.java
index 414b7bc..b692a18 100644
--- a/core/java/com/android/internal/util/Preconditions.java
+++ b/core/java/com/android/internal/util/Preconditions.java
@@ -24,6 +24,12 @@
  */
 public class Preconditions {
 
+    public static void checkArgument(boolean expression) {
+        if (!expression) {
+            throw new IllegalArgumentException();
+        }
+    }
+
     /**
      * Ensures that an object reference passed as a parameter to the calling
      * method is not null.
diff --git a/core/java/com/android/internal/widget/FloatingToolbar.java b/core/java/com/android/internal/widget/FloatingToolbar.java
index a14e98d..3a1e0ca 100644
--- a/core/java/com/android/internal/widget/FloatingToolbar.java
+++ b/core/java/com/android/internal/widget/FloatingToolbar.java
@@ -346,6 +346,17 @@
         };
 
         private final Region mTouchableRegion = new Region();
+        private final ViewTreeObserver.OnComputeInternalInsetsListener mInsetsComputer =
+                new ViewTreeObserver.OnComputeInternalInsetsListener() {
+                    public void onComputeInternalInsets(
+                            ViewTreeObserver.InternalInsetsInfo info) {
+                        info.contentInsets.setEmpty();
+                        info.visibleInsets.setEmpty();
+                        info.touchableRegion.set(mTouchableRegion);
+                        info.setTouchableInsets(ViewTreeObserver.InternalInsetsInfo
+                                .TOUCHABLE_INSETS_REGION);
+                    }
+                };
 
         private boolean mDismissed = true; // tracks whether this popup is dismissed or dismissing.
         private boolean mHidden; // tracks whether this popup is hidden or hiding.
@@ -382,21 +393,6 @@
                             mPopupWindow.dismiss();
                         }
                     });
-            // Make the touchable area of this popup be the area specified by mTouchableRegion.
-            mPopupWindow.getContentView()
-                    .getRootView()
-                    .getViewTreeObserver()
-                    .addOnComputeInternalInsetsListener(
-                            new ViewTreeObserver.OnComputeInternalInsetsListener() {
-                                public void onComputeInternalInsets(
-                                        ViewTreeObserver.InternalInsetsInfo info) {
-                                    info.contentInsets.setEmpty();
-                                    info.visibleInsets.setEmpty();
-                                    info.touchableRegion.set(mTouchableRegion);
-                                    info.setTouchableInsets(ViewTreeObserver.InternalInsetsInfo
-                                            .TOUCHABLE_INSETS_REGION);
-                                }
-                            });
             mMarginHorizontal = parent.getResources()
                     .getDimensionPixelSize(R.dimen.floating_toolbar_horizontal_margin);
             mMarginVertical = parent.getResources()
@@ -437,16 +433,15 @@
 
             mHidden = false;
             mDismissed = false;
-            cancelAllAnimations();
+            cancelDismissAndHideAnimations();
+            cancelOverflowAnimations();
             // Make sure a panel is set as the content.
             if (mContentContainer.getChildCount() == 0) {
                 setMainPanelAsContent();
             }
             preparePopupContent();
-            // If we're yet to show the popup, set the container visibility to zero.
-            // The "show" animation will make this visible.
-            mContentContainer.setAlpha(0);
             mPopupWindow.showAtLocation(mParent, Gravity.NO_GRAVITY, x, y);
+            setTouchableSurfaceInsetsComputer();
             runShowAnimation();
         }
 
@@ -454,12 +449,13 @@
          * Gets rid of this popup. If the popup isn't currently showing, this will be a no-op.
          */
         public void dismiss() {
-            if (!isShowing()) {
+            if (mDismissed) {
                 return;
             }
 
             mHidden = false;
             mDismissed = true;
+            mHideAnimation.cancel();
             runDismissAnimation();
             setZeroTouchableSurface();
         }
@@ -502,7 +498,7 @@
                 return;
             }
 
-            cancelAllAnimations();
+            cancelOverflowAnimations();
             preparePopupContent();
             mPopupWindow.update(x, y, getWidth(), getHeight());
         }
@@ -566,10 +562,12 @@
             mHideAnimation.start();
         }
 
-        private void cancelAllAnimations() {
-            mShowAnimation.cancel();
+        private void cancelDismissAndHideAnimations() {
             mDismissAnimation.cancel();
             mHideAnimation.cancel();
+        }
+
+        private void cancelOverflowAnimations() {
             mOpenOverflowAnimation.cancel();
             mCloseOverflowAnimation.cancel();
         }
@@ -804,6 +802,19 @@
                     (int) mContentContainer.getX() + width,
                     (int) mContentContainer.getY() + height);
         }
+
+        /**
+         * Make the touchable area of this popup be the area specified by mTouchableRegion.
+         * This should be called after the popup window has been dismissed (dismiss/hide)
+         * and is probably being re-shown with a new content root view.
+         */
+        private void setTouchableSurfaceInsetsComputer() {
+            ViewTreeObserver viewTreeObserver = mPopupWindow.getContentView()
+                    .getRootView()
+                    .getViewTreeObserver();
+            viewTreeObserver.removeOnComputeInternalInsetsListener(mInsetsComputer);
+            viewTreeObserver.addOnComputeInternalInsetsListener(mInsetsComputer);
+        }
     }
 
     /**
diff --git a/core/java/com/android/internal/widget/SwipeDismissLayout.java b/core/java/com/android/internal/widget/SwipeDismissLayout.java
index 89990c2..191662c 100644
--- a/core/java/com/android/internal/widget/SwipeDismissLayout.java
+++ b/core/java/com/android/internal/widget/SwipeDismissLayout.java
@@ -111,7 +111,7 @@
     }
 
     private void init(Context context) {
-        ViewConfiguration vc = ViewConfiguration.get(getContext());
+        ViewConfiguration vc = ViewConfiguration.get(context);
         mSlop = vc.getScaledTouchSlop();
         mMinFlingVelocity = vc.getScaledMinimumFlingVelocity();
         mMaxFlingVelocity = vc.getScaledMaximumFlingVelocity();
@@ -290,7 +290,7 @@
             float deltaX = ev.getRawX() - mDownX;
             float deltaY = ev.getRawY() - mDownY;
             if ((deltaX * deltaX) + (deltaY * deltaY) > mSlop * mSlop) {
-                mSwiping = deltaX > mSlop * 2 && Math.abs(deltaY) < mSlop * 2;
+                mSwiping = deltaX > mSlop * 2 && Math.abs(deltaY) < Math.abs(deltaX);
             } else {
                 mSwiping = false;
             }
@@ -299,9 +299,9 @@
 
     private void updateDismiss(MotionEvent ev) {
         float deltaX = ev.getRawX() - mDownX;
+        mVelocityTracker.addMovement(ev);
+        mVelocityTracker.computeCurrentVelocity(1000);
         if (!mDismissed) {
-            mVelocityTracker.addMovement(ev);
-            mVelocityTracker.computeCurrentVelocity(1000);
 
             if (deltaX > (getWidth() * DISMISS_MIN_DRAG_WIDTH_RATIO) &&
                     ev.getRawX() >= mLastX) {
@@ -311,7 +311,9 @@
         // Check if the user tried to undo this.
         if (mDismissed && mSwiping) {
             // Check if the user's finger is actually back
-            if (deltaX < (getWidth() * DISMISS_MIN_DRAG_WIDTH_RATIO)) {
+            if (deltaX < (getWidth() * DISMISS_MIN_DRAG_WIDTH_RATIO) ||
+                    // or user is flinging back left
+                    mVelocityTracker.getXVelocity() < -mMinFlingVelocity) {
                 mDismissed = false;
             }
         }
diff --git a/core/java/com/android/internal/widget/ViewPager.java b/core/java/com/android/internal/widget/ViewPager.java
index 5c08daf..441e640 100644
--- a/core/java/com/android/internal/widget/ViewPager.java
+++ b/core/java/com/android/internal/widget/ViewPager.java
@@ -27,9 +27,9 @@
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.os.SystemClock;
 import android.util.AttributeSet;
 import android.util.Log;
+import android.util.MathUtils;
 import android.view.FocusFinder;
 import android.view.Gravity;
 import android.view.KeyEvent;
@@ -43,7 +43,6 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
-import android.view.accessibility.AccessibilityRecord;
 import android.view.animation.Interpolator;
 import android.widget.EdgeEffect;
 import android.widget.Scroller;
@@ -84,8 +83,9 @@
  */
 public class ViewPager extends ViewGroup {
     private static final String TAG = "ViewPager";
-    private static final boolean DEBUG = false;
+    private static final boolean DEBUG = true;
 
+    private static final int MAX_SCROLL_X = 2 << 23;
     private static final boolean USE_CACHE = false;
 
     private static final int DEFAULT_OFFSCREEN_PAGES = 1;
@@ -108,9 +108,13 @@
 
     static class ItemInfo {
         Object object;
-        int position;
         boolean scrolling;
         float widthFactor;
+
+        /** Logical position of the item within the pager adapter. */
+        int position;
+
+        /** Offset between the starting edges of the item and its container. */
         float offset;
     }
 
@@ -146,6 +150,12 @@
     private int mTopPageBounds;
     private int mBottomPageBounds;
 
+    /**
+     * The increment used to move in the "left" direction. Dependent on layout
+     * direction.
+     */
+    private int mLeftIncr = -1;
+
     // Offsets of the first and last items, if known.
     // Set during population, used to determine if we are at the beginning
     // or end of the pager data set during touch scrolling.
@@ -198,14 +208,10 @@
     // "catching" the flinging pager.
     private static final int CLOSE_ENOUGH = 2; // dp
 
-    private boolean mFakeDragging;
-    private long mFakeDragBeginTime;
-
     private final EdgeEffect mLeftEdge;
     private final EdgeEffect mRightEdge;
 
     private boolean mFirstLayout = true;
-    private boolean mNeedCalculatePageOffsets = false;
     private boolean mCalledSuper;
     private int mDecorChildCount;
 
@@ -473,7 +479,7 @@
         mAdapterChangeListener = listener;
     }
 
-    private int getClientWidth() {
+    private int getPaddedWidth() {
         return getMeasuredWidth() - getPaddingLeft() - getPaddingRight();
     }
 
@@ -504,36 +510,33 @@
         return mCurItem;
     }
 
-    void setCurrentItemInternal(int item, boolean smoothScroll, boolean always) {
-        setCurrentItemInternal(item, smoothScroll, always, 0);
+    boolean setCurrentItemInternal(int item, boolean smoothScroll, boolean always) {
+        return setCurrentItemInternal(item, smoothScroll, always, 0);
     }
 
-    void setCurrentItemInternal(int item, boolean smoothScroll, boolean always, int velocity) {
+    boolean setCurrentItemInternal(int item, boolean smoothScroll, boolean always, int velocity) {
         if (mAdapter == null || mAdapter.getCount() <= 0) {
             setScrollingCacheEnabled(false);
-            return;
-        }
-        if (!always && mCurItem == item && mItems.size() != 0) {
-            setScrollingCacheEnabled(false);
-            return;
+            return false;
         }
 
-        if (item < 0) {
-            item = 0;
-        } else if (item >= mAdapter.getCount()) {
-            item = mAdapter.getCount() - 1;
+        item = MathUtils.constrain(item, 0, mAdapter.getCount() - 1);
+        if (!always && mCurItem == item && mItems.size() != 0) {
+            setScrollingCacheEnabled(false);
+            return false;
         }
+
         final int pageLimit = mOffscreenPageLimit;
         if (item > (mCurItem + pageLimit) || item < (mCurItem - pageLimit)) {
             // We are doing a jump by more than one page.  To avoid
             // glitches, we want to keep all current pages in the view
             // until the scroll ends.
-            for (int i=0; i<mItems.size(); i++) {
+            for (int i = 0; i < mItems.size(); i++) {
                 mItems.get(i).scrolling = true;
             }
         }
-        final boolean dispatchSelected = mCurItem != item;
 
+        final boolean dispatchSelected = mCurItem != item;
         if (mFirstLayout) {
             // We don't have any idea how big we are yet and shouldn't have any pages either.
             // Just set things up and let the pending layout handle things.
@@ -549,38 +552,55 @@
             populate(item);
             scrollToItem(item, smoothScroll, velocity, dispatchSelected);
         }
+
+        return true;
     }
 
-    private void scrollToItem(int item, boolean smoothScroll, int velocity,
+    private void scrollToItem(int position, boolean smoothScroll, int velocity,
             boolean dispatchSelected) {
-        final ItemInfo curInfo = infoForPosition(item);
-        int destX = 0;
-        if (curInfo != null) {
-            final int width = getClientWidth();
-            destX = (int) (width * Math.max(mFirstOffset,
-                    Math.min(curInfo.offset, mLastOffset)));
-        }
+        final int destX = getLeftEdgeForItem(position);
+
         if (smoothScroll) {
             smoothScrollTo(destX, 0, velocity);
+
             if (dispatchSelected && mOnPageChangeListener != null) {
-                mOnPageChangeListener.onPageSelected(item);
+                mOnPageChangeListener.onPageSelected(position);
             }
             if (dispatchSelected && mInternalPageChangeListener != null) {
-                mInternalPageChangeListener.onPageSelected(item);
+                mInternalPageChangeListener.onPageSelected(position);
             }
         } else {
             if (dispatchSelected && mOnPageChangeListener != null) {
-                mOnPageChangeListener.onPageSelected(item);
+                mOnPageChangeListener.onPageSelected(position);
             }
             if (dispatchSelected && mInternalPageChangeListener != null) {
-                mInternalPageChangeListener.onPageSelected(item);
+                mInternalPageChangeListener.onPageSelected(position);
             }
+
             completeScroll(false);
             scrollTo(destX, 0);
             pageScrolled(destX);
         }
     }
 
+    private int getLeftEdgeForItem(int position) {
+        final ItemInfo info = infoForPosition(position);
+        if (info == null) {
+            return 0;
+        }
+
+        final int width = getPaddedWidth();
+        final int scaledOffset = (int) (width * MathUtils.constrain(
+                info.offset, mFirstOffset, mLastOffset));
+
+        if (isLayoutRtl()) {
+            final int itemWidth = (int) (width * info.widthFactor + 0.5f);
+            return MAX_SCROLL_X - itemWidth - scaledOffset;
+        } else {
+            return scaledOffset;
+        }
+    }
+
     /**
      * Set a listener that will be invoked whenever the page changes or is incrementally
      * scrolled. See {@link OnPageChangeListener}.
@@ -784,7 +804,7 @@
         setScrollingCacheEnabled(true);
         setScrollState(SCROLL_STATE_SETTLING);
 
-        final int width = getClientWidth();
+        final int width = getPaddedWidth();
         final int halfWidth = width / 2;
         final float distanceRatio = Math.min(1f, 1.0f * Math.abs(dx) / width);
         final float distance = halfWidth + halfWidth *
@@ -968,7 +988,7 @@
             float extraWidthLeft = 0.f;
             int itemIndex = curIndex - 1;
             ItemInfo ii = itemIndex >= 0 ? mItems.get(itemIndex) : null;
-            final int clientWidth = getClientWidth();
+            final int clientWidth = getPaddedWidth();
             final float leftWidthNeeded = clientWidth <= 0 ? 0 :
                     2.f - curItem.widthFactor + (float) getPaddingLeft() / (float) clientWidth;
             for (int pos = mCurItem - 1; pos >= 0; pos--) {
@@ -981,7 +1001,7 @@
                         mAdapter.destroyItem(this, pos, ii.object);
                         if (DEBUG) {
                             Log.i(TAG, "populate() - destroyItem() with pos: " + pos +
-                                    " view: " + ((View) ii.object));
+                                    " view: " + ii.object);
                         }
                         itemIndex--;
                         curIndex--;
@@ -1015,7 +1035,7 @@
                             mAdapter.destroyItem(this, pos, ii.object);
                             if (DEBUG) {
                                 Log.i(TAG, "populate() - destroyItem() with pos: " + pos +
-                                        " view: " + ((View) ii.object));
+                                        " view: " + ii.object);
                             }
                             ii = itemIndex < mItems.size() ? mItems.get(itemIndex) : null;
                         }
@@ -1099,49 +1119,51 @@
 
     private void calculatePageOffsets(ItemInfo curItem, int curIndex, ItemInfo oldCurInfo) {
         final int N = mAdapter.getCount();
-        final int width = getClientWidth();
+        final int width = getPaddedWidth();
         final float marginOffset = width > 0 ? (float) mPageMargin / width : 0;
+
         // Fix up offsets for later layout.
         if (oldCurInfo != null) {
             final int oldCurPosition = oldCurInfo.position;
+
             // Base offsets off of oldCurInfo.
             if (oldCurPosition < curItem.position) {
                 int itemIndex = 0;
-                ItemInfo ii = null;
                 float offset = oldCurInfo.offset + oldCurInfo.widthFactor + marginOffset;
-                for (int pos = oldCurPosition + 1;
-                        pos <= curItem.position && itemIndex < mItems.size(); pos++) {
-                    ii = mItems.get(itemIndex);
+                for (int pos = oldCurPosition + 1; pos <= curItem.position && itemIndex < mItems.size(); pos++) {
+                    ItemInfo ii = mItems.get(itemIndex);
                     while (pos > ii.position && itemIndex < mItems.size() - 1) {
                         itemIndex++;
                         ii = mItems.get(itemIndex);
                     }
+
                     while (pos < ii.position) {
                         // We don't have an item populated for this,
                         // ask the adapter for an offset.
                         offset += mAdapter.getPageWidth(pos) + marginOffset;
                         pos++;
                     }
+
                     ii.offset = offset;
                     offset += ii.widthFactor + marginOffset;
                 }
             } else if (oldCurPosition > curItem.position) {
                 int itemIndex = mItems.size() - 1;
-                ItemInfo ii = null;
                 float offset = oldCurInfo.offset;
-                for (int pos = oldCurPosition - 1;
-                        pos >= curItem.position && itemIndex >= 0; pos--) {
-                    ii = mItems.get(itemIndex);
+                for (int pos = oldCurPosition - 1; pos >= curItem.position && itemIndex >= 0; pos--) {
+                    ItemInfo ii = mItems.get(itemIndex);
                     while (pos < ii.position && itemIndex > 0) {
                         itemIndex--;
                         ii = mItems.get(itemIndex);
                     }
+
                     while (pos > ii.position) {
                         // We don't have an item populated for this,
                         // ask the adapter for an offset.
                         offset -= mAdapter.getPageWidth(pos) + marginOffset;
                         pos--;
                     }
+
                     offset -= ii.widthFactor + marginOffset;
                     ii.offset = offset;
                 }
@@ -1155,6 +1177,7 @@
         mFirstOffset = curItem.position == 0 ? curItem.offset : -Float.MAX_VALUE;
         mLastOffset = curItem.position == N - 1 ?
                 curItem.offset + curItem.widthFactor - 1 : Float.MAX_VALUE;
+
         // Previous pages
         for (int i = curIndex - 1; i >= 0; i--, pos--) {
             final ItemInfo ii = mItems.get(i);
@@ -1165,8 +1188,10 @@
             ii.offset = offset;
             if (ii.position == 0) mFirstOffset = offset;
         }
+
         offset = curItem.offset + curItem.widthFactor + marginOffset;
         pos = curItem.position + 1;
+
         // Next pages
         for (int i = curIndex + 1; i < itemCount; i++, pos++) {
             final ItemInfo ii = mItems.get(i);
@@ -1179,8 +1204,6 @@
             ii.offset = offset;
             offset += ii.widthFactor + marginOffset;
         }
-
-        mNeedCalculatePageOffsets = false;
     }
 
     /**
@@ -1546,34 +1569,47 @@
         // Page views. Do this once we have the right padding offsets from above.
         for (int i = 0; i < count; i++) {
             final View child = getChildAt(i);
-            if (child.getVisibility() != GONE) {
-                final LayoutParams lp = (LayoutParams) child.getLayoutParams();
-                ItemInfo ii;
-                if (!lp.isDecor && (ii = infoForChild(child)) != null) {
-                    int loff = (int) (childWidth * ii.offset);
-                    int childLeft = paddingLeft + loff;
-                    int childTop = paddingTop;
-                    if (lp.needsMeasure) {
-                        // This was added during layout and needs measurement.
-                        // Do it now that we know what we're working with.
-                        lp.needsMeasure = false;
-                        final int widthSpec = MeasureSpec.makeMeasureSpec(
-                                (int) (childWidth * lp.widthFactor),
-                                MeasureSpec.EXACTLY);
-                        final int heightSpec = MeasureSpec.makeMeasureSpec(
-                                (int) (height - paddingTop - paddingBottom),
-                                MeasureSpec.EXACTLY);
-                        child.measure(widthSpec, heightSpec);
-                    }
-                    if (DEBUG) Log.v(TAG, "Positioning #" + i + " " + child + " f=" + ii.object
-                            + ":" + childLeft + "," + childTop + " " + child.getMeasuredWidth()
-                            + "x" + child.getMeasuredHeight());
-                    child.layout(childLeft, childTop,
-                            childLeft + child.getMeasuredWidth(),
-                            childTop + child.getMeasuredHeight());
-                }
+            if (child.getVisibility() == GONE) {
+                continue;
             }
+
+            final LayoutParams lp = (LayoutParams) child.getLayoutParams();
+            if (lp.isDecor) {
+                continue;
+            }
+
+            final ItemInfo ii = infoForChild(child);
+            if (ii == null) {
+                continue;
+            }
+
+            if (lp.needsMeasure) {
+                // This was added during layout and needs measurement.
+                // Do it now that we know what we're working with.
+                lp.needsMeasure = false;
+                final int widthSpec = MeasureSpec.makeMeasureSpec(
+                        (int) (childWidth * lp.widthFactor),
+                        MeasureSpec.EXACTLY);
+                final int heightSpec = MeasureSpec.makeMeasureSpec(
+                        (int) (height - paddingTop - paddingBottom),
+                        MeasureSpec.EXACTLY);
+                child.measure(widthSpec, heightSpec);
+            }
+
+            final int childMeasuredWidth = child.getMeasuredWidth();
+            final int startOffset = (int) (childWidth * ii.offset);
+            final int childLeft;
+            if (isLayoutRtl()) {
+                childLeft = MAX_SCROLL_X - paddingRight - startOffset - childMeasuredWidth;
+            } else {
+                childLeft = paddingLeft + startOffset;
+            }
+
+            final int childTop = paddingTop;
+            child.layout(childLeft, childTop, childLeft + childMeasuredWidth,
+                    childTop + child.getMeasuredHeight());
         }
+
         mTopPageBounds = paddingTop;
         mBottomPageBounds = height - paddingBottom;
         mDecorChildCount = decorCount;
@@ -1587,13 +1623,14 @@
     @Override
     public void computeScroll() {
         if (!mScroller.isFinished() && mScroller.computeScrollOffset()) {
-            int oldX = getScrollX();
-            int oldY = getScrollY();
-            int x = mScroller.getCurrX();
-            int y = mScroller.getCurrY();
+            final int oldX = getScrollX();
+            final int oldY = getScrollY();
+            final int x = mScroller.getCurrX();
+            final int y = mScroller.getCurrY();
 
             if (oldX != x || oldY != y) {
                 scrollTo(x, y);
+
                 if (!pageScrolled(x)) {
                     mScroller.abortAnimation();
                     scrollTo(0, y);
@@ -1609,7 +1646,7 @@
         completeScroll(true);
     }
 
-    private boolean pageScrolled(int xpos) {
+    private boolean pageScrolled(int scrollX) {
         if (mItems.size() == 0) {
             mCalledSuper = false;
             onPageScrolled(0, 0, 0);
@@ -1619,12 +1656,21 @@
             }
             return false;
         }
-        final ItemInfo ii = infoForCurrentScrollPosition();
-        final int width = getClientWidth();
+
+        // Translate to scrollX to scrollStart for RTL.
+        final int scrollStart;
+        if (isLayoutRtl()) {
+            scrollStart = MAX_SCROLL_X - scrollX;
+        } else {
+            scrollStart = scrollX;
+        }
+
+        final ItemInfo ii = infoForFirstVisiblePage();
+        final int width = getPaddedWidth();
         final int widthWithMargin = width + mPageMargin;
         final float marginOffset = (float) mPageMargin / width;
         final int currentPage = ii.position;
-        final float pageOffset = (((float) xpos / width) - ii.offset) /
+        final float pageOffset = (((float) scrollStart / width) - ii.offset) /
                 (ii.widthFactor + marginOffset);
         final int offsetPixels = (int) (pageOffset * widthWithMargin);
 
@@ -1706,7 +1752,7 @@
 
                 if (lp.isDecor) continue;
 
-                final float transformPos = (float) (child.getLeft() - scrollX) / getClientWidth();
+                final float transformPos = (float) (child.getLeft() - scrollX) / getPaddedWidth();
                 mPageTransformer.transformPage(child, transformPos);
             }
         }
@@ -1785,11 +1831,11 @@
         // are dragging.
         if (action != MotionEvent.ACTION_DOWN) {
             if (mIsBeingDragged) {
-                if (DEBUG) Log.v(TAG, "Intercept returning true!");
+                if (DEBUG) Log.v(TAG, "Being dragged, intercept returning true!");
                 return true;
             }
             if (mIsUnableToDrag) {
-                if (DEBUG) Log.v(TAG, "Intercept returning false!");
+                if (DEBUG) Log.v(TAG, "Unable to drag, intercept returning false!");
                 return false;
             }
         }
@@ -1903,13 +1949,6 @@
 
     @Override
     public boolean onTouchEvent(MotionEvent ev) {
-        if (mFakeDragging) {
-            // A fake drag is in progress already, ignore this real one
-            // but still eat the touch events.
-            // (It is likely that the user is multi-touching the screen.)
-            return true;
-        }
-
         if (ev.getAction() == MotionEvent.ACTION_DOWN && ev.getEdgeFlags() != 0) {
             // Don't handle edge touches immediately -- they may actually belong to one of our
             // descendants.
@@ -1978,19 +2017,26 @@
                 if (mIsBeingDragged) {
                     final VelocityTracker velocityTracker = mVelocityTracker;
                     velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
-                    int initialVelocity = (int) velocityTracker.getXVelocity(mActivePointerId);
+                    final int initialVelocity = (int) velocityTracker.getXVelocity(mActivePointerId);
+
                     mPopulatePending = true;
-                    final int width = getClientWidth();
-                    final int scrollX = getScrollX();
-                    final ItemInfo ii = infoForCurrentScrollPosition();
+
+                    final float scrollStart = getScrollStart();
+                    final float scrolledPages = scrollStart / getPaddedWidth();
+                    final ItemInfo ii = infoForFirstVisiblePage();
                     final int currentPage = ii.position;
-                    final float pageOffset = (((float) scrollX / width) - ii.offset) / ii.widthFactor;
-                    final int activePointerIndex =
-                            ev.findPointerIndex(mActivePointerId);
+                    final float nextPageOffset;
+                    if (isLayoutRtl()) {
+                        nextPageOffset = (ii.offset - scrolledPages) / ii.widthFactor;
+                    }  else {
+                        nextPageOffset = (scrolledPages - ii.offset) / ii.widthFactor;
+                    }
+
+                    final int activePointerIndex = ev.findPointerIndex(mActivePointerId);
                     final float x = ev.getX(activePointerIndex);
                     final int totalDelta = (int) (x - mInitialMotionX);
-                    int nextPage = determineTargetPage(currentPage, pageOffset, initialVelocity,
-                            totalDelta);
+                    final int nextPage = determineTargetPage(
+                            currentPage, nextPageOffset, initialVelocity, totalDelta);
                     setCurrentItemInternal(nextPage, true, true, initialVelocity);
 
                     mActivePointerId = INVALID_POINTER;
@@ -2038,48 +2084,79 @@
     private boolean performDrag(float x) {
         boolean needsInvalidate = false;
 
+        final int width = getPaddedWidth();
         final float deltaX = mLastMotionX - x;
         mLastMotionX = x;
 
-        float oldScrollX = getScrollX();
-        float scrollX = oldScrollX + deltaX;
-        final int width = getClientWidth();
-
-        float leftBound = width * mFirstOffset;
-        float rightBound = width * mLastOffset;
-        boolean leftAbsolute = true;
-        boolean rightAbsolute = true;
-
-        final ItemInfo firstItem = mItems.get(0);
-        final ItemInfo lastItem = mItems.get(mItems.size() - 1);
-        if (firstItem.position != 0) {
-            leftAbsolute = false;
-            leftBound = firstItem.offset * width;
-        }
-        if (lastItem.position != mAdapter.getCount() - 1) {
-            rightAbsolute = false;
-            rightBound = lastItem.offset * width;
+        final EdgeEffect startEdge;
+        final EdgeEffect endEdge;
+        if (isLayoutRtl()) {
+            startEdge = mRightEdge;
+            endEdge = mLeftEdge;
+        } else {
+            startEdge = mLeftEdge;
+            endEdge = mRightEdge;
         }
 
-        if (scrollX < leftBound) {
-            if (leftAbsolute) {
-                float over = leftBound - scrollX;
-                mLeftEdge.onPull(Math.abs(over) / width);
+        // Translate scroll to relative coordinates.
+        final float nextScrollX = getScrollX() + deltaX;
+        final float scrollStart;
+        if (isLayoutRtl()) {
+            scrollStart = MAX_SCROLL_X - nextScrollX;
+        } else {
+            scrollStart = nextScrollX;
+        }
+
+        final float startBound;
+        final ItemInfo startItem = mItems.get(0);
+        final boolean startAbsolute = startItem.position == 0;
+        if (startAbsolute) {
+            startBound = startItem.offset * width;
+        } else {
+            startBound = width * mFirstOffset;
+        }
+
+        final float endBound;
+        final ItemInfo endItem = mItems.get(mItems.size() - 1);
+        final boolean endAbsolute = endItem.position == mAdapter.getCount() - 1;
+        if (endAbsolute) {
+            endBound = endItem.offset * width;
+        } else {
+            endBound = width * mLastOffset;
+        }
+
+        final float clampedScrollStart;
+        if (scrollStart < startBound) {
+            if (startAbsolute) {
+                final float over = startBound - scrollStart;
+                startEdge.onPull(Math.abs(over) / width);
                 needsInvalidate = true;
             }
-            scrollX = leftBound;
-        } else if (scrollX > rightBound) {
-            if (rightAbsolute) {
-                float over = scrollX - rightBound;
-                mRightEdge.onPull(Math.abs(over) / width);
+            clampedScrollStart = startBound;
+        } else if (scrollStart > endBound) {
+            if (endAbsolute) {
+                final float over = scrollStart - endBound;
+                endEdge.onPull(Math.abs(over) / width);
                 needsInvalidate = true;
             }
-            scrollX = rightBound;
+            clampedScrollStart = endBound;
+        } else {
+            clampedScrollStart = scrollStart;
         }
-        // Don't lose the rounded component
-        mLastMotionX += scrollX - (int) scrollX;
-        scrollTo((int) scrollX, getScrollY());
-        pageScrolled((int) scrollX);
+
+        // Translate back to absolute coordinates.
+        final float targetScrollX;
+        if (isLayoutRtl()) {
+            targetScrollX = MAX_SCROLL_X - clampedScrollStart;
+        } else {
+            targetScrollX = clampedScrollStart;
+        }
+
+        // Don't lose the rounded component.
+        mLastMotionX += targetScrollX - (int) targetScrollX;
+
+        scrollTo((int) targetScrollX, getScrollY());
+        pageScrolled((int) targetScrollX);
 
         return needsInvalidate;
     }
@@ -2088,19 +2165,23 @@
      * @return Info about the page at the current scroll position.
      *         This can be synthetic for a missing middle page; the 'object' field can be null.
      */
-    private ItemInfo infoForCurrentScrollPosition() {
-        final int width = getClientWidth();
-        final float scrollOffset = width > 0 ? (float) getScrollX() / width : 0;
+    private ItemInfo infoForFirstVisiblePage() {
+        final int startOffset = getScrollStart();
+        final int width = getPaddedWidth();
+        final float scrollOffset = width > 0 ? (float) startOffset / width : 0;
         final float marginOffset = width > 0 ? (float) mPageMargin / width : 0;
+
         int lastPos = -1;
         float lastOffset = 0.f;
         float lastWidth = 0.f;
         boolean first = true;
-
         ItemInfo lastItem = null;
-        for (int i = 0; i < mItems.size(); i++) {
+
+        final int N = mItems.size();
+        for (int i = 0; i < N; i++) {
             ItemInfo ii = mItems.get(i);
-            float offset;
+
+            // Seek to position.
             if (!first && ii.position != lastPos + 1) {
                 // Create a synthetic item for a missing page.
                 ii = mTempItem;
@@ -2109,17 +2190,18 @@
                 ii.widthFactor = mAdapter.getPageWidth(ii.position);
                 i--;
             }
-            offset = ii.offset;
 
-            final float leftBound = offset;
-            final float rightBound = offset + ii.widthFactor + marginOffset;
-            if (first || scrollOffset >= leftBound) {
-                if (scrollOffset < rightBound || i == mItems.size() - 1) {
+            final float offset = ii.offset;
+            final float startBound = offset;
+            if (first || scrollOffset >= startBound) {
+                final float endBound = offset + ii.widthFactor + marginOffset;
+                if (scrollOffset < endBound || i == mItems.size() - 1) {
                     return ii;
                 }
             } else {
                 return lastItem;
             }
+
             first = false;
             lastPos = ii.position;
             lastOffset = offset;
@@ -2130,13 +2212,28 @@
         return lastItem;
     }
 
+    private int getScrollStart() {
+        if (isLayoutRtl()) {
+            return MAX_SCROLL_X - getScrollX();
+        } else {
+            return getScrollX();
+        }
+    }
+
+    /**
+     * @param currentPage the position of the page with the first visible starting edge
+     * @param pageOffset the fraction of the right-hand page that's visible
+     * @param velocity the velocity of the touch event stream
+     * @param deltaX the distance of the touch event stream
+     * @return the position of the target page
+     */
     private int determineTargetPage(int currentPage, float pageOffset, int velocity, int deltaX) {
         int targetPage;
         if (Math.abs(deltaX) > mFlingDistance && Math.abs(velocity) > mMinimumVelocity) {
-            targetPage = velocity > 0 ? currentPage : currentPage + 1;
+            targetPage = currentPage - (velocity < 0 ? mLeftIncr : 0);
         } else {
             final float truncator = currentPage >= mCurItem ? 0.4f : 0.6f;
-            targetPage = (int) (currentPage + pageOffset + truncator);
+            targetPage = (int) (currentPage - mLeftIncr * (pageOffset + truncator));
         }
 
         if (mItems.size() > 0) {
@@ -2144,7 +2241,7 @@
             final ItemInfo lastItem = mItems.get(mItems.size() - 1);
 
             // Only let the user target pages we have items for
-            targetPage = Math.max(firstItem.position, Math.min(targetPage, lastItem.position));
+            targetPage = MathUtils.constrain(targetPage, firstItem.position, lastItem.position);
         }
 
         return targetPage;
@@ -2205,6 +2302,7 @@
             int itemIndex = 0;
             ItemInfo ii = mItems.get(0);
             float offset = ii.offset;
+
             final int itemCount = mItems.size();
             final int firstPos = ii.position;
             final int lastPos = mItems.get(itemCount - 1).position;
@@ -2213,156 +2311,39 @@
                     ii = mItems.get(++itemIndex);
                 }
 
-                float drawAt;
+                final float itemOffset;
+                final float widthFactor;
                 if (pos == ii.position) {
-                    drawAt = (ii.offset + ii.widthFactor) * width;
-                    offset = ii.offset + ii.widthFactor + marginOffset;
+                    itemOffset = ii.offset;
+                    widthFactor = ii.widthFactor;
                 } else {
-                    float widthFactor = mAdapter.getPageWidth(pos);
-                    drawAt = (offset + widthFactor) * width;
-                    offset += widthFactor + marginOffset;
+                    itemOffset = offset;
+                    widthFactor = mAdapter.getPageWidth(pos);
                 }
 
-                if (drawAt + mPageMargin > scrollX) {
-                    mMarginDrawable.setBounds((int) drawAt, mTopPageBounds,
-                            (int) (drawAt + mPageMargin + 0.5f), mBottomPageBounds);
+                final float left;
+                final float scaledOffset = itemOffset * width;
+                if (isLayoutRtl()) {
+                    left = MAX_SCROLL_X - scaledOffset;
+                } else {
+                    left = scaledOffset + widthFactor * width;
+                }
+
+                offset = itemOffset + widthFactor + marginOffset;
+
+                if (left + mPageMargin > scrollX) {
+                    mMarginDrawable.setBounds((int) left, mTopPageBounds,
+                            (int) (left + mPageMargin + 0.5f), mBottomPageBounds);
                     mMarginDrawable.draw(canvas);
                 }
 
-                if (drawAt > scrollX + width) {
+                if (left > scrollX + width) {
                     break; // No more visible, no sense in continuing
                 }
             }
         }
     }
 
-    /**
-     * Start a fake drag of the pager.
-     *
-     * <p>A fake drag can be useful if you want to synchronize the motion of the ViewPager
-     * with the touch scrolling of another view, while still letting the ViewPager
-     * control the snapping motion and fling behavior. (e.g. parallax-scrolling tabs.)
-     * Call {@link #fakeDragBy(float)} to simulate the actual drag motion. Call
-     * {@link #endFakeDrag()} to complete the fake drag and fling as necessary.
-     *
-     * <p>During a fake drag the ViewPager will ignore all touch events. If a real drag
-     * is already in progress, this method will return false.
-     *
-     * @return true if the fake drag began successfully, false if it could not be started.
-     *
-     * @see #fakeDragBy(float)
-     * @see #endFakeDrag()
-     */
-    public boolean beginFakeDrag() {
-        if (mIsBeingDragged) {
-            return false;
-        }
-        mFakeDragging = true;
-        setScrollState(SCROLL_STATE_DRAGGING);
-        mInitialMotionX = mLastMotionX = 0;
-        if (mVelocityTracker == null) {
-            mVelocityTracker = VelocityTracker.obtain();
-        } else {
-            mVelocityTracker.clear();
-        }
-        final long time = SystemClock.uptimeMillis();
-        final MotionEvent ev = MotionEvent.obtain(time, time, MotionEvent.ACTION_DOWN, 0, 0, 0);
-        mVelocityTracker.addMovement(ev);
-        ev.recycle();
-        mFakeDragBeginTime = time;
-        return true;
-    }
-
-    /**
-     * End a fake drag of the pager.
-     *
-     * @see #beginFakeDrag()
-     * @see #fakeDragBy(float)
-     */
-    public void endFakeDrag() {
-        if (!mFakeDragging) {
-            throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
-        }
-
-        final VelocityTracker velocityTracker = mVelocityTracker;
-        velocityTracker.computeCurrentVelocity(1000, mMaximumVelocity);
-        int initialVelocity = (int) velocityTracker.getXVelocity(mActivePointerId);
-        mPopulatePending = true;
-        final int width = getClientWidth();
-        final int scrollX = getScrollX();
-        final ItemInfo ii = infoForCurrentScrollPosition();
-        final int currentPage = ii.position;
-        final float pageOffset = (((float) scrollX / width) - ii.offset) / ii.widthFactor;
-        final int totalDelta = (int) (mLastMotionX - mInitialMotionX);
-        int nextPage = determineTargetPage(currentPage, pageOffset, initialVelocity,
-                totalDelta);
-        setCurrentItemInternal(nextPage, true, true, initialVelocity);
-        endDrag();
-
-        mFakeDragging = false;
-    }
-
-    /**
-     * Fake drag by an offset in pixels. You must have called {@link #beginFakeDrag()} first.
-     *
-     * @param xOffset Offset in pixels to drag by.
-     * @see #beginFakeDrag()
-     * @see #endFakeDrag()
-     */
-    public void fakeDragBy(float xOffset) {
-        if (!mFakeDragging) {
-            throw new IllegalStateException("No fake drag in progress. Call beginFakeDrag first.");
-        }
-
-        mLastMotionX += xOffset;
-
-        float oldScrollX = getScrollX();
-        float scrollX = oldScrollX - xOffset;
-        final int width = getClientWidth();
-
-        float leftBound = width * mFirstOffset;
-        float rightBound = width * mLastOffset;
-
-        final ItemInfo firstItem = mItems.get(0);
-        final ItemInfo lastItem = mItems.get(mItems.size() - 1);
-        if (firstItem.position != 0) {
-            leftBound = firstItem.offset * width;
-        }
-        if (lastItem.position != mAdapter.getCount() - 1) {
-            rightBound = lastItem.offset * width;
-        }
-
-        if (scrollX < leftBound) {
-            scrollX = leftBound;
-        } else if (scrollX > rightBound) {
-            scrollX = rightBound;
-        }
-        // Don't lose the rounded component
-        mLastMotionX += scrollX - (int) scrollX;
-        scrollTo((int) scrollX, getScrollY());
-        pageScrolled((int) scrollX);
-
-        // Synthesize an event for the VelocityTracker.
-        final long time = SystemClock.uptimeMillis();
-        final MotionEvent ev = MotionEvent.obtain(mFakeDragBeginTime, time, MotionEvent.ACTION_MOVE,
-                mLastMotionX, 0, 0);
-        mVelocityTracker.addMovement(ev);
-        ev.recycle();
-    }
-
-    /**
-     * Returns true if a fake drag is in progress.
-     *
-     * @return true if currently in a fake drag, false otherwise.
-     *
-     * @see #beginFakeDrag()
-     * @see #fakeDragBy(float)
-     * @see #endFakeDrag()
-     */
-    public boolean isFakeDragging() {
-        return mFakeDragging;
-    }
-
     private void onSecondaryPointerUp(MotionEvent ev) {
         final int pointerIndex = ev.getActionIndex();
         final int pointerId = ev.getPointerId(pointerIndex);
@@ -2408,7 +2389,7 @@
             return false;
         }
 
-        final int width = getClientWidth();
+        final int width = getPaddedWidth();
         final int scrollX = getScrollX();
         if (direction < 0) {
             return (scrollX > (int) (width * mFirstOffset));
@@ -2438,12 +2419,11 @@
             final int count = group.getChildCount();
             // Count backwards - let topmost views consume scroll distance first.
             for (int i = count - 1; i >= 0; i--) {
-                // TODO: Add versioned support here for transformed views.
-                // This will not work for transformed views in Honeycomb+
+                // TODO: Add support for transformed views.
                 final View child = group.getChildAt(i);
-                if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight() &&
-                        y + scrollY >= child.getTop() && y + scrollY < child.getBottom() &&
-                        canScroll(child, true, dx, x + scrollX - child.getLeft(),
+                if (x + scrollX >= child.getLeft() && x + scrollX < child.getRight()
+                        && y + scrollY >= child.getTop() && y + scrollY < child.getBottom()
+                        && canScroll(child, true, dx, x + scrollX - child.getLeft(),
                                 y + scrollY - child.getTop())) {
                     return true;
                 }
@@ -2582,19 +2562,22 @@
     }
 
     boolean pageLeft() {
-        if (mCurItem > 0) {
-            setCurrentItem(mCurItem-1, true);
-            return true;
-        }
-        return false;
+        return setCurrentItemInternal(mCurItem + mLeftIncr, true, false);
     }
 
     boolean pageRight() {
-        if (mAdapter != null && mCurItem < (mAdapter.getCount()-1)) {
-            setCurrentItem(mCurItem+1, true);
-            return true;
+        return setCurrentItemInternal(mCurItem - mLeftIncr, true, false);
+    }
+
+    @Override
+    public void onRtlPropertiesChanged(@ResolvedLayoutDir int layoutDirection) {
+        super.onRtlPropertiesChanged(layoutDirection);
+
+        if (layoutDirection == LAYOUT_DIRECTION_LTR) {
+            mLeftIncr = -1;
+        } else {
+            mLeftIncr = 1;
         }
-        return false;
     }
 
     /**
diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp
index 0747969..44037dd 100644
--- a/core/jni/android/graphics/Graphics.cpp
+++ b/core/jni/android/graphics/Graphics.cpp
@@ -358,7 +358,7 @@
     return legacyBitmapConfigToColorType(c);
 }
 
-SkCanvas* GraphicsJNI::getNativeCanvas(JNIEnv* env, jobject canvas) {
+android::Canvas* GraphicsJNI::getNativeCanvas(JNIEnv* env, jobject canvas) {
     SkASSERT(env);
     SkASSERT(canvas);
     SkASSERT(env->IsInstanceOf(canvas, gCanvas_class));
@@ -366,9 +366,7 @@
     if (!canvasHandle) {
         return NULL;
     }
-    SkCanvas* c = reinterpret_cast<android::Canvas*>(canvasHandle)->asSkCanvas();
-    SkASSERT(c);
-    return c;
+    return reinterpret_cast<android::Canvas*>(canvasHandle);
 }
 
 SkRegion* GraphicsJNI::getNativeRegion(JNIEnv* env, jobject region)
diff --git a/core/jni/android/graphics/GraphicsJNI.h b/core/jni/android/graphics/GraphicsJNI.h
index 422d3f1..d73507e 100644
--- a/core/jni/android/graphics/GraphicsJNI.h
+++ b/core/jni/android/graphics/GraphicsJNI.h
@@ -8,6 +8,7 @@
 #include "SkPoint.h"
 #include "SkRect.h"
 #include "SkImageDecoder.h"
+#include <Canvas.h>
 #include <jni.h>
 
 class SkBitmapRegionDecoder;
@@ -47,7 +48,7 @@
     static SkPoint* jpointf_to_point(JNIEnv*, jobject jpointf, SkPoint* point);
     static void point_to_jpointf(const SkPoint& point, JNIEnv*, jobject jpointf);
 
-    static SkCanvas* getNativeCanvas(JNIEnv*, jobject canvas);
+    static android::Canvas* getNativeCanvas(JNIEnv*, jobject canvas);
     static SkBitmap* getSkBitmap(JNIEnv*, jobject bitmap);
     static SkRegion* getNativeRegion(JNIEnv*, jobject region);
 
diff --git a/core/jni/android_graphics_Canvas.cpp b/core/jni/android_graphics_Canvas.cpp
index a2c1609..3ae829b 100644
--- a/core/jni/android_graphics_Canvas.cpp
+++ b/core/jni/android_graphics_Canvas.cpp
@@ -39,17 +39,23 @@
 }
 
 // Native wrapper constructor used by Canvas(Bitmap)
-static jlong initRaster(JNIEnv* env, jobject, jlong bitmapHandle) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    return reinterpret_cast<jlong>(Canvas::create_canvas(bitmap));
+static jlong initRaster(JNIEnv* env, jobject, jobject jbitmap) {
+    SkBitmap* bitmap = nullptr;
+    if (jbitmap != NULL) {
+        bitmap = GraphicsJNI::getSkBitmap(env, jbitmap);
+    }
+    return reinterpret_cast<jlong>(Canvas::create_canvas(
+            bitmap ? *bitmap : SkBitmap()));
 }
 
 // Set the given bitmap as the new draw target (wrapped in a new SkCanvas),
 // optionally copying canvas matrix & clip state.
-static void setBitmap(JNIEnv* env, jobject, jlong canvasHandle, jlong bitmapHandle,
-                      jboolean copyState) {
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    get_canvas(canvasHandle)->setBitmap(bitmap, copyState);
+static void setBitmap(JNIEnv* env, jobject, jlong canvasHandle, jobject jbitmap) {
+    SkBitmap* bitmap = nullptr;
+    if (jbitmap != NULL) {
+        bitmap = GraphicsJNI::getSkBitmap(env, jbitmap);
+    }
+    get_canvas(canvasHandle)->setBitmap(bitmap ? *bitmap : SkBitmap());
 }
 
 static jboolean isOpaque(JNIEnv*, jobject, jlong canvasHandle) {
@@ -658,8 +664,8 @@
 
 static JNINativeMethod gMethods[] = {
     {"finalizer", "(J)V", (void*) CanvasJNI::finalizer},
-    {"initRaster", "(J)J", (void*) CanvasJNI::initRaster},
-    {"native_setBitmap", "(JJZ)V", (void*) CanvasJNI::setBitmap},
+    {"initRaster", "(Landroid/graphics/Bitmap;)J", (void*) CanvasJNI::initRaster},
+    {"native_setBitmap", "(JLandroid/graphics/Bitmap;)V", (void*) CanvasJNI::setBitmap},
     {"native_isOpaque","(J)Z", (void*) CanvasJNI::isOpaque},
     {"native_getWidth","(J)I", (void*) CanvasJNI::getWidth},
     {"native_getHeight","(J)I", (void*) CanvasJNI::getHeight},
diff --git a/core/jni/android_media_AudioRecord.cpp b/core/jni/android_media_AudioRecord.cpp
index 33db4a85..d86f71a 100644
--- a/core/jni/android_media_AudioRecord.cpp
+++ b/core/jni/android_media_AudioRecord.cpp
@@ -145,8 +145,7 @@
 // ----------------------------------------------------------------------------
 static jint
 android_media_AudioRecord_setup(JNIEnv *env, jobject thiz, jobject weak_this,
-        jobject jaa, jint sampleRateInHertz, jint channelMask,
-                // Java channel masks map directly to the native definition
+        jobject jaa, jint sampleRateInHertz, jint channelMask, jint channelIndexMask,
         jint audioFormat, jint buffSizeInBytes, jintArray jSession)
 {
     //ALOGV(">> Entering android_media_AudioRecord_setup");
@@ -158,6 +157,15 @@
         return (jint) AUDIO_JAVA_ERROR;
     }
 
+    // channel index mask takes priority over channel position masks.
+    if (channelIndexMask) {
+        // Java channel index masks need the representation bits set.
+        channelMask = audio_channel_mask_from_representation_and_bits(
+                AUDIO_CHANNEL_REPRESENTATION_INDEX,
+                channelIndexMask);
+    }
+    // Java channel position masks map directly to the native definition
+
     if (!audio_is_input_channel(channelMask)) {
         ALOGE("Error creating AudioRecord: channel mask %#x is not valid.", channelMask);
         return (jint) AUDIORECORD_ERROR_SETUP_INVALIDCHANNELMASK;
@@ -576,6 +584,13 @@
     return frameCount * channelCount * audio_bytes_per_sample(format);
 }
 
+static jboolean android_media_AudioRecord_setInputDevice(
+        JNIEnv *env,  jobject thiz, jint device_id) {
+
+//    sp<AudioRecord> lpRecorder = getAudioRecord(env, thiz);
+//    return lpRecorder->setInputDevice(device_id) == NO_ERROR;
+    return false;
+}
 
 // ----------------------------------------------------------------------------
 // ----------------------------------------------------------------------------
@@ -583,7 +598,7 @@
     // name,               signature,  funcPtr
     {"native_start",         "(II)I",    (void *)android_media_AudioRecord_start},
     {"native_stop",          "()V",    (void *)android_media_AudioRecord_stop},
-    {"native_setup",         "(Ljava/lang/Object;Ljava/lang/Object;IIII[I)I",
+    {"native_setup",         "(Ljava/lang/Object;Ljava/lang/Object;IIIII[I)I",
                                        (void *)android_media_AudioRecord_setup},
     {"native_finalize",      "()V",    (void *)android_media_AudioRecord_finalize},
     {"native_release",       "()V",    (void *)android_media_AudioRecord_release},
@@ -608,6 +623,7 @@
                              "()I",    (void *)android_media_AudioRecord_get_pos_update_period},
     {"native_get_min_buff_size",
                              "(III)I",   (void *)android_media_AudioRecord_get_min_buff_size},
+    {"native_setInputDevice", "(I)Z", (void *)android_media_AudioRecord_setInputDevice},
 };
 
 // field names found in android/media/AudioRecord.java
diff --git a/core/jni/android_media_AudioTrack.cpp b/core/jni/android_media_AudioTrack.cpp
index 8d3a9aa..8b2c269 100644
--- a/core/jni/android_media_AudioTrack.cpp
+++ b/core/jni/android_media_AudioTrack.cpp
@@ -677,6 +677,63 @@
 
 
 // ----------------------------------------------------------------------------
+static void android_media_AudioTrack_set_playback_settings(JNIEnv *env,  jobject thiz,
+        jfloatArray floatArray, jintArray intArray) {
+    sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
+    if (lpTrack == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException",
+            "AudioTrack not initialized");
+        return;
+    }
+
+    // NOTE: Get<Primitive>ArrayRegion throws ArrayIndexOutOfBoundsException if not valid.
+    // TODO: consider the actual occupancy.
+    float farray[2];
+    int iarray[2];
+    if ((env->GetFloatArrayRegion(floatArray, 0, 2, farray), env->ExceptionCheck()) == JNI_FALSE
+            &&
+        (env->GetIntArrayRegion(intArray, 0, 2, iarray), env->ExceptionCheck()) == JNI_FALSE) {
+        // arrays retrieved OK
+        AudioPlaybackRate playbackRate;
+        playbackRate.mSpeed = farray[0];
+        playbackRate.mPitch = farray[1];
+        playbackRate.mFallbackMode = (AudioTimestretchFallbackMode)iarray[0];
+        playbackRate.mStretchMode = (AudioTimestretchStretchMode)iarray[1];
+        if (lpTrack->setPlaybackRate(playbackRate) != OK) {
+            jniThrowException(env, "java/lang/IllegalArgumentException",
+                    "arguments out of range");
+        }
+    }
+}
+
+
+// ----------------------------------------------------------------------------
+static void android_media_AudioTrack_get_playback_settings(JNIEnv *env,  jobject thiz,
+        jfloatArray floatArray, jintArray intArray) {
+    sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
+    if (lpTrack == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException",
+            "AudioTrack not initialized");
+        return;
+    }
+
+    AudioPlaybackRate playbackRate = lpTrack->getPlaybackRate();
+
+    float farray[2] = {
+            playbackRate.mSpeed,
+            playbackRate.mPitch,
+    };
+    int iarray[2] = {
+            playbackRate.mFallbackMode,
+            playbackRate.mStretchMode,
+    };
+    // NOTE: Set<Primitive>ArrayRegion throws ArrayIndexOutOfBoundsException if not valid.
+    env->SetFloatArrayRegion(floatArray, 0, 2, farray);
+    env->SetIntArrayRegion(intArray, 0, 2, iarray);
+}
+
+
+// ----------------------------------------------------------------------------
 static jint android_media_AudioTrack_set_marker_pos(JNIEnv *env,  jobject thiz,
         jint markerPos) {
     sp<AudioTrack> lpTrack = getAudioTrack(env, thiz);
@@ -942,6 +999,10 @@
                              "(I)I",     (void *)android_media_AudioTrack_set_playback_rate},
     {"native_get_playback_rate",
                              "()I",      (void *)android_media_AudioTrack_get_playback_rate},
+    {"native_set_playback_settings",
+                             "([F[I)V",  (void *)android_media_AudioTrack_set_playback_settings},
+    {"native_get_playback_settings",
+                             "([F[I)V",  (void *)android_media_AudioTrack_get_playback_settings},
     {"native_set_marker_pos","(I)I",     (void *)android_media_AudioTrack_set_marker_pos},
     {"native_get_marker_pos","()I",      (void *)android_media_AudioTrack_get_marker_pos},
     {"native_set_pos_update_period",
diff --git a/core/jni/android_view_GraphicBuffer.cpp b/core/jni/android_view_GraphicBuffer.cpp
index a12629f..aa79d70 100644
--- a/core/jni/android_view_GraphicBuffer.cpp
+++ b/core/jni/android_view_GraphicBuffer.cpp
@@ -67,11 +67,6 @@
     jfieldID bottom;
 } gRectClassInfo;
 
-static struct {
-    jfieldID mSurfaceFormat;
-    jmethodID setNativeBitmap;
-} gCanvasClassInfo;
-
 #define GET_INT(object, field) \
     env->GetIntField(object, field)
 
@@ -196,13 +191,9 @@
         bitmap.setPixels(NULL);
     }
 
-    SET_INT(canvas, gCanvasClassInfo.mSurfaceFormat, buffer->getPixelFormat());
-    INVOKEV(canvas, gCanvasClassInfo.setNativeBitmap, reinterpret_cast<jlong>(&bitmap));
-
-    SkRect clipRect;
-    clipRect.set(rect.left, rect.top, rect.right, rect.bottom);
-    SkCanvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvas);
-    nativeCanvas->clipRect(clipRect);
+    Canvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvas);
+    nativeCanvas->setBitmap(bitmap);
+    nativeCanvas->clipRect(rect.left, rect.top, rect.right, rect.bottom);
 
     if (dirtyRect) {
         INVOKEV(dirtyRect, gRectClassInfo.set,
@@ -217,7 +208,8 @@
 
     GraphicBufferWrapper* wrapper =
                 reinterpret_cast<GraphicBufferWrapper*>(wrapperHandle);
-    INVOKEV(canvas, gCanvasClassInfo.setNativeBitmap, (jlong)0);
+    Canvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvas);
+    nativeCanvas->setBitmap(SkBitmap());
 
     if (wrapper) {
         status_t status = wrapper->buffer->unlock();
@@ -302,10 +294,6 @@
     gRectClassInfo.right = GetFieldIDOrDie(env, clazz, "right", "I");
     gRectClassInfo.bottom = GetFieldIDOrDie(env, clazz, "bottom", "I");
 
-    clazz = FindClassOrDie(env, "android/graphics/Canvas");
-    gCanvasClassInfo.mSurfaceFormat = GetFieldIDOrDie(env, clazz, "mSurfaceFormat", "I");
-    gCanvasClassInfo.setNativeBitmap = GetMethodIDOrDie(env, clazz, "setNativeBitmap", "(J)V");
-
     return RegisterMethodsOrDie(env, kClassPathName, gMethods, NELEM(gMethods));
 }
 
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index 4fcb361..c4cd7ff 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -73,11 +73,6 @@
     jfieldID bottom;
 } gRectClassInfo;
 
-static struct {
-    jfieldID mSurfaceFormat;
-    jmethodID setNativeBitmap;
-} gCanvasClassInfo;
-
 // ----------------------------------------------------------------------------
 
 // this is just a pointer we use to pass to inc/decStrong
@@ -318,9 +313,6 @@
         return 0;
     }
 
-    // Associate a SkCanvas object to this surface
-    env->SetIntField(canvasObj, gCanvasClassInfo.mSurfaceFormat, outBuffer.format);
-
     SkImageInfo info = SkImageInfo::Make(outBuffer.width, outBuffer.height,
                                          convertPixelFormat(outBuffer.format),
                                          kPremul_SkAlphaType);
@@ -338,12 +330,12 @@
         bitmap.setPixels(NULL);
     }
 
-    env->CallVoidMethod(canvasObj, gCanvasClassInfo.setNativeBitmap,
-                        reinterpret_cast<jlong>(&bitmap));
+    Canvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvasObj);
+    nativeCanvas->setBitmap(bitmap);
 
     if (dirtyRectPtr) {
-        SkCanvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvasObj);
-        nativeCanvas->clipRect( SkRect::Make(reinterpret_cast<const SkIRect&>(dirtyRect)) );
+        nativeCanvas->clipRect(dirtyRect.left, dirtyRect.top,
+                dirtyRect.right, dirtyRect.bottom);
     }
 
     if (dirtyRectObj) {
@@ -369,7 +361,8 @@
     }
 
     // detach the canvas from the surface
-    env->CallVoidMethod(canvasObj, gCanvasClassInfo.setNativeBitmap, (jlong)0);
+    Canvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvasObj);
+    nativeCanvas->setBitmap(SkBitmap());
 
     // unlock surface
     status_t err = surface->unlockAndPost();
@@ -564,10 +557,6 @@
             gSurfaceClassInfo.clazz, "mLock", "Ljava/lang/Object;");
     gSurfaceClassInfo.ctor = GetMethodIDOrDie(env, gSurfaceClassInfo.clazz, "<init>", "(J)V");
 
-    clazz = FindClassOrDie(env, "android/graphics/Canvas");
-    gCanvasClassInfo.mSurfaceFormat = GetFieldIDOrDie(env, clazz, "mSurfaceFormat", "I");
-    gCanvasClassInfo.setNativeBitmap = GetMethodIDOrDie(env, clazz, "setNativeBitmap", "(J)V");
-
     clazz = FindClassOrDie(env, "android/graphics/Rect");
     gRectClassInfo.left = GetFieldIDOrDie(env, clazz, "left", "I");
     gRectClassInfo.top = GetFieldIDOrDie(env, clazz, "top", "I");
diff --git a/core/jni/android_view_TextureView.cpp b/core/jni/android_view_TextureView.cpp
index c2bd0b3c4..7e05793 100644
--- a/core/jni/android_view_TextureView.cpp
+++ b/core/jni/android_view_TextureView.cpp
@@ -48,11 +48,6 @@
 } gRectClassInfo;
 
 static struct {
-    jfieldID mSurfaceFormat;
-    jmethodID setNativeBitmap;
-} gCanvasClassInfo;
-
-static struct {
     jfieldID nativeWindow;
 } gTextureViewClassInfo;
 
@@ -172,13 +167,9 @@
         bitmap.setPixels(NULL);
     }
 
-    SET_INT(canvas, gCanvasClassInfo.mSurfaceFormat, buffer.format);
-    INVOKEV(canvas, gCanvasClassInfo.setNativeBitmap, reinterpret_cast<jlong>(&bitmap));
-
-    SkRect clipRect;
-    clipRect.set(rect.left, rect.top, rect.right, rect.bottom);
-    SkCanvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvas);
-    nativeCanvas->clipRect(clipRect);
+    Canvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvas);
+    nativeCanvas->setBitmap(bitmap);
+    nativeCanvas->clipRect(rect.left, rect.top, rect.right, rect.bottom);
 
     if (dirtyRect) {
         INVOKEV(dirtyRect, gRectClassInfo.set,
@@ -191,7 +182,8 @@
 static void android_view_TextureView_unlockCanvasAndPost(JNIEnv* env, jobject,
         jlong nativeWindow, jobject canvas) {
 
-    INVOKEV(canvas, gCanvasClassInfo.setNativeBitmap, (jlong)0);
+    Canvas* nativeCanvas = GraphicsJNI::getNativeCanvas(env, canvas);
+    nativeCanvas->setBitmap(SkBitmap());
 
     if (nativeWindow) {
         sp<ANativeWindow> window((ANativeWindow*) nativeWindow);
@@ -225,10 +217,6 @@
     gRectClassInfo.right = GetFieldIDOrDie(env, clazz, "right", "I");
     gRectClassInfo.bottom = GetFieldIDOrDie(env, clazz, "bottom", "I");
 
-    clazz = FindClassOrDie(env, "android/graphics/Canvas");
-    gCanvasClassInfo.mSurfaceFormat = GetFieldIDOrDie(env, clazz, "mSurfaceFormat", "I");
-    gCanvasClassInfo.setNativeBitmap = GetMethodIDOrDie(env, clazz, "setNativeBitmap", "(J)V");
-
     clazz = FindClassOrDie(env, "android/view/TextureView");
     gTextureViewClassInfo.nativeWindow = GetFieldIDOrDie(env, clazz, "mNativeWindow", "J");
 
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index fa5e4ad..f430eb5 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -1116,6 +1116,11 @@
     <permission android:name="android.permission.ACCESS_PDB_STATE"
         android:protectionLevel="signature" />
 
+    <!-- @hide Allows system update service to notify device owner about pending updates.
+   <p>Not for use by third-party applications. -->
+    <permission android:name="android.permission.NOTIFY_PENDING_SYSTEM_UPDATE"
+        android:protectionLevel="signatureOrSystem" />
+
     <!-- =========================================== -->
     <!-- Permissions associated with camera and image capture -->
     <!-- =========================================== -->
@@ -1304,6 +1309,14 @@
     <permission android:name="android.permission.MANAGE_USERS"
         android:protectionLevel="signature|system" />
 
+    <!-- @hide Allows an application to set the profile owners and the device owner.
+         This permission is not available to third party applications.-->
+    <permission android:name="android.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS"
+        android:permissionGroup="android.permission-group.SYSTEM_TOOLS"
+        android:protectionLevel="signature"
+        android:label="@string/permlab_manageProfileAndDeviceOwners"
+        android:description="@string/permdesc_manageProfileAndDeviceOwners" />
+
     <!-- Allows an application to get full detailed information about
          recently running tasks, with full fidelity to the real state.
          @hide -->
@@ -2092,6 +2105,11 @@
         android:protectionLevel="signature|development|appop" />
     <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
 
+    <!-- @hide Allows an application to change the app idle state of an app.
+         <p>Not for use by third-party applications. -->
+    <permission android:name="android.permission.CHANGE_APP_IDLE_STATE"
+        android:protectionLevel="signature" />
+
     <!-- @SystemApi Allows an application to collect battery statistics -->
     <permission android:name="android.permission.BATTERY_STATS"
         android:protectionLevel="signature|system|development" />
diff --git a/core/res/res/anim/task_open_enter.xml b/core/res/res/anim/task_open_enter.xml
index 8321ea4..e511cc9 100644
--- a/core/res/res/anim/task_open_enter.xml
+++ b/core/res/res/anim/task_open_enter.xml
@@ -18,7 +18,7 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-        android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
+        android:shareInterpolator="false" android:zAdjustment="top">
 
     <alpha android:fromAlpha="0" android:toAlpha="1.0"
             android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
diff --git a/core/res/res/anim/wallpaper_close_enter.xml b/core/res/res/anim/wallpaper_close_enter.xml
index a189813..7256a3c 100644
--- a/core/res/res/anim/wallpaper_close_enter.xml
+++ b/core/res/res/anim/wallpaper_close_enter.xml
@@ -18,7 +18,7 @@
 -->
 
 <set xmlns:android="http://schemas.android.com/apk/res/android"
-    android:background="#ff000000" android:shareInterpolator="false" android:zAdjustment="top">
+    android:shareInterpolator="false" android:zAdjustment="top">
 
     <alpha android:fromAlpha="0" android:toAlpha="1.0"
         android:fillEnabled="true" android:fillBefore="true" android:fillAfter="true"
diff --git a/core/res/res/drawable/ic_chevron_right.xml b/core/res/res/drawable/ic_chevron_end.xml
similarity index 91%
rename from core/res/res/drawable/ic_chevron_right.xml
rename to core/res/res/drawable/ic_chevron_end.xml
index 4e6d8e3..8570d26 100644
--- a/core/res/res/drawable/ic_chevron_right.xml
+++ b/core/res/res/drawable/ic_chevron_end.xml
@@ -18,7 +18,8 @@
         android:height="24dp"
         android:viewportWidth="24"
         android:viewportHeight="24"
-        android:tint="?attr/colorControlNormal">
+        android:tint="?attr/colorControlNormal"
+        android:autoMirrored="true">
     <path
         android:fillColor="#FF000000"
         android:pathData="M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6,-6z"/>
diff --git a/core/res/res/drawable/ic_chevron_left.xml b/core/res/res/drawable/ic_chevron_start.xml
similarity index 91%
rename from core/res/res/drawable/ic_chevron_left.xml
rename to core/res/res/drawable/ic_chevron_start.xml
index dc24706..d412ce0 100644
--- a/core/res/res/drawable/ic_chevron_left.xml
+++ b/core/res/res/drawable/ic_chevron_start.xml
@@ -18,7 +18,8 @@
         android:height="24dp"
         android:viewportWidth="24"
         android:viewportHeight="24"
-        android:tint="?attr/colorControlNormal">
+        android:tint="?attr/colorControlNormal"
+        android:autoMirrored="true">
     <path
         android:fillColor="#FF000000"
         android:pathData="M15.41 7.41L14 6l-6 6 6 6 1.41,-1.41L10.83 12z"/>
diff --git a/core/res/res/drawable/ic_chevron_left.xml b/core/res/res/drawable/ic_spinner_caret.xml
similarity index 81%
copy from core/res/res/drawable/ic_chevron_left.xml
copy to core/res/res/drawable/ic_spinner_caret.xml
index dc24706..6a18f89 100644
--- a/core/res/res/drawable/ic_chevron_left.xml
+++ b/core/res/res/drawable/ic_spinner_caret.xml
@@ -13,13 +13,14 @@
     See the License for the specific language governing permissions and
     limitations under the License.
 -->
+
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
         android:width="24dp"
         android:height="24dp"
-        android:viewportWidth="24"
-        android:viewportHeight="24"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
         android:tint="?attr/colorControlNormal">
     <path
-        android:fillColor="#FF000000"
-        android:pathData="M15.41 7.41L14 6l-6 6 6 6 1.41,-1.41L10.83 12z"/>
+        android:pathData="M7,10l5,5,5-5z"
+        android:fillColor="@color/white"/>
 </vector>
diff --git a/core/res/res/drawable/spinner_background_material.xml b/core/res/res/drawable/spinner_background_material.xml
index d5b509f..892dbc5 100644
--- a/core/res/res/drawable/spinner_background_material.xml
+++ b/core/res/res/drawable/spinner_background_material.xml
@@ -15,21 +15,24 @@
 -->
 
 <layer-list xmlns:android="http://schemas.android.com/apk/res/android"
-            android:paddingMode="stack">
-    <item android:drawable="@drawable/item_background_borderless_material"
-          android:gravity="end|center_vertical"
-          android:width="24dp"
-          android:height="24dp" />
-    <item android:gravity="end|center_vertical">
-        <vector android:width="24dp"
-                android:height="24dp"
-                android:viewportWidth="24.0"
-                android:viewportHeight="24.0"
-                android:tint="?attr/colorControlNormal">
-            <path android:pathData="M7,10l5,5,5-5z"
-                  android:fillColor="@color/white"/>
-        </vector>
+            android:paddingMode="stack"
+            android:paddingStart="0dp"
+            android:paddingEnd="48dp"
+            android:paddingLeft="0dp"
+            android:paddingRight="0dp">
+    <item
+        android:gravity="end|center_vertical"
+        android:width="48dp"
+        android:height="48dp">
+        <ripple
+            android:color="?attr/colorControlHighlight"
+            android:radius="24dp" />
     </item>
-    <item android:end="48dp"
-          android:drawable="@color/transparent" />
+
+    <item
+        android:drawable="@drawable/ic_spinner_caret"
+        android:gravity="end|center_vertical"
+        android:width="24dp"
+        android:height="24dp"
+        android:end="12dp" />
 </layer-list>
diff --git a/core/res/res/layout/date_picker_header_material.xml b/core/res/res/layout/date_picker_header_material.xml
index 8125544..2150341 100644
--- a/core/res/res/layout/date_picker_header_material.xml
+++ b/core/res/res/layout/date_picker_header_material.xml
@@ -42,7 +42,7 @@
 
     <TextView
         android:id="@+id/date_picker_header_date"
-        android:layout_width="match_parent"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:textAppearance="@style/TextAppearance.Material.DatePicker.DateLabel"
         android:gravity="start"
diff --git a/core/res/res/layout/day_picker_content_material.xml b/core/res/res/layout/day_picker_content_material.xml
index 1852bfa..b582d74 100644
--- a/core/res/res/layout/day_picker_content_material.xml
+++ b/core/res/res/layout/day_picker_content_material.xml
@@ -30,7 +30,7 @@
         android:layout_height="wrap_content"
         android:minWidth="48dp"
         android:minHeight="48dp"
-        android:src="@drawable/ic_chevron_left"
+        android:src="@drawable/ic_chevron_start"
         android:background="?attr/selectableItemBackgroundBorderless"
         android:contentDescription="@string/date_picker_prev_month_button"
         android:visibility="invisible" />
@@ -41,7 +41,7 @@
         android:layout_height="wrap_content"
         android:minWidth="48dp"
         android:minHeight="48dp"
-        android:src="@drawable/ic_chevron_right"
+        android:src="@drawable/ic_chevron_end"
         android:background="?attr/selectableItemBackgroundBorderless"
         android:contentDescription="@string/date_picker_next_month_button"
         android:visibility="invisible" />
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 551c083..00c771d8 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -2329,7 +2329,7 @@
         <!-- Defines whether this view reacts to long click events. -->
         <attr name="longClickable" format="boolean" />
 
-        <!-- If unset, no state will be saved for this view when it is being
+        <!-- If false, no state will be saved for this view when it is being
              frozen. The default is true, allowing the view to be saved
              (however it also must have an ID assigned to it for its
              state to be saved).  Setting this to false only disables the
@@ -2337,6 +2337,11 @@
              be saved. -->
         <attr name="saveEnabled" format="boolean" />
 
+        <!-- If true, no {@link android.view.ViewAssistStructure} data will be collected from
+             this view or any of its children.  The default is false, allowing assist structure
+             to be reported by it. -->
+        <attr name="assistBlocked" format="boolean" />
+
         <!-- Specifies whether to filter touches when the view's window is obscured by
              another visible window.  When set to true, the view will not receive touches
              whenever a toast, dialog or other window appears above the view's window.
@@ -5183,6 +5188,20 @@
             <!-- Stack each layer directly atop the previous layer. -->
             <enum name="stack" value="1" />
         </attr>
+        <!-- Explicit top padding. Overrides child padding. -->
+        <attr name="paddingTop" />
+        <!-- Explicit bottom padding. Overrides child padding. -->
+        <attr name="paddingBottom" />
+        <!-- Explicit left padding. Overrides child padding. -->
+        <attr name="paddingLeft" />
+        <!-- Explicit right padding. Overrides child padding. -->
+        <attr name="paddingRight" />
+        <!-- Explicit start padding. Overrides child padding. Takes precedence
+             over absolute padding (e.g. left when layout direction is LTR). -->
+        <attr name="paddingStart" />
+        <!-- Explicit end padding. Overrides child padding. Takes precedence
+             over absolute padding (e.g. right when layout direction is LTR). -->
+        <attr name="paddingEnd" />
     </declare-styleable>
 
     <!-- Describes an item (or child) of a LayerDrawable. -->
diff --git a/core/res/res/values/ids.xml b/core/res/res/values/ids.xml
index aaf252a..bdc8d9f 100644
--- a/core/res/res/values/ids.xml
+++ b/core/res/res/values/ids.xml
@@ -93,6 +93,7 @@
   <item type="id" name="undo" />
   <item type="id" name="redo" />
   <item type="id" name="replaceText" />
+  <item type="id" name="shareText" />
 
   <!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_SHOW_ON_SCREEN}. -->
   <item type="id" name="accessibilityActionShowOnScreen" />
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 7252584..baccafd 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -2650,6 +2650,7 @@
   <public type="id" name="replaceText" />
   <public type="id" name="accessibilityActionShowOnScreen" />
   <public type="id" name="accessibilityActionScrollToPosition" />
+  <public type="id" name="shareText" />
 
   <public type="attr" name="allowUndo" />
   <public type="attr" name="colorBackgroundFloating" />
@@ -2674,4 +2675,6 @@
   <public type="attr" name="showForAllUsers" />
   <!-- NFC CardEmulation: dynamically load service resources -->
   <public type="attr" name="dynamicResources" />
+
+  <public type="attr" name="assistBlocked" />
 </resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 6f554f08..51c2062 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -699,6 +699,12 @@
        discover information about which applications are used on the device.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permlab_manageProfileAndDeviceOwners">Manage profile and device owners</string>
+    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to set the profile/device owners.
+     [CHAR LIMIT=NONE] -->
+    <string name="permdesc_manageProfileAndDeviceOwners">Allows apps to set the profile owners and the device owner.</string>
+
+    <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_reorderTasks">reorder running apps</string>
     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permdesc_reorderTasks">Allows the app to move tasks to the
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index 7e24150..5b13325 100755
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -2235,8 +2235,6 @@
   <java-symbol type="dimen" name="floating_toolbar_horizontal_margin" />
   <java-symbol type="dimen" name="floating_toolbar_vertical_margin" />
 
-  <java-symbol type="drawable" name="ic_chevron_left" />
-  <java-symbol type="drawable" name="ic_chevron_right" />
   <java-symbol type="string" name="date_picker_prev_month_button" />
   <java-symbol type="string" name="date_picker_next_month_button" />
   <java-symbol type="layout" name="date_picker_month_item_material" />
diff --git a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
index 279bfbf..baa772e 100644
--- a/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
+++ b/core/tests/coretests/src/android/content/pm/PackageManagerTests.java
@@ -1587,91 +1587,13 @@
         }
     }
 
-    private class PackageMoveObserver extends IPackageMoveObserver.Stub {
-        public int returnCode;
-
-        private boolean doneFlag = false;
-
-        public String packageName;
-
-        public PackageMoveObserver(String pkgName) {
-            packageName = pkgName;
-        }
-
-        public void packageMoved(String packageName, int returnCode) {
-            Log.i("DEBUG_MOVE::", "pkg = " + packageName + ", " + "ret = " + returnCode);
-            if (!packageName.equals(this.packageName)) {
-                return;
-            }
-            synchronized (this) {
-                this.returnCode = returnCode;
-                doneFlag = true;
-                notifyAll();
-            }
-        }
-
-        public boolean isDone() {
-            return doneFlag;
-        }
-    }
-
     public boolean invokeMovePackage(String pkgName, int flags, GenericReceiver receiver)
             throws Exception {
-        PackageMoveObserver observer = new PackageMoveObserver(pkgName);
-        final boolean received = false;
-        mContext.registerReceiver(receiver, receiver.filter);
-        try {
-            // Wait on observer
-            synchronized (observer) {
-                synchronized (receiver) {
-                    getPm().movePackage(pkgName, observer, flags);
-                    long waitTime = 0;
-                    while ((!observer.isDone()) && (waitTime < MAX_WAIT_TIME)) {
-                        observer.wait(WAIT_TIME_INCR);
-                        waitTime += WAIT_TIME_INCR;
-                    }
-                    if (!observer.isDone()) {
-                        throw new Exception("Timed out waiting for pkgmove callback");
-                    }
-                    if (observer.returnCode != PackageManager.MOVE_SUCCEEDED) {
-                        return false;
-                    }
-                    // Verify we received the broadcast
-                    waitTime = 0;
-                    while ((!receiver.isDone()) && (waitTime < MAX_WAIT_TIME)) {
-                        receiver.wait(WAIT_TIME_INCR);
-                        waitTime += WAIT_TIME_INCR;
-                    }
-                    if (!receiver.isDone()) {
-                        throw new Exception("Timed out waiting for MOVE notifications");
-                    }
-                    return receiver.received;
-                }
-            }
-        } finally {
-            mContext.unregisterReceiver(receiver);
-        }
+        throw new UnsupportedOperationException();
     }
 
     private boolean invokeMovePackageFail(String pkgName, int flags, int errCode) throws Exception {
-        PackageMoveObserver observer = new PackageMoveObserver(pkgName);
-        try {
-            // Wait on observer
-            synchronized (observer) {
-                getPm().movePackage(pkgName, observer, flags);
-                long waitTime = 0;
-                while ((!observer.isDone()) && (waitTime < MAX_WAIT_TIME)) {
-                    observer.wait(WAIT_TIME_INCR);
-                    waitTime += WAIT_TIME_INCR;
-                }
-                if (!observer.isDone()) {
-                    throw new Exception("Timed out waiting for pkgmove callback");
-                }
-                assertEquals(errCode, observer.returnCode);
-            }
-        } finally {
-        }
-        return true;
+        throw new UnsupportedOperationException();
     }
 
     private int getDefaultInstallLoc() {
diff --git a/core/tests/coretests/src/android/os/FileUtilsTest.java b/core/tests/coretests/src/android/os/FileUtilsTest.java
index 5c9e813..ee9e2e4 100644
--- a/core/tests/coretests/src/android/os/FileUtilsTest.java
+++ b/core/tests/coretests/src/android/os/FileUtilsTest.java
@@ -21,6 +21,7 @@
 import static android.text.format.DateUtils.WEEK_IN_MILLIS;
 
 import android.content.Context;
+import android.provider.DocumentsContract.Document;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.MediumTest;
 
@@ -43,6 +44,8 @@
     private File mDir;
     private File mTestFile;
     private File mCopyFile;
+    private File mTarget;
+
 
     @Override
     protected void setUp() throws Exception {
@@ -50,11 +53,15 @@
         mDir = getContext().getDir("testing", Context.MODE_PRIVATE);
         mTestFile = new File(mDir, "test.file");
         mCopyFile = new File(mDir, "copy.file");
+
+        mTarget = getContext().getFilesDir();
+        FileUtils.deleteContents(mTarget);
     }
 
     @Override
     protected void tearDown() throws Exception {
         IoUtils.deleteContents(mDir);
+        FileUtils.deleteContents(mTarget);
     }
 
     // TODO: test setPermissions(), getPermissions()
@@ -225,6 +232,63 @@
         assertEquals("foo_bar__baz", FileUtils.buildValidFatFilename("foo?bar**baz"));
     }
 
+    public void testBuildUniqueFile_normal() throws Exception {
+        assertNameEquals("test.jpg", FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test"));
+        assertNameEquals("test.jpg", FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test.jpg"));
+        assertNameEquals("test.jpeg", FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test.jpeg"));
+        assertNameEquals("TEst.JPeg", FileUtils.buildUniqueFile(mTarget, "image/jpeg", "TEst.JPeg"));
+        assertNameEquals("test.png.jpg",
+                FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test.png.jpg"));
+        assertNameEquals("test.png.jpg",
+                FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test.png"));
+
+        assertNameEquals("test.flac", FileUtils.buildUniqueFile(mTarget, "audio/flac", "test"));
+        assertNameEquals("test.flac", FileUtils.buildUniqueFile(mTarget, "audio/flac", "test.flac"));
+        assertNameEquals("test.flac",
+                FileUtils.buildUniqueFile(mTarget, "application/x-flac", "test"));
+        assertNameEquals("test.flac",
+                FileUtils.buildUniqueFile(mTarget, "application/x-flac", "test.flac"));
+    }
+
+    public void testBuildUniqueFile_unknown() throws Exception {
+        assertNameEquals("test",
+                FileUtils.buildUniqueFile(mTarget, "application/octet-stream", "test"));
+        assertNameEquals("test.jpg",
+                FileUtils.buildUniqueFile(mTarget, "application/octet-stream", "test.jpg"));
+        assertNameEquals(".test",
+                FileUtils.buildUniqueFile(mTarget, "application/octet-stream", ".test"));
+
+        assertNameEquals("test", FileUtils.buildUniqueFile(mTarget, "lolz/lolz", "test"));
+        assertNameEquals("test.lolz", FileUtils.buildUniqueFile(mTarget, "lolz/lolz", "test.lolz"));
+    }
+
+    public void testBuildUniqueFile_dir() throws Exception {
+        assertNameEquals("test", FileUtils.buildUniqueFile(mTarget, Document.MIME_TYPE_DIR, "test"));
+        new File(mTarget, "test").mkdir();
+        assertNameEquals("test (1)",
+                FileUtils.buildUniqueFile(mTarget, Document.MIME_TYPE_DIR, "test"));
+
+        assertNameEquals("test.jpg",
+                FileUtils.buildUniqueFile(mTarget, Document.MIME_TYPE_DIR, "test.jpg"));
+        new File(mTarget, "test.jpg").mkdir();
+        assertNameEquals("test.jpg (1)",
+                FileUtils.buildUniqueFile(mTarget, Document.MIME_TYPE_DIR, "test.jpg"));
+    }
+
+    public void testBuildUniqueFile_increment() throws Exception {
+        assertNameEquals("test.jpg", FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test.jpg"));
+        new File(mTarget, "test.jpg").createNewFile();
+        assertNameEquals("test (1).jpg",
+                FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test.jpg"));
+        new File(mTarget, "test (1).jpg").createNewFile();
+        assertNameEquals("test (2).jpg",
+                FileUtils.buildUniqueFile(mTarget, "image/jpeg", "test.jpg"));
+    }
+
+    private static void assertNameEquals(String expected, File actual) {
+        assertEquals(expected, actual.getName());
+    }
+
     private void touch(String name, long age) throws Exception {
         final File file = new File(mDir, name);
         file.createNewFile();
diff --git a/docs/html/gms_navtree_data.js b/docs/html/gms_navtree_data.js
index 56a81c9..c21e159 100644
--- a/docs/html/gms_navtree_data.js
+++ b/docs/html/gms_navtree_data.js
@@ -38,7 +38,7 @@
 , null ], [ "com.google.android.gms.cast", "reference/com/google/android/gms/cast/package-summary.html", [ [ "Interfaces", null, [ [ "Cast.ApplicationConnectionResult", "reference/com/google/android/gms/cast/Cast.ApplicationConnectionResult.html", null, null ], [ "Cast.CastApi", "reference/com/google/android/gms/cast/Cast.CastApi.html", null, null ], [ "Cast.MessageReceivedCallback", "reference/com/google/android/gms/cast/Cast.MessageReceivedCallback.html", null, null ], [ "RemoteMediaPlayer.MediaChannelResult", "reference/com/google/android/gms/cast/RemoteMediaPlayer.MediaChannelResult.html", null, null ], [ "RemoteMediaPlayer.OnMetadataUpdatedListener", "reference/com/google/android/gms/cast/RemoteMediaPlayer.OnMetadataUpdatedListener.html", null, null ], [ "RemoteMediaPlayer.OnStatusUpdatedListener", "reference/com/google/android/gms/cast/RemoteMediaPlayer.OnStatusUpdatedListener.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "ApplicationMetadata", "reference/com/google/android/gms/cast/ApplicationMetadata.html", null, null ], [ "Cast", "reference/com/google/android/gms/cast/Cast.html", null, null ], [ "Cast.CastOptions", "reference/com/google/android/gms/cast/Cast.CastOptions.html", null, null ], [ "Cast.CastOptions.Builder", "reference/com/google/android/gms/cast/Cast.CastOptions.Builder.html", null, null ], [ "Cast.Listener", "reference/com/google/android/gms/cast/Cast.Listener.html", null, null ], [ "CastDevice", "reference/com/google/android/gms/cast/CastDevice.html", null, null ], [ "CastMediaControlIntent", "reference/com/google/android/gms/cast/CastMediaControlIntent.html", null, null ], [ "CastStatusCodes", "reference/com/google/android/gms/cast/CastStatusCodes.html", null, null ], [ "LaunchOptions", "reference/com/google/android/gms/cast/LaunchOptions.html", null, null ], [ "LaunchOptions.Builder", "reference/com/google/android/gms/cast/LaunchOptions.Builder.html", null, null ], [ "MediaInfo", "reference/com/google/android/gms/cast/MediaInfo.html", null, null ], [ "MediaInfo.Builder", "reference/com/google/android/gms/cast/MediaInfo.Builder.html", null, null ], [ "MediaMetadata", "reference/com/google/android/gms/cast/MediaMetadata.html", null, null ], [ "MediaStatus", "reference/com/google/android/gms/cast/MediaStatus.html", null, null ], [ "MediaTrack", "reference/com/google/android/gms/cast/MediaTrack.html", null, null ], [ "MediaTrack.Builder", "reference/com/google/android/gms/cast/MediaTrack.Builder.html", null, null ], [ "RemoteMediaPlayer", "reference/com/google/android/gms/cast/RemoteMediaPlayer.html", null, null ], [ "TextTrackStyle", "reference/com/google/android/gms/cast/TextTrackStyle.html", null, null ] ]
 , null ] ]
-, null ], [ "com.google.android.gms.common", "reference/com/google/android/gms/common/package-summary.html", [ [ "Classes", null, [ [ "AccountPicker", "reference/com/google/android/gms/common/AccountPicker.html", null, null ], [ "ConnectionResult", "reference/com/google/android/gms/common/ConnectionResult.html", null, null ], [ "ErrorDialogFragment", "reference/com/google/android/gms/common/ErrorDialogFragment.html", null, null ], [ "GooglePlayServicesUtil", "reference/com/google/android/gms/common/GooglePlayServicesUtil.html", null, null ], [ "Scopes", "reference/com/google/android/gms/common/Scopes.html", null, null ], [ "SignInButton", "reference/com/google/android/gms/common/SignInButton.html", null, null ], [ "SupportErrorDialogFragment", "reference/com/google/android/gms/common/SupportErrorDialogFragment.html", null, null ] ]
+, null ], [ "com.google.android.gms.common", "reference/com/google/android/gms/common/package-summary.html", [ [ "Classes", null, [ [ "AccountPicker", "reference/com/google/android/gms/common/AccountPicker.html", null, null ], [ "ConnectionResult", "reference/com/google/android/gms/common/ConnectionResult.html", null, null ], [ "ErrorDialogFragment", "reference/com/google/android/gms/common/ErrorDialogFragment.html", null, null ], [ "GoogleApiAvailability", "reference/com/google/android/gms/common/GoogleApiAvailability.html", null, null ], [ "GooglePlayServicesUtil", "reference/com/google/android/gms/common/GooglePlayServicesUtil.html", null, null ], [ "Scopes", "reference/com/google/android/gms/common/Scopes.html", null, null ], [ "SignInButton", "reference/com/google/android/gms/common/SignInButton.html", null, null ], [ "SupportErrorDialogFragment", "reference/com/google/android/gms/common/SupportErrorDialogFragment.html", null, null ] ]
 , null ], [ "Exceptions", null, [ [ "GooglePlayServicesNotAvailableException", "reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html", null, null ], [ "GooglePlayServicesRepairableException", "reference/com/google/android/gms/common/GooglePlayServicesRepairableException.html", null, null ], [ "UserRecoverableException", "reference/com/google/android/gms/common/UserRecoverableException.html", null, null ] ]
 , null ] ]
 , null ], [ "com.google.android.gms.common.annotation", "reference/com/google/android/gms/common/annotation/package-summary.html", [ [ "Annotations", null, [ [ "KeepName", "reference/com/google/android/gms/common/annotation/KeepName.html", null, null ] ]
@@ -74,7 +74,7 @@
 , null ], [ "com.google.android.gms.fitness.request", "reference/com/google/android/gms/fitness/request/package-summary.html", [ [ "Interfaces", null, [ [ "OnDataPointListener", "reference/com/google/android/gms/fitness/request/OnDataPointListener.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "BleScanCallback", "reference/com/google/android/gms/fitness/request/BleScanCallback.html", null, null ], [ "DataDeleteRequest", "reference/com/google/android/gms/fitness/request/DataDeleteRequest.html", null, null ], [ "DataDeleteRequest.Builder", "reference/com/google/android/gms/fitness/request/DataDeleteRequest.Builder.html", null, null ], [ "DataReadRequest", "reference/com/google/android/gms/fitness/request/DataReadRequest.html", null, null ], [ "DataReadRequest.Builder", "reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html", null, null ], [ "DataSourcesRequest", "reference/com/google/android/gms/fitness/request/DataSourcesRequest.html", null, null ], [ "DataSourcesRequest.Builder", "reference/com/google/android/gms/fitness/request/DataSourcesRequest.Builder.html", null, null ], [ "DataTypeCreateRequest", "reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.html", null, null ], [ "DataTypeCreateRequest.Builder", "reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.Builder.html", null, null ], [ "SensorRequest", "reference/com/google/android/gms/fitness/request/SensorRequest.html", null, null ], [ "SensorRequest.Builder", "reference/com/google/android/gms/fitness/request/SensorRequest.Builder.html", null, null ], [ "SessionInsertRequest", "reference/com/google/android/gms/fitness/request/SessionInsertRequest.html", null, null ], [ "SessionInsertRequest.Builder", "reference/com/google/android/gms/fitness/request/SessionInsertRequest.Builder.html", null, null ], [ "SessionReadRequest", "reference/com/google/android/gms/fitness/request/SessionReadRequest.html", null, null ], [ "SessionReadRequest.Builder", "reference/com/google/android/gms/fitness/request/SessionReadRequest.Builder.html", null, null ], [ "StartBleScanRequest", "reference/com/google/android/gms/fitness/request/StartBleScanRequest.html", null, null ], [ "StartBleScanRequest.Builder", "reference/com/google/android/gms/fitness/request/StartBleScanRequest.Builder.html", null, null ] ]
 , null ] ]
-, null ], [ "com.google.android.gms.fitness.result", "reference/com/google/android/gms/fitness/result/package-summary.html", [ [ "Classes", null, [ [ "BleDevicesResult", "reference/com/google/android/gms/fitness/result/BleDevicesResult.html", null, null ], [ "DataReadResult", "reference/com/google/android/gms/fitness/result/DataReadResult.html", null, null ], [ "DataSourcesResult", "reference/com/google/android/gms/fitness/result/DataSourcesResult.html", null, null ], [ "DataTypeResult", "reference/com/google/android/gms/fitness/result/DataTypeResult.html", null, null ], [ "ListSubscriptionsResult", "reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html", null, null ], [ "SessionReadResult", "reference/com/google/android/gms/fitness/result/SessionReadResult.html", null, null ], [ "SessionStopResult", "reference/com/google/android/gms/fitness/result/SessionStopResult.html", null, null ] ]
+, null ], [ "com.google.android.gms.fitness.result", "reference/com/google/android/gms/fitness/result/package-summary.html", [ [ "Classes", null, [ [ "BleDevicesResult", "reference/com/google/android/gms/fitness/result/BleDevicesResult.html", null, null ], [ "DailyTotalResult", "reference/com/google/android/gms/fitness/result/DailyTotalResult.html", null, null ], [ "DataReadResult", "reference/com/google/android/gms/fitness/result/DataReadResult.html", null, null ], [ "DataSourcesResult", "reference/com/google/android/gms/fitness/result/DataSourcesResult.html", null, null ], [ "DataTypeResult", "reference/com/google/android/gms/fitness/result/DataTypeResult.html", null, null ], [ "ListSubscriptionsResult", "reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html", null, null ], [ "SessionReadResult", "reference/com/google/android/gms/fitness/result/SessionReadResult.html", null, null ], [ "SessionStopResult", "reference/com/google/android/gms/fitness/result/SessionStopResult.html", null, null ] ]
 , null ] ]
 , null ], [ "com.google.android.gms.fitness.service", "reference/com/google/android/gms/fitness/service/package-summary.html", [ [ "Interfaces", null, [ [ "SensorEventDispatcher", "reference/com/google/android/gms/fitness/service/SensorEventDispatcher.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "FitnessSensorService", "reference/com/google/android/gms/fitness/service/FitnessSensorService.html", null, null ], [ "FitnessSensorServiceRequest", "reference/com/google/android/gms/fitness/service/FitnessSensorServiceRequest.html", null, null ] ]
@@ -117,14 +117,14 @@
 , null ], [ "com.google.android.gms.identity.intents.model", "reference/com/google/android/gms/identity/intents/model/package-summary.html", [ [ "Classes", null, [ [ "CountrySpecification", "reference/com/google/android/gms/identity/intents/model/CountrySpecification.html", null, null ], [ "UserAddress", "reference/com/google/android/gms/identity/intents/model/UserAddress.html", null, null ] ]
 , null ] ]
 , null ], [ "com.google.android.gms.location", "reference/com/google/android/gms/location/package-summary.html", [ [ "Interfaces", null, [ [ "ActivityRecognitionApi", "reference/com/google/android/gms/location/ActivityRecognitionApi.html", null, null ], [ "FusedLocationProviderApi", "reference/com/google/android/gms/location/FusedLocationProviderApi.html", null, null ], [ "Geofence", "reference/com/google/android/gms/location/Geofence.html", null, null ], [ "GeofencingApi", "reference/com/google/android/gms/location/GeofencingApi.html", null, null ], [ "LocationListener", "reference/com/google/android/gms/location/LocationListener.html", null, null ], [ "SettingsApi", "reference/com/google/android/gms/location/SettingsApi.html", null, null ] ]
-, null ], [ "Classes", null, [ [ "ActivityRecognition", "reference/com/google/android/gms/location/ActivityRecognition.html", null, null ], [ "ActivityRecognitionResult", "reference/com/google/android/gms/location/ActivityRecognitionResult.html", null, null ], [ "DetectedActivity", "reference/com/google/android/gms/location/DetectedActivity.html", null, null ], [ "Geofence.Builder", "reference/com/google/android/gms/location/Geofence.Builder.html", null, null ], [ "GeofenceStatusCodes", "reference/com/google/android/gms/location/GeofenceStatusCodes.html", null, null ], [ "GeofencingEvent", "reference/com/google/android/gms/location/GeofencingEvent.html", null, null ], [ "GeofencingRequest", "reference/com/google/android/gms/location/GeofencingRequest.html", null, null ], [ "GeofencingRequest.Builder", "reference/com/google/android/gms/location/GeofencingRequest.Builder.html", null, null ], [ "LocationRequest", "reference/com/google/android/gms/location/LocationRequest.html", null, null ], [ "LocationServices", "reference/com/google/android/gms/location/LocationServices.html", null, null ], [ "LocationSettingsRequest", "reference/com/google/android/gms/location/LocationSettingsRequest.html", null, null ], [ "LocationSettingsRequest.Builder", "reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html", null, null ], [ "LocationSettingsResult", "reference/com/google/android/gms/location/LocationSettingsResult.html", null, null ], [ "LocationSettingsStates", "reference/com/google/android/gms/location/LocationSettingsStates.html", null, null ], [ "LocationSettingsStatusCodes", "reference/com/google/android/gms/location/LocationSettingsStatusCodes.html", null, null ], [ "LocationStatusCodes", "reference/com/google/android/gms/location/LocationStatusCodes.html", null, null ] ]
+, null ], [ "Classes", null, [ [ "ActivityRecognition", "reference/com/google/android/gms/location/ActivityRecognition.html", null, null ], [ "ActivityRecognitionResult", "reference/com/google/android/gms/location/ActivityRecognitionResult.html", null, null ], [ "DetectedActivity", "reference/com/google/android/gms/location/DetectedActivity.html", null, null ], [ "Geofence.Builder", "reference/com/google/android/gms/location/Geofence.Builder.html", null, null ], [ "GeofenceStatusCodes", "reference/com/google/android/gms/location/GeofenceStatusCodes.html", null, null ], [ "GeofencingEvent", "reference/com/google/android/gms/location/GeofencingEvent.html", null, null ], [ "GeofencingRequest", "reference/com/google/android/gms/location/GeofencingRequest.html", null, null ], [ "GeofencingRequest.Builder", "reference/com/google/android/gms/location/GeofencingRequest.Builder.html", null, null ], [ "LocationAvailability", "reference/com/google/android/gms/location/LocationAvailability.html", null, null ], [ "LocationCallback", "reference/com/google/android/gms/location/LocationCallback.html", null, null ], [ "LocationRequest", "reference/com/google/android/gms/location/LocationRequest.html", null, null ], [ "LocationResult", "reference/com/google/android/gms/location/LocationResult.html", null, null ], [ "LocationServices", "reference/com/google/android/gms/location/LocationServices.html", null, null ], [ "LocationSettingsRequest", "reference/com/google/android/gms/location/LocationSettingsRequest.html", null, null ], [ "LocationSettingsRequest.Builder", "reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html", null, null ], [ "LocationSettingsResult", "reference/com/google/android/gms/location/LocationSettingsResult.html", null, null ], [ "LocationSettingsStates", "reference/com/google/android/gms/location/LocationSettingsStates.html", null, null ], [ "LocationSettingsStatusCodes", "reference/com/google/android/gms/location/LocationSettingsStatusCodes.html", null, null ], [ "LocationStatusCodes", "reference/com/google/android/gms/location/LocationStatusCodes.html", null, null ] ]
 , null ] ]
 , null ], [ "com.google.android.gms.location.places", "reference/com/google/android/gms/location/places/package-summary.html", [ [ "Interfaces", null, [ [ "AutocompletePrediction", "reference/com/google/android/gms/location/places/AutocompletePrediction.html", null, null ], [ "AutocompletePrediction.Substring", "reference/com/google/android/gms/location/places/AutocompletePrediction.Substring.html", null, null ], [ "GeoDataApi", "reference/com/google/android/gms/location/places/GeoDataApi.html", null, null ], [ "Place", "reference/com/google/android/gms/location/places/Place.html", null, null ], [ "PlaceDetectionApi", "reference/com/google/android/gms/location/places/PlaceDetectionApi.html", null, null ], [ "PlaceLikelihood", "reference/com/google/android/gms/location/places/PlaceLikelihood.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "AddPlaceRequest", "reference/com/google/android/gms/location/places/AddPlaceRequest.html", null, null ], [ "AutocompleteFilter", "reference/com/google/android/gms/location/places/AutocompleteFilter.html", null, null ], [ "AutocompletePredictionBuffer", "reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html", null, null ], [ "PlaceBuffer", "reference/com/google/android/gms/location/places/PlaceBuffer.html", null, null ], [ "PlaceFilter", "reference/com/google/android/gms/location/places/PlaceFilter.html", null, null ], [ "PlaceLikelihoodBuffer", "reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html", null, null ], [ "PlaceReport", "reference/com/google/android/gms/location/places/PlaceReport.html", null, null ], [ "Places", "reference/com/google/android/gms/location/places/Places.html", null, null ], [ "PlacesOptions", "reference/com/google/android/gms/location/places/PlacesOptions.html", null, null ], [ "PlacesOptions.Builder", "reference/com/google/android/gms/location/places/PlacesOptions.Builder.html", null, null ], [ "PlacesStatusCodes", "reference/com/google/android/gms/location/places/PlacesStatusCodes.html", null, null ], [ "PlaceTypes", "reference/com/google/android/gms/location/places/PlaceTypes.html", null, null ] ]
 , null ] ]
 , null ], [ "com.google.android.gms.location.places.ui", "reference/com/google/android/gms/location/places/ui/package-summary.html", [ [ "Classes", null, [ [ "PlacePicker", "reference/com/google/android/gms/location/places/ui/PlacePicker.html", null, null ], [ "PlacePicker.IntentBuilder", "reference/com/google/android/gms/location/places/ui/PlacePicker.IntentBuilder.html", null, null ] ]
 , null ] ]
-, null ], [ "com.google.android.gms.maps", "reference/com/google/android/gms/maps/package-summary.html", [ [ "Interfaces", null, [ [ "GoogleMap.CancelableCallback", "reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html", null, null ], [ "GoogleMap.InfoWindowAdapter", "reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html", null, null ], [ "GoogleMap.OnCameraChangeListener", "reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html", null, null ], [ "GoogleMap.OnIndoorStateChangeListener", "reference/com/google/android/gms/maps/GoogleMap.OnIndoorStateChangeListener.html", null, null ], [ "GoogleMap.OnInfoWindowClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html", null, null ], [ "GoogleMap.OnMapClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html", null, null ], [ "GoogleMap.OnMapLoadedCallback", "reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback.html", null, null ], [ "GoogleMap.OnMapLongClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html", null, null ], [ "GoogleMap.OnMarkerClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html", null, null ], [ "GoogleMap.OnMarkerDragListener", "reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html", null, null ], [ "GoogleMap.OnMyLocationButtonClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnMyLocationButtonClickListener.html", null, null ], [ "GoogleMap.OnMyLocationChangeListener", "reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html", null, null ], [ "GoogleMap.SnapshotReadyCallback", "reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback.html", null, null ], [ "LocationSource", "reference/com/google/android/gms/maps/LocationSource.html", null, null ], [ "LocationSource.OnLocationChangedListener", "reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html", null, null ], [ "OnMapReadyCallback", "reference/com/google/android/gms/maps/OnMapReadyCallback.html", null, null ], [ "OnStreetViewPanoramaReadyCallback", "reference/com/google/android/gms/maps/OnStreetViewPanoramaReadyCallback.html", null, null ], [ "StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener", "reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener.html", null, null ], [ "StreetViewPanorama.OnStreetViewPanoramaChangeListener", "reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaChangeListener.html", null, null ], [ "StreetViewPanorama.OnStreetViewPanoramaClickListener", "reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaClickListener.html", null, null ] ]
+, null ], [ "com.google.android.gms.maps", "reference/com/google/android/gms/maps/package-summary.html", [ [ "Interfaces", null, [ [ "GoogleMap.CancelableCallback", "reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html", null, null ], [ "GoogleMap.InfoWindowAdapter", "reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html", null, null ], [ "GoogleMap.OnCameraChangeListener", "reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html", null, null ], [ "GoogleMap.OnIndoorStateChangeListener", "reference/com/google/android/gms/maps/GoogleMap.OnIndoorStateChangeListener.html", null, null ], [ "GoogleMap.OnInfoWindowClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html", null, null ], [ "GoogleMap.OnMapClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html", null, null ], [ "GoogleMap.OnMapLoadedCallback", "reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback.html", null, null ], [ "GoogleMap.OnMapLongClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html", null, null ], [ "GoogleMap.OnMarkerClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html", null, null ], [ "GoogleMap.OnMarkerDragListener", "reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html", null, null ], [ "GoogleMap.OnMyLocationButtonClickListener", "reference/com/google/android/gms/maps/GoogleMap.OnMyLocationButtonClickListener.html", null, null ], [ "GoogleMap.OnMyLocationChangeListener", "reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html", null, null ], [ "GoogleMap.SnapshotReadyCallback", "reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback.html", null, null ], [ "LocationSource", "reference/com/google/android/gms/maps/LocationSource.html", null, null ], [ "LocationSource.OnLocationChangedListener", "reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html", null, null ], [ "OnMapReadyCallback", "reference/com/google/android/gms/maps/OnMapReadyCallback.html", null, null ], [ "OnStreetViewPanoramaReadyCallback", "reference/com/google/android/gms/maps/OnStreetViewPanoramaReadyCallback.html", null, null ], [ "StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener", "reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener.html", null, null ], [ "StreetViewPanorama.OnStreetViewPanoramaChangeListener", "reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaChangeListener.html", null, null ], [ "StreetViewPanorama.OnStreetViewPanoramaClickListener", "reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaClickListener.html", null, null ], [ "StreetViewPanorama.OnStreetViewPanoramaLongClickListener", "reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "CameraUpdate", "reference/com/google/android/gms/maps/CameraUpdate.html", null, null ], [ "CameraUpdateFactory", "reference/com/google/android/gms/maps/CameraUpdateFactory.html", null, null ], [ "GoogleMap", "reference/com/google/android/gms/maps/GoogleMap.html", null, null ], [ "GoogleMapOptions", "reference/com/google/android/gms/maps/GoogleMapOptions.html", null, null ], [ "MapFragment", "reference/com/google/android/gms/maps/MapFragment.html", null, null ], [ "MapsInitializer", "reference/com/google/android/gms/maps/MapsInitializer.html", null, null ], [ "MapView", "reference/com/google/android/gms/maps/MapView.html", null, null ], [ "Projection", "reference/com/google/android/gms/maps/Projection.html", null, null ], [ "StreetViewPanorama", "reference/com/google/android/gms/maps/StreetViewPanorama.html", null, null ], [ "StreetViewPanoramaFragment", "reference/com/google/android/gms/maps/StreetViewPanoramaFragment.html", null, null ], [ "StreetViewPanoramaOptions", "reference/com/google/android/gms/maps/StreetViewPanoramaOptions.html", null, null ], [ "StreetViewPanoramaView", "reference/com/google/android/gms/maps/StreetViewPanoramaView.html", null, null ], [ "SupportMapFragment", "reference/com/google/android/gms/maps/SupportMapFragment.html", null, null ], [ "SupportStreetViewPanoramaFragment", "reference/com/google/android/gms/maps/SupportStreetViewPanoramaFragment.html", null, null ], [ "UiSettings", "reference/com/google/android/gms/maps/UiSettings.html", null, null ] ]
 , null ] ]
 , null ], [ "com.google.android.gms.maps.model", "reference/com/google/android/gms/maps/model/package-summary.html", [ [ "Interfaces", null, [ [ "TileProvider", "reference/com/google/android/gms/maps/model/TileProvider.html", null, null ] ]
@@ -151,6 +151,9 @@
 , null ], [ "com.google.android.gms.safetynet", "reference/com/google/android/gms/safetynet/package-summary.html", [ [ "Interfaces", null, [ [ "SafetyNetApi", "reference/com/google/android/gms/safetynet/SafetyNetApi.html", null, null ], [ "SafetyNetApi.AttestationResult", "reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "SafetyNet", "reference/com/google/android/gms/safetynet/SafetyNet.html", null, null ] ]
 , null ] ]
+, null ], [ "com.google.android.gms.search", "reference/com/google/android/gms/search/package-summary.html", [ [ "Interfaces", null, [ [ "SearchAuthApi", "reference/com/google/android/gms/search/SearchAuthApi.html", null, null ], [ "SearchAuthApi.GoogleNowAuthResult", "reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html", null, null ] ]
+, null ], [ "Classes", null, [ [ "GoogleNowAuthState", "reference/com/google/android/gms/search/GoogleNowAuthState.html", null, null ], [ "SearchAuth", "reference/com/google/android/gms/search/SearchAuth.html", null, null ], [ "SearchAuth.StatusCodes", "reference/com/google/android/gms/search/SearchAuth.StatusCodes.html", null, null ] ]
+, null ] ]
 , null ], [ "com.google.android.gms.security", "reference/com/google/android/gms/security/package-summary.html", [ [ "Interfaces", null, [ [ "ProviderInstaller.ProviderInstallListener", "reference/com/google/android/gms/security/ProviderInstaller.ProviderInstallListener.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "ProviderInstaller", "reference/com/google/android/gms/security/ProviderInstaller.html", null, null ] ]
 , null ] ]
@@ -163,8 +166,10 @@
 , null ], [ "com.google.android.gms.wallet.fragment", "reference/com/google/android/gms/wallet/fragment/package-summary.html", [ [ "Interfaces", null, [ [ "SupportWalletFragment.OnStateChangedListener", "reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.OnStateChangedListener.html", null, null ], [ "WalletFragment.OnStateChangedListener", "reference/com/google/android/gms/wallet/fragment/WalletFragment.OnStateChangedListener.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "BuyButtonAppearance", "reference/com/google/android/gms/wallet/fragment/BuyButtonAppearance.html", null, null ], [ "BuyButtonText", "reference/com/google/android/gms/wallet/fragment/BuyButtonText.html", null, null ], [ "Dimension", "reference/com/google/android/gms/wallet/fragment/Dimension.html", null, null ], [ "SupportWalletFragment", "reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.html", null, null ], [ "WalletFragment", "reference/com/google/android/gms/wallet/fragment/WalletFragment.html", null, null ], [ "WalletFragmentInitParams", "reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.html", null, null ], [ "WalletFragmentInitParams.Builder", "reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder.html", null, null ], [ "WalletFragmentMode", "reference/com/google/android/gms/wallet/fragment/WalletFragmentMode.html", null, null ], [ "WalletFragmentOptions", "reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.html", null, null ], [ "WalletFragmentOptions.Builder", "reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.Builder.html", null, null ], [ "WalletFragmentState", "reference/com/google/android/gms/wallet/fragment/WalletFragmentState.html", null, null ], [ "WalletFragmentStyle", "reference/com/google/android/gms/wallet/fragment/WalletFragmentStyle.html", null, null ], [ "WalletLogoImageType", "reference/com/google/android/gms/wallet/fragment/WalletLogoImageType.html", null, null ] ]
 , null ] ]
-, null ], [ "com.google.android.gms.wearable", "reference/com/google/android/gms/wearable/package-summary.html", [ [ "Interfaces", null, [ [ "DataApi", "reference/com/google/android/gms/wearable/DataApi.html", null, null ], [ "DataApi.DataItemResult", "reference/com/google/android/gms/wearable/DataApi.DataItemResult.html", null, null ], [ "DataApi.DataListener", "reference/com/google/android/gms/wearable/DataApi.DataListener.html", null, null ], [ "DataApi.DeleteDataItemsResult", "reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html", null, null ], [ "DataApi.GetFdForAssetResult", "reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html", null, null ], [ "DataEvent", "reference/com/google/android/gms/wearable/DataEvent.html", null, null ], [ "DataItem", "reference/com/google/android/gms/wearable/DataItem.html", null, null ], [ "DataItemAsset", "reference/com/google/android/gms/wearable/DataItemAsset.html", null, null ], [ "MessageApi", "reference/com/google/android/gms/wearable/MessageApi.html", null, null ], [ "MessageApi.MessageListener", "reference/com/google/android/gms/wearable/MessageApi.MessageListener.html", null, null ], [ "MessageApi.SendMessageResult", "reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html", null, null ], [ "MessageEvent", "reference/com/google/android/gms/wearable/MessageEvent.html", null, null ], [ "Node", "reference/com/google/android/gms/wearable/Node.html", null, null ], [ "NodeApi", "reference/com/google/android/gms/wearable/NodeApi.html", null, null ], [ "NodeApi.GetConnectedNodesResult", "reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html", null, null ], [ "NodeApi.GetLocalNodeResult", "reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html", null, null ], [ "NodeApi.NodeListener", "reference/com/google/android/gms/wearable/NodeApi.NodeListener.html", null, null ] ]
+, null ], [ "com.google.android.gms.wearable", "reference/com/google/android/gms/wearable/package-summary.html", [ [ "Annotations", null, [ [ "ChannelApi.CloseReason", "reference/com/google/android/gms/wearable/ChannelApi.CloseReason.html", null, null ] ]
+, null ], [ "Interfaces", null, [ [ "CapabilityApi", "reference/com/google/android/gms/wearable/CapabilityApi.html", null, null ], [ "CapabilityApi.AddLocalCapabilityResult", "reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html", null, null ], [ "CapabilityApi.CapabilityListener", "reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html", null, null ], [ "CapabilityApi.GetAllCapabilitiesResult", "reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html", null, null ], [ "CapabilityApi.GetCapabilityResult", "reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html", null, null ], [ "CapabilityApi.RemoveLocalCapabilityResult", "reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html", null, null ], [ "CapabilityInfo", "reference/com/google/android/gms/wearable/CapabilityInfo.html", null, null ], [ "Channel", "reference/com/google/android/gms/wearable/Channel.html", null, null ], [ "Channel.GetInputStreamResult", "reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html", null, null ], [ "Channel.GetOutputStreamResult", "reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html", null, null ], [ "ChannelApi", "reference/com/google/android/gms/wearable/ChannelApi.html", null, null ], [ "ChannelApi.ChannelListener", "reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html", null, null ], [ "ChannelApi.OpenChannelResult", "reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html", null, null ], [ "DataApi", "reference/com/google/android/gms/wearable/DataApi.html", null, null ], [ "DataApi.DataItemResult", "reference/com/google/android/gms/wearable/DataApi.DataItemResult.html", null, null ], [ "DataApi.DataListener", "reference/com/google/android/gms/wearable/DataApi.DataListener.html", null, null ], [ "DataApi.DeleteDataItemsResult", "reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html", null, null ], [ "DataApi.GetFdForAssetResult", "reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html", null, null ], [ "DataEvent", "reference/com/google/android/gms/wearable/DataEvent.html", null, null ], [ "DataItem", "reference/com/google/android/gms/wearable/DataItem.html", null, null ], [ "DataItemAsset", "reference/com/google/android/gms/wearable/DataItemAsset.html", null, null ], [ "MessageApi", "reference/com/google/android/gms/wearable/MessageApi.html", null, null ], [ "MessageApi.MessageListener", "reference/com/google/android/gms/wearable/MessageApi.MessageListener.html", null, null ], [ "MessageApi.SendMessageResult", "reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html", null, null ], [ "MessageEvent", "reference/com/google/android/gms/wearable/MessageEvent.html", null, null ], [ "Node", "reference/com/google/android/gms/wearable/Node.html", null, null ], [ "NodeApi", "reference/com/google/android/gms/wearable/NodeApi.html", null, null ], [ "NodeApi.GetConnectedNodesResult", "reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html", null, null ], [ "NodeApi.GetLocalNodeResult", "reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html", null, null ], [ "NodeApi.NodeListener", "reference/com/google/android/gms/wearable/NodeApi.NodeListener.html", null, null ] ]
 , null ], [ "Classes", null, [ [ "Asset", "reference/com/google/android/gms/wearable/Asset.html", null, null ], [ "DataEventBuffer", "reference/com/google/android/gms/wearable/DataEventBuffer.html", null, null ], [ "DataItemBuffer", "reference/com/google/android/gms/wearable/DataItemBuffer.html", null, null ], [ "DataMap", "reference/com/google/android/gms/wearable/DataMap.html", null, null ], [ "DataMapItem", "reference/com/google/android/gms/wearable/DataMapItem.html", null, null ], [ "PutDataMapRequest", "reference/com/google/android/gms/wearable/PutDataMapRequest.html", null, null ], [ "PutDataRequest", "reference/com/google/android/gms/wearable/PutDataRequest.html", null, null ], [ "Wearable", "reference/com/google/android/gms/wearable/Wearable.html", null, null ], [ "Wearable.WearableOptions", "reference/com/google/android/gms/wearable/Wearable.WearableOptions.html", null, null ], [ "Wearable.WearableOptions.Builder", "reference/com/google/android/gms/wearable/Wearable.WearableOptions.Builder.html", null, null ], [ "WearableListenerService", "reference/com/google/android/gms/wearable/WearableListenerService.html", null, null ], [ "WearableStatusCodes", "reference/com/google/android/gms/wearable/WearableStatusCodes.html", null, null ] ]
+, null ], [ "Exceptions", null, [ [ "ChannelIOException", "reference/com/google/android/gms/wearable/ChannelIOException.html", null, null ] ]
 , null ] ]
 , null ] ]
 
diff --git a/docs/html/google/play-services/index.jd b/docs/html/google/play-services/index.jd
index 3d0f7f6..d674f7f 100644
--- a/docs/html/google/play-services/index.jd
+++ b/docs/html/google/play-services/index.jd
@@ -62,6 +62,105 @@
   <p><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png"
     class="toggle-content-img"
+      alt=""/>Google Play services, Version 7.3</a> <em>(April 2015)</em>
+  </p>
+
+  <div class="toggle-content-toggleme">
+<dl>
+<dt>Highlights in Version 7.3</dt>
+<dd>
+<p>For a summary of the feature highlights in Google Play services 7.3, see the
+announcement
+<a href="http://android-developers.blogspot.com/2015/04/theres-lot-to-explore-with-google-play.html"
+class="external-link">blog post</a>.</p>
+<ul>
+  <li><strong>Maps</strong> - This release makes the Google Maps Android API v2 available on
+<a href="https://developers.google.com/maps/documentation/android/wear" class="external-link">
+Android Wear</a>, so you can now create map-based apps that run directly on wearable devices. In
+addition, the Maps API now offers a new
+<a href="{@docRoot}reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html">
+{@code OnStreetViewPanoramaLongClickListener}</a> interface, similar to the existing
+<a href="{@docRoot}reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html">
+{@code OnMapLongClickListener}</a> interface. These listeners are particularly helpful
+for wearable devices, so you can let users exit from the app by long-clicking on a map or panorama.
+On a wearable device, the swipe gesture is used to pan the map instead of exiting the app.
+    <ul>
+      <li><a href="https://developers.google.com/maps/documentation/android/wear"
+        class="external-link">Google Maps on Android Wear developer guide</a>
+      </li>
+      <li><a href="https://github.com/googlemaps/android-samples/tree/master/BasicWearMap"
+        class="external-link">Google Maps on Android Wear sample</a>
+      </li>
+      <li><a href="https://developers.google.com/maps/documentation/android/releases"
+        class="external-link">Release notes</a>
+      </li>
+    </ul>
+  </li>
+  <li>
+    <strong>Wear</strong> - In addition to Maps support, this release provides you with the ability
+to advertise and discover the capabilities of devices that are connected in a Wear network, through
+the new <a href="{@docRoot}reference/com/google/android/gms/wearable/CapabilityApi.html">
+{@code CapabilityApi}</a> class. The new
+<a href="{@docRoot}reference/com/google/android/gms/wearable/ChannelApi.html">{@code ChannelApi}</a>
+class lets you send and receive data bi-directionally from your wearable app on a device to another
+wearable node. Use the Channel API to send large files for offline access or to stream real-time
+binary data.
+    <ul>
+      <li><a href="{@docRoot}training/wearables/data-layer/messages.html">
+Sending and Receiving Messages</a></li>
+    </ul>
+  </li>
+  <li>
+    <strong>Fit</strong> - This release provides a new
+<a href="{@docRoot}reference/com/google/android/gms/fitness/HistoryApi.html#readDailyTotal(com.google.android.gms.common.api.GoogleApiClient,%20com.google.android.gms.fitness.data.DataType)">
+{@code HistoryApi.readDailyTotal()}</a> method for you to get aggregated daily data for a given
+data type.
+This release also introduces data types for recording granular nutrition information including
+protein, fat, cholesterol, and more.
+    <ul>
+      <li><a href="https://developers.google.com/fit/android/history#read_daily_total_data"
+        class="external-link">Read daily total API developer guide</a></li>
+      <li><a href="https://developers.google.com/fit/android/data-types#data_types_for_instantaneous_readings"
+        class="external-link">Nutrition data type developer guide</a></li>
+      <li><a href="{@docRoot}reference/com/google/android/gms/fitness/data/Field.html">
+        Nutrition data types API reference</a></li>
+      <li><a href="https://developers.google.com/fit/android/releases#april_2015"
+        class="external-link">Release notes</a></li>
+    </ul>
+  </li>
+  <li>
+    <strong>Location</strong> - This release adds a maximum wait time for location updates. By
+calling the new
+<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setMaxWaitTime(long)">
+{@code setMaxWaitTime()}</a> method and passing in a value at least double the value requested with
+the
+<a href="{@docRoot}reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">
+{@code setInterval()}</a> method, the system can batch location updates together, reducing battery
+usage and, on some devices, improving location accuracy. In addition, you can use the new
+<a href="{@docRoot}reference/com/google/android/gms/location/LocationCallback.html">
+{@code LocationCallback}</a> class to be notified when the device location has changed or can no
+longer be determined.
+  </li>
+  <li>
+    <strong>Places</strong> - This release adds a
+<a href="{@docRoot}reference/com/google/android/gms/location/places/PlaceBuffer.html#getAttributions()">
+{@code PlaceBuffer.getAttributions()}</a> method for displaying third-party attributions.</a>
+    <ul>
+      <li><a href="https://developers.google.com/places/android/attributions"
+        class="external-link">Displaying attributions developer guide</a></li>
+      <li><a href="https://developers.google.com/places/android/releases">Release notes</a></li>
+    </ul>
+  </li>
+</ul>
+</dd>
+</dl>
+  </div>
+</div>
+
+<div class="toggle-content closed">
+  <p><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png"
+    class="toggle-content-img"
       alt=""/>Google Play services, Version 7.0</a> <em>(March 2015)</em>
   </p>
 
@@ -544,7 +643,7 @@
 <li><strong>Analytics</strong> - Google Analytics and Tag Manager are now part of Google Play services.
    <ul>
       <li><a href="http://developers.google.com/analytics/devguides/collection/android/v4/" class="external-link">Getting Started with the Analytics API in Android</a></li>
-      <li><a href="/reference/com/google/android/gms/analytics/package-summary.html">Analytics API reference</a></li>
+      <li><a href="{@docRoot}reference/com/google/android/gms/analytics/package-summary.html">Analytics API reference</a></li>
       <li><a href="http://developers.google.com/tag-manager/android/" class="external-link">Getting Started with the Tag Manager API in Android</a></li>
       <li><a href="{@docRoot}reference/com/google/android/gms/tagmanager/package-summary.html">Tag Manager API reference</a></li>
    </ul>
diff --git a/docs/html/google/play-services/setup.jd b/docs/html/google/play-services/setup.jd
index 70e7107..313e591 100644
--- a/docs/html/google/play-services/setup.jd
+++ b/docs/html/google/play-services/setup.jd
@@ -67,7 +67,7 @@
 
 dependencies {
     compile 'com.android.support:appcompat-v7:21.0.3'
-    <strong>compile 'com.google.android.gms:play-services:7.0.0'</strong>
+    <strong>compile 'com.google.android.gms:play-services:7.3.0'</strong>
 }
 </pre>
 <p>Be sure you update this version number each time Google Play services is updated.</p>
@@ -98,14 +98,14 @@
 <code>build.gradle</code> file:</p>
 
 <pre class="no-pretty-print">
-compile 'com.google.android.gms:play-services:7.0.0'
+compile 'com.google.android.gms:play-services:7.3.0'
 </pre>
 
 <p>with these lines:</p>
 
 <pre class="no-pretty-print">
-compile 'com.google.android.gms:play-services-fitness:7.0.0'
-compile 'com.google.android.gms:play-services-wearable:7.0.0'
+compile 'com.google.android.gms:play-services-fitness:7.3.0'
+compile 'com.google.android.gms:play-services-wearable:7.3.0'
 </pre>
 
 <p>Table 1 shows a list of the separate APIs that you can include when compiling your app, and
@@ -123,75 +123,75 @@
   </tr>
   <tr>
     <td>Google+</td>
-    <td>com.google.android.gms:play-services-plus:7.0.0</td>
+    <td>com.google.android.gms:play-services-plus:7.3.0</td>
   </tr>
   <tr>
     <td>Google Account Login</td>
-    <td>com.google.android.gms:play-services-identity:7.0.0</td>
+    <td>com.google.android.gms:play-services-identity:7.3.0</td>
   </tr>
   <tr>
     <td>Google Actions, Base Client Library</td>
-    <td>com.google.android.gms:play-services-base:7.0.0</td>
+    <td>com.google.android.gms:play-services-base:7.3.0</td>
   </tr>
   <tr>
     <td>Google App Indexing</td>
-    <td>com.google.android.gms:play-services-appindexing:7.0.0</td>
+    <td>com.google.android.gms:play-services-appindexing:7.3.0</td>
   </tr>
   <tr>
     <td>Google Analytics</td>
-    <td>com.google.android.gms:play-services-analytics:7.0.0</td>
+    <td>com.google.android.gms:play-services-analytics:7.3.0</td>
   </tr>
     <tr>
     <td>Google Cast</td>
-    <td>com.google.android.gms:play-services-cast:7.0.0</td>
+    <td>com.google.android.gms:play-services-cast:7.3.0</td>
   </tr>
   <tr>
     <td>Google Cloud Messaging</td>
-    <td>com.google.android.gms:play-services-gcm:7.0.0</td>
+    <td>com.google.android.gms:play-services-gcm:7.3.0</td>
   </tr>
   <tr>
     <td>Google Drive</td>
-    <td>com.google.android.gms:play-services-drive:7.0.0</td>
+    <td>com.google.android.gms:play-services-drive:7.3.0</td>
   </tr>
   <tr>
     <td>Google Fit</td>
-    <td>com.google.android.gms:play-services-fitness:7.0.0</td>
+    <td>com.google.android.gms:play-services-fitness:7.3.0</td>
   </tr>
   <tr>
     <td>Google Location, Activity Recognition, and Places</td>
-    <td>com.google.android.gms:play-services-location:7.0.0</td>
+    <td>com.google.android.gms:play-services-location:7.3.0</td>
   </tr>
   <tr>
     <td>Google Maps</td>
-    <td>com.google.android.gms:play-services-maps:7.0.0</td>
+    <td>com.google.android.gms:play-services-maps:7.3.0</td>
   </tr>
   <tr>
     <td>Google Mobile Ads</td>
-    <td>com.google.android.gms:play-services-ads:7.0.0</td>
+    <td>com.google.android.gms:play-services-ads:7.3.0</td>
   </tr>
   <tr>
     <td>Google Nearby</td>
-    <td>com.google.android.gms:play-services-nearby:7.0.0</td>
+    <td>com.google.android.gms:play-services-nearby:7.3.0</td>
   </tr>
   <tr>
     <td>Google Panorama Viewer</td>
-    <td>com.google.android.gms:play-services-panorama:7.0.0</td>
+    <td>com.google.android.gms:play-services-panorama:7.3.0</td>
   </tr>
   <tr>
     <td>Google Play Game services</td>
-    <td>com.google.android.gms:play-services-games:7.0.0</td>
+    <td>com.google.android.gms:play-services-games:7.3.0</td>
   </tr>
   <tr>
     <td>SafetyNet</td>
-    <td>com.google.android.gms:play-services-safetynet:7.0.0</td>
+    <td>com.google.android.gms:play-services-safetynet:7.3.0</td>
   </tr>
   <tr>
     <td>Google Wallet</td>
-    <td>com.google.android.gms:play-services-wallet:7.0.0</td>
+    <td>com.google.android.gms:play-services-wallet:7.3.0</td>
   </tr>
   <tr>
     <td>Android Wear</td>
-    <td>com.google.android.gms:play-services-wearable:7.0.0</td>
+    <td>com.google.android.gms:play-services-wearable:7.3.0</td>
   </tr>
 </table>
 
diff --git a/docs/html/guide/appendix/media-formats.jd b/docs/html/guide/appendix/media-formats.jd
index 19f510a..2a908ba 100644
--- a/docs/html/guide/appendix/media-formats.jd
+++ b/docs/html/guide/appendix/media-formats.jd
@@ -71,7 +71,7 @@
 </tr>
 
 <tr>
-<td rowspan="11">Audio</td>
+<td rowspan="12">Audio</td>
 <td>AAC LC</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
@@ -180,6 +180,15 @@
 </tr>
 
 <tr>
+<td>Opus</td>
+<td style="text-align: center;"></td>
+<td style="text-align: center;"><big>&bull;</big><br><small>(Android 5.0+)</small></td>
+<td></td>
+<td>
+  Matroska (.mkv)</td>
+</tr>
+
+<tr>
 <td rowspan="5">Image</td>
 <td>JPEG</td>
 <td style="text-align: center;"><big>&bull;</big></td>
@@ -235,7 +244,7 @@
 
 
 <tr>
-<td rowspan="4">Video</td>
+<td rowspan="6">Video</td>
 <td>H.263</td>
 <td style="text-align: center;"><big>&bull;</big></td>
 <td style="text-align: center;"><big>&bull;</big></td>
@@ -257,6 +266,15 @@
 </tr>
 
 <tr>
+<td>H.265 HEVC</td>
+<td style="text-align: center;" nowrap></td>
+<td style="text-align: center;" nowrap><big>&bull;</big><br><small>(Android 5.0+)</small></td>
+<td>Main Profile Level 3 for mobile devices and Main Profile Level 4.1 for Android TV</td>
+<td>
+  &bull; MPEG-4 (.mp4)<br>
+</tr>
+
+<tr>
 <td>MPEG-4 SP</td>
 <td>&nbsp;</td>
 <td style="text-align: center;"><big>&bull;</big></td>
@@ -275,6 +293,16 @@
   &bull; Matroska (.mkv, Android 4.0+)</td>
 </tr>
 
+<tr>
+<td>VP9</td>
+<td style="text-align: center;" nowrap></td>
+<td style="text-align: center;" nowrap><big>&bull;</big><br><small>(Android 4.4+)</small></td>
+<td></td>
+<td>
+  &bull; <a href="http://www.webmproject.org/">WebM</a> (.webm)<br>
+  &bull; Matroska (.mkv, Android 4.0+)</td>
+</tr>
+
 </tbody></table>
 
 
diff --git a/docs/html/guide/topics/resources/string-resource.jd b/docs/html/guide/topics/resources/string-resource.jd
index cbfa82e..743e692 100644
--- a/docs/html/guide/topics/resources/string-resource.jd
+++ b/docs/html/guide/topics/resources/string-resource.jd
@@ -401,19 +401,35 @@
 format and style your string resources.</p>
 
 
-<h3>Escaping apostrophes and quotes</h3>
+<h3 id="escaping_quotes">Escaping apostrophes and quotes</h3>
 
-<p>If you have an apostrophe or a quote in your string, you must either escape it or enclose the
-whole string in the other type of enclosing quotes. For example, here are some stings that
-do and don't work:</p>
+<p>
+  If you have an apostrophe (<code>'</code>) in your string, you must either
+  escape it with a backslash (<code>\'</code>) or enclose the string in
+  double-quotes (<code>""</code>). For example, here are some strings that do
+  and don't work:
+</p>
 
 <pre>
-&lt;string name="good_example">"This'll work"&lt;/string>
-&lt;string name="good_example_2">This\'ll also work&lt;/string>
+&lt;string name="good_example">This\'ll work&lt;/string>
+&lt;string name="good_example_2">"This'll also work"&lt;/string>
 &lt;string name="bad_example">This doesn't work&lt;/string>
-&lt;string name="bad_example_2">XML encodings don&amp;apos;t work&lt;/string>
+    &lt;!-- Causes a compile error -->
 </pre>
 
+<p>
+  If you have a double-quote in your string, you must escape it
+  (<code>\"</code>). Surrounding the string with single-quotes does
+  <em>not</em> work.
+</p>
+
+<pre>
+&lt;string name="good_example">This is a \"good string\".&lt;/string>
+&lt;string name="bad_example">This is a "bad string".&lt;/string>
+    &lt;!-- Quotes are stripped; displays as: This is a bad string. -->
+&lt;string name="bad_example_2">'This is another "bad string".'&lt;/string>
+    &lt;!-- Causes a compile error -->
+</pre>
 
 <h3>Formatting strings</h3>
 
diff --git a/docs/html/reference/com/google/android/gms/R.attr.html b/docs/html/reference/com/google/android/gms/R.attr.html
index a36796e..ce78662 100644
--- a/docs/html/reference/com/google/android/gms/R.attr.html
+++ b/docs/html/reference/com/google/android/gms/R.attr.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.color.html b/docs/html/reference/com/google/android/gms/R.color.html
index 48162ce..5e327e4 100644
--- a/docs/html/reference/com/google/android/gms/R.color.html
+++ b/docs/html/reference/com/google/android/gms/R.color.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.drawable.html b/docs/html/reference/com/google/android/gms/R.drawable.html
index 8c80d75..47f0c82 100644
--- a/docs/html/reference/com/google/android/gms/R.drawable.html
+++ b/docs/html/reference/com/google/android/gms/R.drawable.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.html b/docs/html/reference/com/google/android/gms/R.html
index 89577de..0a6f698 100644
--- a/docs/html/reference/com/google/android/gms/R.html
+++ b/docs/html/reference/com/google/android/gms/R.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.id.html b/docs/html/reference/com/google/android/gms/R.id.html
index ebb64dc..ed698f7 100644
--- a/docs/html/reference/com/google/android/gms/R.id.html
+++ b/docs/html/reference/com/google/android/gms/R.id.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.integer.html b/docs/html/reference/com/google/android/gms/R.integer.html
index 6dedb14..d0354eb 100644
--- a/docs/html/reference/com/google/android/gms/R.integer.html
+++ b/docs/html/reference/com/google/android/gms/R.integer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.raw.html b/docs/html/reference/com/google/android/gms/R.raw.html
index ac5f7f9..439cbcf 100644
--- a/docs/html/reference/com/google/android/gms/R.raw.html
+++ b/docs/html/reference/com/google/android/gms/R.raw.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.string.html b/docs/html/reference/com/google/android/gms/R.string.html
index dae85c1..ae849c89 100644
--- a/docs/html/reference/com/google/android/gms/R.string.html
+++ b/docs/html/reference/com/google/android/gms/R.string.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.style.html b/docs/html/reference/com/google/android/gms/R.style.html
index 93a9671..cf3f454 100644
--- a/docs/html/reference/com/google/android/gms/R.style.html
+++ b/docs/html/reference/com/google/android/gms/R.style.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/R.styleable.html b/docs/html/reference/com/google/android/gms/R.styleable.html
index 34e834d..7e55b71a 100644
--- a/docs/html/reference/com/google/android/gms/R.styleable.html
+++ b/docs/html/reference/com/google/android/gms/R.styleable.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/actions/ItemListIntents.html b/docs/html/reference/com/google/android/gms/actions/ItemListIntents.html
index 775d785..a3caaad 100644
--- a/docs/html/reference/com/google/android/gms/actions/ItemListIntents.html
+++ b/docs/html/reference/com/google/android/gms/actions/ItemListIntents.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/actions/NoteIntents.html b/docs/html/reference/com/google/android/gms/actions/NoteIntents.html
index 70f02a8..24ec77f 100644
--- a/docs/html/reference/com/google/android/gms/actions/NoteIntents.html
+++ b/docs/html/reference/com/google/android/gms/actions/NoteIntents.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/actions/ReserveIntents.html b/docs/html/reference/com/google/android/gms/actions/ReserveIntents.html
index b3e3c9b..46d4764 100644
--- a/docs/html/reference/com/google/android/gms/actions/ReserveIntents.html
+++ b/docs/html/reference/com/google/android/gms/actions/ReserveIntents.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/actions/SearchIntents.html b/docs/html/reference/com/google/android/gms/actions/SearchIntents.html
index 226131f..9f95e2b 100644
--- a/docs/html/reference/com/google/android/gms/actions/SearchIntents.html
+++ b/docs/html/reference/com/google/android/gms/actions/SearchIntents.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/actions/package-summary.html b/docs/html/reference/com/google/android/gms/actions/package-summary.html
index 0604cee..66d8c91 100644
--- a/docs/html/reference/com/google/android/gms/actions/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/actions/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/AdListener.html b/docs/html/reference/com/google/android/gms/ads/AdListener.html
index b3a91a4..25bf17e 100644
--- a/docs/html/reference/com/google/android/gms/ads/AdListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/AdListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/AdRequest.Builder.html b/docs/html/reference/com/google/android/gms/ads/AdRequest.Builder.html
index 49ee31c..de63f03 100644
--- a/docs/html/reference/com/google/android/gms/ads/AdRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/ads/AdRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/AdRequest.html b/docs/html/reference/com/google/android/gms/ads/AdRequest.html
index 8c7aafe..44f9990 100644
--- a/docs/html/reference/com/google/android/gms/ads/AdRequest.html
+++ b/docs/html/reference/com/google/android/gms/ads/AdRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/AdSize.html b/docs/html/reference/com/google/android/gms/ads/AdSize.html
index 382ecaa..539a2f6 100644
--- a/docs/html/reference/com/google/android/gms/ads/AdSize.html
+++ b/docs/html/reference/com/google/android/gms/ads/AdSize.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/AdView.html b/docs/html/reference/com/google/android/gms/ads/AdView.html
index 36ae5bb..e561b90 100644
--- a/docs/html/reference/com/google/android/gms/ads/AdView.html
+++ b/docs/html/reference/com/google/android/gms/ads/AdView.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/InterstitialAd.html b/docs/html/reference/com/google/android/gms/ads/InterstitialAd.html
index 2487f2d..dfc3d14 100644
--- a/docs/html/reference/com/google/android/gms/ads/InterstitialAd.html
+++ b/docs/html/reference/com/google/android/gms/ads/InterstitialAd.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/doubleclick/AppEventListener.html b/docs/html/reference/com/google/android/gms/ads/doubleclick/AppEventListener.html
index a592fa5..8e324ca 100644
--- a/docs/html/reference/com/google/android/gms/ads/doubleclick/AppEventListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/doubleclick/AppEventListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/doubleclick/CustomRenderedAd.html b/docs/html/reference/com/google/android/gms/ads/doubleclick/CustomRenderedAd.html
index 34ee099..9888f07 100644
--- a/docs/html/reference/com/google/android/gms/ads/doubleclick/CustomRenderedAd.html
+++ b/docs/html/reference/com/google/android/gms/ads/doubleclick/CustomRenderedAd.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/doubleclick/OnCustomRenderedAdLoadedListener.html b/docs/html/reference/com/google/android/gms/ads/doubleclick/OnCustomRenderedAdLoadedListener.html
index 0573bb7..96030c0 100644
--- a/docs/html/reference/com/google/android/gms/ads/doubleclick/OnCustomRenderedAdLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/doubleclick/OnCustomRenderedAdLoadedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdRequest.Builder.html b/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdRequest.Builder.html
index 2bd3774..9145b46 100644
--- a/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdRequest.html b/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdRequest.html
index 2c8c172..b1a50ed 100644
--- a/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdRequest.html
+++ b/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdView.html b/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdView.html
index 7323feb..39df2f6 100644
--- a/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdView.html
+++ b/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherAdView.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherInterstitialAd.html b/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherInterstitialAd.html
index ce90ec5..8003263 100644
--- a/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherInterstitialAd.html
+++ b/docs/html/reference/com/google/android/gms/ads/doubleclick/PublisherInterstitialAd.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/doubleclick/package-summary.html b/docs/html/reference/com/google/android/gms/ads/doubleclick/package-summary.html
index 4ba271c..732c2e9 100644
--- a/docs/html/reference/com/google/android/gms/ads/doubleclick/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/ads/doubleclick/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html b/docs/html/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html
index 790dc520..db7a2fa 100644
--- a/docs/html/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html
+++ b/docs/html/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.Info.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.html b/docs/html/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.html
index 78e1e90..f9034ad 100644
--- a/docs/html/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.html
+++ b/docs/html/reference/com/google/android/gms/ads/identifier/AdvertisingIdClient.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/identifier/package-summary.html b/docs/html/reference/com/google/android/gms/ads/identifier/package-summary.html
index 596d992..af77d7a 100644
--- a/docs/html/reference/com/google/android/gms/ads/identifier/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/ads/identifier/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/MediationAdRequest.html b/docs/html/reference/com/google/android/gms/ads/mediation/MediationAdRequest.html
index 13074c5..228f438 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/MediationAdRequest.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/MediationAdRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/MediationAdapter.html b/docs/html/reference/com/google/android/gms/ads/mediation/MediationAdapter.html
index 95ab021..0e0d367 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/MediationAdapter.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/MediationAdapter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/MediationBannerAdapter.html b/docs/html/reference/com/google/android/gms/ads/mediation/MediationBannerAdapter.html
index 53e9a7a..a655287 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/MediationBannerAdapter.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/MediationBannerAdapter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/MediationBannerListener.html b/docs/html/reference/com/google/android/gms/ads/mediation/MediationBannerListener.html
index fb2d673..8b75a63 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/MediationBannerListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/MediationBannerListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/MediationInterstitialAdapter.html b/docs/html/reference/com/google/android/gms/ads/mediation/MediationInterstitialAdapter.html
index 82b54d9..c83efba 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/MediationInterstitialAdapter.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/MediationInterstitialAdapter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/MediationInterstitialListener.html b/docs/html/reference/com/google/android/gms/ads/mediation/MediationInterstitialListener.html
index da9ece6..08da950 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/MediationInterstitialListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/MediationInterstitialListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/NetworkExtras.html b/docs/html/reference/com/google/android/gms/ads/mediation/NetworkExtras.html
index f51549c..5b4fdf0 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/NetworkExtras.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/NetworkExtras.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/admob/AdMobExtras.html b/docs/html/reference/com/google/android/gms/ads/mediation/admob/AdMobExtras.html
index e5d92b8..0bc5904 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/admob/AdMobExtras.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/admob/AdMobExtras.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/admob/package-summary.html b/docs/html/reference/com/google/android/gms/ads/mediation/admob/package-summary.html
index 4262481..e1bd0aa 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/admob/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/admob/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEvent.html b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEvent.html
index a366a91..9aaf9b9 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEvent.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventBanner.html b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventBanner.html
index 5925dae..392093c 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventBanner.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventBanner.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventBannerListener.html b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventBannerListener.html
index 0f53327..e9d1602 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventBannerListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventBannerListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventExtras.html b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventExtras.html
index 29dedb9..007666f 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventExtras.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventExtras.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventInterstitial.html b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventInterstitial.html
index 73294a7..9de2f0c 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventInterstitial.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventInterstitial.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventInterstitialListener.html b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventInterstitialListener.html
index ff46150..72f2d38 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventInterstitialListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventInterstitialListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventListener.html b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventListener.html
index f1aeca7..e4b30fb 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/CustomEventListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/package-summary.html b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/package-summary.html
index 6aa8217..de95978 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/customevent/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/customevent/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/mediation/package-summary.html b/docs/html/reference/com/google/android/gms/ads/mediation/package-summary.html
index c081192..7bf8feb 100644
--- a/docs/html/reference/com/google/android/gms/ads/mediation/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/ads/mediation/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/package-summary.html b/docs/html/reference/com/google/android/gms/ads/package-summary.html
index 7128f83..ef7cb00 100644
--- a/docs/html/reference/com/google/android/gms/ads/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/ads/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchase.html b/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchase.html
index f05a913..ff68e3f 100644
--- a/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchase.html
+++ b/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchase.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchaseListener.html b/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchaseListener.html
index 0f72f22..1957d93 100644
--- a/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchaseListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchaseListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchaseResult.html b/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchaseResult.html
index 94985b2..c1e45c77 100644
--- a/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchaseResult.html
+++ b/docs/html/reference/com/google/android/gms/ads/purchase/InAppPurchaseResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/purchase/PlayStorePurchaseListener.html b/docs/html/reference/com/google/android/gms/ads/purchase/PlayStorePurchaseListener.html
index 9720c82..80352ec 100644
--- a/docs/html/reference/com/google/android/gms/ads/purchase/PlayStorePurchaseListener.html
+++ b/docs/html/reference/com/google/android/gms/ads/purchase/PlayStorePurchaseListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/purchase/package-summary.html b/docs/html/reference/com/google/android/gms/ads/purchase/package-summary.html
index d1444c3..6e827a6 100644
--- a/docs/html/reference/com/google/android/gms/ads/purchase/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/ads/purchase/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/search/SearchAdRequest.Builder.html b/docs/html/reference/com/google/android/gms/ads/search/SearchAdRequest.Builder.html
index 19483fe..42e1c5a 100644
--- a/docs/html/reference/com/google/android/gms/ads/search/SearchAdRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/ads/search/SearchAdRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/search/SearchAdRequest.html b/docs/html/reference/com/google/android/gms/ads/search/SearchAdRequest.html
index 6753ddb..4ff404c 100644
--- a/docs/html/reference/com/google/android/gms/ads/search/SearchAdRequest.html
+++ b/docs/html/reference/com/google/android/gms/ads/search/SearchAdRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/search/SearchAdView.html b/docs/html/reference/com/google/android/gms/ads/search/SearchAdView.html
index 2674390..07443aa 100644
--- a/docs/html/reference/com/google/android/gms/ads/search/SearchAdView.html
+++ b/docs/html/reference/com/google/android/gms/ads/search/SearchAdView.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/ads/search/package-summary.html b/docs/html/reference/com/google/android/gms/ads/search/package-summary.html
index 5cfd7ff..dbdd34d 100644
--- a/docs/html/reference/com/google/android/gms/ads/search/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/ads/search/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/AnalyticsReceiver.html b/docs/html/reference/com/google/android/gms/analytics/AnalyticsReceiver.html
index 86100ae..413d112 100644
--- a/docs/html/reference/com/google/android/gms/analytics/AnalyticsReceiver.html
+++ b/docs/html/reference/com/google/android/gms/analytics/AnalyticsReceiver.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -898,16 +909,23 @@
 
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">A <code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code> used by Google Analytics.
- It will only be used if it is correctly declared in the manifest:
- <p>
- <pre>
- &lt;receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
-           android:enabled="true"&gt;
-     &lt;intent-filter&gt;
-         &lt;action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /&gt;
-     &lt;/intent-filter&gt;
- &lt;/receiver&gt;</pre>
+<p itemprop="articleBody">A <code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code> used by Google Analytics. It will only be used when
+ the receiver is correctly declared in the manifest and enabled: <p>
+ <pre><code>&lt;manifest&gt;
+   &lt;application&gt;
+     &lt;!-- ... --&gt;
+
+     &lt;receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
+         android:enabled="true"&gt;
+         &lt;intent-filter&gt;
+             &lt;action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /&gt;
+         &lt;/intent-filter&gt;
+     &lt;/receiver&gt;
+
+     &lt;!-- ... --&gt;
+   &lt;/application&gt;
+ &lt;/manifest&gt;
+ </code></pre>
 </p>
 
 
diff --git a/docs/html/reference/com/google/android/gms/analytics/AnalyticsService.html b/docs/html/reference/com/google/android/gms/analytics/AnalyticsService.html
index a2d81bb..c69cffc 100644
--- a/docs/html/reference/com/google/android/gms/analytics/AnalyticsService.html
+++ b/docs/html/reference/com/google/android/gms/analytics/AnalyticsService.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -822,13 +833,6 @@
 
 
 
-
-
-
-
-
-
-
 <div class="sum-details-links">
 
 Summary:
@@ -844,9 +848,9 @@
 
 
 
-  &#124; <a href="#pubctors">Ctors</a>
 
 
+  &#124; <a href="#pubmethods">Methods</a>
 
 
 
@@ -890,11 +894,7 @@
 
 
 
-
-
-
-
-    extends IntentService<br/>
+    extends Service<br/>
 
 
 
@@ -917,7 +917,7 @@
 
     <tr>
 
-        <td colspan="6" class="jd-inheritance-class-cell">java.lang.Object</td>
+        <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
 
 
@@ -925,7 +925,7 @@
 
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
 
-        <td colspan="5" class="jd-inheritance-class-cell">android.content.Context</td>
+        <td colspan="4" class="jd-inheritance-class-cell">android.content.Context</td>
     </tr>
 
 
@@ -935,7 +935,7 @@
 
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
 
-        <td colspan="4" class="jd-inheritance-class-cell">android.content.ContextWrapper</td>
+        <td colspan="3" class="jd-inheritance-class-cell">android.content.ContextWrapper</td>
     </tr>
 
 
@@ -947,7 +947,7 @@
 
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
 
-        <td colspan="3" class="jd-inheritance-class-cell">android.app.Service</td>
+        <td colspan="2" class="jd-inheritance-class-cell">android.app.Service</td>
     </tr>
 
 
@@ -961,22 +961,6 @@
 
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
 
-        <td colspan="2" class="jd-inheritance-class-cell">android.app.IntentService</td>
-    </tr>
-
-
-    <tr>
-
-            <td class="jd-inheritance-space">&nbsp;</td>
-
-            <td class="jd-inheritance-space">&nbsp;</td>
-
-            <td class="jd-inheritance-space">&nbsp;</td>
-
-            <td class="jd-inheritance-space">&nbsp;</td>
-
-            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-
         <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.analytics.AnalyticsService</td>
     </tr>
 
@@ -993,11 +977,20 @@
 
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">An <code><a href="/reference/android/app/IntentService.html">IntentService</a></code> used by Google Analytics.
- It will only be used if it is correctly declared in the manifest:
- <p>
- <pre>
- &lt;service android:name="com.google.android.gms.analytics.AnalyticsService" /&gt;</pre>
+<p itemprop="articleBody">An <code><a href="/reference/android/app/Service.html">Service</a></code> used by Google Analytics. It will only be used when the service
+ is correctly declared in the manifest: <p>
+ <pre><code>&lt;manifest&gt;
+   &lt;application&gt;
+     &lt;!-- ... --&gt;
+
+     &lt;service android:name="com.google.android.gms.analytics.AnalyticsService"
+         android:enabled="true"
+         android:exported="false"/&gt;
+
+     &lt;!-- ... --&gt;
+   &lt;/application&gt;
+ &lt;/manifest&gt;
+ </code></pre>
 </p>
 
 
@@ -1047,8 +1040,6 @@
   <div style="clear:left;">Inherited Constants</div></th></tr>
 
 
-
-
 <tr class="api apilevel-" >
 <td colspan="12">
 
@@ -2192,78 +2183,12 @@
 
 
 
-<!-- ======== CONSTRUCTOR SUMMARY ======== -->
-<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
-
-
-
-
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/AnalyticsService.html#AnalyticsService()">AnalyticsService</a></span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/AnalyticsService.html#AnalyticsService(java.lang.String)">AnalyticsService</a></span>(String name)</nobr>
-
-  </td></tr>
-
-
-
-</table>
-
-
-
-
-
-
-
 
 
 
 
 <!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.IntentService" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-android.app.IntentService-trigger"
-          src="/assets/images/triangle-closed.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  android.app.IntentService
-
-<div id="inherited-methods-android.app.IntentService">
-  <div id="inherited-methods-android.app.IntentService-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-android.app.IntentService-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
 
 
 
@@ -2278,114 +2203,26 @@
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onBind</span>(Intent arg0)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/AnalyticsService.html#onBind(android.content.Intent)">onBind</a></span>(Intent intent)</nobr>
 
   </td></tr>
 
 
 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onCreate</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onDestroy</span>()</nobr>
-
-  </td></tr>
-
-
-
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            abstract
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onHandleIntent</span>(Intent arg0)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onStart</span>(Intent arg0, int arg1)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            int</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onStartCommand</span>(Intent arg0, int arg1, int arg2)</nobr>
-
-  </td></tr>
-
-
-
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-
-
-
-
-
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setIntentRedelivery</span>(boolean arg0)</nobr>
-
-  </td></tr>
-
-
 </table>
-  </div>
-</div>
-</td></tr>
 
 
 
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
 <tr class="api apilevel-" >
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Service" class="jd-expando-trigger closed"
@@ -6202,77 +6039,6 @@
 <!-- Public ctors -->
 
 
-<!-- ========= CONSTRUCTOR DETAIL ======== -->
-<h2>Public Constructors</h2>
-
-
-
-<A NAME="AnalyticsService()"></A>
-
-<div class="jd-details api apilevel-">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-
-      </span>
-      <span class="sympad">AnalyticsService</span>
-      <span class="normal">()</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-
-
-
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-<A NAME="AnalyticsService(java.lang.String)"></A>
-
-<div class="jd-details api apilevel-">
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public
-
-
-
-
-
-      </span>
-      <span class="sympad">AnalyticsService</span>
-      <span class="normal">(String name)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-
-
-
-      </div>
-    <div class="jd-details-descr">
-
-
-
-
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-
-
 
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
 <!-- Protected ctors -->
@@ -6282,6 +6048,43 @@
 <!-- ========= METHOD DETAIL ======== -->
 <!-- Public methdos -->
 
+<h2>Public Methods</h2>
+
+
+
+<A NAME="onBind(android.content.Intent)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        IBinder
+      </span>
+      <span class="sympad">onBind</span>
+      <span class="normal">(Intent intent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
 
 
 <!-- ========= METHOD DETAIL ======== -->
diff --git a/docs/html/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html b/docs/html/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html
index 6195e5b..cb5e677 100644
--- a/docs/html/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html
+++ b/docs/html/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -829,7 +840,7 @@
 <div id="jd-header">
     public
      
-    final 
+
     
     class
 <h1 itemprop="name">CampaignTrackingReceiver</h1>
@@ -891,6 +902,48 @@
 
 
 
+<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
+          ><img id="subclasses-direct-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>Known Direct Subclasses
+
+  <div id="subclasses-direct">
+      <div id="subclasses-direct-list"
+              class="jd-inheritedlinks"
+
+              >
+
+
+              <a href="/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html">InstallReferrerReceiver</a>
+
+
+      </div>
+      <div id="subclasses-direct-summary"
+              style="display: none;"
+              >
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html">InstallReferrerReceiver</a></td>
+        <td class="jd-descrcol" width="100%">
+          The Google Play <code>com.android.vending.INSTALL_REFERRER</code> <code><a href="/reference/android/content/Intent.html">Intent</a></code> is broadcast when an
+ app is installed from the Google Play Store.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+      </div>
+  </div>
+</td></tr></table>
+
 
 
 
@@ -898,29 +951,37 @@
 
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">The Google Play <code>com.android.vending.INSTALL_REFERRER</code> <code><a href="/reference/android/content/Intent.html">Intent</a></code> is broadcast when an
- app is installed from the Google Play Store and has campaign data available (i.e. the app was
- installed from a link to the Google Play Store). This <code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code> listens for that
- <code><a href="/reference/android/content/Intent.html">Intent</a></code>, passing the campaign data to Google Analytics.
- <p>
- To enable this receiver, add the following to your AndroidManifest.xml file:
+<p itemprop="articleBody">Google Analytics receiver for <code>com.android.vending.INSTALL_REFERRER</code>. Google Play will
+ broadcast the intent when an app is installed from the Google Play Store and has campaign data
+ available (i.e. the app was installed from a link to the Google Play Store).
+ This <code><a href="/reference/android/content/BroadcastReceiver.html">BroadcastReceiver</a></code> registers for that <code><a href="/reference/android/content/Intent.html">Intent</a></code> and passes the campaign data
+ to Google Analytics.
 
- <pre>
- <code>&lt;!-- Used for install referrer tracking--&gt;
- &lt;service android:name="com.google.android.gms.analytics.CampaignTrackingService"/&gt;
- &lt;receiver
-     android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
-     android:exported="true"&gt;
-     &lt;intent-filter&gt;
-         &lt;action android:name="com.android.vending.INSTALL_REFERRER" /&gt;
-     &lt;/intent-filter&gt;
- &lt;/receiver&gt;
- </code>
- </pre>
+ <p><p> To enable installation campaign reporting register both CampaignTrackingReceiver and
+ CampaignTrackingService in your AndroidManifest.xml file:
 
- Only one receiver can receive the install referrer setting. If Google Tag Manager is being
- used by the application, then only the Google Tag Manager receiver needs to be enabled.
- The Google Tag Manager receiver will invoke the Google Analytics receiver automatically.
+ <pre><code>&lt;manifest&gt;
+   &lt;application&gt;
+     &lt;!-- ... --&gt;
+
+     &lt;receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
+         android:enabled="true"&gt;
+         &lt;intent-filter&gt;
+             &lt;action android:name="com.android.vending.INSTALL_REFERRER" /&gt;
+         &lt;/intent-filter&gt;
+     &lt;/receiver&gt;
+     &lt;service android:name="com.google.android.gms.analytics.CampaignTrackingService"
+         android:enabled="true"
+         android:exported="false"/&gt;
+
+     &lt;!-- ... --&gt;
+   &lt;/application&gt;
+ &lt;/manifest&gt;
+ </code></pre>
+
+ Only one receiver can receive the install referrer setting. If Google Tag Manager is being used
+ by the application, then only the Google Tag Manager receiver needs to be enabled. The Google Tag
+ Manager receiver will invoke the Google Analytics receiver automatically.
 </p>
 
 
@@ -1016,7 +1077,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html#onReceive(android.content.Context, android.content.Intent)">onReceive</a></span>(Context ctx, Intent intent)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html#onReceive(android.content.Context, android.content.Intent)">onReceive</a></span>(Context context, Intent intent)</nobr>
         
   </td></tr>
 
@@ -1645,7 +1706,7 @@
         void
       </span>
       <span class="sympad">onReceive</span>
-      <span class="normal">(Context ctx, Intent intent)</span>
+      <span class="normal">(Context context, Intent intent)</span>
     </h4>
       <div class="api-level">
         <div></div>
diff --git a/docs/html/reference/com/google/android/gms/analytics/CampaignTrackingService.html b/docs/html/reference/com/google/android/gms/analytics/CampaignTrackingService.html
index da1a747..b8f9d39 100644
--- a/docs/html/reference/com/google/android/gms/analytics/CampaignTrackingService.html
+++ b/docs/html/reference/com/google/android/gms/analytics/CampaignTrackingService.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -777,13 +788,6 @@
    
   
   
-  
-  
-
-  
-   
-  
-  
    
   
   
@@ -849,6 +853,9 @@
 
 
 
+  &#124; <a href="#pubmethods">Methods</a>
+
+
 
 
   &#124; <a href="#inhmethods">Inherited Methods</a>
@@ -890,11 +897,7 @@
   
 
   
-  
-  
-
-  
-    extends IntentService<br/>
+    extends Service<br/>
   
   
   
@@ -917,7 +920,7 @@
 
     <tr>
          	
-        <td colspan="6" class="jd-inheritance-class-cell">java.lang.Object</td>
+        <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
     
 
@@ -925,7 +928,7 @@
         
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
          	
-        <td colspan="5" class="jd-inheritance-class-cell">android.content.Context</td>
+        <td colspan="4" class="jd-inheritance-class-cell">android.content.Context</td>
     </tr>
     
 
@@ -935,7 +938,7 @@
         
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
          	
-        <td colspan="4" class="jd-inheritance-class-cell">android.content.ContextWrapper</td>
+        <td colspan="3" class="jd-inheritance-class-cell">android.content.ContextWrapper</td>
     </tr>
     
 
@@ -947,7 +950,7 @@
         
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
          	
-        <td colspan="3" class="jd-inheritance-class-cell">android.app.Service</td>
+        <td colspan="2" class="jd-inheritance-class-cell">android.app.Service</td>
     </tr>
     
 
@@ -961,22 +964,6 @@
         
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
          	
-        <td colspan="2" class="jd-inheritance-class-cell">android.app.IntentService</td>
-    </tr>
-    
-
-    <tr>
-        
-            <td class="jd-inheritance-space">&nbsp;</td>
-        
-            <td class="jd-inheritance-space">&nbsp;</td>
-        
-            <td class="jd-inheritance-space">&nbsp;</td>
-        
-            <td class="jd-inheritance-space">&nbsp;</td>
-        
-            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
         <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.analytics.CampaignTrackingService</td>
     </tr>
     
@@ -986,6 +973,47 @@
 
 
 
+<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-direct" class="jd-expando-trigger closed"
+          ><img id="subclasses-direct-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>Known Direct Subclasses
+
+  <div id="subclasses-direct">
+      <div id="subclasses-direct-list"
+              class="jd-inheritedlinks"
+
+              >
+
+
+              <a href="/reference/com/google/android/gms/tagmanager/InstallReferrerService.html">InstallReferrerService</a>
+
+
+      </div>
+      <div id="subclasses-direct-summary"
+              style="display: none;"
+              >
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/tagmanager/InstallReferrerService.html">InstallReferrerService</a></td>
+        <td class="jd-descrcol" width="100%">
+          IntentService for handling the Google Play Store's INSTALL_REFERRER intent.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+      </div>
+  </div>
+</td></tr></table>
+
 
 
 
@@ -993,8 +1021,8 @@
 
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">IntentService for handling the Google Play Store's INSTALL_REFERRER intent. This service will be
- launched from <code><a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html">CampaignTrackingReceiver</a></code>. See that class for details.
+<p itemprop="articleBody">Service for processing Google Play Store's INSTALL_REFERRER intent. This service will be
+ launched by <code><a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html">CampaignTrackingReceiver</a></code>. See CampaignTrackingReceiver class for details.
 </p>
 
 
@@ -1044,8 +1072,6 @@
   <div style="clear:left;">Inherited Constants</div></th></tr>
 
 
-
-
 <tr class="api apilevel-" >
 <td colspan="12">
 
@@ -2205,22 +2231,6 @@
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#CampaignTrackingService(java.lang.String)">CampaignTrackingService</a></span>(String name)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#CampaignTrackingService()">CampaignTrackingService</a></span>()</nobr>
         
   </td></tr>
@@ -2234,35 +2244,10 @@
 
 
 
-
-
-
-
-
 <!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
 
 
-<tr class="api apilevel-" >
-<td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.IntentService" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-android.app.IntentService-trigger"
-          src="/assets/images/triangle-closed.png"
-          class="jd-expando-trigger-img" /></a>
-From class
-
-  android.app.IntentService
-
-<div id="inherited-methods-android.app.IntentService">
-  <div id="inherited-methods-android.app.IntentService-list"
-        class="jd-inheritedlinks">
-  </div>
-  <div id="inherited-methods-android.app.IntentService-summary" style="display: none;">
-    <table class="jd-sumtable-expando">
-    
-
 
 	 
     <tr class="alt-color api apilevel-" >
@@ -2275,7 +2260,7 @@
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onBind</span>(Intent arg0)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#onBind(android.content.Intent)">onBind</a></span>(Intent intent)</nobr>
         
   </td></tr>
 
@@ -2291,7 +2276,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onCreate</span>()</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#onCreate()">onCreate</a></span>()</nobr>
         
   </td></tr>
 
@@ -2307,39 +2292,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onDestroy</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            abstract
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onHandleIntent</span>(Intent arg0)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onStart</span>(Intent arg0, int arg1)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#onDestroy()">onDestroy</a></span>()</nobr>
         
   </td></tr>
 
@@ -2351,38 +2304,30 @@
             
             
             
-            
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onStartCommand</span>(Intent arg0, int arg1, int arg2)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#onStartCommand(android.content.Intent, int, int)">onStartCommand</a></span>(Intent intent, int flags, int startId)</nobr>
         
   </td></tr>
 
 
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setIntentRedelivery</span>(boolean arg0)</nobr>
-        
-  </td></tr>
-
 
 </table>
-  </div>
-</div>
-</td></tr>
 
 
 
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
 <tr class="api apilevel-" >
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.Service" class="jd-expando-trigger closed"
@@ -6204,38 +6149,6 @@
 
 
 
-<A NAME="CampaignTrackingService(java.lang.String)"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        
-      </span>
-      <span class="sympad">CampaignTrackingService</span>
-      <span class="normal">(String name)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
 <A NAME="CampaignTrackingService()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -6279,6 +6192,139 @@
 <!-- ========= METHOD DETAIL ======== -->
 <!-- Public methdos -->
 
+<h2>Public Methods</h2>
+
+
+
+<A NAME="onBind(android.content.Intent)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        IBinder
+      </span>
+      <span class="sympad">onBind</span>
+      <span class="normal">(Intent intent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onCreate()"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+         
+         
+         
+         
+        void
+      </span>
+      <span class="sympad">onCreate</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onDestroy()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onDestroy</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onStartCommand(android.content.Intent, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">onStartCommand</span>
+      <span class="normal">(Intent intent, int flags, int startId)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
 
 
 <!-- ========= METHOD DETAIL ======== -->
diff --git a/docs/html/reference/com/google/android/gms/analytics/ExceptionParser.html b/docs/html/reference/com/google/android/gms/analytics/ExceptionParser.html
index 64d91f6..b66b967 100644
--- a/docs/html/reference/com/google/android/gms/analytics/ExceptionParser.html
+++ b/docs/html/reference/com/google/android/gms/analytics/ExceptionParser.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -907,7 +918,8 @@
 
  myHandler.setExceptionParser(new MyExceptionParser());
  // Where MyExceptionParser provides a custom description for various exceptions.
- </pre></p>
+ </pre>
+</p>
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/analytics/ExceptionReporter.html b/docs/html/reference/com/google/android/gms/analytics/ExceptionReporter.html
index b183b34..a64e356 100644
--- a/docs/html/reference/com/google/android/gms/analytics/ExceptionReporter.html
+++ b/docs/html/reference/com/google/android/gms/analytics/ExceptionReporter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -889,28 +900,23 @@
 
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">Used to catch any uncaught exceptions and report them to Google Analytics.
- This class will call <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#dispatchLocalHits()">dispatchLocalHits()</a></code> after calling
- <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#send(java.util.Map<java.lang.String, java.lang.String>)">send(Map<String, String>)</a></code>.
- <p>
- The exact message reported is determined by the <code><a href="/reference/com/google/android/gms/analytics/ExceptionParser.html">ExceptionParser</a></code> set
- via the <code><a href="/reference/com/google/android/gms/analytics/ExceptionReporter.html#setExceptionParser(com.google.android.gms.analytics.ExceptionParser)">setExceptionParser(ExceptionParser)</a></code> method.  See <code><a href="/reference/com/google/android/gms/analytics/StandardExceptionParser.html">StandardExceptionParser</a></code>
- for an example of an implementation of <code><a href="/reference/com/google/android/gms/analytics/ExceptionParser.html">ExceptionParser</a></code>.
- <p>
- All exceptions reported via this class will be reported as fatal exceptions.
- <p>
+<p itemprop="articleBody">Used to catch any uncaught exceptions and report them to Google Analytics. This class will call
+ <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#dispatchLocalHits()">dispatchLocalHits()</a></code> after calling <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#send(java.util.Map<java.lang.String, java.lang.String>)">send(Map<String, String>)</a></code>. <p> The exact
+ message reported is determined by the <code><a href="/reference/com/google/android/gms/analytics/ExceptionParser.html">ExceptionParser</a></code> set via the <code><a href="/reference/com/google/android/gms/analytics/ExceptionReporter.html#setExceptionParser(com.google.android.gms.analytics.ExceptionParser)">setExceptionParser(ExceptionParser)</a></code> method.  See <code><a href="/reference/com/google/android/gms/analytics/StandardExceptionParser.html">StandardExceptionParser</a></code> for an example of an
+ implementation of <code><a href="/reference/com/google/android/gms/analytics/ExceptionParser.html">ExceptionParser</a></code>. <p> All exceptions reported via this class will be
+ reported as fatal exceptions. <p>
 
  Usage:
  <pre>
  UncaughtExceptionHandler myHandler = new ExceptionReporter(
    myTracker,                                     // Currently used Tracker.
-   GAServiceManager.getInstance(),                // GAServiceManager singleton.
    Thread.getDefaultUncaughtExceptionHandler(),   // Current default uncaught exception handler.
    context);                                      // Context of the application.
 
  // Make myHandler the new default uncaught exception handler.
  Thread.setDefaultUncaughtExceptionHandler(myHandler);
- </pre></p>
+ </pre>
+</p>
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/analytics/GoogleAnalytics.html b/docs/html/reference/com/google/android/gms/analytics/GoogleAnalytics.html
index 64c3f88..6be5003 100644
--- a/docs/html/reference/com/google/android/gms/analytics/GoogleAnalytics.html
+++ b/docs/html/reference/com/google/android/gms/analytics/GoogleAnalytics.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -819,7 +830,7 @@
 <div id="jd-header">
     public
      
-     
+    final
     
     class
 <h1 itemprop="name">GoogleAnalytics</h1>
@@ -874,42 +885,130 @@
 
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">This class is a singleton that provides methods for controlling global configuration
+<p itemprop="articleBody">The top level Google Analytics singleton that provides methods for configuring Google Analytics
  and creating <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> objects.
- <p>
- Applications can get an instance of this class by calling <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#getInstance(android.content.Context)">getInstance(Context)</a></code>.
 
- Applications can optionally provide a metadata reference to a global configuration
- XML resource file in the &lt;application&gt; element of their AndroidManifest.xml:
- <p>
+ <p> Applications can get an instance of this class by calling <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#getInstance(android.content.Context)">getInstance(Context)</a></code>.
+ <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#getInstance(android.content.Context)">getInstance(Context)</a></code> is thread safe and can be called from any thread. It is recommended that
+ Google Analytics be initialized early in the application lifecycle to correctly report unhandled
+ exceptions.
+ Application.<code><a href="/reference/android/app/Application.html#onCreate()">onCreate()</a></code> is the recommended place for configuring
+ Google Analytics.
+
+ <p>A basic configuration of Google Analytics look like this:
  <pre>
- &lt;meta-data
-     android:name="com.google.android.gms.analytics.globalConfigResource"
-     android:resource="@xml/analytics_global_config" /&gt;</pre>
- The configuration file should be stored in the applications res/values/xml directory
- and look like this:
- <p>
+ package com.example;
+
+ class MyApp extends Application {
+   public static GoogleAnalytics analytics;
+   public static Tracker tracker;
+
+   &#64;Overwrite
+   public void onCreate() {
+     analytics = GoogleAnalytics.getInstance(this);
+     analytics.setLocalDispatchPeriod(1800);
+
+     tracker = analytics.newTracker("UA-000-1"); // Replace with actual tracker id
+     tracker.enableExceptionReporting(true);
+     tracker.enableAdvertisingIdCollection(true);
+     tracker.enableAutoActivityTracking(true);
+   }
+ }
+ </pre>
+ Analytics requires INTERNET and ACCESS_NETWORK_STATE permissions. Optionally a WAKE_LOCK
+ permission can be requested to improve dispatching on non-Google Play devices.
+
+ To use a custom application class such as MyApp, it needs to be set in the AndroidManifest as
+ the application name attribute.
+
+ A snippet for common GoogleAnalytics configuration in ApplicationManifest.xml looks
+ like this:
+
+ <pre>
+ &lt;manifest&gt;
+   &lt;!-- Google Analytics required permissions --&gt;
+   &lt;uses-permission android:name="android.permission.INTERNET" /&gt;
+   &lt;uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /&gt;
+
+   &lt;!-- Optional permission for reliable local dispatching on non-Google Play devices --&gt;
+   &lt;uses-permission android:name="android.permission.WAKE_LOCK" /&gt;
+
+   &lt;application
+     name="com.example.MyApp"&gt; &lt!-- Replace with the custom app class when applicable --&gt;
+
+     &lt;!-- Add the following meta-data for devices running Google Play service. --&gt;
+     &lt;meta-data
+       android:name="com.google.android.gms.version"
+       android:value="@integer/google_play_services_version" /&gt;
+
+     &lt;!-- Optionally, register AnalyticsReceiver and AnalyticsService to support background
+          dispatching on non-Google Play devices --&gt;
+     &lt;receiver android:name="com.google.android.gms.analytics.AnalyticsReceiver"
+         android:enabled="true"&gt;
+         &lt;intent-filter&gt;
+             &lt;action android:name="com.google.android.gms.analytics.ANALYTICS_DISPATCH" /&gt;
+         &lt;/intent-filter&gt;
+     &lt;/receiver&gt;
+     &lt;service android:name="com.google.android.gms.analytics.AnalyticsService"
+         android:enabled="true"
+         android:exported="false"/&gt;
+
+     &lt;!-- Optionally, register CampaignTrackingReceiver and CampaignTrackingService to enable
+          installation campaign reporting --&gt;
+     &lt;receiver android:name="com.google.android.gms.analytics.CampaignTrackingReceiver"
+         android:exported="true"&gt;
+         &lt;intent-filter&gt;
+             &lt;action android:name="com.android.vending.INSTALL_REFERRER" /&gt;
+         &lt;/intent-filter&gt;
+     &lt;/receiver&gt;
+     &lt;service android:name="com.google.android.gms.analytics.CampaignTrackingService" /&gt;
+
+     &lt;!-- ... --&gt;
+   &lt;/application&gt;
+ &lt;/manifest&gt;
+ </pre>
+
+ <p>Applications can optionally provide a metadata reference to a global configuration XML
+ resource file in the &lt;application&gt; element of their AndroidManifest.xml:
+
+ <pre>
+ &lt;manifest&gt;
+   &lt;application&gt;
+     &lt;!-- ... --&gt;
+
+     &lt;meta-data
+       android:name="com.google.android.gms.analytics.globalConfigResource"
+       android:resource="@xml/analytics_global_config" /&gt;
+
+     &lt;!-- ... --&gt;
+   &lt;/application&gt;
+ &lt;/manifest&gt;
+ </pre>
+
+ The configuration file should be stored in the applications res/xml directory and it
+ should look like this:
+
  <pre>
  &lt;?xml version="1.0" encoding="utf-8" ?&gt;
  &lt;resources&gt;
-     &lt;string name="ga_appName"&gt;TestAppName&lt;/string&gt;
-     &lt;string name="ga_appVersion"&gt;Version1.0&lt;/string&gt;
-     &lt;string name="ga_logLevel"&gt;verbose&lt;/string&gt;
-     &lt;integer name="ga_dispatchPeriod"&gt;1000&lt;/integer&gt;
-     &lt;bool name="ga_dryRun"&gt;true&lt;/bool&gt;
- &lt;/resources&gt;</pre>
+     &lt;!-- The application name. Defaults to name specified for the application label --&gt;
+     &lt;string name="ga_appName"&gt;My App&lt;/string&gt;
 
- Following is a complete list of globally scoped configuration values that can be specified:
- <ul>
-   <li>ga_appName(string) - name of application. Defaults to value found
-       in the package.</li>
-   <li>ga_appVersion(string) - version of application. Defaults to value
-       found in the package.</li>
-   <li>ga_dispatchPeriod(integer) - frequency of automatic dispatch (in
-       seconds). Default is 1800.</li>
-   <li>ga_dryRun(bool) - if true, enable dry run mode. Default is false.</li>
-   <li>ga_logLevel(string) - One of "verbose", "info", "warning", "error".</li>
- </ul></p>
+     &lt;!-- The application version. Defaults to android:versionName specified in the
+       AndroidManifest.xml --&gt;
+     &lt;string name="ga_appVersion"&gt;1.0&lt;/string&gt;
+
+     &lt;!-- The dispatching period in seconds when Google Play services is unavailable. The
+     default period is 1800 seconds or 30 minutes --&gt;
+     &lt;integer name="ga_dispatchPeriod"&gt;1800&lt;/integer&gt;
+
+     &lt;!-- Enable dry run mode. Default is false --&gt;
+     &lt;bool name="ga_dryRun"&gt;false&lt;/bool&gt;
+ &lt;/resources&gt;
+ </pre>
+
+ <p>ga_logLevel setting is deprecated. See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</p>
 
 
 
@@ -982,9 +1081,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#dispatchLocalHits()">dispatchLocalHits</a></span>()</nobr>
         
         <div class="jd-descrdiv">
-          Dispatches queued hits (view, events, or transactions) to Google Analytics
- if a network connection is available, and the local dispatching service is
- in use.
+          Dispatches hits queued in the application store (views, events, or transactions) to Google
+ Analytics if a network connection is available.
           
     
 
@@ -1007,9 +1105,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#enableAutoActivityReports(android.app.Application)">enableAutoActivityReports</a></span>(Application application)</nobr>
         
         <div class="jd-descrdiv">
-          On devices running API level 14 (ICE_CREAM_SANDWICH) or above, applications can
- call this method in lieu of making explicit calls to <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStart(android.app.Activity)">reportActivityStart(Activity)</a></code>
- and <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStop(android.app.Activity)">reportActivityStop(Activity)</a></code>.
+          On devices running API level 14 (ICE_CREAM_SANDWICH) or above, applications can call this
+ method in lieu of making explicit calls to <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStart(android.app.Activity)">reportActivityStart(Activity)</a></code> and <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStop(android.app.Activity)">reportActivityStop(Activity)</a></code>.
           
     
 
@@ -1055,7 +1152,7 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#getInstance(android.content.Context)">getInstance</a></span>(Context context)</nobr>
         
         <div class="jd-descrdiv">
-          Gets the instance of the <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html">GoogleAnalytics</a></code>, creating it if necessary.
+          Gets the instance of the <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html">GoogleAnalytics</a></code>, creating it when necessary.
           
     
 
@@ -1078,7 +1175,11 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#getLogger()">getLogger</a></span>()</nobr>
         
         <div class="jd-descrdiv">
-          Return the current <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> implementation in use.
+          <em>
+      This method is deprecated.
+    <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface is deprecated. See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for
+ details.
+</em>
           
     
 
@@ -1147,8 +1248,7 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#newTracker(int)">newTracker</a></span>(int configResId)</nobr>
         
         <div class="jd-descrdiv">
-          Returns a <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> instance preconfigured with the values specified in
- <code>configResId</code>.
+          Returns a <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> instance preconfigured with the values specified in <code>configResId</code>.
           
     
 
@@ -1172,9 +1272,8 @@
         
         <div class="jd-descrdiv">
           Report the start of an <code><a href="/reference/android/app/Activity.html">Activity</a></code>, so that it can be tracked by any <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code>s
- that have enabled auto activity tracking (see
- <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#enableAutoActivityTracking(boolean)">enableAutoActivityTracking(boolean)</a></code>.) This will also start a new session if
- necessary.
+ that have enabled auto activity tracking (see <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#enableAutoActivityTracking(boolean)">enableAutoActivityTracking(boolean)</a></code>.)
+ This will also start a new session if necessary.
           
     
 
@@ -1289,7 +1388,11 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#setLogger(com.google.android.gms.analytics.Logger)">setLogger</a></span>(<a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a> logger)</nobr>
         
         <div class="jd-descrdiv">
-          Provide a custom implementation of <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> to use.
+          <em>
+      This method is deprecated.
+    <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface is deprecated. See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for
+ details.
+</em>
           
     
 
@@ -1582,11 +1685,10 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Dispatches queued hits (view, events, or transactions) to Google Analytics
- if a network connection is available, and the local dispatching service is
- in use. This method only works if local dispatching is in use. Local dispatching is only used
- in the absence of Google Play services on the device. In general, applications should not
- rely on the ability to dispatch hits manually.
+  <div class="jd-tagdata jd-tagdescr"><p>Dispatches hits queued in the application store (views, events, or transactions) to Google
+ Analytics if a network connection is available. This method only works when Google Play
+ service is not available on the device and local dispatching is used. In general,
+ applications should not rely on the ability to dispatch hits manually.
 </p></div>
 
     </div>
@@ -1619,17 +1721,16 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>On devices running API level 14 (ICE_CREAM_SANDWICH) or above, applications can
- call this method in lieu of making explicit calls to <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStart(android.app.Activity)">reportActivityStart(Activity)</a></code>
- and <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStop(android.app.Activity)">reportActivityStop(Activity)</a></code>. This method is a noop if called on a device
- running API level less than 14.</p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>On devices running API level 14 (ICE_CREAM_SANDWICH) or above, applications can call this
+ method in lieu of making explicit calls to <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStart(android.app.Activity)">reportActivityStart(Activity)</a></code> and <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStop(android.app.Activity)">reportActivityStop(Activity)</a></code>. This method is a noop if called on a device running API level
+ less than 14.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>application</td>
           <td>The <code><a href="/reference/android/app/Application.html">Application</a></code> whose activities starts and stops should be
- automatically reported.
+                    automatically reported.
 </td>
         </tr>
       </table>
@@ -1698,7 +1799,8 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Gets the instance of the <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html">GoogleAnalytics</a></code>, creating it if necessary.
+  <div class="jd-tagdata jd-tagdescr"><p>Gets the instance of the <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html">GoogleAnalytics</a></code>, creating it when necessary. It is safe to
+ call this method from any thread.
 </p></div>
 
     </div>
@@ -1730,11 +1832,16 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface is deprecated. See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for
+ details.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Return the current <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> implementation in use.  If no <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> has been set,
  a default <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> is provided that logs to <code><a href="/reference/android/util/Log.html">android.util.Log</a></code>
- with <code><a href="/reference/com/google/android/gms/analytics/Logger.LogLevel.html">Logger.LogLevel</a></code> set to <code><a href="/reference/com/google/android/gms/analytics/Logger.LogLevel.html#WARNING">WARNING</a></code>.
-</p></div>
+ with <code><a href="/reference/com/google/android/gms/analytics/Logger.LogLevel.html">Logger.LogLevel</a></code> set to <code><a href="/reference/com/google/android/gms/analytics/Logger.LogLevel.html#WARNING">WARNING</a></code>.</p></div>
 
     </div>
 </div>
@@ -1799,18 +1906,17 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Returns a <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> instance with the given <code>trackingId</code>. If the given
- <code>trackingId</code> is not null or empty, it will be set on the tracker and it is ready to
- send hits. Calling newTracker() multiple times with the same <code>trackingId</code> will
- create multiple Tracker objects with the same <code>trackingId</code>.
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> instance with the given <code>trackingId</code>. If the given <code>trackingId</code> is not null or empty, it will be set on the tracker and it is ready to send hits.
+ Calling newTracker() multiple times with the same <code>trackingId</code> will create multiple
+ Tracker objects with the same <code>trackingId</code>.
 
- If the <code>trackingId</code> is empty, you can still get a tracker, but you must
- set the tracking id before sending any hits. This is useful if you do not know the tracking
- id at the time of tracker creation, or if you want to use the same tracker instance to track
- multiple tracking ids. Using the same instance to track multiple tracking ids is not
- recommended since you need to be careful about not mixing the data you are sending to
- multiple profiles. It can be useful if you have a lot of tracking ids and you want to avoid
- object creation overhead involved in instantiating one tracker per tracking id.</p></div>
+ If the <code>trackingId</code> is empty, you can still get a tracker, but you must set the
+ tracking id before sending any hits. This is useful if you do not know the tracking id at the
+ time of tracker creation, or if you want to use the same tracker instance to track multiple
+ tracking ids. Using the same instance to track multiple tracking ids is not recommended since
+ you need to be careful about not mixing the data you are sending to multiple profiles. It can
+ be useful if you have a lot of tracking ids and you want to avoid object creation overhead
+ involved in instantiating one tracker per tracking id.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -1852,24 +1958,24 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Returns a <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> instance preconfigured with the values specified in
- <code>configResId</code>. Calling newTracker() multiple times with the same
- <code>trackingId</code> will create multiple Tracker objects with the same configuration.
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> instance preconfigured with the values specified in <code>configResId</code>. Calling newTracker() multiple times with the same <code>trackingId</code> will
+ create multiple Tracker objects with the same configuration.
 
- If the <code>trackingId</code> is empty, you can still get a tracker, but you must
- set the tracking id before sending any hits. This is useful if you do not know the tracking
- id at the time of tracker creation, or if you want to use the same tracker instance to track
- multiple tracking ids. Using the same instance to track multiple tracking ids is not
- recommended since you need to be careful about not mixing the data you are sending to
- multiple profiles. It can be useful if you have a lot of tracking ids and you want to avoid
- object creation overhead involved in instantiating one tracker per tracking id.</p></div>
+ If the <code>trackingId</code> is empty, you can still get a tracker, but you must set the
+ tracking id before sending any hits. This is useful if you do not know the tracking id at the
+ time of tracker creation, or if you want to use the same tracker instance to track multiple
+ tracking ids. Using the same instance to track multiple tracking ids is not recommended since
+ you need to be careful about not mixing the data you are sending to multiple profiles. It can
+ be useful if you have a lot of tracking ids and you want to avoid object creation overhead
+ involved in instantiating one tracker per tracking id.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>configResId</td>
           <td>The resource id of your tracker configuration file. See <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code>
- for more information about what configuration elements can be included in that file.
+                    for more information about what configuration elements can be included in
+                    that file.
 </td>
         </tr>
       </table>
@@ -1906,13 +2012,12 @@
 
       
   <div class="jd-tagdata jd-tagdescr"><p>Report the start of an <code><a href="/reference/android/app/Activity.html">Activity</a></code>, so that it can be tracked by any <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code>s
- that have enabled auto activity tracking (see
- <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#enableAutoActivityTracking(boolean)">enableAutoActivityTracking(boolean)</a></code>.) This will also start a new session if
- necessary. This method should be called from the <code><a href="/reference/android/app/Activity.html#onStart()">onStart()</a></code> method in each
- <code><a href="/reference/android/app/Activity.html">Activity</a></code> in your application that you'd like to track.
+ that have enabled auto activity tracking (see <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#enableAutoActivityTracking(boolean)">enableAutoActivityTracking(boolean)</a></code>.)
+ This will also start a new session if necessary. This method should be called from the <code><a href="/reference/android/app/Activity.html#onStart()">onStart()</a></code> method in each <code><a href="/reference/android/app/Activity.html">Activity</a></code> in your application that you'd like to
+ track.
 
- If auto activity reports are enabled (see <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#enableAutoActivityReports(android.app.Application)">enableAutoActivityReports(Application)</a></code>)
- on a device running API level 14 or above, this method will be a noop.</p></div>
+ If auto activity reports are enabled (see <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#enableAutoActivityReports(android.app.Application)">enableAutoActivityReports(Application)</a></code>) on
+ a device running API level 14 or above, this method will be a noop.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -1954,13 +2059,11 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Report the end of an <code><a href="/reference/android/app/Activity.html">Activity</a></code>. Note that this method should be called
- from the <code><a href="/reference/android/app/Activity.html#onStop()">onStop()</a></code> method in each <code><a href="/reference/android/app/Activity.html">Activity</a></code> in your application
- that you'd like to track. For proper operation, this method must be called in all
- Activities where <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStart(android.app.Activity)">reportActivityStart(Activity)</a></code> is called.
+  <div class="jd-tagdata jd-tagdescr"><p>Report the end of an <code><a href="/reference/android/app/Activity.html">Activity</a></code>. Note that this method should be called from the <code><a href="/reference/android/app/Activity.html#onStop()">onStop()</a></code> method in each <code><a href="/reference/android/app/Activity.html">Activity</a></code> in your application that you'd like to
+ track. For proper operation, this method must be called in all Activities where <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#reportActivityStart(android.app.Activity)">reportActivityStart(Activity)</a></code> is called.
 
- If auto activity reports are enabled (see <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#enableAutoActivityReports(android.app.Application)">enableAutoActivityReports(Application)</a></code>)
- on a device running API level 14 or above, this method will be a noop.</p></div>
+ If auto activity reports are enabled (see <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#enableAutoActivityReports(android.app.Application)">enableAutoActivityReports(Application)</a></code>) on
+ a device running API level 14 or above, this method will be a noop.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -2047,10 +2150,8 @@
 
       
   <div class="jd-tagdata jd-tagdescr"><p>Toggles dry run mode. In dry run mode, the normal code paths are executed locally, but hits
- are not sent to Google Analytics servers. This is useful for debugging calls to the
- Google Analytics SDK without polluting recorded data.
- <p>
- By default, this flag is disabled.
+ are not sent to Google Analytics servers. This is useful for debugging calls to the Google
+ Analytics SDK without polluting recorded data. <p> By default, this flag is disabled.
 </p></div>
 
     </div>
@@ -2083,10 +2184,9 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Sets dispatch period for the local dispatcher.
- The dispatcher will check for hits to dispatch every <code>dispatchPeriod</code>
- seconds. If zero or a negative dispatch period is given, automatic dispatch will
- not be enabled, and the application will need to dispatch events
+  <div class="jd-tagdata jd-tagdescr"><p>Sets dispatch period for the local dispatcher. The dispatcher will check for hits to dispatch
+ every <code>dispatchPeriod</code> seconds. If zero or a negative dispatch period is given,
+ automatic dispatch will be disabled, and the application will need to dispatch events
  manually using <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#dispatchLocalHits()">dispatchLocalHits()</a></code>.
 
  This method only works if local dispatching is in use. Local dispatching is only used in the
@@ -2097,7 +2197,7 @@
       <table class="jd-tagtable">
         <tr>
           <th>dispatchPeriodInSeconds</td>
-          <td>the new dispatch period
+          <td>the new dispatch period in seconds
 </td>
         </tr>
       </table>
@@ -2132,16 +2232,22 @@
       
     
 
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Provide a custom implementation of <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> to use. This custom <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code>
- will replace a default <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> that logs to <code><a href="/reference/android/util/Log.html">android.util.Log</a></code>.</p></div>
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface is deprecated. See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for
+ details.
+
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p>Return the current <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> implementation in use.  If no <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> has been set,
+ a default <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> is provided that logs to <code><a href="/reference/android/util/Log.html">android.util.Log</a></code>
+ with <code><a href="/reference/com/google/android/gms/analytics/Logger.LogLevel.html">Logger.LogLevel</a></code> set to <code><a href="/reference/com/google/android/gms/analytics/Logger.LogLevel.html#WARNING">WARNING</a></code>.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>logger</td>
-          <td>The <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> implementation to use for logging.
-</td>
+          <td>The <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> implementation to use for logging.</td>
         </tr>
       </table>
   </div>
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.AppViewBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.AppViewBuilder.html
index fe6d903..5fb36b3 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.AppViewBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.AppViewBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.EventBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.EventBuilder.html
index 45fe354..eb5b315 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.EventBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.EventBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ExceptionBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ExceptionBuilder.html
index b94e39b..a966a5c 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ExceptionBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ExceptionBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.HitBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.HitBuilder.html
index d32dc60..1c237c5 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.HitBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.HitBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ItemBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ItemBuilder.html
index 9a0b69c..42f4d7d 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ItemBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ItemBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ScreenViewBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ScreenViewBuilder.html
index 1a2b8af..1228e19 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ScreenViewBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.ScreenViewBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.SocialBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.SocialBuilder.html
index 5543a33..148c7f6 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.SocialBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.SocialBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.TimingBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.TimingBuilder.html
index d7ec518..3021c5f5 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.TimingBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.TimingBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.TransactionBuilder.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.TransactionBuilder.html
index 3dec2b3..1adfea6 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.TransactionBuilder.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.TransactionBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.html b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.html
index 2efad4e..3bc0256 100644
--- a/docs/html/reference/com/google/android/gms/analytics/HitBuilders.html
+++ b/docs/html/reference/com/google/android/gms/analytics/HitBuilders.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/Logger.LogLevel.html b/docs/html/reference/com/google/android/gms/analytics/Logger.LogLevel.html
index 3b4f859..a556b33 100644
--- a/docs/html/reference/com/google/android/gms/analytics/Logger.LogLevel.html
+++ b/docs/html/reference/com/google/android/gms/analytics/Logger.LogLevel.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -874,12 +885,15 @@
 
 
 <div class="jd-descr">
+<p>
+  <p class="caution"><strong>
+      This class is deprecated.</strong><br/>
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
 
+  </p>
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">Log level settings. The log level is provided to the <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code>
- through the <code><a href="/reference/com/google/android/gms/analytics/Logger.html#setLogLevel(int)">setLogLevel(int)</a></code> method.
-</p>
+<p itemprop="articleBody">Log level settings. The log level is provided to the <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> through the <code><a href="/reference/com/google/android/gms/analytics/Logger.html#setLogLevel(int)">setLogLevel(int)</a></code> method.</p>
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/analytics/Logger.html b/docs/html/reference/com/google/android/gms/analytics/Logger.html
index b1e408c..4fe88c1 100644
--- a/docs/html/reference/com/google/android/gms/analytics/Logger.html
+++ b/docs/html/reference/com/google/android/gms/analytics/Logger.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -829,13 +840,31 @@
 
 
 <div class="jd-descr">
+<p>
+  <p class="caution"><strong>
+      This interface is deprecated.</strong><br/>
+    Logger interface is deprecated. Use <code>adb shell setprop log.tag.GAv4 DEBUG</code> to
+ enable debug logging for Google Analytics.
 
+  </p>
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">Interface to be used for logging debug and informational messages from the SDK.
- Implementations of this interface can be provided to the <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html">GoogleAnalytics</a></code>
- singleton to be used as the <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> for general use by the SDK.
- See <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#setLogger(com.google.android.gms.analytics.Logger)">setLogger(Logger)</a></code>.</p>
+<p itemprop="articleBody">Deprecated Analytics Logger interface.&nbsp;Google Analytics will log to logcat  under
+ <b>GAv4</b> tag using Android <code><a href="/reference/android/util/Log.html">Log</a></code> system. By default only ERROR, WARN
+ and INFO levels are enabled. To enable DEBUG level run the following adb command on your
+ device or emulator:
+
+ <br><br>
+ <pre>adb shell setprop log.tag.GAv4 DEBUG</pre>
+
+ <br> To see only Google Analytics messages from logcat use the following command:
+
+ <br><br>
+ <pre>adb logcat -v time -s GAv4</pre>
+
+ <br> For more information consult the
+ <a href="http://developer.android.com/tools/help/logcat.html">logcat</a> and
+ <a href="http://developer.android.com/tools/help/adb.html">adb</a> developer documentation.</p>
 
 
 
@@ -879,7 +908,10 @@
         class</nobr></td>
       <td class="jd-linkcol"><a href="/reference/com/google/android/gms/analytics/Logger.LogLevel.html">Logger.LogLevel</a></td>
       <td class="jd-descrcol" width="100%">
-        Log level settings.&nbsp;
+        <em>
+      This class is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>&nbsp;
         
     
 
@@ -933,7 +965,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Logger.html#error(java.lang.String)">error</a></span>(String message)</nobr>
         
         <div class="jd-descrdiv">
-          Used to log runtime errors or unexpected conditions.
+          <em>
+      This method is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>
           
     
 
@@ -956,7 +991,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Logger.html#error(java.lang.Exception)">error</a></span>(Exception exception)</nobr>
         
         <div class="jd-descrdiv">
-          Used to log runtime errors or unexpected conditions.
+          <em>
+      This method is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>
           
     
 
@@ -979,7 +1017,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Logger.html#getLogLevel()">getLogLevel</a></span>()</nobr>
         
         <div class="jd-descrdiv">
-          Return the current log level.
+          <em>
+      This method is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>
           
     
 
@@ -1002,8 +1043,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Logger.html#info(java.lang.String)">info</a></span>(String message)</nobr>
         
         <div class="jd-descrdiv">
-          Used to log information on the flow through the system and other interesting
- events.
+          <em>
+      This method is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>
           
     
 
@@ -1026,7 +1069,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Logger.html#setLogLevel(int)">setLogLevel</a></span>(int level)</nobr>
         
         <div class="jd-descrdiv">
-          Set the log level.
+          <em>
+      This method is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>
           
     
 
@@ -1049,7 +1095,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Logger.html#verbose(java.lang.String)">verbose</a></span>(String message)</nobr>
         
         <div class="jd-descrdiv">
-          Used to log detailed information.
+          <em>
+      This method is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>
           
     
 
@@ -1072,8 +1121,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Logger.html#warn(java.lang.String)">warn</a></span>(String message)</nobr>
         
         <div class="jd-descrdiv">
-          Used in situations like use of deprecated APIs, poor use of API, near errors, other runtime
- situations that are undesirable or unexpected, but not necessarily "wrong".
+          <em>
+      This method is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>
           
     
 
@@ -1155,16 +1206,20 @@
       
     
 
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Used to log runtime errors or unexpected conditions. These errors will likely result in
- data not being sent to the GA servers.</p></div>
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p>Used to log runtime errors or unexpected conditions. These errors will likely result in data
+ not being sent to the GA servers.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>message</td>
-          <td>A string describing the error that occurred.
-</td>
+          <td>A string describing the error that occurred.</td>
         </tr>
       </table>
   </div>
@@ -1198,16 +1253,20 @@
       
     
 
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Used to log runtime errors or unexpected conditions. These errors will likely result in
- data not being sent to the GA servers.</p></div>
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p>Used to log runtime errors or unexpected conditions. These errors will likely result in data
+ not being sent to the GA servers.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>exception</td>
-          <td>The exception that was thrown that caused the error.
-</td>
+          <td>The exception that was thrown that caused the error.</td>
         </tr>
       </table>
   </div>
@@ -1241,9 +1300,13 @@
       
     
 
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Return the current log level.
-</p></div>
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p>Return the current log level.</p></div>
 
     </div>
 </div>
@@ -1274,16 +1337,19 @@
       
     
 
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Used to log information on the flow through the system and other interesting
- events.</p></div>
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p>Used to log information on the flow through the system and other interesting events.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>message</td>
-          <td>the message to log
-</td>
+          <td>the message to log</td>
         </tr>
       </table>
   </div>
@@ -1317,9 +1383,13 @@
       
     
 
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Set the log level. It is up to the implementation how the log level is used, but log
- messages outside the set log level should not be output.</p></div>
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p><code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> is deprecated. Setting log level is ignored.</p></div>
 
     </div>
 </div>
@@ -1350,16 +1420,20 @@
       
     
 
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Used to log detailed information. This information will probably only be useful
- during development and debugging.</p></div>
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p>Used to log detailed information. This information will probably only be useful during
+ development and debugging.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>message</td>
-          <td>the message to log
-</td>
+          <td>the message to log</td>
         </tr>
       </table>
   </div>
@@ -1393,7 +1467,12 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Used in situations like use of deprecated APIs, poor use of API, near errors, other runtime
  situations that are undesirable or unexpected, but not necessarily "wrong".</p></div>
   <div class="jd-tagdata">
@@ -1401,8 +1480,7 @@
       <table class="jd-tagtable">
         <tr>
           <th>message</td>
-          <td>the message to log
-</td>
+          <td>the message to log</td>
         </tr>
       </table>
   </div>
diff --git a/docs/html/reference/com/google/android/gms/analytics/StandardExceptionParser.html b/docs/html/reference/com/google/android/gms/analytics/StandardExceptionParser.html
index fd713a6..d4158de 100644
--- a/docs/html/reference/com/google/android/gms/analytics/StandardExceptionParser.html
+++ b/docs/html/reference/com/google/android/gms/analytics/StandardExceptionParser.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -905,7 +916,8 @@
  Exception class(@classname:methodname){threadname}.
  <p>
  See <code><a href="/reference/com/google/android/gms/analytics/StandardExceptionParser.html#getBestStackTraceElement(java.lang.Throwable)">getBestStackTraceElement(Throwable)</a></code> and <code><a href="/reference/com/google/android/gms/analytics/StandardExceptionParser.html#setIncludedPackages(android.content.Context, java.util.Collection<java.lang.String>)">setIncludedPackages(Context, Collection<String>)</a></code> for
- details.</p>
+ details.
+</p>
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/analytics/Tracker.html b/docs/html/reference/com/google/android/gms/analytics/Tracker.html
index 2629304..aec9829 100644
--- a/docs/html/reference/com/google/android/gms/analytics/Tracker.html
+++ b/docs/html/reference/com/google/android/gms/analytics/Tracker.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -874,81 +885,69 @@
 
 
 <h2>Class Overview</h2>
-<p itemprop="articleBody">Class to send tracking hits to Google Analytics. You can get an instance of this class
- by calling <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#newTracker(int)">newTracker(int)</a></code>. A Tracker must be initialized with a tracking id
- of an app profile before you can send any hits. You can change the id to send hits to
- a different profile. Use this class to set values for measurement protocol parameters using the
- setXYZ() methods. A param value set using <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#set(java.lang.String, java.lang.String)">set(String, String)</a></code> method is sent with
- all subsequent hits until you overwrite it with another value or clear it by setting it
- to <code>null</code>. You can also override it by specifying a different value in a
- <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#send(java.util.Map<java.lang.String, java.lang.String>)">send(Map<String, String>)</a></code> call. The values passed in the <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#send(java.util.Map<java.lang.String, java.lang.String>)">send(Map<String, String>)</a></code> are sent only with that hit.
- The following example uses the <code><a href="/reference/com/google/android/gms/analytics/HitBuilders.EventBuilder.html">HitBuilders.EventBuilder</a></code> helper class to build a param map
- to pass to the <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#send(java.util.Map<java.lang.String, java.lang.String>)">send(Map<String, String>)</a></code> method.
- <p>
+<p itemprop="articleBody">Composes and sends hits to Google Analytics. You can get an instance of this class by calling
+ <code><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html#newTracker(int)">newTracker(int)</a></code>. A Tracker must be initialized with a tracking id of an app
+ profile before you can send any hits. Use this class to set values for measurement protocol
+ parameters using the provided set methods. A param value set using <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#set(java.lang.String, java.lang.String)">set(String, String)</a></code> method is sent
+ with all subsequent hits until you overwrite it with another value or clear it by setting it to
+ <code>null</code>. You can also override it by specifying a different value in a <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#send(java.util.Map<java.lang.String, java.lang.String>)">send(Map<String, String>)</a></code> call.
+ The values passed in the <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#send(java.util.Map<java.lang.String, java.lang.String>)">send(Map<String, String>)</a></code> are sent only with that hit. The following example uses
+ the <code><a href="/reference/com/google/android/gms/analytics/HitBuilders.EventBuilder.html">HitBuilders.EventBuilder</a></code> helper class to build a param map to pass to the <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#send(java.util.Map<java.lang.String, java.lang.String>)">send(Map<String, String>)</a></code> method. <p>
  <pre>
- Tracker t = GoogleAnalytics.getInstance(context).newTracker(trackingId);
- t.setScreenName(screenName);
- t.send(new HitBuilders.EventBuilder()
+ GoogleAnalytics analytics = GoogleAnalytics.getInstance(context);
+ Tracker tracker = analytics.newTracker("UA-000-1"); // Send hits to tracker id UA-000-1
+
+ // All subsequent hits will be send with screen name = "main screen"
+ tracker.setScreenName("main screen");
+
+ tracker.send(new HitBuilders.EventBuilder()
          .setCategory("UX")
          .setAction("click")
-         .setLabel("someButtonName")
+         .setLabel("submit")
          .build());
- t.send(new HitBuilders.EventBuilder()
+
+ // Builder parameters can overwrite the screen name set on the tracker
+ tracker.send(new HitBuilders.EventBuilder()
          .setCategory("UX")
          .setAction("click")
-         .setLabel("somePopupAction")
-         .setScreenName("popupDialogName")
-         .build());
- </pre>
- A <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> can also be initialized with configuration values from an XML
- resource file like this:
- <p>
+         .setLabel("help popup")
+         .setScreenName("help popup dialog")
+         .build());</pre>
+ A <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> can also be initialized with configuration values from an XML resource file
+ like this:
  <pre>
- Tracker t = GoogleAnalytics.getInstance(ctx).newTracker(R.xml.tracker_config);</pre>
- Where R.xml.tracker_config is the resource id for an XML configuration file. The file
- should be stored in the app's res/values/xml/ directory and look like this:
- <p>
+ Tracker tracker = analytics.newTracker(R.xml.tracker_config);</pre>
+ Where R.xml.tracker_config is the resource id for an XML configuration file. The file should be
+ stored in the app's res/xml/ directory and look like this: <p>
  <pre>
  &lt;?xml version="1.0" encoding="utf-8" ?&gt;
  &lt;resources&gt;
-     &lt;screenName name="com.google.foo.FirstActivity"&gt;
-         First Activity
-     &lt;/screenName&gt;
-     &lt;screenName name="com.google.foo.AnotherActivity"&gt;
-         Another Activity
-     &lt;/screenName&gt;
-     &lt;string name="ga_trackingId"&gt;UA-XXXX-Y&lt;/string&gt;
-     &lt;string name="ga_sampleFrequency"&gt;99.8&lt;/string&gt;
-     &lt;integer name="ga_sessionTimeout"&gt;2000&lt;/integer&gt;
+     &lt;string name="ga_trackingId"&gt;UA-0000-1&lt;/string&gt;
+     &lt;string name="ga_sampleFrequency"&gt;100.0&lt;/string&gt;
+     &lt;integer name="ga_sessionTimeout"&gt;1800&lt;/integer&gt;
      &lt;bool name="ga_autoActivityTracking"&gt;true&lt;/bool&gt;
-     &lt;bool name="ga_anonymizeIp"&gt;true&lt;/bool&gt;
+     &lt;bool name="ga_anonymizeIp"&gt;false&lt;/bool&gt;
      &lt;bool name="ga_reportUncaughtExceptions"&gt;true&lt;/bool&gt;
+
+     &lt;screenName name="com.example.MainActivity"&gt;Home Screen&lt;/screenName&gt;
+     &lt;screenName name="com.example.SecondActivity"&gt;Second Screen&lt;/screenName&gt;
  &lt;/resources&gt;</pre>
- Here is a complete list of tracker scoped configuration values that can be specified:
- <ul>
-   <li>ga_trackingId(string) - tracking Id to report against. Required</li>
-   <li>ga_sampleFrequency(string) - sample rate to use. Default is 100.0.  It
-       can be any value between 0.0 and 100.0</li>
-   <li>ga_autoActivityTracking(bool) - if true, views (Activities) will be
-       tracked. Default is false.</li>
-   <li>ga_anonymizeIp(bool) - if true, anonymizeIp will be set for each hit.
-       Default is false.</li>
-   <li>ga_reportUncaughtExceptions(bool) - if true, uncaught exceptions will
-       be tracked. Default is false. NOTE: This value can only be set to true
-       for a single Tracker. If specified for multiple Trackers, then the last
-       one to be initialized will be used.</li>
-   <li>ga_sessionTimeout(int) - time (in seconds) an app can stay in the
-       background before a new session is started.  Setting this to a negative
-       number will result in a new session never being started.  Default is 30
-       seconds.</li>
- </ul>
- <p>
- If ga_autoActivityTracking is enabled, an alternate screen name can be specified to substitute
- for the full length canonical <code><a href="/reference/android/app/Activity.html">Activity</a></code> name in screen view hit. In order to
- specify an alternate screen name use an &lt;screenName&gt; element, with
- the name attribute specifying the canonical name, and the value the alias to use instead.
+ The following tracker configuration values can be specified: <ul> <li>ga_trackingId(string) -
+ tracking id to send the reports to. Required.</li> <li>ga_sampleFrequency(string) - sampling rate
+ in percents. Default is 100.0.  It can be any value between 0.0 and 100.0.</li>
+ <li>ga_autoActivityTracking(bool) - if true, views (Activities) will be tracked. Default is
+ false.</li> <li>ga_anonymizeIp(bool) - if true, anonymizeIp will be set for each hit. Default is
+ false.</li> <li>ga_reportUncaughtExceptions(bool) - if true, uncaught exceptions will be tracked.
+ Default is false. NOTE: This value can only be set to true for a single Tracker. If specified for
+ multiple Trackers, then the last one to be initialized will be used.</li>
+ <li>ga_sessionTimeout(int) - time (in seconds) an app can stay in the background before a new
+ session is started.  Setting this to a negative number will result in a new session never being
+ started.  Default is 1800 seconds (30 minutes).</li> </ul> <p> If ga_autoActivityTracking is
+ enabled, an alternate screen name can be specified to substitute for the full canonical <code><a href="/reference/android/app/Activity.html">Activity</a></code> class name. In order to specify an alternate screen name use an &lt;screenName&gt;
+ element, with the name attribute specifying the full class name, and the screen name as element
+ content.
  <pre>
- &lt;screenName name="com.google.foo.SampleActivity"&gt;Sample Activity&lt;/screenName&gt;</pre>
+ &lt;screenName name="com.example.MainActivity"&gt;Home Screen&lt;/screenName&gt;</pre>
 </p>
 
 
@@ -1022,8 +1021,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Tracker.html#enableAdvertisingIdCollection(boolean)">enableAdvertisingIdCollection</a></span>(boolean enabled)</nobr>
         
         <div class="jd-descrdiv">
-          Sets whether the advertising id and ad targeting preference should be collected while
- sending hits to GA servers.
+          Sets whether the advertising id and ad targeting preference should be collected while sending
+ hits to GA servers.
           
     
 
@@ -1046,8 +1045,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Tracker.html#enableAutoActivityTracking(boolean)">enableAutoActivityTracking</a></span>(boolean enabled)</nobr>
         
         <div class="jd-descrdiv">
-          Specify whether <code><a href="/reference/android/app/Activity.html">Activity</a></code> starts should automatically generate
- screen views from this <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code>.
+          Specify whether <code><a href="/reference/android/app/Activity.html">Activity</a></code> starts should automatically generate screen
+ views from this <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code>.
           
     
 
@@ -1505,8 +1504,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/analytics/Tracker.html#setSessionTimeout(long)">setSessionTimeout</a></span>(long sessionTimeout)</nobr>
         
         <div class="jd-descrdiv">
-          Specify the time (in seconds) an app can stay in the background before a
- new session is started.
+          Specify the time (in seconds) an app can stay in the background before a new session is
+ started.
           
     
 
@@ -1854,9 +1853,9 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Sets whether the advertising id and ad targeting preference should be collected while
- sending hits to GA servers. The collection of advertising id and the ad targeting preference
- is disabled by default and needs to be turned on for mobile audience features and any other
+  <div class="jd-tagdata jd-tagdescr"><p>Sets whether the advertising id and ad targeting preference should be collected while sending
+ hits to GA servers. The collection of advertising id and the ad targeting preference is
+ disabled by default and needs to be turned on for mobile audience features and any other
  features that require advertising id.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
@@ -1899,8 +1898,8 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Specify whether <code><a href="/reference/android/app/Activity.html">Activity</a></code> starts should automatically generate
- screen views from this <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code>.</p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Specify whether <code><a href="/reference/android/app/Activity.html">Activity</a></code> starts should automatically generate screen
+ views from this <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code>.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -1942,10 +1941,10 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Enables or disables uncaught exception reporting for a given tracker.
- This method is equivalent to using 'ga_reportUncaughtExceptions' in the tracker configuration
- file. Note that as with the configuration setting, only the uncaught exceptions are reported
- using this method.
+  <div class="jd-tagdata jd-tagdescr"><p>Enables or disables uncaught exception reporting for a given tracker. This method is
+ equivalent to using 'ga_reportUncaughtExceptions' in the tracker configuration file. Note
+ that as with the configuration setting, only the uncaught exceptions are reported using this
+ method.
 </p></div>
 
     </div>
@@ -2021,9 +2020,9 @@
         <tr>
           <th>params</td>
           <td>map of hit data to values which are merged with the existing values which are
-    already set (using <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#set(java.lang.String, java.lang.String)">set(String, String)</a></code>). Values in this map will override the values set earlier.
-    The values in this map will not be reused for the subsequent hits. If you need to send a
-    value in multiple hits, you can use the <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#set(java.lang.String, java.lang.String)">set(String, String)</a></code> method.
+               already set (using <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#set(java.lang.String, java.lang.String)">set(String, String)</a></code>). Values in this map will override the values
+               set earlier. The values in this map will not be reused for the subsequent hits.
+               If you need to send a value in multiple hits, you can use the <code><a href="/reference/com/google/android/gms/analytics/Tracker.html#set(java.lang.String, java.lang.String)">set(String, String)</a></code> method.
 </td>
         </tr>
       </table>
@@ -2067,12 +2066,13 @@
         <tr>
           <th>key</td>
           <td>The key of the field that needs to be set. It starts with "&" followed by the
- parameter name. The complete list of fields can be found at http://goo.gl/M6dK2U.</td>
+              parameter name. The complete list of fields can be found at
+              http://goo.gl/M6dK2U.</td>
         </tr>
         <tr>
           <th>value</td>
           <td>A string value to be sent to Google servers. A null value denotes that the value
- should not be sent over wire.
+              should not be sent over wire.
 </td>
         </tr>
       </table>
@@ -2313,34 +2313,24 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Includes the campaign parameters contained in the URI referrer in the next hit.
- If there is no referrer, or the referrer does not contain campaign parameters,
- this method does not add anything to the next hit.
+  <div class="jd-tagdata jd-tagdescr"><p>Includes the campaign parameters contained in the URI referrer in the next hit. If there is
+ no referrer, or the referrer does not contain campaign parameters, this method does not add
+ anything to the next hit.
 
  <p>Use this method to track in-app events driven by advertising with deep linking
  campaigns.</p>
 
- <p>Valid campaign parameters are:
- <ul>
- <li>utm_id</li>
- <li>utm_campaign</li>
- <li>utm_content</li>
- <li>utm_medium</li>
- <li>utm_source</li>
- <li>utm_term</li>
- <li>dclid</li>
- <li>gclid</li>
- </ul>
- <p>
- Example:
- http://my.site.com/index.html?referrer=utm_source%3Dsource%26utm_campaign%3Dwow</p></div>
+ <p>Valid campaign parameters are: <ul> <li>utm_id</li> <li>utm_campaign</li>
+ <li>utm_content</li> <li>utm_medium</li> <li>utm_source</li> <li>utm_term</li> <li>dclid</li>
+ <li>gclid</li> </ul> <p>
+
+ Example: http://my.site.com/index.html?referrer=utm_source%3Dsource%26utm_campaign%3Dwow</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>uri</td>
           <td>the uri containing the referrer
-
 </td>
         </tr>
       </table>
@@ -2376,9 +2366,9 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Sets a particular client Id for the device. This Id should be a valid UUID (version 4)
- string as described in http://goo.gl/0dlrGx. If not specified, the SDK automatically
- generates one for you and sets it.</p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Sets a particular client Id for the device. This Id should be a valid UUID (version 4) string
+ as described in http://goo.gl/0dlrGx. If not specified, the SDK automatically generates one
+ for you and sets it.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -2624,15 +2614,15 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Set the sample rate for all hits generated by the app. The sampling is done at app level.
- The default value is 100. To enable sampling, the minimum rate required is 0.01%.</p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Set the sample rate for all hits generated by the app. The sampling is done at app level. The
+ default value is 100. To enable sampling, the minimum rate required is 0.01%.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
         <tr>
           <th>sampleRate</td>
-          <td>A value between 0 and 100, specifying the
- percentage of devices that should send hits.
+          <td>A value between 0 and 100, specifying the percentage of devices that should
+                   send hits.
 </td>
         </tr>
       </table>
@@ -2780,9 +2770,9 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Specify the time (in seconds) an app can stay in the background before a
- new session is started.  Setting this to a negative number will result in
- a new session never being started.  Default is 30 seconds.</p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Specify the time (in seconds) an app can stay in the background before a new session is
+ started.  Setting this to a negative number will result in a new session never being started.
+ Default is 30 seconds.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
diff --git a/docs/html/reference/com/google/android/gms/analytics/ecommerce/Product.html b/docs/html/reference/com/google/android/gms/analytics/ecommerce/Product.html
index e6d0ae6..c26ec77 100644
--- a/docs/html/reference/com/google/android/gms/analytics/ecommerce/Product.html
+++ b/docs/html/reference/com/google/android/gms/analytics/ecommerce/Product.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1238,6 +1249,22 @@
 
 
 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/ecommerce/Product.html#toString()">toString</a></span>()</nobr>
+
+  </td></tr>
+
+
+
 </table>
 
 
@@ -2049,6 +2076,38 @@
 </div>
 
 
+<A NAME="toString()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">toString</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/analytics/ecommerce/ProductAction.html b/docs/html/reference/com/google/android/gms/analytics/ecommerce/ProductAction.html
index 7636fde..561815a 100644
--- a/docs/html/reference/com/google/android/gms/analytics/ecommerce/ProductAction.html
+++ b/docs/html/reference/com/google/android/gms/analytics/ecommerce/ProductAction.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1343,6 +1354,22 @@
 
 
 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/ecommerce/ProductAction.html#toString()">toString</a></span>()</nobr>
+
+  </td></tr>
+
+
+
 </table>
 
 
@@ -2514,6 +2541,38 @@
 </div>
 
 
+<A NAME="toString()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">toString</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/analytics/ecommerce/Promotion.html b/docs/html/reference/com/google/android/gms/analytics/ecommerce/Promotion.html
index 17db88a..6ec0dcc 100644
--- a/docs/html/reference/com/google/android/gms/analytics/ecommerce/Promotion.html
+++ b/docs/html/reference/com/google/android/gms/analytics/ecommerce/Promotion.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1104,6 +1115,22 @@
 
 
 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/ecommerce/Promotion.html#toString()">toString</a></span>()</nobr>
+
+  </td></tr>
+
+
+
 </table>
 
 
@@ -1673,6 +1700,38 @@
 </div>
 
 
+<A NAME="toString()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">toString</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/analytics/ecommerce/package-summary.html b/docs/html/reference/com/google/android/gms/analytics/ecommerce/package-summary.html
index dc47fc5..7ca0b68 100644
--- a/docs/html/reference/com/google/android/gms/analytics/ecommerce/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/analytics/ecommerce/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/analytics/package-summary.html b/docs/html/reference/com/google/android/gms/analytics/package-summary.html
index 743c841..59826ac 100644
--- a/docs/html/reference/com/google/android/gms/analytics/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/analytics/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -818,7 +829,11 @@
       <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></td>
         <td class="jd-descrcol" width="100%">
-          Interface to be used for logging debug and informational messages from the SDK.&nbsp;
+          <em>
+      This interface is deprecated.
+    Logger interface is deprecated. Use <code>adb shell setprop log.tag.GAv4 DEBUG</code> to
+ enable debug logging for Google Analytics.
+</em>&nbsp;
           
     
 
@@ -853,7 +868,7 @@
       <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/analytics/AnalyticsService.html">AnalyticsService</a></td>
         <td class="jd-descrcol" width="100%">
-          An <code><a href="/reference/android/app/IntentService.html">IntentService</a></code> used by Google Analytics.&nbsp;
+          An <code><a href="/reference/android/app/Service.html">Service</a></code> used by Google Analytics.&nbsp;
 
 
 
@@ -864,8 +879,7 @@
       <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html">CampaignTrackingReceiver</a></td>
         <td class="jd-descrcol" width="100%">
-          The Google Play <code>com.android.vending.INSTALL_REFERRER</code> <code><a href="/reference/android/content/Intent.html">Intent</a></code> is broadcast when an
- app is installed from the Google Play Store and has campaign data available (i.e.&nbsp;
+          Google Analytics receiver for <code>com.android.vending.INSTALL_REFERRER</code>.&nbsp;
           
     
 
@@ -876,7 +890,7 @@
       <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html">CampaignTrackingService</a></td>
         <td class="jd-descrcol" width="100%">
-          IntentService for handling the Google Play Store's INSTALL_REFERRER intent.&nbsp;
+          Service for processing Google Play Store's INSTALL_REFERRER intent.&nbsp;
           
     
 
@@ -898,7 +912,7 @@
       <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/analytics/GoogleAnalytics.html">GoogleAnalytics</a></td>
         <td class="jd-descrcol" width="100%">
-          This class is a singleton that provides methods for controlling global configuration
+          The top level Google Analytics singleton that provides methods for configuring Google Analytics
  and creating <code><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></code> objects.&nbsp;
           
     
@@ -1036,7 +1050,10 @@
       <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/analytics/Logger.LogLevel.html">Logger.LogLevel</a></td>
         <td class="jd-descrcol" width="100%">
-          Log level settings.&nbsp;
+          <em>
+      This class is deprecated.
+    See <code><a href="/reference/com/google/android/gms/analytics/Logger.html">Logger</a></code> interface for details.
+</em>&nbsp;
           
     
 
@@ -1059,7 +1076,7 @@
       <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/analytics/Tracker.html">Tracker</a></td>
         <td class="jd-descrcol" width="100%">
-          Class to send tracking hits to Google Analytics.&nbsp;
+          Composes and sends hits to Google Analytics.&nbsp;
           
     
 
diff --git a/docs/html/reference/com/google/android/gms/appindexing/Action.Builder.html b/docs/html/reference/com/google/android/gms/appindexing/Action.Builder.html
index 95001f4..69bc448 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/Action.Builder.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/Action.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appindexing/Action.html b/docs/html/reference/com/google/android/gms/appindexing/Action.html
index 9558f9a..4d98a44 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/Action.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/Action.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1014,6 +1025,18 @@
 
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_ACTIVATE">TYPE_ACTIVATE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The act of starting or activating a device or application.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_ADD">TYPE_ADD</a></td>
         <td class="jd-descrcol" width="100%">
           The act of editing by adding an object to a collection.
@@ -1024,7 +1047,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_BOOKMARK">TYPE_BOOKMARK</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1036,8 +1059,33 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_COMMUNICATE">TYPE_COMMUNICATE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The act of conveying information to another person via a communication medium (instrument)
+ such as speech, email, or telephone conversation.
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_FILM">TYPE_FILM</a></td>
+        <td class="jd-descrcol" width="100%">
+          The act of capturing sound and moving images on film, video, or digitally.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_LIKE">TYPE_LIKE</a></td>
         <td class="jd-descrcol" width="100%">
           The act of liking an object.
@@ -1048,7 +1096,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_LISTEN">TYPE_LISTEN</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1060,6 +1108,42 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_PHOTOGRAPH">TYPE_PHOTOGRAPH</a></td>
+        <td class="jd-descrcol" width="100%">
+          The act of capturing still images of objects using a camera.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_RESERVE">TYPE_RESERVE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The act of making a reservation at a business such as a restaurant.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_SEARCH">TYPE_SEARCH</a></td>
+        <td class="jd-descrcol" width="100%">
+          The act of searching for an object.
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/appindexing/Action.html#TYPE_VIEW">TYPE_VIEW</a></td>
@@ -1532,6 +1616,46 @@
 
 
 
+<A NAME="TYPE_ACTIVATE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        TYPE_ACTIVATE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The act of starting or activating a device or application. </p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "http://schema.org/ActivateAction"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="TYPE_ADD"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1612,6 +1736,88 @@
 
 
 
+<A NAME="TYPE_COMMUNICATE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        TYPE_COMMUNICATE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The act of conveying information to another person via a communication medium (instrument)
+ such as speech, email, or telephone conversation.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "http://schema.org/CommunicateAction"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="TYPE_FILM"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        TYPE_FILM
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The act of capturing sound and moving images on film, video, or digitally. </p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "http://schema.org/FilmAction"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="TYPE_LIKE"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1692,6 +1898,126 @@
 
 
 
+<A NAME="TYPE_PHOTOGRAPH"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        TYPE_PHOTOGRAPH
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The act of capturing still images of objects using a camera. </p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "http://schema.org/PhotographAction"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="TYPE_RESERVE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        TYPE_RESERVE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The act of making a reservation at a business such as a restaurant. </p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "http://schema.org/ReserveAction"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="TYPE_SEARCH"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        TYPE_SEARCH
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The act of searching for an object. </p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "http://schema.org/SearchAction"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="TYPE_VIEW"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/appindexing/AndroidAppUri.html b/docs/html/reference/com/google/android/gms/appindexing/AndroidAppUri.html
index 2ff5158..1b3fd8e3 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/AndroidAppUri.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/AndroidAppUri.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appindexing/AppIndex.html b/docs/html/reference/com/google/android/gms/appindexing/AppIndex.html
index 5594e65..0eab0f9 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/AppIndex.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/AppIndex.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.ActionResult.html b/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.ActionResult.html
index c66ee16..2c02f71 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.ActionResult.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.ActionResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.AppIndexingLink.html b/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.AppIndexingLink.html
index e7d839a..19931fa 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.AppIndexingLink.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.AppIndexingLink.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.html b/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.html
index 85f66ed..a078f8f 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/AppIndexApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appindexing/Thing.Builder.html b/docs/html/reference/com/google/android/gms/appindexing/Thing.Builder.html
index c495f04..33021d3 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/Thing.Builder.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/Thing.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appindexing/Thing.html b/docs/html/reference/com/google/android/gms/appindexing/Thing.html
index ce8cfaa..552f6e2 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/Thing.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/Thing.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appindexing/package-summary.html b/docs/html/reference/com/google/android/gms/appindexing/package-summary.html
index 4994c9b..4dcfab9 100644
--- a/docs/html/reference/com/google/android/gms/appindexing/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/appindexing/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppState.html b/docs/html/reference/com/google/android/gms/appstate/AppState.html
index fb07ef5..5ae7b65 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppState.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppState.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html b/docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html
index f9a5cc5..cc5c563 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateConflictResult.html b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateConflictResult.html
index 19f7b40..a5d37b7 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateConflictResult.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateConflictResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1047,6 +1058,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateDeletedResult.html b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateDeletedResult.html
index f1c7a56..8ea1cb1 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateDeletedResult.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateDeletedResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -997,6 +1008,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateListResult.html b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateListResult.html
index ccb8d10..1f7e9937 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateListResult.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateListResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -999,6 +1010,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateLoadedResult.html b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateLoadedResult.html
index b3d7238..c426c2e 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateLoadedResult.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateLoadedResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1029,6 +1040,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateResult.html b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateResult.html
index 898d279..360f631 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateResult.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.StateResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1016,6 +1027,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.html b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.html
index df9eca3..88a5c7b 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateManager.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateManager.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appstate/AppStateStatusCodes.html b/docs/html/reference/com/google/android/gms/appstate/AppStateStatusCodes.html
index a54404c..2213d0f 100644
--- a/docs/html/reference/com/google/android/gms/appstate/AppStateStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/appstate/AppStateStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/appstate/package-summary.html b/docs/html/reference/com/google/android/gms/appstate/package-summary.html
index 85c3f3f..c8420a1 100644
--- a/docs/html/reference/com/google/android/gms/appstate/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/appstate/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/AccountChangeEvent.html b/docs/html/reference/com/google/android/gms/auth/AccountChangeEvent.html
index ee5392e..7cbcd46 100644
--- a/docs/html/reference/com/google/android/gms/auth/AccountChangeEvent.html
+++ b/docs/html/reference/com/google/android/gms/auth/AccountChangeEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/AccountChangeEventsRequest.html b/docs/html/reference/com/google/android/gms/auth/AccountChangeEventsRequest.html
index 45fc490..03de1cc 100644
--- a/docs/html/reference/com/google/android/gms/auth/AccountChangeEventsRequest.html
+++ b/docs/html/reference/com/google/android/gms/auth/AccountChangeEventsRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/AccountChangeEventsResponse.html b/docs/html/reference/com/google/android/gms/auth/AccountChangeEventsResponse.html
index bc1b0c7..07cd7e0 100644
--- a/docs/html/reference/com/google/android/gms/auth/AccountChangeEventsResponse.html
+++ b/docs/html/reference/com/google/android/gms/auth/AccountChangeEventsResponse.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html b/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
index df7aaaf..44fa0c3 100644
--- a/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
+++ b/docs/html/reference/com/google/android/gms/auth/GoogleAuthException.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html b/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
index 29d50a2..456d4a3 100644
--- a/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
+++ b/docs/html/reference/com/google/android/gms/auth/GoogleAuthUtil.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html b/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
index a1ba46e..24cde9f 100644
--- a/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
+++ b/docs/html/reference/com/google/android/gms/auth/GooglePlayServicesAvailabilityException.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html b/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
index 45c8b0f..8ef2324 100644
--- a/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
+++ b/docs/html/reference/com/google/android/gms/auth/UserRecoverableAuthException.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html b/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
index 8f6e090..f68780c 100644
--- a/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
+++ b/docs/html/reference/com/google/android/gms/auth/UserRecoverableNotifiedException.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/auth/package-summary.html b/docs/html/reference/com/google/android/gms/auth/package-summary.html
index b532bac..d875b6b 100644
--- a/docs/html/reference/com/google/android/gms/auth/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/auth/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/ApplicationMetadata.html b/docs/html/reference/com/google/android/gms/cast/ApplicationMetadata.html
index d03ae7e..a5051fc 100644
--- a/docs/html/reference/com/google/android/gms/cast/ApplicationMetadata.html
+++ b/docs/html/reference/com/google/android/gms/cast/ApplicationMetadata.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/Cast.ApplicationConnectionResult.html b/docs/html/reference/com/google/android/gms/cast/Cast.ApplicationConnectionResult.html
index e42b568..132a2ad 100644
--- a/docs/html/reference/com/google/android/gms/cast/Cast.ApplicationConnectionResult.html
+++ b/docs/html/reference/com/google/android/gms/cast/Cast.ApplicationConnectionResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1066,6 +1077,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/cast/Cast.CastApi.html b/docs/html/reference/com/google/android/gms/cast/Cast.CastApi.html
index 711f68d..c54d2c8 100644
--- a/docs/html/reference/com/google/android/gms/cast/Cast.CastApi.html
+++ b/docs/html/reference/com/google/android/gms/cast/Cast.CastApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -900,6 +911,29 @@
             
             
             
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/cast/Cast.CastApi.html#getActiveInputState(com.google.android.gms.common.api.GoogleApiClient)">getActiveInputState</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the device's active-input state.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             <a href="/reference/com/google/android/gms/cast/ApplicationMetadata.html">ApplicationMetadata</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -916,7 +950,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -939,6 +973,29 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/cast/Cast.CastApi.html#getStandbyState(com.google.android.gms.common.api.GoogleApiClient)">getStandbyState</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the device's standby state.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -1383,6 +1440,58 @@
 
 
 
+<A NAME="getActiveInputState(com.google.android.gms.common.api.GoogleApiClient)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        int
+      </span>
+      <span class="sympad">getActiveInputState</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the device's active-input state.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>The API client with which to perform this request. Must not be
+            <code>null</code>.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalStateException</td>
+            <td>If there is no active service connection.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="getApplicationMetadata(com.google.android.gms.common.api.GoogleApiClient)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1499,6 +1608,60 @@
 </div>
 
 
+<A NAME="getStandbyState(com.google.android.gms.common.api.GoogleApiClient)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        int
+      </span>
+      <span class="sympad">getStandbyState</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the device's standby state. The returned value is
+ <code><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_UNKNOWN">STANDBY_STATE_UNKNOWN</a></code>, <code><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_NO">STANDBY_STATE_NO</a></code>, or
+ <code><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_YES">STANDBY_STATE_YES</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>The API client with which to perform this request. Must not be
+            <code>null</code>.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalStateException</td>
+            <td>If there is no active service connection.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="getVolume(com.google.android.gms.common.api.GoogleApiClient)"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/cast/Cast.CastOptions.Builder.html b/docs/html/reference/com/google/android/gms/cast/Cast.CastOptions.Builder.html
index 8ae95be..02275f2 100644
--- a/docs/html/reference/com/google/android/gms/cast/Cast.CastOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/cast/Cast.CastOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/Cast.CastOptions.html b/docs/html/reference/com/google/android/gms/cast/Cast.CastOptions.html
index 490731f..efb786f 100644
--- a/docs/html/reference/com/google/android/gms/cast/Cast.CastOptions.html
+++ b/docs/html/reference/com/google/android/gms/cast/Cast.CastOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/Cast.Listener.html b/docs/html/reference/com/google/android/gms/cast/Cast.Listener.html
index 25aeadb..543f421 100644
--- a/docs/html/reference/com/google/android/gms/cast/Cast.Listener.html
+++ b/docs/html/reference/com/google/android/gms/cast/Cast.Listener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -974,6 +985,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/cast/Cast.Listener.html#onActiveInputStateChanged(int)">onActiveInputStateChanged</a></span>(int activeInputState)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the active-input state of the device has changed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/cast/Cast.Listener.html#onApplicationDisconnected(int)">onApplicationDisconnected</a></span>(int statusCode)</nobr>
         
         <div class="jd-descrdiv">
@@ -988,7 +1022,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1012,7 +1046,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1035,6 +1069,29 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/cast/Cast.Listener.html#onStandbyStateChanged(int)">onStandbyStateChanged</a></span>(int standbyState)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the standby state of the device has changed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -1354,6 +1411,50 @@
 
 
 
+<A NAME="onActiveInputStateChanged(int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onActiveInputStateChanged</span>
+      <span class="normal">(int activeInputState)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when the active-input state of the device has changed.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>activeInputState</td>
+          <td>The new active-input state. One of the constants
+            <code><a href="/reference/com/google/android/gms/cast/Cast.html#ACTIVE_INPUT_STATE_UNKNOWN">ACTIVE_INPUT_STATE_UNKNOWN</a></code>, <code><a href="/reference/com/google/android/gms/cast/Cast.html#ACTIVE_INPUT_STATE_NO">ACTIVE_INPUT_STATE_NO</a></code>,
+            <code><a href="/reference/com/google/android/gms/cast/Cast.html#ACTIVE_INPUT_STATE_YES">ACTIVE_INPUT_STATE_YES</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="onApplicationDisconnected(int)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1475,6 +1576,50 @@
 </div>
 
 
+<A NAME="onStandbyStateChanged(int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onStandbyStateChanged</span>
+      <span class="normal">(int standbyState)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when the standby state of the device has changed.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>standbyState</td>
+          <td>The new standby state. One of the constants
+            <code><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_UNKNOWN">STANDBY_STATE_UNKNOWN</a></code>, <code><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_NO">STANDBY_STATE_NO</a></code>, or
+            <code><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_YES">STANDBY_STATE_YES</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="onVolumeChanged()"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/cast/Cast.MessageReceivedCallback.html b/docs/html/reference/com/google/android/gms/cast/Cast.MessageReceivedCallback.html
index cd41997..18f9630 100644
--- a/docs/html/reference/com/google/android/gms/cast/Cast.MessageReceivedCallback.html
+++ b/docs/html/reference/com/google/android/gms/cast/Cast.MessageReceivedCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/Cast.html b/docs/html/reference/com/google/android/gms/cast/Cast.html
index 14993e7..7c4eedf 100644
--- a/docs/html/reference/com/google/android/gms/cast/Cast.html
+++ b/docs/html/reference/com/google/android/gms/cast/Cast.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1048,6 +1059,43 @@
 
     
     <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#ACTIVE_INPUT_STATE_NO">ACTIVE_INPUT_STATE_NO</a></td>
+        <td class="jd-descrcol" width="100%">
+          A constant indicating that the Google Cast device is not the currently active video input.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#ACTIVE_INPUT_STATE_UNKNOWN">ACTIVE_INPUT_STATE_UNKNOWN</a></td>
+        <td class="jd-descrcol" width="100%">
+          A constant indicating that it is not known (and/or not possible to know) whether the Google
+ Cast device is the currently active video input.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#ACTIVE_INPUT_STATE_YES">ACTIVE_INPUT_STATE_YES</a></td>
+        <td class="jd-descrcol" width="100%">
+          A constant indicating that the Google Cast device is the currently active video input.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#EXTRA_APP_NO_LONGER_RUNNING">EXTRA_APP_NO_LONGER_RUNNING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1061,7 +1109,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#MAX_MESSAGE_LENGTH">MAX_MESSAGE_LENGTH</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1073,7 +1121,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#MAX_NAMESPACE_LENGTH">MAX_NAMESPACE_LENGTH</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1085,6 +1133,43 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_NO">STANDBY_STATE_NO</a></td>
+        <td class="jd-descrcol" width="100%">
+          A constant indicating that the Google Cast device is not currently in standby.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_UNKNOWN">STANDBY_STATE_UNKNOWN</a></td>
+        <td class="jd-descrcol" width="100%">
+          A constant indicating that it is not known (and/or not possible to know) whether the Google
+ Cast device is currently in standby.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.html#STANDBY_STATE_YES">STANDBY_STATE_YES</a></td>
+        <td class="jd-descrcol" width="100%">
+          A constant indicating that the Google Cast device is currently in standby.
+
+
+
+        </td>
+    </tr>
+
+
 
 </table>
 
@@ -1385,6 +1470,134 @@
 
 
 
+<A NAME="ACTIVE_INPUT_STATE_NO"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        ACTIVE_INPUT_STATE_NO
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>A constant indicating that the Google Cast device is not the currently active video input.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                0
+                (0x00000000)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="ACTIVE_INPUT_STATE_UNKNOWN"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        ACTIVE_INPUT_STATE_UNKNOWN
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>A constant indicating that it is not known (and/or not possible to know) whether the Google
+ Cast device is the currently active video input. Active input state can only be reported when
+ the Google Cast device is connected to a TV or AVR with CEC support.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                -1
+                (0xffffffff)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="ACTIVE_INPUT_STATE_YES"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        ACTIVE_INPUT_STATE_YES
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>A constant indicating that the Google Cast device is the currently active video input.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                1
+                (0x00000001)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="EXTRA_APP_NO_LONGER_RUNNING"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1512,6 +1725,134 @@
 
 
 
+<A NAME="STANDBY_STATE_NO"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        STANDBY_STATE_NO
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>A constant indicating that the Google Cast device is not currently in standby.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                0
+                (0x00000000)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="STANDBY_STATE_UNKNOWN"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        STANDBY_STATE_UNKNOWN
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>A constant indicating that it is not known (and/or not possible to know) whether the Google
+ Cast device is currently in standby. Standby state can only be reported when the Google
+ Cast device is connected to a TV or AVR with CEC support.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                -1
+                (0xffffffff)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="STANDBY_STATE_YES"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        STANDBY_STATE_YES
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>A constant indicating that the Google Cast device is currently in standby.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                1
+                (0x00000001)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 
 <!-- Fields -->
 
diff --git a/docs/html/reference/com/google/android/gms/cast/CastDevice.html b/docs/html/reference/com/google/android/gms/cast/CastDevice.html
index 141323e..2e0e16a 100644
--- a/docs/html/reference/com/google/android/gms/cast/CastDevice.html
+++ b/docs/html/reference/com/google/android/gms/cast/CastDevice.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -798,8 +809,11 @@
 
 
 
+  <a href="#constants">Constants</a>
 
-  <a href="#inhconstants">Inherited Constants</a>
+
+
+  &#124; <a href="#inhconstants">Inherited Constants</a>
   
 
 
@@ -935,6 +949,63 @@
 
 
 
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_AUDIO_IN">CAPABILITY_AUDIO_IN</a></td>
+        <td class="jd-descrcol" width="100%">
+          Audio-input device capability.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_AUDIO_OUT">CAPABILITY_AUDIO_OUT</a></td>
+        <td class="jd-descrcol" width="100%">
+          Audio-output device capability.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_VIDEO_IN">CAPABILITY_VIDEO_IN</a></td>
+        <td class="jd-descrcol" width="100%">
+          Video-input device capability.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_VIDEO_OUT">CAPABILITY_VIDEO_OUT</a></td>
+        <td class="jd-descrcol" width="100%">
+          Video-output device capability.
+
+
+
+        </td>
+    </tr>
+
+
+
+</table>
+
+
 
 
 
@@ -1287,6 +1358,52 @@
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/cast/CastDevice.html#hasCapabilities(int[])">hasCapabilities</a></span>(int[] capabilities)</nobr>
+
+        <div class="jd-descrdiv">
+          Tests if the device supports a given set of capabilities.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/cast/CastDevice.html#hasCapability(int)">hasCapability</a></span>(int capability)</nobr>
+
+        <div class="jd-descrdiv">
+          Tests if the device supports a given capability.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/cast/CastDevice.html#hasIcons()">hasIcons</a></span>()</nobr>
         
         <div class="jd-descrdiv">
@@ -1727,6 +1844,181 @@
 <!-- Constants -->
 
 
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="CAPABILITY_AUDIO_IN"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CAPABILITY_AUDIO_IN
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Audio-input device capability.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                8
+                (0x00000008)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="CAPABILITY_AUDIO_OUT"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CAPABILITY_AUDIO_OUT
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Audio-output device capability.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                4
+                (0x00000004)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="CAPABILITY_VIDEO_IN"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CAPABILITY_VIDEO_IN
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Video-input device capability.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                2
+                (0x00000002)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="CAPABILITY_VIDEO_OUT"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CAPABILITY_VIDEO_OUT
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Video-output device capability.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                1
+                (0x00000001)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+
 <!-- Fields -->
 
 
@@ -2145,6 +2437,95 @@
 </div>
 
 
+<A NAME="hasCapabilities(int[])"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">hasCapabilities</span>
+      <span class="normal">(int[] capabilities)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Tests if the device supports a given set of capabilities.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>capabilities</td>
+          <td>The set capabilities for which to test. The expected value is one or more
+                     of the following constants: <code><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_AUDIO_IN">CAPABILITY_AUDIO_IN</a></code>,
+                     <code><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_AUDIO_OUT">CAPABILITY_AUDIO_OUT</a></code>, <code><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_VIDEO_IN">CAPABILITY_VIDEO_IN</a></code>, or
+                     <code><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_VIDEO_OUT">CAPABILITY_VIDEO_OUT</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="hasCapability(int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">hasCapability</span>
+      <span class="normal">(int capability)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Tests if the device supports a given capability.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>capability</td>
+          <td>The capability to test for. The expected value is one of the following
+                   constants: <code><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_AUDIO_IN">CAPABILITY_AUDIO_IN</a></code>, <code><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_AUDIO_OUT">CAPABILITY_AUDIO_OUT</a></code>,
+                   <code><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_VIDEO_IN">CAPABILITY_VIDEO_IN</a></code>, or <code><a href="/reference/com/google/android/gms/cast/CastDevice.html#CAPABILITY_VIDEO_OUT">CAPABILITY_VIDEO_OUT</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="hasIcons()"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/cast/CastMediaControlIntent.html b/docs/html/reference/com/google/android/gms/cast/CastMediaControlIntent.html
index fe1d654..c3b8ada 100644
--- a/docs/html/reference/com/google/android/gms/cast/CastMediaControlIntent.html
+++ b/docs/html/reference/com/google/android/gms/cast/CastMediaControlIntent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/CastStatusCodes.html b/docs/html/reference/com/google/android/gms/cast/CastStatusCodes.html
index dadc20c..a91ee85 100644
--- a/docs/html/reference/com/google/android/gms/cast/CastStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/cast/CastStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/LaunchOptions.Builder.html b/docs/html/reference/com/google/android/gms/cast/LaunchOptions.Builder.html
index 1d9045d..f0f8794 100644
--- a/docs/html/reference/com/google/android/gms/cast/LaunchOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/cast/LaunchOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/LaunchOptions.html b/docs/html/reference/com/google/android/gms/cast/LaunchOptions.html
index 4350e88..15511ff 100644
--- a/docs/html/reference/com/google/android/gms/cast/LaunchOptions.html
+++ b/docs/html/reference/com/google/android/gms/cast/LaunchOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/MediaInfo.Builder.html b/docs/html/reference/com/google/android/gms/cast/MediaInfo.Builder.html
index b6ce0a0..6eb0237 100644
--- a/docs/html/reference/com/google/android/gms/cast/MediaInfo.Builder.html
+++ b/docs/html/reference/com/google/android/gms/cast/MediaInfo.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/MediaInfo.html b/docs/html/reference/com/google/android/gms/cast/MediaInfo.html
index 4ad2423..7487f42 100644
--- a/docs/html/reference/com/google/android/gms/cast/MediaInfo.html
+++ b/docs/html/reference/com/google/android/gms/cast/MediaInfo.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/MediaMetadata.html b/docs/html/reference/com/google/android/gms/cast/MediaMetadata.html
index d734a58..277f343 100644
--- a/docs/html/reference/com/google/android/gms/cast/MediaMetadata.html
+++ b/docs/html/reference/com/google/android/gms/cast/MediaMetadata.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/MediaStatus.html b/docs/html/reference/com/google/android/gms/cast/MediaStatus.html
index fe7c726..72bf931 100644
--- a/docs/html/reference/com/google/android/gms/cast/MediaStatus.html
+++ b/docs/html/reference/com/google/android/gms/cast/MediaStatus.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/MediaTrack.Builder.html b/docs/html/reference/com/google/android/gms/cast/MediaTrack.Builder.html
index b2273954..60a0e57 100644
--- a/docs/html/reference/com/google/android/gms/cast/MediaTrack.Builder.html
+++ b/docs/html/reference/com/google/android/gms/cast/MediaTrack.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/MediaTrack.html b/docs/html/reference/com/google/android/gms/cast/MediaTrack.html
index da06471..228ea1e 100644
--- a/docs/html/reference/com/google/android/gms/cast/MediaTrack.html
+++ b/docs/html/reference/com/google/android/gms/cast/MediaTrack.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.MediaChannelResult.html b/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.MediaChannelResult.html
index 6df1b2b..44cd96d 100644
--- a/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.MediaChannelResult.html
+++ b/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.MediaChannelResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -995,6 +1006,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.OnMetadataUpdatedListener.html b/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.OnMetadataUpdatedListener.html
index 9b3244c..afcd0cd 100644
--- a/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.OnMetadataUpdatedListener.html
+++ b/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.OnMetadataUpdatedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.OnStatusUpdatedListener.html b/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.OnStatusUpdatedListener.html
index 43a790a..5fefa45 100644
--- a/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.OnStatusUpdatedListener.html
+++ b/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.OnStatusUpdatedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.html b/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.html
index 2b6f87b..2c55c86 100644
--- a/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.html
+++ b/docs/html/reference/com/google/android/gms/cast/RemoteMediaPlayer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/TextTrackStyle.html b/docs/html/reference/com/google/android/gms/cast/TextTrackStyle.html
index da7ce53..eb6a3fd 100644
--- a/docs/html/reference/com/google/android/gms/cast/TextTrackStyle.html
+++ b/docs/html/reference/com/google/android/gms/cast/TextTrackStyle.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/cast/package-summary.html b/docs/html/reference/com/google/android/gms/cast/package-summary.html
index f95171e..4b88155 100644
--- a/docs/html/reference/com/google/android/gms/cast/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/cast/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/AccountPicker.html b/docs/html/reference/com/google/android/gms/common/AccountPicker.html
index 3ad45f2..f1dabba 100644
--- a/docs/html/reference/com/google/android/gms/common/AccountPicker.html
+++ b/docs/html/reference/com/google/android/gms/common/AccountPicker.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1259,7 +1270,7 @@
  startActivityForResult(intent, SOME_REQUEST_CODE);
  </pre>
 
- The account picker activity will return when use has selected and/or created an account,
+ The account picker activity will return when the user has selected and/or created an account,
  and the resulting account name can be retrieved as follows:
  <pre>
  protected void onActivityResult(final int requestCode, final int resultCode,
diff --git a/docs/html/reference/com/google/android/gms/common/ConnectionResult.html b/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
index 623143c..c165b02 100644
--- a/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
+++ b/docs/html/reference/com/google/android/gms/common/ConnectionResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -963,8 +974,7 @@
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/ConnectionResult.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
-          The client canceled the connection by calling
- <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code>.
+          The connection was canceled.
           
     
 
@@ -1110,6 +1120,18 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SERVICE_UPDATING">SERVICE_UPDATING</a></td>
+        <td class="jd-descrcol" width="100%">
+          Google Play service is currently being updated on this device.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
           The installed version of Google Play services is out of date.
@@ -1120,7 +1142,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SIGN_IN_FAILED">SIGN_IN_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1132,7 +1154,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1145,7 +1167,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1157,7 +1179,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/ConnectionResult.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1874,9 +1896,15 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>The client canceled the connection by calling
- <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code>. Only returned by
- <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#blockingConnect()">blockingConnect()</a></code>.
+  <div class="jd-tagdata jd-tagdescr"><p>The connection was canceled. This is returned in two situations:
+ <ul>
+ <li>By <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#blockingConnect()">blockingConnect()</a></code> when
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code> is called before the
+ connection completes.
+ <li>To the OnConnectionFailedListener passed to
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html#enableAutoManage(android.support.v4.app.FragmentActivity, int, com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener)">enableAutoManage(FragmentActivity, int, GoogleApiClient.OnConnectionFailedListener)</a></code> when the
+ user choses not to complete a provided resolution. For example by canceling a dialog.
+ </ul>
 </p></div>
 
     
@@ -2381,6 +2409,48 @@
 
 
 
+<A NAME="SERVICE_UPDATING"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        SERVICE_UPDATING
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Google Play service is currently being updated on this device.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                18
+                (0x00000012)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="SERVICE_VERSION_UPDATE_REQUIRED"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -2449,10 +2519,12 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p>The client attempted to connect to the service but the user is not signed in. Either an error
- occurred when signing in the user and the error can not be recovered with any user
- interaction; or the service may have been part of an optional API and it may be the case
- that no mandatory APIs required authentication, so authentication will not occur.
+  <div class="jd-tagdata jd-tagdescr"><p>The client attempted to connect to the service but the user is not signed in. An error may
+ have occurred when signing in the user and the error can not be recovered with any user
+ interaction. Alternately, the API may have been requested with
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html#addApiIfAvailable(com.google.android.gms.common.api.Api<? extends com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions>, com.google.android.gms.common.api.Scope...)">addApiIfAvailable(Api<? extends Api.ApiOptions.NotRequiredOptions>, Scope...)</a></code> and
+ it may be the case that no required APIs needed authentication, so authentication did not
+ occur.
  <p>
  When seeing this error code,there is no resolution for the sign-in failure.
 </p></div>
diff --git a/docs/html/reference/com/google/android/gms/common/ErrorDialogFragment.html b/docs/html/reference/com/google/android/gms/common/ErrorDialogFragment.html
index 61e8fe8..b1f2a56 100644
--- a/docs/html/reference/com/google/android/gms/common/ErrorDialogFragment.html
+++ b/docs/html/reference/com/google/android/gms/common/ErrorDialogFragment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/GoogleApiAvailability.html b/docs/html/reference/com/google/android/gms/common/GoogleApiAvailability.html
new file mode 100644
index 0000000..38c00a6
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/common/GoogleApiAvailability.html
@@ -0,0 +1,2204 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>GoogleApiAvailability | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">GoogleApiAvailability</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+  <a href="#constants">Constants</a>
+
+
+
+
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    class
+<h1 itemprop="name">GoogleApiAvailability</h1>
+
+
+
+
+    extends Object<br/>
+
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.common.GoogleApiAvailability</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Helper class for verifying that the Google Play services APK is available and
+ up-to-date on this device.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#GOOGLE_PLAY_SERVICES_PACKAGE">GOOGLE_PLAY_SERVICES_PACKAGE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Package name for Google Play services.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#GOOGLE_PLAY_SERVICES_VERSION_CODE">GOOGLE_PLAY_SERVICES_VERSION_CODE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Google Play services client library version (declared in library's
+ AndroidManifest.xml android:versionCode).
+
+
+
+        </td>
+    </tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Dialog</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorDialog(android.app.Activity, int, int, android.content.DialogInterface.OnCancelListener)">getErrorDialog</a></span>(Activity activity, int errorCode, int requestCode, DialogInterface.OnCancelListener cancelListener)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a dialog to address the provided errorCode.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Dialog</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorDialog(android.app.Activity, int, int)">getErrorDialog</a></span>(Activity activity, int errorCode, int requestCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a dialog to address the provided errorCode.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            PendingIntent</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorResolutionPendingIntent(android.content.Context, int, int)">getErrorResolutionPendingIntent</a></span>(Context context, int errorCode, int requestCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a PendingIntent to address the provided errorCode.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorString(int)">getErrorString</a></span>(int errorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a human-readable string of the error code returned from
+ <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">GoogleApiAvailability</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getInstance()">getInstance</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the singleton instance of GoogleApiAvailability.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getOpenSourceSoftwareLicenseInfo(android.content.Context)">getOpenSourceSoftwareLicenseInfo</a></span>(Context context)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the open source software license information for the Google Play services
+ application, or null if Google Play services is not available on this device.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable</a></span>(Context context)</nobr>
+
+        <div class="jd-descrdiv">
+          Verifies that Google Play services is installed and enabled on this device, and that the
+ version installed on this device is no older than the one required by this client.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isUserResolvableError(int)">isUserResolvableError</a></span>(int errorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Determines whether an error can be resolved via user action.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#showErrorDialogFragment(android.app.Activity, int, int, android.content.DialogInterface.OnCancelListener)">showErrorDialogFragment</a></span>(Activity activity, int errorCode, int requestCode, DialogInterface.OnCancelListener cancelListener)</nobr>
+
+        <div class="jd-descrdiv">
+          Displays a DialogFragment for an error code returned by
+ <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#showErrorDialogFragment(android.app.Activity, int, int)">showErrorDialogFragment</a></span>(Activity activity, int errorCode, int requestCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Displays a DialogFragment for an error code returned by
+ <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#showErrorNotification(android.content.Context, int)">showErrorNotification</a></span>(Context context, int errorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Displays a notification relevant to the provided error code.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="GOOGLE_PLAY_SERVICES_PACKAGE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        GOOGLE_PLAY_SERVICES_PACKAGE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Package name for Google Play services.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "com.google.android.gms"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="GOOGLE_PLAY_SERVICES_VERSION_CODE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        GOOGLE_PLAY_SERVICES_VERSION_CODE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Google Play services client library version (declared in library's
+ AndroidManifest.xml android:versionCode).
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                7329000
+                (0x006fd4e8)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getErrorDialog(android.app.Activity, int, int, android.content.DialogInterface.OnCancelListener)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        Dialog
+      </span>
+      <span class="sympad">getErrorDialog</span>
+      <span class="normal">(Activity activity, int errorCode, int requestCode, DialogInterface.OnCancelListener cancelListener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a dialog to address the provided errorCode. The returned dialog displays a localized
+ message about the error and upon user confirmation (by tapping on dialog) will direct them to
+ the Play Store if Google Play services is out of date or missing, or to system settings if
+ Google Play services is disabled on the device.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>activity</td>
+          <td>parent activity for creating the dialog, also used for identifying language
+            to display dialog in.</td>
+        </tr>
+        <tr>
+          <th>errorCode</td>
+          <td>error code returned by <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code> call.
+            If errorCode is <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS">SUCCESS</a></code> then null is returned.</td>
+        </tr>
+        <tr>
+          <th>requestCode</td>
+          <td>The requestCode given when calling startActivityForResult.</td>
+        </tr>
+        <tr>
+          <th>cancelListener</td>
+          <td>The <code><a href="/reference/android/content/DialogInterface.OnCancelListener.html">DialogInterface.OnCancelListener</a></code> to invoke if the dialog is
+            canceled.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="getErrorDialog(android.app.Activity, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        Dialog
+      </span>
+      <span class="sympad">getErrorDialog</span>
+      <span class="normal">(Activity activity, int errorCode, int requestCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a dialog to address the provided errorCode. The returned dialog displays a localized
+ message about the error and upon user confirmation (by tapping on dialog) will direct them to
+ the Play Store if Google Play services is out of date or missing, or to system settings if
+ Google Play services is disabled on the device.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>activity</td>
+          <td>parent activity for creating the dialog, also used for identifying language
+            to display dialog in.</td>
+        </tr>
+        <tr>
+          <th>errorCode</td>
+          <td>error code returned by <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code> call.
+            If errorCode is <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS">SUCCESS</a></code> then null is returned.</td>
+        </tr>
+        <tr>
+          <th>requestCode</td>
+          <td>The requestCode given when calling startActivityForResult.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="getErrorResolutionPendingIntent(android.content.Context, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        PendingIntent
+      </span>
+      <span class="sympad">getErrorResolutionPendingIntent</span>
+      <span class="normal">(Context context, int errorCode, int requestCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a PendingIntent to address the provided errorCode. It will direct them to either the
+ Play Store if Google Play services is out of date or missing, or system settings if Google
+ Play services is disabled on the device.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>context</td>
+          <td>parent context for creating the PendingIntent.</td>
+        </tr>
+        <tr>
+          <th>errorCode</td>
+          <td>error code returned by <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code> call.
+            If errorCode is <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS">SUCCESS</a></code> then null is returned.</td>
+        </tr>
+        <tr>
+          <th>requestCode</td>
+          <td>The requestCode given when calling startActivityForResult.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="getErrorString(int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+        final
+
+
+        String
+      </span>
+      <span class="sympad">getErrorString</span>
+      <span class="normal">(int errorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a human-readable string of the error code returned from
+ <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getInstance()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">GoogleApiAvailability</a>
+      </span>
+      <span class="sympad">getInstance</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the singleton instance of GoogleApiAvailability.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getOpenSourceSoftwareLicenseInfo(android.content.Context)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">getOpenSourceSoftwareLicenseInfo</span>
+      <span class="normal">(Context context)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the open source software license information for the Google Play services
+ application, or null if Google Play services is not available on this device.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="isGooglePlayServicesAvailable(android.content.Context)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">isGooglePlayServicesAvailable</span>
+      <span class="normal">(Context context)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Verifies that Google Play services is installed and enabled on this device, and that the
+ version installed on this device is no older than the one required by this client.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>status code indicating whether there was an error.  Can be one of following in
+         <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></code>: SUCCESS, SERVICE_MISSING, SERVICE_UPDATING,
+         SERVICE_VERSION_UPDATE_REQUIRED, SERVICE_DISABLED, SERVICE_INVALID
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="isUserResolvableError(int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+        final
+
+
+        boolean
+      </span>
+      <span class="sympad">isUserResolvableError</span>
+      <span class="normal">(int errorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Determines whether an error can be resolved via user action. If true, proceed by calling
+ <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorDialog(android.app.Activity, int, int)">getErrorDialog(Activity, int, int)</a></code> and showing the dialog.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>errorCode</td>
+          <td>error code returned by <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>, or
+       returned to your application via
+       <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.OnConnectionFailedListener.html#onConnectionFailed(com.google.android.gms.common.ConnectionResult)">onConnectionFailed(ConnectionResult)</a></code></td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>true if the error is resolvable with <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorDialog(android.app.Activity, int, int)">getErrorDialog(Activity, int, int)</a></code>
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="showErrorDialogFragment(android.app.Activity, int, int, android.content.DialogInterface.OnCancelListener)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">showErrorDialogFragment</span>
+      <span class="normal">(Activity activity, int errorCode, int requestCode, DialogInterface.OnCancelListener cancelListener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Displays a DialogFragment for an error code returned by
+ <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>activity</td>
+          <td>parent activity for creating the dialog, also used for
+            identifying language to display dialog in.</td>
+        </tr>
+        <tr>
+          <th>errorCode</td>
+          <td>error code returned by
+            <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code> call. If
+            errorCode is <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS">SUCCESS</a></code> then this
+            does nothing</td>
+        </tr>
+        <tr>
+          <th>requestCode</td>
+          <td>The requestCode given when calling
+            startActivityForResult.</td>
+        </tr>
+        <tr>
+          <th>cancelListener</td>
+          <td>The <code><a href="/reference/android/content/DialogInterface.OnCancelListener.html">DialogInterface.OnCancelListener</a></code> to
+            invoke if the dialog is canceled.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>true if the dialog is shown, false otherwise.</li></ul>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>RuntimeException</td>
+            <td>if API level is below 11 and <code>activity</code> is not a
+            <code><a href="/reference/android/support/v4/app/FragmentActivity.html">FragmentActivity</a></code>.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">See Also</h5>
+      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/common/ErrorDialogFragment.html">ErrorDialogFragment</a></code></li><li><code><a href="/reference/default package/SupportErrorDialogFragment.html">SupportErrorDialogFragment</a></code></li>
+      </ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="showErrorDialogFragment(android.app.Activity, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">showErrorDialogFragment</span>
+      <span class="normal">(Activity activity, int errorCode, int requestCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Displays a DialogFragment for an error code returned by
+ <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>activity</td>
+          <td>parent activity for creating the dialog, also used for
+            identifying language to display dialog in.</td>
+        </tr>
+        <tr>
+          <th>errorCode</td>
+          <td>error code returned by
+            <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code> call. If
+            errorCode is <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS">SUCCESS</a></code> then this
+            does nothing.</td>
+        </tr>
+        <tr>
+          <th>requestCode</td>
+          <td>The requestCode given when calling
+            startActivityForResult.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>true if the dialog is shown, false otherwise</li></ul>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>RuntimeException</td>
+            <td>if API level is below 11 and <code>activity</code> is not a
+            <code><a href="/reference/android/support/v4/app/FragmentActivity.html">FragmentActivity</a></code>.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">See Also</h5>
+      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/common/ErrorDialogFragment.html">ErrorDialogFragment</a></code></li><li><code><a href="/reference/default package/SupportErrorDialogFragment.html">SupportErrorDialogFragment</a></code></li>
+      </ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="showErrorNotification(android.content.Context, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">showErrorNotification</span>
+      <span class="normal">(Context context, int errorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Displays a notification relevant to the provided error code. This method is similar to
+ <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorDialog(android.app.Activity, int, int)">getErrorDialog(android.app.Activity, int, int)</a></code>, but is provided for background tasks
+ that cannot or should not display dialogs.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>context</td>
+          <td>used for identifying language to display dialog in as well as accessing the
+            <code><a href="/reference/android/app/NotificationManager.html">NotificationManager</a></code>.</td>
+        </tr>
+        <tr>
+          <th>errorCode</td>
+          <td>error code returned by <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code> call.
+            If errorCode is <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html#SUCCESS">SUCCESS</a></code> then null is returned.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
index f75b64c..46a69c7 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesRepairableException.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesRepairableException.html
index 31d3b13..b4253eb 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesRepairableException.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesRepairableException.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
index a231170..4484a15 100644
--- a/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
+++ b/docs/html/reference/com/google/android/gms/common/GooglePlayServicesUtil.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -945,7 +956,10 @@
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#GOOGLE_PLAY_SERVICES_PACKAGE">GOOGLE_PLAY_SERVICES_PACKAGE</a></td>
         <td class="jd-descrcol" width="100%">
-          Package name for Google Play services.
+          <em>
+      This constant is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#GOOGLE_PLAY_SERVICES_PACKAGE">GOOGLE_PLAY_SERVICES_PACKAGE</a></code> instead.
+</em>
           
     
 
@@ -957,8 +971,10 @@
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#GOOGLE_PLAY_SERVICES_VERSION_CODE">GOOGLE_PLAY_SERVICES_VERSION_CODE</a></td>
         <td class="jd-descrcol" width="100%">
-          Google Play services client library version (declared in library's
- AndroidManifest.xml android:versionCode).
+          <em>
+      This constant is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#GOOGLE_PLAY_SERVICES_VERSION_CODE">GOOGLE_PLAY_SERVICES_VERSION_CODE</a></code> instead.
+</em>
           
     
 
@@ -970,7 +986,7 @@
         <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#GOOGLE_PLAY_STORE_PACKAGE">GOOGLE_PLAY_STORE_PACKAGE</a></td>
         <td class="jd-descrcol" width="100%">
-          Package name for Google Play services.
+          Package name for Google Play Store.
           
     
 
@@ -1015,7 +1031,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int)">getErrorDialog</a></span>(int errorCode, Activity activity, int requestCode)</nobr>
         
         <div class="jd-descrdiv">
-          Returns a dialog to address the provided errorCode.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorDialog(android.app.Activity, int, int)">getErrorDialog(Activity, int, int)</a></code> instead.
+</em>
           
     
 
@@ -1038,7 +1057,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int, android.content.DialogInterface.OnCancelListener)">getErrorDialog</a></span>(int errorCode, Activity activity, int requestCode, DialogInterface.OnCancelListener cancelListener)</nobr>
         
         <div class="jd-descrdiv">
-          Returns a dialog to address the provided errorCode.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">#getErrorDialog(Activity, int, int, OnCancelListener)</a></code> instead.
+</em>
           
     
 
@@ -1061,7 +1083,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorPendingIntent(int, android.content.Context, int)">getErrorPendingIntent</a></span>(int errorCode, Context context, int requestCode)</nobr>
         
         <div class="jd-descrdiv">
-          Returns a PendingIntent to address the provided errorCode.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorResolutionPendingIntent(android.content.Context, int, int)">getErrorResolutionPendingIntent(Context, int, int)</a></code> instead.
+</em>
           
     
 
@@ -1084,8 +1109,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorString(int)">getErrorString</a></span>(int errorCode)</nobr>
         
         <div class="jd-descrdiv">
-          Returns a human-readable string of the error code returned from
- <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorString(int)">getErrorString(int)</a></code> instead.
+</em>
           
     
 
@@ -1108,8 +1135,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getOpenSourceSoftwareLicenseInfo(android.content.Context)">getOpenSourceSoftwareLicenseInfo</a></span>(Context context)</nobr>
         
         <div class="jd-descrdiv">
-          Returns the open source software license information for the Google Play services
- application, or null if Google Play services is not available on this device.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getOpenSourceSoftwareLicenseInfo(android.content.Context)">getOpenSourceSoftwareLicenseInfo(Context)</a></code> instead.
+</em>
           
     
 
@@ -1178,8 +1207,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable</a></span>(Context context)</nobr>
         
         <div class="jd-descrdiv">
-          Verifies that Google Play services is installed and enabled on this device, and that the
- version installed on this device is no older than the one required by this client.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code> instead.
+</em>
           
     
 
@@ -1202,7 +1233,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isUserRecoverableError(int)">isUserRecoverableError</a></span>(int errorCode)</nobr>
         
         <div class="jd-descrdiv">
-          Determines whether an error is user-recoverable.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isUserResolvableError(int)">isUserResolvableError(int)</a></code> instead.
+</em>
           
     
 
@@ -1225,8 +1259,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#showErrorDialogFragment(int, android.app.Activity, int)">showErrorDialogFragment</a></span>(int errorCode, Activity activity, int requestCode)</nobr>
         
         <div class="jd-descrdiv">
-          Display a DialogFragment for an error code returned by
- <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">#showErrorDialogFragment(Activity, int, int)</a></code> instead.
+</em>
           
     
 
@@ -1265,8 +1301,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#showErrorDialogFragment(int, android.app.Activity, int, android.content.DialogInterface.OnCancelListener)">showErrorDialogFragment</a></span>(int errorCode, Activity activity, int requestCode, DialogInterface.OnCancelListener cancelListener)</nobr>
         
         <div class="jd-descrdiv">
-          Display a DialogFragment for an error code returned by
- <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.
+          <em>
+      This method is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">#showErrorDialogFragment(Activity, int, int, OnCancelListener)</a></code> instead.
+</em>
           
     
 
@@ -1289,7 +1327,10 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#showErrorNotification(int, android.content.Context)">showErrorNotification</a></span>(int errorCode, Context context)</nobr>
         
         <div class="jd-descrdiv">
-          Displays a notification relevant to the provided error code.
+          <em>
+      This method is deprecated.
+    Use {GoogleApiAvailability#showErrorNotification(Context, int)} instead.
+</em>
           
     
 
@@ -1630,9 +1671,13 @@
       
     
 
-      
-  <div class="jd-tagdata jd-tagdescr"><p>Package name for Google Play services.
-</p></div>
+      <p>
+  <p class="caution"><strong>
+      This constant is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#GOOGLE_PLAY_SERVICES_PACKAGE">GOOGLE_PLAY_SERVICES_PACKAGE</a></code> instead.
+
+  </p>
+  <div class="jd-tagdata jd-tagdescr"><p>Package name for Google Play services.</p></div>
 
     
         <div class="jd-tagdata">
@@ -1671,18 +1716,22 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This constant is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#GOOGLE_PLAY_SERVICES_VERSION_CODE">GOOGLE_PLAY_SERVICES_VERSION_CODE</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Google Play services client library version (declared in library's
- AndroidManifest.xml android:versionCode).
-</p></div>
+ AndroidManifest.xml android:versionCode).</p></div>
 
     
         <div class="jd-tagdata">
         <span class="jd-tagtitle">Constant Value: </span>
         <span>
             
-                7095000
-                (0x006c42d8)
+                7329000
+                (0x006fd4e8)
             
         </span>
         </div>
@@ -1715,7 +1764,7 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Package name for Google Play services.
+  <div class="jd-tagdata jd-tagdescr"><p>Package name for Google Play Store.
 </p></div>
 
     
@@ -1778,7 +1827,12 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorDialog(android.app.Activity, int, int)">getErrorDialog(Activity, int, int)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Returns a dialog to address the provided errorCode. The returned dialog displays a localized
  message about the error and upon user confirmation (by tapping on dialog) will direct them to
  the Play Store if Google Play services is out of date or missing, or to system settings if
@@ -1798,8 +1852,7 @@
         </tr>
         <tr>
           <th>requestCode</td>
-          <td>The requestCode given when calling startActivityForResult.
-</td>
+          <td>The requestCode given when calling startActivityForResult.</td>
         </tr>
       </table>
   </div>
@@ -1833,7 +1886,12 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">#getErrorDialog(Activity, int, int, OnCancelListener)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Returns a dialog to address the provided errorCode. The returned dialog displays a localized
  message about the error and upon user confirmation (by tapping on dialog) will direct them to
  the Play Store if Google Play services is out of date or missing, or to system settings if
@@ -1858,8 +1916,7 @@
         <tr>
           <th>cancelListener</td>
           <td>The <code><a href="/reference/android/content/DialogInterface.OnCancelListener.html">DialogInterface.OnCancelListener</a></code> to invoke if the dialog is
-            canceled.
-</td>
+            canceled.</td>
         </tr>
       </table>
   </div>
@@ -1893,7 +1950,12 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorResolutionPendingIntent(android.content.Context, int, int)">getErrorResolutionPendingIntent(Context, int, int)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Returns a PendingIntent to address the provided errorCode. It will direct them to one of the
  following places to either the Play Store if Google Play services is out of date or missing,
  or system settings if Google Play services is disabled on the device.</p></div>
@@ -1911,8 +1973,7 @@
         </tr>
         <tr>
           <th>requestCode</td>
-          <td>The requestCode given when calling startActivityForResult.
-</td>
+          <td>The requestCode given when calling startActivityForResult.</td>
         </tr>
       </table>
   </div>
@@ -1946,10 +2007,14 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getErrorString(int)">getErrorString(int)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Returns a human-readable string of the error code returned from
- <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.
-</p></div>
+ <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.</p></div>
 
     </div>
 </div>
@@ -1980,10 +2045,14 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#getOpenSourceSoftwareLicenseInfo(android.content.Context)">getOpenSourceSoftwareLicenseInfo(Context)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Returns the open source software license information for the Google Play services
- application, or null if Google Play services is not available on this device.
-</p></div>
+ application, or null if Google Play services is not available on this device.</p></div>
 
     </div>
 </div>
@@ -2092,15 +2161,19 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Verifies that Google Play services is installed and enabled on this device, and that the
  version installed on this device is no older than the one required by this client.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>status code indicating whether there was an error.  Can be one of following in
          <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></code>: SUCCESS, SERVICE_MISSING,
-         SERVICE_VERSION_UPDATE_REQUIRED, SERVICE_DISABLED, SERVICE_INVALID
-</li></ul>
+         SERVICE_VERSION_UPDATE_REQUIRED, SERVICE_DISABLED, SERVICE_INVALID</li></ul>
   </div>
 
     </div>
@@ -2132,7 +2205,12 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html#isUserResolvableError(int)">isUserResolvableError(int)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Determines whether an error is user-recoverable. If true, proceed by calling
  <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int)">getErrorDialog(int, Activity, int)</a></code> and showing the dialog.</p></div>
   <div class="jd-tagdata">
@@ -2149,8 +2227,7 @@
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>true if the error is recoverable with
-         <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int)">getErrorDialog(int, Activity, int)</a></code>
-</li></ul>
+         <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int)">getErrorDialog(int, Activity, int)</a></code></li></ul>
   </div>
 
     </div>
@@ -2182,7 +2259,12 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">#showErrorDialogFragment(Activity, int, int)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Display a DialogFragment for an error code returned by
  <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.</p></div>
   <div class="jd-tagdata">
@@ -2288,7 +2370,12 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">#showErrorDialogFragment(Activity, int, int, OnCancelListener)</a></code> instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Display a DialogFragment for an error code returned by
  <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#isGooglePlayServicesAvailable(android.content.Context)">isGooglePlayServicesAvailable(Context)</a></code>.</p></div>
   <div class="jd-tagdata">
@@ -2367,7 +2454,12 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This method is deprecated.</strong><br/>
+    Use {GoogleApiAvailability#showErrorNotification(Context, int)} instead.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Displays a notification relevant to the provided error code. This method is similar to
  <code><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html#getErrorDialog(int, android.app.Activity, int)">getErrorDialog(int, android.app.Activity, int)</a></code>, but is provided for background tasks
  that cannot or shouldn't display dialogs.</p></div>
@@ -2382,8 +2474,7 @@
         <tr>
           <th>context</td>
           <td>used for identifying language to display dialog in as well as accessing the
-            <code><a href="/reference/android/app/NotificationManager.html">NotificationManager</a></code>.
-</td>
+            <code><a href="/reference/android/app/NotificationManager.html">NotificationManager</a></code>.</td>
         </tr>
       </table>
   </div>
diff --git a/docs/html/reference/com/google/android/gms/common/Scopes.html b/docs/html/reference/com/google/android/gms/common/Scopes.html
index caccc68..c103d84 100644
--- a/docs/html/reference/com/google/android/gms/common/Scopes.html
+++ b/docs/html/reference/com/google/android/gms/common/Scopes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1043,6 +1054,30 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/Scopes.html#FITNESS_NUTRITION_READ">FITNESS_NUTRITION_READ</a></td>
+        <td class="jd-descrcol" width="100%">
+          Scope for read access to nutrition data types in Google Fit.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/Scopes.html#FITNESS_NUTRITION_READ_WRITE">FITNESS_NUTRITION_READ_WRITE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Scope for read/write access to nutrition data types in Google Fit.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/Scopes.html#GAMES">GAMES</a></td>
         <td class="jd-descrcol" width="100%">
           Scope for accessing data from Google Play Games.
@@ -1777,6 +1812,88 @@
 
 
 
+<A NAME="FITNESS_NUTRITION_READ"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        FITNESS_NUTRITION_READ
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Scope for read access to nutrition data types in Google Fit.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "https://www.googleapis.com/auth/fitness.nutrition.read"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="FITNESS_NUTRITION_READ_WRITE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        FITNESS_NUTRITION_READ_WRITE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Scope for read/write access to nutrition data types in Google Fit.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "https://www.googleapis.com/auth/fitness.nutrition.write"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="GAMES"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/common/SignInButton.html b/docs/html/reference/com/google/android/gms/common/SignInButton.html
index 69cb885..daae02b 100644
--- a/docs/html/reference/com/google/android/gms/common/SignInButton.html
+++ b/docs/html/reference/com/google/android/gms/common/SignInButton.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/SupportErrorDialogFragment.html b/docs/html/reference/com/google/android/gms/common/SupportErrorDialogFragment.html
index 8ffc416..492c470 100644
--- a/docs/html/reference/com/google/android/gms/common/SupportErrorDialogFragment.html
+++ b/docs/html/reference/com/google/android/gms/common/SupportErrorDialogFragment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/UserRecoverableException.html b/docs/html/reference/com/google/android/gms/common/UserRecoverableException.html
index 1ea34b0..3a3ce8c 100644
--- a/docs/html/reference/com/google/android/gms/common/UserRecoverableException.html
+++ b/docs/html/reference/com/google/android/gms/common/UserRecoverableException.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/annotation/KeepName.html b/docs/html/reference/com/google/android/gms/common/annotation/KeepName.html
index 7df6c1b..78b3829 100644
--- a/docs/html/reference/com/google/android/gms/common/annotation/KeepName.html
+++ b/docs/html/reference/com/google/android/gms/common/annotation/KeepName.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/annotation/package-summary.html b/docs/html/reference/com/google/android/gms/common/annotation/package-summary.html
index afd59da..9c9c299 100644
--- a/docs/html/reference/com/google/android/gms/common/annotation/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/annotation/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.HasOptions.html b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.HasOptions.html
index 593de39..25d6325 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.HasOptions.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.HasOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html
index 8e528dd..ac131d5 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.NotRequiredOptions.html b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.NotRequiredOptions.html
index d775108..5fe27ba 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.NotRequiredOptions.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.NotRequiredOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.Optional.html b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.Optional.html
index c5be162..a5b60fb 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.Optional.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.Optional.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.html b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.html
index d8b57ed..cf0a231 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Api.ApiOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Api.html b/docs/html/reference/com/google/android/gms/common/api/Api.html
index 34a053d..bd5f907 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Api.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Api.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Batch.Builder.html b/docs/html/reference/com/google/android/gms/common/api/Batch.Builder.html
index 5e9435c..7803119 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Batch.Builder.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Batch.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Batch.html b/docs/html/reference/com/google/android/gms/common/api/Batch.html
index a4c7e3c..92a4c59 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Batch.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Batch.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1125,6 +1136,29 @@
         <td class="jd-typecol"><nobr>
             
             
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Batch.html#forceFailureUnlessReady(com.google.android.gms.common.api.Status)">forceFailureUnlessReady</a></span>(<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a> status)</nobr>
+
+        <div class="jd-descrdiv">
+          Forces the result of the API call a failure, unless a result has otherwise already been set.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             
             
             
@@ -1135,8 +1169,8 @@
         
         <div class="jd-descrdiv">
           Indicates whether the pending result has been canceled either due to calling
- {GoogleApiClient#disconnect} or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result or an
- enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code> or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result
+ or an enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
           
     
 
@@ -1146,7 +1180,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1162,7 +1196,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1174,11 +1208,18 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Batch.html#setResult(R)">setResult</a></span>(R result)</nobr>
 
+        <div class="jd-descrdiv">
+          Sets the result of the API call.
+
+
+
+        </div>
+
   </td></tr>
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1202,7 +1243,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1594,8 +1635,8 @@
         
         <div class="jd-descrdiv">
           Indicates whether the pending result has been canceled either due to calling
- {GoogleApiClient#disconnect} or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result or an
- enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code> or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result
+ or an enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
           
     
 
@@ -1909,6 +1950,39 @@
 </div>
 
 
+<A NAME="forceFailureUnlessReady(com.google.android.gms.common.api.Status)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+        final
+
+
+        void
+      </span>
+      <span class="sympad">forceFailureUnlessReady</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a> status)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Forces the result of the API call a failure, unless a result has otherwise already been set.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="isCanceled()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1936,8 +2010,8 @@
 
       
   <div class="jd-tagdata jd-tagdescr"><p>Indicates whether the pending result has been canceled either due to calling
- {GoogleApiClient#disconnect} or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result or an
- enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code> or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result
+ or an enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
 </p></div>
 
     </div>
@@ -2002,7 +2076,12 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Sets the result of the API call. Assuming that a failure or cancelation has not already
+ been set, the result will be returned to the client via <code><a href="/reference/com/google/android/gms/common/api/Batch.html#await()">await()</a></code> or
+ <code><a href="/reference/com/google/android/gms/common/api/ResultCallback.html#onResult(R)">onResult(R)</a></code>.
+
+ <p>This method must called at most once.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/common/api/BatchResult.html b/docs/html/reference/com/google/android/gms/common/api/BatchResult.html
index 3c3ef19..7258659 100644
--- a/docs/html/reference/com/google/android/gms/common/api/BatchResult.html
+++ b/docs/html/reference/com/google/android/gms/common/api/BatchResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -960,6 +971,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/BatchResult.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1235,6 +1253,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1312,7 +1337,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/common/api/BatchResultToken.html b/docs/html/reference/com/google/android/gms/common/api/BatchResultToken.html
index 857eac5..8257fea 100644
--- a/docs/html/reference/com/google/android/gms/common/api/BatchResultToken.html
+++ b/docs/html/reference/com/google/android/gms/common/api/BatchResultToken.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/CommonStatusCodes.html b/docs/html/reference/com/google/android/gms/common/api/CommonStatusCodes.html
index ec78ae3..c60ce73 100644
--- a/docs/html/reference/com/google/android/gms/common/api/CommonStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/common/api/CommonStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1051,6 +1062,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#API_NOT_AVAILABLE">API_NOT_AVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The client attempted to call a method from an API that failed to connect.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
           The result was canceled either due to client disconnect or <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code>.
@@ -1061,7 +1084,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1073,7 +1096,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#ERROR">ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1085,7 +1108,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1097,7 +1120,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERRUPTED">INTERRUPTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1109,7 +1132,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INVALID_ACCOUNT">INVALID_ACCOUNT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1121,7 +1144,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#LICENSE_CHECK_FAILED">LICENSE_CHECK_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1133,7 +1156,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#NETWORK_ERROR">NETWORK_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1145,7 +1168,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#RESOLUTION_REQUIRED">RESOLUTION_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1157,7 +1180,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_DISABLED">SERVICE_DISABLED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1169,7 +1192,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_INVALID">SERVICE_INVALID</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1181,7 +1204,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_MISSING">SERVICE_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1193,7 +1216,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1205,7 +1228,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1217,7 +1240,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1229,7 +1252,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS_CACHE">SUCCESS_CACHE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1241,7 +1264,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1562,6 +1585,49 @@
 
 
 
+<A NAME="API_NOT_AVAILABLE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        API_NOT_AVAILABLE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The client attempted to call a method from an API that failed to connect. See
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html#addApiIfAvailable(com.google.android.gms.common.api.Api<? extends com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions>, com.google.android.gms.common.api.Scope...)">addApiIfAvailable(Api<? extends Api.ApiOptions.NotRequiredOptions>, Scope...)</a></code>.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                17
+                (0x00000011)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="CANCELED"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html
index e32885d..a905560 100644
--- a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html
+++ b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1055,6 +1066,52 @@
             
             
             
+            &lt;O&nbsp;extends&nbsp;<a href="/reference/com/google/android/gms/common/api/Api.ApiOptions.HasOptions.html">Api.ApiOptions.HasOptions</a>&gt;
+            <a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">GoogleApiClient.Builder</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html#addApiIfAvailable(com.google.android.gms.common.api.Api<O>, O, com.google.android.gms.common.api.Scope...)">addApiIfAvailable</a></span>(<a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;O&gt; api, O options, <a href="/reference/com/google/android/gms/common/api/Scope.html">Scope...</a> scopes)</nobr>
+
+        <div class="jd-descrdiv">
+          Specify which Apis should attempt to connect, but are not strictly required for your app.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">GoogleApiClient.Builder</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html#addApiIfAvailable(com.google.android.gms.common.api.Api<? extends com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions>, com.google.android.gms.common.api.Scope...)">addApiIfAvailable</a></span>(<a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;?&nbsp;extends&nbsp;<a href="/reference/com/google/android/gms/common/api/Api.ApiOptions.NotRequiredOptions.html">Api.ApiOptions.NotRequiredOptions</a>&gt; api, <a href="/reference/com/google/android/gms/common/api/Scope.html">Scope...</a> scopes)</nobr>
+
+        <div class="jd-descrdiv">
+          Specify which Apis should attempt to connect, but are not strictly required for your app.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
             
             <a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">GoogleApiClient.Builder</a></nobr>
         </td>
@@ -1761,6 +1818,112 @@
 </div>
 
 
+<A NAME="addApiIfAvailable(com.google.android.gms.common.api.Api<O>, O, com.google.android.gms.common.api.Scope...)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        <a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">GoogleApiClient.Builder</a>
+      </span>
+      <span class="sympad">addApiIfAvailable</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;O&gt; api, O options, <a href="/reference/com/google/android/gms/common/api/Scope.html">Scope...</a> scopes)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Specify which Apis should attempt to connect, but are not strictly required for your app.
+ The GoogleApiClient will try to connect to these Apis, but will not necessarily fail if
+ there are only errors when connecting to an unavailable Api added with this method.
+ See <code><a href="/reference/com/google/android/gms/common/api/Api.html">Api</a></code> for more information.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>api</td>
+          <td>The Api requested by your app.</td>
+        </tr>
+        <tr>
+          <th>scopes</td>
+          <td>Scopes required by this API.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">See Also</h5>
+      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/common/api/Api.html">Api</a></code></li>
+      </ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="addApiIfAvailable(com.google.android.gms.common.api.Api<? extends com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions>, com.google.android.gms.common.api.Scope...)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        <a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html">GoogleApiClient.Builder</a>
+      </span>
+      <span class="sympad">addApiIfAvailable</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;?&nbsp;extends&nbsp;<a href="/reference/com/google/android/gms/common/api/Api.ApiOptions.NotRequiredOptions.html">Api.ApiOptions.NotRequiredOptions</a>&gt; api, <a href="/reference/com/google/android/gms/common/api/Scope.html">Scope...</a> scopes)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Specify which Apis should attempt to connect, but are not strictly required for your app.
+ The GoogleApiClient will try to connect to these Apis, but will not necessarily fail if
+ there are only errors when connecting to an unavailable Api added with this method.
+ See <code><a href="/reference/com/google/android/gms/common/api/Api.html">Api</a></code> for more information.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>api</td>
+          <td>The Api requested by your app.</td>
+        </tr>
+        <tr>
+          <th>scopes</td>
+          <td>Scopes required by this API.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">See Also</h5>
+      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/common/api/Api.html">Api</a></code></li>
+      </ul>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="addConnectionCallbacks(com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1978,7 +2141,7 @@
   <div class="jd-tagdata jd-tagdescr"><p>Enables automatic lifecycle management in a support library <code><a href="/reference/android/support/v4/app/FragmentActivity.html">FragmentActivity</a></code> that
  connects the client in <code><a href="/reference/android/support/v4/app/FragmentActivity.html#onStart()">onStart()</a></code> and disconnects it in <code><a href="/reference/android/support/v4/app/FragmentActivity.html#onStop()">onStop()</a></code>.
  <p/>
- It handles user recoverable errors appropriately and fires  if the <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></code> has no resolution.
+ It handles user recoverable errors appropriately and calls  if the <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></code> has no resolution.
  This eliminates most of the boiler plate associated with using <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a></code>.
  <p/>
  When using this option, <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html#build()">build()</a></code> must be called from the main thread.</p></div>
@@ -1997,9 +2160,11 @@
         </tr>
         <tr>
           <th>unresolvedConnectionFailedListener</td>
-          <td>Fires if the connection failed and and there was no resolution or the user chose
-         not to complete the provided resolution. If this listener is fired, the client
-         will no longer be auto-managed, and a new instance must be built.</td>
+          <td>Called if the connection failed and there was no resolution or the user chose
+         not to complete the provided resolution. If this listener is called, the client
+         will no longer be auto-managed, and a new instance must be built. In the event
+         that the user chooses not to complete a resolution, the <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></code>
+         will have a status code of <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html#CANCELED">CANCELED</a></code>.</td>
         </tr>
       </table>
   </div>
diff --git a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html
index 716c64f..3f89ffe 100644
--- a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html
+++ b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.OnConnectionFailedListener.html b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.OnConnectionFailedListener.html
index 91d8945..5cf86e9 100644
--- a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.OnConnectionFailedListener.html
+++ b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.OnConnectionFailedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.CheckResult.html b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.CheckResult.html
index 8e40ca6..92ccba5f 100644
--- a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.CheckResult.html
+++ b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.CheckResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.html b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.html
index e90901d..3b5a566 100644
--- a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.html
+++ b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.html b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.html
index a19a1fb..eff823c 100644
--- a/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.html
+++ b/docs/html/reference/com/google/android/gms/common/api/GoogleApiClient.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1134,6 +1145,30 @@
 
 
 
+            <a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#getConnectionResult(com.google.android.gms.common.api.Api<?>)">getConnectionResult</a></span>(<a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;?&gt; api)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></code> for the GoogleApiClient's connection to the
+ specified API.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1151,6 +1186,29 @@
 
 
 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#hasConnectedApi(com.google.android.gms.common.api.Api<?>)">hasConnectedApi</a></span>(<a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;?&gt; api)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns whether or not this GoogleApiClient has the specified API in a connected state.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -1702,6 +1760,59 @@
 </div>
 
 
+<A NAME="getConnectionResult(com.google.android.gms.common.api.Api<?>)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a>
+      </span>
+      <span class="sympad">getConnectionResult</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;?&gt; api)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the <code><a href="/reference/com/google/android/gms/common/ConnectionResult.html">ConnectionResult</a></code> for the GoogleApiClient's connection to the
+ specified API. This method must only be called after <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#connect()">connect()</a></code> has
+ been called and before <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code> is called.
+ <p>
+ This method may return stale results if the GoogleApiClient is reconnecting due to a lost
+ network connection. It is guaranteed to return the most recent ConnectionResult from
+ attempting to connect the given API, but will throw an IllegalStateException if called before
+ calling connect or after calling disconnect. This method can be used to easily determine why
+ an API failed to connect if it was not available. To determine whether a given API is
+ currently connected (without potential stale results) see
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#hasConnectedApi(com.google.android.gms.common.api.Api<?>)">hasConnectedApi(Api<?>)</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>api</td>
+          <td>The <code><a href="/reference/com/google/android/gms/common/api/Api.html">Api</a></code> to retrieve the ConnectionResult of. Passing an API that was not
+            registered with the GoogleApiClient results in an IllegalArgumentException.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="getSessionId()"></A>
 
 <div class="jd-details api apilevel-">
@@ -1736,6 +1847,48 @@
 </div>
 
 
+<A NAME="hasConnectedApi(com.google.android.gms.common.api.Api<?>)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        boolean
+      </span>
+      <span class="sympad">hasConnectedApi</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;?&gt; api)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns whether or not this GoogleApiClient has the specified API in a connected state.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>api</td>
+          <td>The <code><a href="/reference/com/google/android/gms/common/api/Api.html">Api</a></code> to test the connection of.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="isConnected()"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/common/api/PendingResult.html b/docs/html/reference/com/google/android/gms/common/api/PendingResult.html
index a859314..fc117eb 100644
--- a/docs/html/reference/com/google/android/gms/common/api/PendingResult.html
+++ b/docs/html/reference/com/google/android/gms/common/api/PendingResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1048,8 +1059,8 @@
         
         <div class="jd-descrdiv">
           Indicates whether the pending result has been canceled either due to calling
- {GoogleApiClient#disconnect} or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result or an
- enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code> or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result
+ or an enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
           
     
 
@@ -1288,8 +1299,8 @@
 
       
   <div class="jd-tagdata jd-tagdescr"><p>Indicates whether the pending result has been canceled either due to calling
- {GoogleApiClient#disconnect} or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result or an
- enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#disconnect()">disconnect()</a></code> or calling <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code> directly on the pending result
+ or an enclosing <code><a href="/reference/com/google/android/gms/common/api/Batch.html">Batch</a></code>.
 </p></div>
 
     </div>
diff --git a/docs/html/reference/com/google/android/gms/common/api/PendingResults.html b/docs/html/reference/com/google/android/gms/common/api/PendingResults.html
index 2168c55..d9736a0 100644
--- a/docs/html/reference/com/google/android/gms/common/api/PendingResults.html
+++ b/docs/html/reference/com/google/android/gms/common/api/PendingResults.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Releasable.html b/docs/html/reference/com/google/android/gms/common/api/Releasable.html
index 6bc56af..0c38bba 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Releasable.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Releasable.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -921,7 +932,7 @@
                 <a href="/reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html">AutocompletePredictionBuffer</a>,
               
               and
-                <a href="#" onclick="return toggleInherited(document.getElementById('subclasses-indirect', null))">29 others.</a>
+                <a href="#" onclick="return toggleInherited(document.getElementById('subclasses-indirect', null))">31 others.</a>
               
             
           
@@ -1022,9 +1033,9 @@
 
 
       <tr class="alt-color api apilevel-" >
-        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/tagmanager/ContainerHolder.html">ContainerHolder</a></td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html">Channel.GetInputStreamResult</a></td>
         <td class="jd-descrcol" width="100%">
-          Holder for an active container.&nbsp;
+          Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code>.&nbsp;
           
     
 
@@ -1033,6 +1044,17 @@
       
     
       <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html">Channel.GetOutputStreamResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html">DataApi.GetFdForAssetResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains a file descriptor for the requested asset.&nbsp;
@@ -1043,7 +1065,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/data/DataBuffer.html">DataBuffer</a>&lt;T&gt;</td>
         <td class="jd-descrcol" width="100%">
           Interface for a buffer of typed data.&nbsp;
@@ -1054,7 +1076,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataEventBuffer.html">DataEventBuffer</a></td>
         <td class="jd-descrcol" width="100%">
           Data structure holding references to a set of events.&nbsp;
@@ -1065,7 +1087,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataItemBuffer.html">DataItemBuffer</a></td>
         <td class="jd-descrcol" width="100%">
           Data structure holding reference to a set of <code><a href="/reference/com/google/android/gms/wearable/DataItem.html">DataItem</a></code>s.&nbsp;
@@ -1076,6 +1098,17 @@
       </tr>
       
     
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveApi.MetadataBufferResult.html">DriveApi.MetadataBufferResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result that contains a <code><a href="/reference/com/google/android/gms/drive/MetadataBuffer.html">MetadataBuffer</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
       <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/event/EventBuffer.html">EventBuffer</a></td>
         <td class="jd-descrcol" width="100%">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Result.html b/docs/html/reference/com/google/android/gms/common/api/Result.html
index 88704e1..b7d80ca 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Result.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Result.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -919,7 +930,7 @@
             
               
               and
-                <a href="#" onclick="return toggleInherited(document.getElementById('subclasses-indirect', null))">52 others.</a>
+                <a href="#" onclick="return toggleInherited(document.getElementById('subclasses-indirect', null))">60 others.</a>
               
             
           
@@ -1043,6 +1054,50 @@
       
     
       <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html">CapabilityApi.AddLocalCapabilityResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#addLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">addLocalCapability(GoogleApiClient, String)</a></code> &nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html">CapabilityApi.GetAllCapabilitiesResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities(GoogleApiClient, int)</a></code> &nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html">CapabilityApi.GetCapabilityResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability(GoogleApiClient, String, int)</a></code> &nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html">CapabilityApi.RemoveLocalCapabilityResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#removeLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">removeLocalCapability(GoogleApiClient, String)</a></code> &nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/Cast.ApplicationConnectionResult.html">Cast.ApplicationConnectionResult</a></td>
         <td class="jd-descrcol" width="100%">
           When a connection to a receiver application has been established, this object contains
@@ -1056,9 +1111,9 @@
       
     
       <tr class=" api apilevel-" >
-        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/nearby/connection/Connections.StartAdvertisingResult.html">Connections.StartAdvertisingResult</a></td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html">Channel.GetInputStreamResult</a></td>
         <td class="jd-descrcol" width="100%">
-          Result delivered when a local endpoint starts being advertised.&nbsp;
+          Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code>.&nbsp;
 
 
 
@@ -1067,9 +1122,31 @@
 
 
       <tr class="alt-color api apilevel-" >
-        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/tagmanager/ContainerHolder.html">ContainerHolder</a></td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html">Channel.GetOutputStreamResult</a></td>
         <td class="jd-descrcol" width="100%">
-          Holder for an active container.&nbsp;
+          Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html">ChannelApi.OpenChannelResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#openChannel(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.String)">openChannel(GoogleApiClient, String, String)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/nearby/connection/Connections.StartAdvertisingResult.html">Connections.StartAdvertisingResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result delivered when a local endpoint starts being advertised.&nbsp;
           
     
 
@@ -1078,6 +1155,17 @@
       
     
       <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html">DailyTotalResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/fitness/HistoryApi.html#readDailyTotal(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.data.DataType)">readDailyTotal(GoogleApiClient, DataType)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.DataItemResult.html">DataApi.DataItemResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains a single data item.&nbsp;
@@ -1088,7 +1176,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html">DataApi.DeleteDataItemsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains the number of deleted items.&nbsp;
@@ -1099,7 +1187,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html">DataApi.GetFdForAssetResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains a file descriptor for the requested asset.&nbsp;
@@ -1110,7 +1198,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataEventBuffer.html">DataEventBuffer</a></td>
         <td class="jd-descrcol" width="100%">
           Data structure holding references to a set of events.&nbsp;
@@ -1121,7 +1209,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataItemBuffer.html">DataItemBuffer</a></td>
         <td class="jd-descrcol" width="100%">
           Data structure holding reference to a set of <code><a href="/reference/com/google/android/gms/wearable/DataItem.html">DataItem</a></code>s.&nbsp;
@@ -1132,7 +1220,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html">DataReadResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of <code><a href="/reference/com/google/android/gms/fitness/HistoryApi.html#readData(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.DataReadRequest)">readData(GoogleApiClient, DataReadRequest)</a></code>.&nbsp;
@@ -1143,7 +1231,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/DataSourcesResult.html">DataSourcesResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of <code><a href="/reference/com/google/android/gms/fitness/SensorsApi.html#findDataSources(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.DataSourcesRequest)">findDataSources(GoogleApiClient, DataSourcesRequest)</a></code>.&nbsp;
@@ -1154,7 +1242,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/DataTypeResult.html">DataTypeResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of
@@ -1166,7 +1254,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveApi.DriveContentsResult.html">DriveApi.DriveContentsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result that contains a <code><a href="/reference/com/google/android/gms/drive/DriveContents.html">DriveContents</a></code>.&nbsp;
@@ -1177,7 +1265,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveApi.DriveIdResult.html">DriveApi.DriveIdResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result that contains a <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>.&nbsp;
@@ -1188,7 +1276,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveApi.MetadataBufferResult.html">DriveApi.MetadataBufferResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result that contains a <code><a href="/reference/com/google/android/gms/drive/MetadataBuffer.html">MetadataBuffer</a></code>.&nbsp;
@@ -1199,7 +1287,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveFolder.DriveFileResult.html">DriveFolder.DriveFileResult</a></td>
         <td class="jd-descrcol" width="100%">
           A result that contains a <code><a href="/reference/com/google/android/gms/drive/DriveFile.html">DriveFile</a></code>.&nbsp;
@@ -1210,7 +1298,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveFolder.DriveFolderResult.html">DriveFolder.DriveFolderResult</a></td>
         <td class="jd-descrcol" width="100%">
           A result that contains a <code><a href="/reference/com/google/android/gms/drive/DriveFolder.html">DriveFolder</a></code>.&nbsp;
@@ -1221,7 +1309,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DrivePreferencesApi.FileUploadPreferencesResult.html">DrivePreferencesApi.FileUploadPreferencesResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result that contains a <code><a href="/reference/com/google/android/gms/drive/FileUploadPreferences.html">FileUploadPreferences</a></code> reference.&nbsp;
@@ -1232,7 +1320,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveResource.MetadataResult.html">DriveResource.MetadataResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result that is returned in response to metadata requests.&nbsp;
@@ -1243,7 +1331,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/event/Events.LoadEventsResult.html">Events.LoadEventsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when event data has been loaded.&nbsp;
@@ -1254,7 +1342,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesMetadata.LoadGamesResult.html">GamesMetadata.LoadGamesResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when game metadata has been loaded.&nbsp;
@@ -1265,7 +1353,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/multiplayer/Invitations.LoadInvitationsResult.html">Invitations.LoadInvitationsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when invitations have been loaded.&nbsp;
@@ -1276,7 +1364,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/leaderboard/Leaderboards.LeaderboardMetadataResult.html">Leaderboards.LeaderboardMetadataResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when leaderboard metadata has been loaded.&nbsp;
@@ -1287,7 +1375,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadPlayerScoreResult.html">Leaderboards.LoadPlayerScoreResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when a player's leaderboard score has been loaded.&nbsp;
@@ -1298,7 +1386,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadScoresResult.html">Leaderboards.LoadScoresResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when leaderboard scores have been loaded.&nbsp;
@@ -1309,7 +1397,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/leaderboard/Leaderboards.SubmitScoreResult.html">Leaderboards.SubmitScoreResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when a leaderboard score has been submitted.&nbsp;
@@ -1320,7 +1408,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html">ListSubscriptionsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of <code><a href="/reference/com/google/android/gms/fitness/RecordingApi.html#listSubscriptions(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.data.DataType)">listSubscriptions(GoogleApiClient, DataType)</a></code>.&nbsp;
@@ -1331,7 +1419,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationSettingsResult.html">LocationSettingsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of checking settings via <code><a href="/reference/com/google/android/gms/location/SettingsApi.html#checkLocationSettings(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationSettingsRequest)">checkLocationSettings(GoogleApiClient, LocationSettingsRequest)</a></code>,
@@ -1344,7 +1432,7 @@
       </tr>
 
 
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html">MessageApi.SendMessageResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains the request id assigned to the message.&nbsp;
@@ -1355,7 +1443,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/plus/Moments.LoadMomentsResult.html">Moments.LoadMomentsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Information about the set of moments that was loaded.&nbsp;
@@ -1366,7 +1454,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html">NodeApi.GetConnectedNodesResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains a list of connected nodes.&nbsp;
@@ -1377,7 +1465,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html">NodeApi.GetLocalNodeResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains the name and id that represents this device.&nbsp;
@@ -1388,7 +1476,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/panorama/PanoramaApi.PanoramaResult.html">PanoramaApi.PanoramaResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result interface for loading panorama info.&nbsp;
@@ -1399,7 +1487,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/plus/People.LoadPeopleResult.html">People.LoadPeopleResult</a></td>
         <td class="jd-descrcol" width="100%">
           Information about the set of people that was loaded.&nbsp;
@@ -1410,7 +1498,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/places/PlaceBuffer.html">PlaceBuffer</a></td>
         <td class="jd-descrcol" width="100%">
           Data structure providing access to a list of <code><a href="/reference/com/google/android/gms/location/places/Place.html">Places</a></code>.&nbsp;
@@ -1421,7 +1509,7 @@
       </tr>
 
 
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html">PlaceLikelihoodBuffer</a></td>
         <td class="jd-descrcol" width="100%">
           A <code>DataBuffer</code> that represents a list of <code>PlaceLikelihood</code>s.&nbsp;
@@ -1432,7 +1520,7 @@
       </tr>
 
 
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/Players.LoadPlayersResult.html">Players.LoadPlayersResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when player data has been loaded.&nbsp;
@@ -1443,7 +1531,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/Players.LoadProfileSettingsResult.html">Players.LoadProfileSettingsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when the profile settings of the signed-in player have been loaded.&nbsp;
@@ -1454,7 +1542,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/quest/Quests.AcceptQuestResult.html">Quests.AcceptQuestResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when accepting a quest.&nbsp;
@@ -1465,7 +1553,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/quest/Quests.ClaimMilestoneResult.html">Quests.ClaimMilestoneResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when claiming a milestone.&nbsp;
@@ -1476,7 +1564,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/quest/Quests.LoadQuestsResult.html">Quests.LoadQuestsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when quest data has been loaded.&nbsp;
@@ -1487,7 +1575,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/cast/RemoteMediaPlayer.MediaChannelResult.html">RemoteMediaPlayer.MediaChannelResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of a media command.&nbsp;
@@ -1498,7 +1586,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.LoadRequestsResult.html">Requests.LoadRequestsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when requests have loaded.&nbsp;
@@ -1509,7 +1597,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.UpdateRequestsResult.html">Requests.UpdateRequestsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result delivered when requests are updated.&nbsp;
@@ -1520,7 +1608,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html">SafetyNetApi.AttestationResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result that contains an attestation result.&nbsp;
@@ -1531,6 +1619,17 @@
       </tr>
 
 
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html">SearchAuthApi.GoogleNowAuthResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/search/SearchAuthApi.html#getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">getGoogleNowAuth(GoogleApiClient, String)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
       <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/SessionReadResult.html">SessionReadResult</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1758,6 +1857,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1835,7 +1941,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/common/api/ResultCallback.html b/docs/html/reference/com/google/android/gms/common/api/ResultCallback.html
index 0245766..c0899a0 100644
--- a/docs/html/reference/com/google/android/gms/common/api/ResultCallback.html
+++ b/docs/html/reference/com/google/android/gms/common/api/ResultCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -992,9 +1003,12 @@
       
   <div class="jd-tagdata jd-tagdescr"><p>Called when the <code><a href="/reference/com/google/android/gms/common/api/Result.html">Result</a></code> is ready.
 
- It is the responsibility of each callback to release any resources associated with the
+ <p>It is the responsibility of the callback to release any resources associated with the
  result. Some result types may implement <code><a href="/reference/com/google/android/gms/common/api/Releasable.html">Releasable</a></code>, in which case
- <code><a href="/reference/com/google/android/gms/common/api/Releasable.html#release()">release()</a></code> should be used to free the associated resources.</p></div>
+ <code><a href="/reference/com/google/android/gms/common/api/Releasable.html#release()">release()</a></code> should be used to free the associated resources.
+
+ <p>This method is called on the main thread, unless overridden by
+ {GoogleApiClient.Builder#setHandler}.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Scope.html b/docs/html/reference/com/google/android/gms/common/api/Scope.html
index e62a1fb..d586d1b 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Scope.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Scope.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/api/Status.html b/docs/html/reference/com/google/android/gms/common/api/Status.html
index d787e5c..2ff8b96 100644
--- a/docs/html/reference/com/google/android/gms/common/api/Status.html
+++ b/docs/html/reference/com/google/android/gms/common/api/Status.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1197,6 +1208,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Status.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1710,6 +1728,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -2073,7 +2098,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/common/api/package-summary.html b/docs/html/reference/com/google/android/gms/common/api/package-summary.html
index 54fdeec..166b2ef 100644
--- a/docs/html/reference/com/google/android/gms/common/api/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/api/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/AbstractDataBuffer.html b/docs/html/reference/com/google/android/gms/common/data/AbstractDataBuffer.html
index 849a46e..2882b97 100644
--- a/docs/html/reference/com/google/android/gms/common/data/AbstractDataBuffer.html
+++ b/docs/html/reference/com/google/android/gms/common/data/AbstractDataBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/DataBuffer.html b/docs/html/reference/com/google/android/gms/common/data/DataBuffer.html
index d1e7c49..d7ae66c 100644
--- a/docs/html/reference/com/google/android/gms/common/data/DataBuffer.html
+++ b/docs/html/reference/com/google/android/gms/common/data/DataBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/DataBufferObserver.Observable.html b/docs/html/reference/com/google/android/gms/common/data/DataBufferObserver.Observable.html
index d9ae1b4..d0b3db6 100644
--- a/docs/html/reference/com/google/android/gms/common/data/DataBufferObserver.Observable.html
+++ b/docs/html/reference/com/google/android/gms/common/data/DataBufferObserver.Observable.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/DataBufferObserver.html b/docs/html/reference/com/google/android/gms/common/data/DataBufferObserver.html
index a165e1f..e6e274b 100644
--- a/docs/html/reference/com/google/android/gms/common/data/DataBufferObserver.html
+++ b/docs/html/reference/com/google/android/gms/common/data/DataBufferObserver.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/DataBufferObserverSet.html b/docs/html/reference/com/google/android/gms/common/data/DataBufferObserverSet.html
index f714097..775d4b3 100644
--- a/docs/html/reference/com/google/android/gms/common/data/DataBufferObserverSet.html
+++ b/docs/html/reference/com/google/android/gms/common/data/DataBufferObserverSet.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html b/docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html
index 0a00265..c802e3e 100644
--- a/docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html
+++ b/docs/html/reference/com/google/android/gms/common/data/DataBufferUtils.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/Freezable.html b/docs/html/reference/com/google/android/gms/common/data/Freezable.html
index dd4cb28..d244b70 100644
--- a/docs/html/reference/com/google/android/gms/common/data/Freezable.html
+++ b/docs/html/reference/com/google/android/gms/common/data/Freezable.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/FreezableUtils.html b/docs/html/reference/com/google/android/gms/common/data/FreezableUtils.html
index 884e16f..e395261 100644
--- a/docs/html/reference/com/google/android/gms/common/data/FreezableUtils.html
+++ b/docs/html/reference/com/google/android/gms/common/data/FreezableUtils.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/data/package-summary.html b/docs/html/reference/com/google/android/gms/common/data/package-summary.html
index b225812..eaf3754 100644
--- a/docs/html/reference/com/google/android/gms/common/data/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/data/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html b/docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html
index 2c99405..a3a8ab8 100644
--- a/docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html
+++ b/docs/html/reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/images/ImageManager.html b/docs/html/reference/com/google/android/gms/common/images/ImageManager.html
index abfe37b..901c08d 100644
--- a/docs/html/reference/com/google/android/gms/common/images/ImageManager.html
+++ b/docs/html/reference/com/google/android/gms/common/images/ImageManager.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/images/WebImage.html b/docs/html/reference/com/google/android/gms/common/images/WebImage.html
index e1e6523..a0cb182 100644
--- a/docs/html/reference/com/google/android/gms/common/images/WebImage.html
+++ b/docs/html/reference/com/google/android/gms/common/images/WebImage.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/images/package-summary.html b/docs/html/reference/com/google/android/gms/common/images/package-summary.html
index de035ad..30dab1a 100644
--- a/docs/html/reference/com/google/android/gms/common/images/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/images/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/common/package-summary.html b/docs/html/reference/com/google/android/gms/common/package-summary.html
index bb4dfa0..989bdd2 100644
--- a/docs/html/reference/com/google/android/gms/common/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/common/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -849,6 +860,18 @@
       
     
       <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/GoogleApiAvailability.html">GoogleApiAvailability</a></td>
+        <td class="jd-descrcol" width="100%">
+          Helper class for verifying that the Google Play services APK is available and
+ up-to-date on this device.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/GooglePlayServicesUtil.html">GooglePlayServicesUtil</a></td>
         <td class="jd-descrcol" width="100%">
           Utility class for verifying that the Google Play services APK is available and
@@ -860,7 +883,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/Scopes.html">Scopes</a></td>
         <td class="jd-descrcol" width="100%">
           OAuth 2.0 scopes for use with Google Play services.&nbsp;
@@ -871,7 +894,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/SignInButton.html">SignInButton</a></td>
         <td class="jd-descrcol" width="100%">
           The Google sign-in button to authenticate the user.&nbsp;
@@ -882,7 +905,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/SupportErrorDialogFragment.html">SupportErrorDialogFragment</a></td>
         <td class="jd-descrcol" width="100%">
           Wraps the <code><a href="/reference/android/app/Dialog.html">Dialog</a></code> returned by
diff --git a/docs/html/reference/com/google/android/gms/drive/CreateFileActivityBuilder.html b/docs/html/reference/com/google/android/gms/drive/CreateFileActivityBuilder.html
index d8bbc53..d6c0dcb 100644
--- a/docs/html/reference/com/google/android/gms/drive/CreateFileActivityBuilder.html
+++ b/docs/html/reference/com/google/android/gms/drive/CreateFileActivityBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/Drive.html b/docs/html/reference/com/google/android/gms/drive/Drive.html
index 5078a36..231c02f 100644
--- a/docs/html/reference/com/google/android/gms/drive/Drive.html
+++ b/docs/html/reference/com/google/android/gms/drive/Drive.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveApi.DriveContentsResult.html b/docs/html/reference/com/google/android/gms/drive/DriveApi.DriveContentsResult.html
index 998a1c8..d247c99 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveApi.DriveContentsResult.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveApi.DriveContentsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -988,6 +999,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveApi.DriveIdResult.html b/docs/html/reference/com/google/android/gms/drive/DriveApi.DriveIdResult.html
index bd65dcf..bc7b685c 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveApi.DriveIdResult.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveApi.DriveIdResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -988,6 +999,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveApi.MetadataBufferResult.html b/docs/html/reference/com/google/android/gms/drive/DriveApi.MetadataBufferResult.html
index b0c0d96..baacca8 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveApi.MetadataBufferResult.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveApi.MetadataBufferResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -781,6 +792,13 @@
   
 
 
+
+
+
+
+
+
+
 <div class="sum-details-links">
 
 Summary:
@@ -832,6 +850,8 @@
       
         <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a> 
       
+        <a href="/reference/com/google/android/gms/common/api/Releasable.html">Releasable</a>
+
   
   
 
@@ -988,6 +1008,55 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Releasable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Releasable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Releasable.html">com.google.android.gms.common.api.Releasable</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Releasable">
+  <div id="inherited-methods-com.google.android.gms.common.api.Releasable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Releasable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Releasable.html#release()">release</a></span>()</nobr>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveApi.html b/docs/html/reference/com/google/android/gms/drive/DriveApi.html
index cc6691b..0d090077 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveApi.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1722,7 +1733,7 @@
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>A PendingResult which can be used to retrieve the result set. Be sure to call
-     <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> when you're done with the result.
+     <code><a href="/reference/com/google/android/gms/drive/MetadataBuffer.html#release()">release()</a></code> when you're done with the result.
 </li></ul>
   </div>
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveContents.html b/docs/html/reference/com/google/android/gms/drive/DriveContents.html
index 51232ff..30fdb92 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveContents.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveContents.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveFile.DownloadProgressListener.html b/docs/html/reference/com/google/android/gms/drive/DriveFile.DownloadProgressListener.html
index 92d6af3..35dca50 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveFile.DownloadProgressListener.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveFile.DownloadProgressListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveFile.html b/docs/html/reference/com/google/android/gms/drive/DriveFile.html
index edb85fc..66f67e4 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveFile.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveFile.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveFolder.DriveFileResult.html b/docs/html/reference/com/google/android/gms/drive/DriveFolder.DriveFileResult.html
index 62e292e..4008b38 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveFolder.DriveFileResult.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveFolder.DriveFileResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -988,6 +999,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveFolder.DriveFolderResult.html b/docs/html/reference/com/google/android/gms/drive/DriveFolder.DriveFolderResult.html
index aff74bb..abd491a 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveFolder.DriveFolderResult.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveFolder.DriveFolderResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -988,6 +999,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveFolder.html b/docs/html/reference/com/google/android/gms/drive/DriveFolder.html
index 4b7d119..87188f6 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveFolder.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveFolder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1540,8 +1551,7 @@
         </tr>
         <tr>
           <th>changeSet</td>
-          <td>A set of metadata fields that should be initially set.  This must
-     minimally include a title and mime type.</td>
+          <td>A set of metadata fields that should be initially set.</td>
         </tr>
         <tr>
           <th>driveContents</td>
@@ -1613,8 +1623,7 @@
         </tr>
         <tr>
           <th>changeSet</td>
-          <td>A set of metadata fields that should be initially set.  This must
-     minimally include a title and mime type.</td>
+          <td>A set of metadata fields that should be initially set.</td>
         </tr>
         <tr>
           <th>driveContents</td>
@@ -1728,7 +1737,7 @@
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>A PendingResult which can be used to retrieve the children list. Be sure to call
-     <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> when you're done with the result.
+     <code><a href="/reference/com/google/android/gms/drive/MetadataBuffer.html#release()">release()</a></code> when you're done with the result.
 </li></ul>
   </div>
 
@@ -1780,7 +1789,7 @@
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>A PendingResult which can be used to retrieve the children list. Be sure to call
-     <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> when you're done with the result.
+     <code><a href="/reference/com/google/android/gms/drive/MetadataBuffer.html#release()">release()</a></code> when you're done with the result.
 </li></ul>
   </div>
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveId.html b/docs/html/reference/com/google/android/gms/drive/DriveId.html
index 29cc084..ecd1fd7 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveId.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveId.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1237,6 +1248,29 @@
         <td class="jd-typecol"><nobr>
 
 
+            final
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/drive/DriveId.html#toInvariantString()">toInvariantString</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns an invariant string for this <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
 
 
 
@@ -1256,7 +1290,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1867,7 +1901,8 @@
  The String representation is not guaranteed to be stable over time for a given resource so
  should never be compared for equality.   Always use <code><a href="/reference/com/google/android/gms/drive/DriveId.html#decodeFromString(java.lang.String)">decodeFromString(String)</a></code> and
  then <code><a href="/reference/com/google/android/gms/drive/DriveId.html#equals(java.lang.Object)">equals(Object)</a></code> to compare two identifiers to see if they refer to the
- same resource.
+ same resource. Otherwise, <code><a href="/reference/com/google/android/gms/drive/DriveId.html#toInvariantString()">toInvariantString()</a></code> is stable and can be safely
+ used for <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code> comparison.
 </p></div>
 
     </div>
@@ -2013,6 +2048,47 @@
 </div>
 
 
+<A NAME="toInvariantString()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+        final
+
+
+        String
+      </span>
+      <span class="sympad">toInvariantString</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns an invariant string for this <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>. This is stable over time, so for a
+ given <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>, this value will always remain the same, and is guaranteed to be unique
+ for each <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>. The client can use it directly to compare equality of
+ <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>s, since two <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>s are equal if and only if its invariant string
+ is equal.
+ <p>
+ Note: This value cannot be used to <code><a href="/reference/com/google/android/gms/drive/DriveId.html#decodeFromString(java.lang.String)">decodeFromString(String)</a></code>, since it's not meant
+ to encode a <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>, but can be useful for client-side string-based <code><a href="/reference/com/google/android/gms/drive/DriveId.html">DriveId</a></code>
+ comparison, or for logging purposes.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="toString()"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/drive/DrivePreferencesApi.FileUploadPreferencesResult.html b/docs/html/reference/com/google/android/gms/drive/DrivePreferencesApi.FileUploadPreferencesResult.html
index 1786fb6..4890225 100644
--- a/docs/html/reference/com/google/android/gms/drive/DrivePreferencesApi.FileUploadPreferencesResult.html
+++ b/docs/html/reference/com/google/android/gms/drive/DrivePreferencesApi.FileUploadPreferencesResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -988,6 +999,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DrivePreferencesApi.html b/docs/html/reference/com/google/android/gms/drive/DrivePreferencesApi.html
index e7254c2..1a3904f 100644
--- a/docs/html/reference/com/google/android/gms/drive/DrivePreferencesApi.html
+++ b/docs/html/reference/com/google/android/gms/drive/DrivePreferencesApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveResource.MetadataResult.html b/docs/html/reference/com/google/android/gms/drive/DriveResource.MetadataResult.html
index be43cb6..c8f7f70 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveResource.MetadataResult.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveResource.MetadataResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -988,6 +999,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveResource.html b/docs/html/reference/com/google/android/gms/drive/DriveResource.html
index f5d8fb9..ef01ea8 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveResource.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveResource.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1498,7 +1509,7 @@
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>A PendingResult which can be used to retrieve the parents list. Be sure to call
-     <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> when you're done with the result.
+     <code><a href="/reference/com/google/android/gms/drive/MetadataBuffer.html#release()">release()</a></code> when you're done with the result.
 </li></ul>
   </div>
 
diff --git a/docs/html/reference/com/google/android/gms/drive/DriveStatusCodes.html b/docs/html/reference/com/google/android/gms/drive/DriveStatusCodes.html
index 4615a7e..897ea2b 100644
--- a/docs/html/reference/com/google/android/gms/drive/DriveStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/drive/DriveStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -951,6 +962,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveStatusCodes.html#DRIVE_CONTENTS_TOO_LARGE">DRIVE_CONTENTS_TOO_LARGE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The operation failed because the given contents exceeded the maximum allowed contents size.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveStatusCodes.html#DRIVE_EXTERNAL_STORAGE_REQUIRED">DRIVE_EXTERNAL_STORAGE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
           <em>
@@ -964,7 +987,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveStatusCodes.html#DRIVE_RATE_LIMIT_EXCEEDED">DRIVE_RATE_LIMIT_EXCEEDED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -976,7 +999,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/drive/DriveStatusCodes.html#DRIVE_RESOURCE_NOT_AVAILABLE">DRIVE_RESOURCE_NOT_AVAILABLE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1021,6 +1044,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#API_NOT_AVAILABLE">API_NOT_AVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The client attempted to call a method from an API that failed to connect.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
           The result was canceled either due to client disconnect or <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code>.
@@ -1031,7 +1066,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1043,7 +1078,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#ERROR">ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1055,7 +1090,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1067,7 +1102,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERRUPTED">INTERRUPTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1079,7 +1114,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INVALID_ACCOUNT">INVALID_ACCOUNT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1091,7 +1126,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#LICENSE_CHECK_FAILED">LICENSE_CHECK_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1103,7 +1138,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#NETWORK_ERROR">NETWORK_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1115,7 +1150,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#RESOLUTION_REQUIRED">RESOLUTION_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1127,7 +1162,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_DISABLED">SERVICE_DISABLED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1139,7 +1174,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_INVALID">SERVICE_INVALID</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1151,7 +1186,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_MISSING">SERVICE_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1163,7 +1198,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1175,7 +1210,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1187,7 +1222,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1199,7 +1234,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS_CACHE">SUCCESS_CACHE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1211,7 +1246,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1560,6 +1595,48 @@
 
 
 
+<A NAME="DRIVE_CONTENTS_TOO_LARGE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        DRIVE_CONTENTS_TOO_LARGE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The operation failed because the given contents exceeded the maximum allowed contents size.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                1508
+                (0x000005e4)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="DRIVE_EXTERNAL_STORAGE_REQUIRED"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/drive/ExecutionOptions.Builder.html b/docs/html/reference/com/google/android/gms/drive/ExecutionOptions.Builder.html
index d47f426..6b23f87 100644
--- a/docs/html/reference/com/google/android/gms/drive/ExecutionOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/drive/ExecutionOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1517,7 +1528,7 @@
  particular action either succeeds or fails when applied on the server. A notification
  will only be delivered if <code><a href="/reference/com/google/android/gms/drive/ExecutionOptions.Builder.html#setNotifyOnCompletion(boolean)">setNotifyOnCompletion(boolean)</a></code> is called. This tag may contain
  any information that will be helpful to the caller in the event of a conflict or a
- failure to apply an action on the server, for example,a commit identifier or a delta
+ failure to apply an action on the server, for example, a commit identifier or a delta
  representing the changes made in the commit.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
diff --git a/docs/html/reference/com/google/android/gms/drive/ExecutionOptions.html b/docs/html/reference/com/google/android/gms/drive/ExecutionOptions.html
index 019c6f0..d10aec5 100644
--- a/docs/html/reference/com/google/android/gms/drive/ExecutionOptions.html
+++ b/docs/html/reference/com/google/android/gms/drive/ExecutionOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1332,7 +1343,6 @@
  <code><a href="/reference/com/google/android/gms/drive/DriveContents.html#reopenForWrite(com.google.android.gms.common.api.GoogleApiClient)">reopenForWrite(GoogleApiClient)</a></code>. This is because the API can only
  detect conflicts if the written contents are based upon a known revision. In both cases the
  base revision is considered the one obtained through the first <code><a href="/reference/com/google/android/gms/drive/DriveFile.html#open(com.google.android.gms.common.api.GoogleApiClient, int, com.google.android.gms.drive.DriveFile.DownloadProgressListener)">open(GoogleApiClient, int, DriveFile.DownloadProgressListener)</a></code>.
-
 </p></div>
 
     
diff --git a/docs/html/reference/com/google/android/gms/drive/FileUploadPreferences.html b/docs/html/reference/com/google/android/gms/drive/FileUploadPreferences.html
index 36370ca..13ef203 100644
--- a/docs/html/reference/com/google/android/gms/drive/FileUploadPreferences.html
+++ b/docs/html/reference/com/google/android/gms/drive/FileUploadPreferences.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/Metadata.html b/docs/html/reference/com/google/android/gms/drive/Metadata.html
index bcae8eb..de3974a 100644
--- a/docs/html/reference/com/google/android/gms/drive/Metadata.html
+++ b/docs/html/reference/com/google/android/gms/drive/Metadata.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/MetadataBuffer.html b/docs/html/reference/com/google/android/gms/drive/MetadataBuffer.html
index a284bcd..7bb4bf0 100644
--- a/docs/html/reference/com/google/android/gms/drive/MetadataBuffer.html
+++ b/docs/html/reference/com/google/android/gms/drive/MetadataBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -918,7 +929,7 @@
 <h2>Class Overview</h2>
 <p itemprop="articleBody">A data buffer that points to Metadata entries. Objects of this class are returned in responses to
  list requests (such as <code><a href="/reference/com/google/android/gms/drive/DriveApi.html#query(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.drive.query.Query)">query(GoogleApiClient, Query)</a></code>). This object behaves as an <code><a href="/reference/java/lang/Iterable.html">Iterable</a></code>, as
- well as allowing indexed access to its entries. Be sure to call <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> on any buffers
+ well as allowing indexed access to its entries. Be sure to call <code><a href="/reference/com/google/android/gms/drive/MetadataBuffer.html#release()">release()</a></code> on any buffers
  when you are done with them.
 </p>
 
@@ -1029,6 +1040,29 @@
 
 
 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/drive/MetadataBuffer.html#release()">release</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Releases resources used by the buffer.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
 </table>
 
 
@@ -1818,6 +1852,39 @@
 </div>
 
 
+<A NAME="release()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">release</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Releases resources used by the buffer. This method is idempotent.
+</p></div>
+
+    </div>
+</div>
+
+
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/drive/MetadataChangeSet.Builder.html b/docs/html/reference/com/google/android/gms/drive/MetadataChangeSet.Builder.html
index e859096d..e84fe80 100644
--- a/docs/html/reference/com/google/android/gms/drive/MetadataChangeSet.Builder.html
+++ b/docs/html/reference/com/google/android/gms/drive/MetadataChangeSet.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/MetadataChangeSet.html b/docs/html/reference/com/google/android/gms/drive/MetadataChangeSet.html
index 110d717..8c3570c 100644
--- a/docs/html/reference/com/google/android/gms/drive/MetadataChangeSet.html
+++ b/docs/html/reference/com/google/android/gms/drive/MetadataChangeSet.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/OpenFileActivityBuilder.html b/docs/html/reference/com/google/android/gms/drive/OpenFileActivityBuilder.html
index b09f528..88a78cfd 100644
--- a/docs/html/reference/com/google/android/gms/drive/OpenFileActivityBuilder.html
+++ b/docs/html/reference/com/google/android/gms/drive/OpenFileActivityBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/events/ChangeEvent.html b/docs/html/reference/com/google/android/gms/drive/events/ChangeEvent.html
index 6168ef5..2551a8e 100644
--- a/docs/html/reference/com/google/android/gms/drive/events/ChangeEvent.html
+++ b/docs/html/reference/com/google/android/gms/drive/events/ChangeEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -789,9 +800,9 @@
 
   
 
-
   
 
+
   
   
   
diff --git a/docs/html/reference/com/google/android/gms/drive/events/ChangeListener.html b/docs/html/reference/com/google/android/gms/drive/events/ChangeListener.html
index 6566de7..9c2f920 100644
--- a/docs/html/reference/com/google/android/gms/drive/events/ChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/drive/events/ChangeListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/events/CompletionEvent.html b/docs/html/reference/com/google/android/gms/drive/events/CompletionEvent.html
index c3f88ee..41bedf9 100644
--- a/docs/html/reference/com/google/android/gms/drive/events/CompletionEvent.html
+++ b/docs/html/reference/com/google/android/gms/drive/events/CompletionEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -792,9 +803,9 @@
   
   
 
-  
-  
 
+  
+  
 
   
   
@@ -918,7 +929,7 @@
  Refer to <code><a href="/reference/com/google/android/gms/drive/events/DriveEvent.html">DriveEvent</a></code> for additional information about event listeners and subscriptions.
 
  <p>
- Completion events are only delivered to the application that committed the original change. If
+ Completion events are only delivered to the application that committed the original request. If
  the original change modified the metadata or content of the file and the action failed to
  complete on the server, this class provides access to the modified versions of the metadata and
  content that could not be committed.
@@ -1355,7 +1366,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/drive/events/CompletionEvent.html#getTrackingTags()">getTrackingTags</a></span>()</nobr>
         
         <div class="jd-descrdiv">
-          Returns a <code><a href="/reference/java/util/List.html">List</a></code> of tracking tags provided through <code><a href="/reference/com/google/android/gms/drive/DriveContents.html#commit(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.drive.MetadataChangeSet)">commit(GoogleApiClient, MetadataChangeSet)</a></code>.
+          Returns a <code><a href="/reference/java/util/List.html">List</a></code> of tracking tags provided through
+ <code><a href="/reference/com/google/android/gms/drive/ExecutionOptions.Builder.html#setTrackingTag(java.lang.String)">setTrackingTag(String)</a></code>.
           
     
 
@@ -2144,8 +2156,9 @@
   <div class="jd-tagdata jd-tagdescr"><p>Returns the account name that was used by the GoogleApiClient that requested this
  notification, or <code>null</code> if the default account was used.
 
- <p>This method is provided so that when a completion event is delivered, the correct
- GoogleApiClient can be built to work with the file.
+ <p>
+ This method is provided so that when a completion event is delivered, the correct
+ <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a></code> can be built to work with the file.
 </p></div>
 
     </div>
@@ -2378,9 +2391,9 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Returns a <code><a href="/reference/java/util/List.html">List</a></code> of tracking tags provided through <code><a href="/reference/com/google/android/gms/drive/DriveContents.html#commit(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.drive.MetadataChangeSet)">commit(GoogleApiClient, MetadataChangeSet)</a></code>. The
- application can use these tags to relate this event with the specific method execution that
- generated it.
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a <code><a href="/reference/java/util/List.html">List</a></code> of tracking tags provided through
+ <code><a href="/reference/com/google/android/gms/drive/ExecutionOptions.Builder.html#setTrackingTag(java.lang.String)">setTrackingTag(String)</a></code>. The application can use these tags to relate
+ this event with the specific method execution that generated it.
 
  <p>
  If the list contains multiple elements, the ordering of the elements is guaranteed to be the
diff --git a/docs/html/reference/com/google/android/gms/drive/events/CompletionListener.html b/docs/html/reference/com/google/android/gms/drive/events/CompletionListener.html
index 294afef..866ce54 100644
--- a/docs/html/reference/com/google/android/gms/drive/events/CompletionListener.html
+++ b/docs/html/reference/com/google/android/gms/drive/events/CompletionListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/events/DriveEvent.html b/docs/html/reference/com/google/android/gms/drive/events/DriveEvent.html
index 7f2fd6d..2bc26fc 100644
--- a/docs/html/reference/com/google/android/gms/drive/events/DriveEvent.html
+++ b/docs/html/reference/com/google/android/gms/drive/events/DriveEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/events/DriveEventService.html b/docs/html/reference/com/google/android/gms/drive/events/DriveEventService.html
index c0cded7..ae0c9d2 100644
--- a/docs/html/reference/com/google/android/gms/drive/events/DriveEventService.html
+++ b/docs/html/reference/com/google/android/gms/drive/events/DriveEventService.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/events/ResourceEvent.html b/docs/html/reference/com/google/android/gms/drive/events/ResourceEvent.html
index b5f9c15..f1649fc 100644
--- a/docs/html/reference/com/google/android/gms/drive/events/ResourceEvent.html
+++ b/docs/html/reference/com/google/android/gms/drive/events/ResourceEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/events/package-summary.html b/docs/html/reference/com/google/android/gms/drive/events/package-summary.html
index c2a693b..efb6459 100644
--- a/docs/html/reference/com/google/android/gms/drive/events/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/drive/events/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/metadata/CustomPropertyKey.html b/docs/html/reference/com/google/android/gms/drive/metadata/CustomPropertyKey.html
index 0a1c19d..a2d86f9 100644
--- a/docs/html/reference/com/google/android/gms/drive/metadata/CustomPropertyKey.html
+++ b/docs/html/reference/com/google/android/gms/drive/metadata/CustomPropertyKey.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/metadata/MetadataField.html b/docs/html/reference/com/google/android/gms/drive/metadata/MetadataField.html
index eba4f72..f441023 100644
--- a/docs/html/reference/com/google/android/gms/drive/metadata/MetadataField.html
+++ b/docs/html/reference/com/google/android/gms/drive/metadata/MetadataField.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/metadata/SearchableCollectionMetadataField.html b/docs/html/reference/com/google/android/gms/drive/metadata/SearchableCollectionMetadataField.html
index fc90072..17f77b3 100644
--- a/docs/html/reference/com/google/android/gms/drive/metadata/SearchableCollectionMetadataField.html
+++ b/docs/html/reference/com/google/android/gms/drive/metadata/SearchableCollectionMetadataField.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/metadata/SearchableMetadataField.html b/docs/html/reference/com/google/android/gms/drive/metadata/SearchableMetadataField.html
index cfcaa68..d7a5de4 100644
--- a/docs/html/reference/com/google/android/gms/drive/metadata/SearchableMetadataField.html
+++ b/docs/html/reference/com/google/android/gms/drive/metadata/SearchableMetadataField.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/metadata/SearchableOrderedMetadataField.html b/docs/html/reference/com/google/android/gms/drive/metadata/SearchableOrderedMetadataField.html
index 7abde7a..ede1dd7 100644
--- a/docs/html/reference/com/google/android/gms/drive/metadata/SearchableOrderedMetadataField.html
+++ b/docs/html/reference/com/google/android/gms/drive/metadata/SearchableOrderedMetadataField.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/metadata/SortableMetadataField.html b/docs/html/reference/com/google/android/gms/drive/metadata/SortableMetadataField.html
index a538e70..5ec0421 100644
--- a/docs/html/reference/com/google/android/gms/drive/metadata/SortableMetadataField.html
+++ b/docs/html/reference/com/google/android/gms/drive/metadata/SortableMetadataField.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/metadata/package-summary.html b/docs/html/reference/com/google/android/gms/drive/metadata/package-summary.html
index b9630d4e..a917bfd 100644
--- a/docs/html/reference/com/google/android/gms/drive/metadata/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/drive/metadata/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/package-summary.html b/docs/html/reference/com/google/android/gms/drive/package-summary.html
index 0b2eba8..5cee80a 100644
--- a/docs/html/reference/com/google/android/gms/drive/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/drive/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/query/Filter.html b/docs/html/reference/com/google/android/gms/drive/query/Filter.html
index ecc1a3e..8071ee1 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/Filter.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/Filter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/query/Filters.html b/docs/html/reference/com/google/android/gms/drive/query/Filters.html
index 314d9c9..b9a9a77 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/Filters.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/Filters.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1299,6 +1310,29 @@
             <a href="/reference/com/google/android/gms/drive/query/Filter.html">Filter</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/drive/query/Filters.html#ownedByMe()">ownedByMe</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns a filter that matches only items that the current user owns.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="/reference/com/google/android/gms/drive/query/Filter.html">Filter</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/drive/query/Filters.html#sharedWithMe()">sharedWithMe</a></span>()</nobr>
         
         <div class="jd-descrdiv">
@@ -2078,6 +2112,39 @@
 </div>
 
 
+<A NAME="ownedByMe()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="/reference/com/google/android/gms/drive/query/Filter.html">Filter</a>
+      </span>
+      <span class="sympad">ownedByMe</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a filter that matches only items that the current user owns.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="sharedWithMe()"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/drive/query/Query.Builder.html b/docs/html/reference/com/google/android/gms/drive/query/Query.Builder.html
index d94204a..546a980 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/Query.Builder.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/Query.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/query/Query.html b/docs/html/reference/com/google/android/gms/drive/query/Query.html
index 22ca93d..d2be77e 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/Query.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/Query.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/query/SearchableField.html b/docs/html/reference/com/google/android/gms/drive/query/SearchableField.html
index d1e1e26..bf1ceac 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/SearchableField.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/SearchableField.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/query/SortOrder.Builder.html b/docs/html/reference/com/google/android/gms/drive/query/SortOrder.Builder.html
index 9a169cb..e10c185 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/SortOrder.Builder.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/SortOrder.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/query/SortOrder.html b/docs/html/reference/com/google/android/gms/drive/query/SortOrder.html
index f1d77a6..0f933bc 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/SortOrder.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/SortOrder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/query/SortableField.html b/docs/html/reference/com/google/android/gms/drive/query/SortableField.html
index a15b04a..1978a77 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/SortableField.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/SortableField.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/query/package-summary.html b/docs/html/reference/com/google/android/gms/drive/query/package-summary.html
index effbe90..c6534da 100644
--- a/docs/html/reference/com/google/android/gms/drive/query/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/drive/query/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/widget/DataBufferAdapter.html b/docs/html/reference/com/google/android/gms/drive/widget/DataBufferAdapter.html
index 96211d5..56e994b 100644
--- a/docs/html/reference/com/google/android/gms/drive/widget/DataBufferAdapter.html
+++ b/docs/html/reference/com/google/android/gms/drive/widget/DataBufferAdapter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/drive/widget/package-summary.html b/docs/html/reference/com/google/android/gms/drive/widget/package-summary.html
index 4e9193e..1e74eab 100644
--- a/docs/html/reference/com/google/android/gms/drive/widget/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/drive/widget/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/BleApi.html b/docs/html/reference/com/google/android/gms/fitness/BleApi.html
index 14bdfda..e72a748 100644
--- a/docs/html/reference/com/google/android/gms/fitness/BleApi.html
+++ b/docs/html/reference/com/google/android/gms/fitness/BleApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/ConfigApi.html b/docs/html/reference/com/google/android/gms/fitness/ConfigApi.html
index 39ec918..3daf73b 100644
--- a/docs/html/reference/com/google/android/gms/fitness/ConfigApi.html
+++ b/docs/html/reference/com/google/android/gms/fitness/ConfigApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/Fitness.html b/docs/html/reference/com/google/android/gms/fitness/Fitness.html
index 2da092b..875eaee 100644
--- a/docs/html/reference/com/google/android/gms/fitness/Fitness.html
+++ b/docs/html/reference/com/google/android/gms/fitness/Fitness.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -944,7 +955,7 @@
             Fitness.SensorsApi.add(
                     mGoogleApiClient,
                     new SensorRequest.Builder()
-                            .setDataType(DataTypes.STEP_COUNT_DELTA)
+                            .setDataType(DataType.STEP_COUNT_DELTA)
                             .build(),
                     this);
         }
@@ -1413,6 +1424,46 @@
           public
           static
           final
+          <a href="/reference/com/google/android/gms/common/api/Scope.html">Scope</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/Fitness.html#SCOPE_NUTRITION_READ">SCOPE_NUTRITION_READ</a></td>
+          <td class="jd-descrcol" width="100%">
+            Scope for read access to the nutrition data types in Google Fit, which include:
+ <ul>
+     <li><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_NUTRITION">TYPE_NUTRITION</a></code>
+ </ul>
+
+
+
+
+          </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/common/api/Scope.html">Scope</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/Fitness.html#SCOPE_NUTRITION_READ_WRITE">SCOPE_NUTRITION_READ_WRITE</a></td>
+          <td class="jd-descrcol" width="100%">
+            Scope for read/write access to nutrition data types in Google Fit, which include:
+ <ul>
+     <li><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_NUTRITION">TYPE_NUTRITION</a></code>
+ </ul>
+
+
+
+
+          </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
           <a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;<a href="/reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html">Api.ApiOptions.NoOptions</a>&gt;</nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/Fitness.html#SENSORS_API">SENSORS_API</a></td>
           <td class="jd-descrcol" width="100%">
@@ -2581,6 +2632,76 @@
 
 
 
+<A NAME="SCOPE_NUTRITION_READ"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/common/api/Scope.html">Scope</a>
+      </span>
+        SCOPE_NUTRITION_READ
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Scope for read access to the nutrition data types in Google Fit, which include:
+ <ul>
+     <li><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_NUTRITION">TYPE_NUTRITION</a></code>
+ </ul>
+</p></div>
+
+
+    </div>
+</div>
+
+
+
+<A NAME="SCOPE_NUTRITION_READ_WRITE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/common/api/Scope.html">Scope</a>
+      </span>
+        SCOPE_NUTRITION_READ_WRITE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Scope for read/write access to nutrition data types in Google Fit, which include:
+ <ul>
+     <li><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_NUTRITION">TYPE_NUTRITION</a></code>
+ </ul>
+</p></div>
+
+
+    </div>
+</div>
+
+
+
 <A NAME="SENSORS_API"></A>
 
 <div class="jd-details api apilevel-">
diff --git a/docs/html/reference/com/google/android/gms/fitness/FitnessActivities.html b/docs/html/reference/com/google/android/gms/fitness/FitnessActivities.html
index 373181f..66cbe72 100644
--- a/docs/html/reference/com/google/android/gms/fitness/FitnessActivities.html
+++ b/docs/html/reference/com/google/android/gms/fitness/FitnessActivities.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/FitnessStatusCodes.html b/docs/html/reference/com/google/android/gms/fitness/FitnessStatusCodes.html
index 40a580b..b2d6cfb 100644
--- a/docs/html/reference/com/google/android/gms/fitness/FitnessStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/fitness/FitnessStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1215,6 +1226,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#API_NOT_AVAILABLE">API_NOT_AVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The client attempted to call a method from an API that failed to connect.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
           The result was canceled either due to client disconnect or <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code>.
@@ -1225,7 +1248,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1237,7 +1260,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#ERROR">ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1249,7 +1272,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1261,7 +1284,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERRUPTED">INTERRUPTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1273,7 +1296,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INVALID_ACCOUNT">INVALID_ACCOUNT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1285,7 +1308,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#LICENSE_CHECK_FAILED">LICENSE_CHECK_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1297,7 +1320,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#NETWORK_ERROR">NETWORK_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1309,7 +1332,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#RESOLUTION_REQUIRED">RESOLUTION_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1321,7 +1344,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_DISABLED">SERVICE_DISABLED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1333,7 +1356,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_INVALID">SERVICE_INVALID</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1345,7 +1368,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_MISSING">SERVICE_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1357,7 +1380,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1369,7 +1392,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1381,7 +1404,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1393,7 +1416,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS_CACHE">SUCCESS_CACHE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1405,7 +1428,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
diff --git a/docs/html/reference/com/google/android/gms/fitness/HistoryApi.ViewIntentBuilder.html b/docs/html/reference/com/google/android/gms/fitness/HistoryApi.ViewIntentBuilder.html
index 2acfbe6..6724c7b 100644
--- a/docs/html/reference/com/google/android/gms/fitness/HistoryApi.ViewIntentBuilder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/HistoryApi.ViewIntentBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/HistoryApi.html b/docs/html/reference/com/google/android/gms/fitness/HistoryApi.html
index e8726c0..9566b2b 100644
--- a/docs/html/reference/com/google/android/gms/fitness/HistoryApi.html
+++ b/docs/html/reference/com/google/android/gms/fitness/HistoryApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -853,12 +864,12 @@
      PendingResult&lt;DataReadResult&gt; pendingResult = Fitness.HistoryApi.readData(
          client,
          new DataReadRequest.Builder()
-             .read(DataTypes.STEP_COUNT_DELTA)
+             .read(DataType.TYPE_STEP_COUNT_DELTA)
              .setTimeRange(startTime.getMillis(), endTime.getMillis(), TimeUnit.MILLISECONDS)
              .build());
 
      DataReadResult readDataResult = pendingResult.await();
-     DataSet dataSet = readDataResult.getDataSet(DataTypes.STEP_COUNT_DELTA);
+     DataSet dataSet = readDataResult.getDataSet(DataType.TYPE_STEP_COUNT_DELTA);
  </pre>
 </p>
 
@@ -999,6 +1010,29 @@
             
             
             
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html">DailyTotalResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/HistoryApi.html#readDailyTotal(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.data.DataType)">readDailyTotal</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a> dataType)</nobr>
+
+        <div class="jd-descrdiv">
+          Reads the current daily total for the given <code>dataType</code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html">DataReadResult</a>&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1174,6 +1208,74 @@
 </div>
 
 
+<A NAME="readDailyTotal(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.data.DataType)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html">DailyTotalResult</a>&gt;
+      </span>
+      <span class="sympad">readDailyTotal</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a> dataType)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Reads the current daily total for the given <code>dataType</code>.  The daily total will be
+ computed from midnight of the current day on the device's current timezone.  The method
+ can be used as follows:
+ <pre>
+   PendingResult&lt;DailyTotalResult&gt; result = HistoryApi.readDailyTotal(client, TYPE_STEP_COUNT_DELTA);
+   DailyTotalResult totalResult = result.await(30, SECONDS);
+   if (totalResult.getStatus().isSuccess()) {
+     DataSet totalSet = totalResult.getTotal();
+     long total = totalSet.isEmpty()
+         ? 0
+         : totalSet.getDataPoints().get(0).getValue(FIELD_STEPS).asInt();
+   } else {
+     // handle failure
+   }
+ </pre>
+
+ <p>This is a simplified version of
+ <code><a href="/reference/com/google/android/gms/fitness/HistoryApi.html#readData(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.DataReadRequest)">readData()</a></code>. When the requested data
+ type is <code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_STEP_COUNT_DELTA">TYPE_STEP_COUNT_DELTA</a></code>, authentication is not required to call this
+ method, making it specially suited for use by Watchface and Widget activities that don't
+ have the ability to show an authentication panel to the user.
+
+ <p>This method is equivalent to:
+ <pre>
+   readData(client, new DataReadRequest.Builder()
+       .setTimeRange(midnight.getMillis(), now.getMillis(), TimeUnit.MILLISECONDS)
+       .bucketByTime(1, TimeUnit.DAYS)
+       .aggregate(DataTypes.STEP_COUNT_DELTA, AggregateDataTypes.STEP_COUNT_DELTA)
+       .build());
+ </pre></p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>a pending result containing the requested data.  The pending result will contain a
+     single DataSet.  If no data has been collected for the requested data type today, the
+     DataSet will be empty.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="readData(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.DataReadRequest)"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/fitness/RecordingApi.html b/docs/html/reference/com/google/android/gms/fitness/RecordingApi.html
index 1fb0a91..c966444 100644
--- a/docs/html/reference/com/google/android/gms/fitness/RecordingApi.html
+++ b/docs/html/reference/com/google/android/gms/fitness/RecordingApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/SensorsApi.html b/docs/html/reference/com/google/android/gms/fitness/SensorsApi.html
index ddaee82..6bbd04c 100644
--- a/docs/html/reference/com/google/android/gms/fitness/SensorsApi.html
+++ b/docs/html/reference/com/google/android/gms/fitness/SensorsApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1133,8 +1144,8 @@
  extract the DataPoint from the intent.  See the documentation of
  <code><a href="/reference/android/app/PendingIntent.html">PendingIntent</a></code> for more details.
  <p>
- This method can be called several times with the same intent to change the
- desired sampling rate.</p></div>
+ Any previously registered requests that have the same PendingIntent
+ (as defined by <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code>) will be replaced by this request.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -1320,8 +1331,9 @@
         </tr>
         <tr>
           <th>pendingIntent</td>
-          <td>the intent that was used in the
-     <code><a href="/reference/com/google/android/gms/fitness/SensorsApi.html#add(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.SensorRequest, android.app.PendingIntent)">add</a></code> request.</td>
+          <td>the PendingIntent that was used in the
+     <code><a href="/reference/com/google/android/gms/fitness/SensorsApi.html#add(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.SensorRequest, android.app.PendingIntent)">add</a></code> request or is
+     equal as defined by <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code>.</td>
         </tr>
       </table>
   </div>
diff --git a/docs/html/reference/com/google/android/gms/fitness/SessionsApi.ViewIntentBuilder.html b/docs/html/reference/com/google/android/gms/fitness/SessionsApi.ViewIntentBuilder.html
index 8c5e903..f6a6a2b 100644
--- a/docs/html/reference/com/google/android/gms/fitness/SessionsApi.ViewIntentBuilder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/SessionsApi.ViewIntentBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/SessionsApi.html b/docs/html/reference/com/google/android/gms/fitness/SessionsApi.html
index 7f9f7ee..c8f2509 100644
--- a/docs/html/reference/com/google/android/gms/fitness/SessionsApi.html
+++ b/docs/html/reference/com/google/android/gms/fitness/SessionsApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1293,7 +1304,10 @@
  Finally, the Intent's type will be set to
  <a href="/reference/com/google/android/gms/fitness/FitnessActivities.html#MIME_TYPE_PREFIX">MIME_TYPE_PREFIX</a></a> followed by the name of the activity
  associated with this session, and can be computed by
- <code><a href="/reference/com/google/android/gms/fitness/FitnessActivities.html#getMimeType(java.lang.String)">getMimeType(String)</a></code>.</p></div>
+ <code><a href="/reference/com/google/android/gms/fitness/FitnessActivities.html#getMimeType(java.lang.String)">getMimeType(String)</a></code>.
+ <p>
+ Any previously registered sessions that have the same PendingIntent
+ (as defined by <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code>) will be replaced by this session.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -1467,6 +1481,12 @@
           <th>client</td>
           <td>an existing GoogleApiClient.  Must be connected at the time of this call.</td>
         </tr>
+        <tr>
+          <th>intent</td>
+          <td>the PendingIntent that was used in the
+     <code><a href="/reference/com/google/android/gms/fitness/SessionsApi.html#registerForSessions(com.google.android.gms.common.api.GoogleApiClient, android.app.PendingIntent)">registerForSessions</a></code>
+     call or is equal as defined by <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code>.</td>
+        </tr>
       </table>
   </div>
   <div class="jd-tagdata">
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/BleDevice.html b/docs/html/reference/com/google/android/gms/fitness/data/BleDevice.html
index 16cfde4..7b72d9a 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/BleDevice.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/BleDevice.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -803,9 +814,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
 
@@ -1001,31 +1009,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/BleDevice.html">BleDevice</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/BleDevice.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1515,44 +1498,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/BleDevice.html">BleDevice</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/Bucket.html b/docs/html/reference/com/google/android/gms/fitness/data/Bucket.html
index 3539edb..c429461 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/Bucket.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/Bucket.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -806,9 +817,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
 
@@ -1083,31 +1091,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Bucket.html">Bucket</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Bucket.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1836,44 +1819,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Bucket.html">Bucket</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/DataPoint.html b/docs/html/reference/com/google/android/gms/fitness/data/DataPoint.html
index e2cf5a5..5e30694 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/DataPoint.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/DataPoint.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -803,9 +814,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
 
@@ -1011,31 +1019,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/DataPoint.html">DataPoint</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataPoint.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1733,44 +1716,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/DataPoint.html">DataPoint</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/DataSet.html b/docs/html/reference/com/google/android/gms/fitness/data/DataSet.html
index e02337b..436bcc3 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/DataSet.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/DataSet.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -803,9 +814,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
 
@@ -1011,31 +1019,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/DataSet.html">DataSet</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataSet.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1267,6 +1250,29 @@
             
             
             
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/DataSet.html#isEmpty()">isEmpty</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns whether this data set contains no data points.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1276,7 +1282,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1591,44 +1597,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/DataSet.html">DataSet</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
@@ -1994,6 +1962,43 @@
 </div>
 
 
+<A NAME="isEmpty()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">isEmpty</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns whether this data set contains no data points.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>true if this data set has no data points, false otherwise.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="toString()"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/DataSource.Builder.html b/docs/html/reference/com/google/android/gms/fitness/data/DataSource.Builder.html
index 7bc4149..6e42931 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/DataSource.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/DataSource.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1114,33 +1125,6 @@
             <a href="/reference/com/google/android/gms/fitness/data/DataSource.Builder.html">DataSource.Builder</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/DataSource.Builder.html#setObfuscated(boolean)">setObfuscated</a></span>(boolean isObfuscated)</nobr>
-        
-        <div class="jd-descrdiv">
-          <em>
-      This method is deprecated.
-    Obfuscation of data sources is no longer supported.  This method is a
- no-op and will be removed in an upcoming release.
-</em>
-          
-    
-
-        </div>
-  
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            <a href="/reference/com/google/android/gms/fitness/data/DataSource.Builder.html">DataSource.Builder</a></nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/DataSource.Builder.html#setStreamName(java.lang.String)">setStreamName</a></span>(String streamName)</nobr>
         
         <div class="jd-descrdiv">
@@ -1155,7 +1139,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1708,44 +1692,6 @@
 </div>
 
 
-<A NAME="setObfuscated(boolean)"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        <a href="/reference/com/google/android/gms/fitness/data/DataSource.Builder.html">DataSource.Builder</a>
-      </span>
-      <span class="sympad">setObfuscated</span>
-      <span class="normal">(boolean isObfuscated)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      <p>
-  <p class="caution"><strong>
-      This method is deprecated.</strong><br/>
-    Obfuscation of data sources is no longer supported.  This method is a
- no-op and will be removed in an upcoming release.
-
-  </p>
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
 <A NAME="setStreamName(java.lang.String)"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/DataSource.html b/docs/html/reference/com/google/android/gms/fitness/data/DataSource.html
index e8a9608..a51ee6e 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/DataSource.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/DataSource.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -809,9 +820,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
 
@@ -1090,31 +1098,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/DataSource.html">DataSource</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataSource.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1831,44 +1814,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/DataSource.html">DataSource</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/DataType.html b/docs/html/reference/com/google/android/gms/fitness/data/DataType.html
index 25d4ece..08dee86 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/DataType.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/DataType.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1114,7 +1125,11 @@
           <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a></nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataType.html#AGGREGATE_CALORIES_CONSUMED">AGGREGATE_CALORIES_CONSUMED</a></td>
           <td class="jd-descrcol" width="100%">
-            Aggregate calories consumed,in kcal, during a time interval.
+            <em>
+      This field is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#AGGREGATE_NUTRITION_SUMMARY">AGGREGATE_NUTRITION_SUMMARY</a></code> instead, which contains calories as
+ well as other nutrients.  This data type will be removed in a future release.
+</em>
 
 
 
@@ -1210,6 +1225,23 @@
           static
           final
           <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataType.html#AGGREGATE_NUTRITION_SUMMARY">AGGREGATE_NUTRITION_SUMMARY</a></td>
+          <td class="jd-descrcol" width="100%">
+            In the <code>com.google.nutrition.summary</code> data type, each data point represents the sum of
+ all nutrition entries over the time interval of the data point.
+            
+    
+
+          </td>
+      </tr>
+      
+    
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a></nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataType.html#AGGREGATE_POWER_SUMMARY">AGGREGATE_POWER_SUMMARY</a></td>
           <td class="jd-descrcol" width="100%">
             In the <code>com.google.power.summary</code> data type, each data point represents
@@ -1221,7 +1253,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1239,7 +1271,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1255,7 +1287,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1273,22 +1305,6 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataType.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1366,8 +1382,11 @@
           <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a></nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_CALORIES_CONSUMED">TYPE_CALORIES_CONSUMED</a></td>
           <td class="jd-descrcol" width="100%">
-            In the <code>com.google.calories.consumed</code> data type, each data point represents the number
- of calories consumed, in kcal, over the time interval of the data point.
+            <em>
+      This field is deprecated.
+    Use <code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_NUTRITION">TYPE_NUTRITION</a></code> instead which holds calories as well as other
+ nutrients.  This data type will be removed in a future release.
+</em>
             
     
 
@@ -1551,6 +1570,23 @@
           static
           final
           <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_NUTRITION">TYPE_NUTRITION</a></td>
+          <td class="jd-descrcol" width="100%">
+            In the <code>com.google.nutrition</code> data type, each data point represents the value of
+ all nutrients consumed as part of a meal or a food item.
+
+
+
+          </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a></nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_POWER_SAMPLE">TYPE_POWER_SAMPLE</a></td>
           <td class="jd-descrcol" width="100%">
             In the <code>com.google.power.sample</code> data type, each data point represents an
@@ -1562,7 +1598,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1579,7 +1615,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1596,7 +1632,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1613,7 +1649,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -2344,11 +2380,16 @@
 
 
 
+      <p>
+  <p class="caution"><strong>
+      This field is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#AGGREGATE_NUTRITION_SUMMARY">AGGREGATE_NUTRITION_SUMMARY</a></code> instead, which contains calories as
+ well as other nutrients.  This data type will be removed in a future release.
 
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>Aggregate calories consumed,in kcal, during a time interval. This data type is equivalent
  to the one used for non-aggregated data. The full definition can be found at
- <code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_CALORIES_CONSUMED">TYPE_CALORIES_CONSUMED</a></code>.
-</p></div>
+ <code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_CALORIES_CONSUMED">TYPE_CALORIES_CONSUMED</a></code>.</p></div>
 
 
     </div>
@@ -2487,11 +2528,11 @@
  <ul>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_ACTIVITY_SEGMENT">activity.segment</a></code>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_BODY_FAT_PERCENTAGE">body.fat.percentage</a></code>
-     <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_CALORIES_CONSUMED">calories.consumed</a></code>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_CALORIES_EXPENDED">calories.expended</a></code>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_DISTANCE_DELTA">distance.delta</a></code>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_HEART_RATE_BPM">heart_rate.bpm</a></code>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_LOCATION_SAMPLE">location.sample</a></code>
+     <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_NUTRITION">nutrition</a></code>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_SPEED">speed</a></code>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_STEP_COUNT_DELTA">step_count.delta</a></code>
      <li/><code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_WEIGHT">weight</a></code>
@@ -2551,6 +2592,46 @@
 
 
 
+<A NAME="AGGREGATE_NUTRITION_SUMMARY"></A>
+
+<div class="jd-details api apilevel-"> 
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public 
+        static 
+        final 
+        <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a>
+      </span>
+        AGGREGATE_NUTRITION_SUMMARY
+    </h4>
+      <div class="api-level">
+        
+        
+  
+
+      </div>
+    <div class="jd-details-descr">
+      
+    
+
+      
+  <div class="jd-tagdata jd-tagdescr"><p>In the <code>com.google.nutrition.summary</code> data type, each data point represents the sum of
+ all nutrition entries over the time interval of the data point.
+ <p>
+ In the nutrients field map, each value will represent the sum of the nutrient over all of
+ the entries in the interval.  If the nutrient was not present in any of the entries, it won't
+ be present on the aggregate map either.
+ <p>
+ If all of the original entries are for the same meal, the <code>meal_type</code> field will also
+ be set.
+</p></div>
+
+    
+    </div>
+</div>
+
+
+
 <A NAME="AGGREGATE_POWER_SUMMARY"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -2692,37 +2773,6 @@
 
 
 
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
 <A NAME="TYPE_ACTIVITY_SAMPLE"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -2898,14 +2948,19 @@
       
     
 
-      
+      <p>
+  <p class="caution"><strong>
+      This field is deprecated.</strong><br/>
+    Use <code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#TYPE_NUTRITION">TYPE_NUTRITION</a></code> instead which holds calories as well as other
+ nutrients.  This data type will be removed in a future release.
+
+  </p>
   <div class="jd-tagdata jd-tagdescr"><p>In the <code>com.google.calories.consumed</code> data type, each data point represents the number
  of calories consumed, in kcal, over the time interval of the data point.  The field value
  is stored as a float.
  <p>
  Start and end times should be set to denote the duration over which the calories were
- consumed.
-</p></div>
+ consumed.</p></div>
 
     
     </div>
@@ -3310,6 +3365,86 @@
 
 
 
+<A NAME="TYPE_NUTRITION"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/fitness/data/DataType.html">DataType</a>
+      </span>
+        TYPE_NUTRITION
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>In the <code>com.google.nutrition</code> data type, each data point represents the value of
+ all nutrients consumed as part of a meal or a food item.
+ <p>
+ The data point contains several fields.  The nutrients field and either the meal type and/or
+ the food item field are required.
+ <ul>
+   <li><code>nutrients</code> contains all of the nutrient data for the entry
+   <li><code>meal_type</code> lists the type of meal, if known
+   <li><code>food_item</code> lists the particular food item for the entry, if known
+ </ul>
+ <p>
+ In case the meal time is known, it should be reflected in the timestamps.  Otherwise, start
+ and end times should be set to the range in which the meal occurred.
+ <p>
+ The <code>meal_type</code> field accepts the following values, which are defined as constants in
+ <code><a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a></code>:
+ <ul>
+   <li><code><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_BREAKFAST">MEAL_TYPE_BREAKFAST</a></code>
+   <li><code><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_LUNCH">MEAL_TYPE_LUNCH</a></code>
+   <li><code><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_DINNER">MEAL_TYPE_DINNER</a></code>
+   <li><code><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_SNACK">MEAL_TYPE_SNACK</a></code>
+   <li><code><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_UNKNOWN">MEAL_TYPE_UNKNOWN</a></code>
+ </ul>
+ When the meal type isn't known, the field may be absent or set to "unknown".  Apps should
+ handle both cases accordingly.
+ <p>
+ The <code>nutrients</code> field is a map where the key holds the type of nutrient and the
+ value holds the amount of the nutrient for the entry.  Key values are represented by the
+ <code>NUTRIENT_XXX</code> constants in <code><a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a></code>.  In
+ case the amount of the nutrient for the entry is not known, no value for that nutrient should
+ be added to the map.  You may optionally use a value of zero when it is known that the
+ nutrient is not present in the entry.  Multiple nutrients can be added by calling
+ <code><a href="/reference/com/google/android/gms/fitness/data/Value.html#setKeyValue(java.lang.String, float)">setKeyValue(String, float)</a></code> repeatedly.
+ <p>
+ Here's an example of creating a DataPoint to represent the user eating a banana:
+ <pre>
+     DataSource nutritionSource = new DataSource.Builder()
+         .setDataType(TYPE_NUTRITION)
+         ...
+         .build();
+
+     DataPoint banana = DataPoint.create(nutritionSource);
+     banana.setTimestamp(now.getMillis(), MILLISECONDS);
+     banana.getValue(FIELD_FOOD_ITEM).setString("banana");
+     banana.getValue(FIELD_MEAL_TYPE).setInt(MEAL_TYPE_SNACK);
+     banana.getValue(FIELD_NUTRIENTS).setKeyValue(NUTRIENT_TOTAL_FAT, 0.4f);
+     banana.getValue(FIELD_NUTRIENTS).setKeyValue(NUTRIENT_SODIUM, 1f);
+     banana.getValue(FIELD_NUTRIENTS).setKeyValue(NUTRIENT_POTASSIUM, 422f);
+ </pre>
+</p></div>
+
+
+    </div>
+</div>
+
+
+
 <A NAME="TYPE_POWER_SAMPLE"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/Device.html b/docs/html/reference/com/google/android/gms/fitness/data/Device.html
index 9a78bf6..da0eb5a 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/Device.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/Device.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -806,9 +817,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
   &#124; <a href="#pubctors">Ctors</a>
@@ -1097,31 +1105,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Device.html">Device</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Device.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1918,44 +1901,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Device.html">Device</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/Field.html b/docs/html/reference/com/google/android/gms/fitness/data/Field.html
index b902696..0f97e7e 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/Field.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/Field.html
@@ -151,7 +151,7 @@
 
 <a name="top"></a>
 
-<!-- dialog to prompt lang pref change when loaded from hardcoded URL 
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
 <div id="langMessage" style="display:none">
   <div>
     <div class="lang en">
@@ -201,7 +201,7 @@
   <div id="header-wrapper">
     <div id="header">
 
-    
+
 
 
       <div class="wrap" id="header-wrap">
@@ -245,8 +245,8 @@
         </ul>
 
 
-        
-        
+
+
 <div class="menu-container">
   <div class="moremenu">
     <div id="more-btn"></div>
@@ -267,8 +267,8 @@
         <li><a href="http://source.android.com">Android Open Source Project</a></li>
       </ul>
 
-      
-      
+
+
         <div class="header">Language</div>
           <div id="language" class="locales">
             <select name="language" onChange="changeLangPref(this.value, true)">
@@ -286,8 +286,8 @@
           loadLangPref();
             //-->
         </script>
-      
-      
+
+
       <br class="clearfix" />
     </div><!-- end 'mid' -->
     <div class="bottom"></div>
@@ -401,10 +401,10 @@
                 </li>
                 <li><a href="/google/index.html">Google Services</a>
                 </li>
-                
+
                   <li><a href="/samples/index.html">Samples</a>
                   </li>
-                
+
               </ul>
             </li>
             <li class="distribute last">
@@ -424,14 +424,14 @@
       </div><!-- end header-wrap.wrap -->
     </div><!-- end header -->
 
-  
+
     <!-- Secondary x-nav -->
     <div id="nav-x">
         <div class="wrap" style="position:relative;z-index:1">
 
-        
-        
-        
+
+
+
 
             <ul class="nav-x col-9 develop" style="width:100%">
                 <li class="training"><a href="/training/index.html"
@@ -469,17 +469,17 @@
                 <li class="google"><a href="/google/index.html"
                   >Google Services</a>
                 </li>
-                
+
                   <li class="samples"><a href="/samples/index.html"
                     >Samples</a>
                   </li>
-                
+
             </ul>
         </div>
     </div>
     <!-- /Sendondary x-nav DEVELOP -->
 
-  
+
 
     <div id="searchResults" class="wrap" style="display:none;">
       <h2 id="searchTitle">Results</h2>
@@ -492,7 +492,7 @@
       <a class="logo" href="#top"></a>
       <a class="top" href="#top"></a>
       <ul class="breadcrumb">
-        
+
         <li class="current">Field</li>
       </ul>
     </div>
@@ -502,7 +502,7 @@
 
 
 
-  
+
   <div class="wrap clearfix" id="body-content">
     <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
       <div id="devdoc-nav" class="scroll-pane">
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -748,12 +759,12 @@
 </script>
 
 
-        
+
 
       </div>
       <script type="text/javascript">
        showGoogleRefTree();
-    
+
       </script>
     </div> <!-- end side-nav -->
     <script>
@@ -763,7 +774,7 @@
     </script>
 
 
-     
+
 
 
 
@@ -773,21 +784,21 @@
 
 
 
-  
-   
-  
-  
-  
-  
 
-  
-   
-  
-  
-   
-  
-  
-  
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 <div class="sum-details-links">
@@ -799,22 +810,22 @@
 
 
   <a href="#constants">Constants</a>
-  
+
 
 
   &#124; <a href="#inhconstants">Inherited Constants</a>
-  
+
 
 
   &#124; <a href="#lfields">Fields</a>
-  
+
 
 
 
 
 
   &#124; <a href="#pubmethods">Methods</a>
-  
+
 
 
 
@@ -824,9 +835,9 @@
 
 </div><!-- end sum-details-links -->
 <div class="api-level">
-  
-  
-  
+
+
+
 
 </div>
 </div><!-- end api-info-block -->
@@ -836,31 +847,31 @@
 
 <div id="jd-header">
     public
-     
-    final 
-    
+
+    final
+
     class
 <h1 itemprop="name">Field</h1>
 
 
 
-  
+
     extends Object<br/>
-  
-  
-  
-
-  
-  
-      implements 
-      
-        Parcelable 
-      
-  
-  
 
 
-    
+
+
+
+
+      implements
+
+        Parcelable
+
+
+
+
+
+
 
 
 </div><!-- end header -->
@@ -872,18 +883,18 @@
 
 
     <tr>
-         	
+
         <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
-    
+
 
     <tr>
-        
+
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
-         	
+
         <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.fitness.data.Field</td>
     </tr>
-    
+
 
 </table>
 
@@ -951,31 +962,320 @@
 <table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
 
 
-    
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FORMAT_FLOAT">FORMAT_FLOAT</a></td>
         <td class="jd-descrcol" width="100%">
           Format constant indicating the field holds float values.
-          
-    
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FORMAT_INT32">FORMAT_INT32</a></td>
         <td class="jd-descrcol" width="100%">
           Format constant indicating the field holds integer values.
-          
-    
+
+
 
         </td>
     </tr>
-    
-    
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FORMAT_MAP">FORMAT_MAP</a></td>
+        <td class="jd-descrcol" width="100%">
+          Format constant indicating the field holds a map of string keys to values.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FORMAT_STRING">FORMAT_STRING</a></td>
+        <td class="jd-descrcol" width="100%">
+          Format constant indicating the field holds string values.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_BREAKFAST">MEAL_TYPE_BREAKFAST</a></td>
+        <td class="jd-descrcol" width="100%">
+          Meal type constant representing a breakfast meal.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_DINNER">MEAL_TYPE_DINNER</a></td>
+        <td class="jd-descrcol" width="100%">
+          Meal type constant representing a dinner meal.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_LUNCH">MEAL_TYPE_LUNCH</a></td>
+        <td class="jd-descrcol" width="100%">
+          Meal type constant representing a lunch meal.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_SNACK">MEAL_TYPE_SNACK</a></td>
+        <td class="jd-descrcol" width="100%">
+          Meal type constant representing a snack meal.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#MEAL_TYPE_UNKNOWN">MEAL_TYPE_UNKNOWN</a></td>
+        <td class="jd-descrcol" width="100%">
+          Meal type constant representing the meal type is unknown
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_CALCIUM">NUTRIENT_CALCIUM</a></td>
+        <td class="jd-descrcol" width="100%">
+          Calcium amount in milligrams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_CALORIES">NUTRIENT_CALORIES</a></td>
+        <td class="jd-descrcol" width="100%">
+          Calories in kcal.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_CHOLESTEROL">NUTRIENT_CHOLESTEROL</a></td>
+        <td class="jd-descrcol" width="100%">
+          Cholesterol in milligrams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_DIETARY_FIBER">NUTRIENT_DIETARY_FIBER</a></td>
+        <td class="jd-descrcol" width="100%">
+          Dietary fiber in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_IRON">NUTRIENT_IRON</a></td>
+        <td class="jd-descrcol" width="100%">
+          Iron amount in milligrams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_MONOUNSATURATED_FAT">NUTRIENT_MONOUNSATURATED_FAT</a></td>
+        <td class="jd-descrcol" width="100%">
+          Monounsaturated fat in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_POLYUNSATURATED_FAT">NUTRIENT_POLYUNSATURATED_FAT</a></td>
+        <td class="jd-descrcol" width="100%">
+          Polyunsaturated fat in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_POTASSIUM">NUTRIENT_POTASSIUM</a></td>
+        <td class="jd-descrcol" width="100%">
+          Potassium in milligrams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_PROTEIN">NUTRIENT_PROTEIN</a></td>
+        <td class="jd-descrcol" width="100%">
+          Protein amount in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_SATURATED_FAT">NUTRIENT_SATURATED_FAT</a></td>
+        <td class="jd-descrcol" width="100%">
+          Saturated fat in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_SODIUM">NUTRIENT_SODIUM</a></td>
+        <td class="jd-descrcol" width="100%">
+          Sodium in milligrams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_SUGAR">NUTRIENT_SUGAR</a></td>
+        <td class="jd-descrcol" width="100%">
+          Sugar amount in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_TOTAL_CARBS">NUTRIENT_TOTAL_CARBS</a></td>
+        <td class="jd-descrcol" width="100%">
+          Total carbohydrates in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_TOTAL_FAT">NUTRIENT_TOTAL_FAT</a></td>
+        <td class="jd-descrcol" width="100%">
+          Total fat in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_TRANS_FAT">NUTRIENT_TRANS_FAT</a></td>
+        <td class="jd-descrcol" width="100%">
+          Trans fat in grams.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_VITAMIN_A">NUTRIENT_VITAMIN_A</a></td>
+        <td class="jd-descrcol" width="100%">
+          Vitamin A amount in International Units (IU).
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#NUTRIENT_VITAMIN_C">NUTRIENT_VITAMIN_C</a></td>
+        <td class="jd-descrcol" width="100%">
+          Vitamin C amount in milligrams.
+
+
+
+        </td>
+    </tr>
+
+
 
 </table>
 
@@ -1005,33 +1305,33 @@
   </div>
   <div id="inherited-constants-android.os.Parcelable-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
-    
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">CONTENTS_FILE_DESCRIPTOR</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol">PARCELABLE_WRITE_RETURN_VALUE</td>
         <td class="jd-descrcol" width="100%">
-          
-          
-    
+
+
+
 
         </td>
     </tr>
-    
-    
+
+
 </table>
   </div>
 </div>
@@ -1047,24 +1347,8 @@
 <table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
 
 
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
 
-          </td>
-      </tr>
-      
-    
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1073,14 +1357,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_ACCURACY">FIELD_ACCURACY</a></td>
           <td class="jd-descrcol" width="100%">
             The accuracy of an accompanied value (such as location).
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class="alt-color api apilevel-" >
+
+
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1089,14 +1373,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_ACTIVITY">FIELD_ACTIVITY</a></td>
           <td class="jd-descrcol" width="100%">
             An activity type of <code><a href="/reference/com/google/android/gms/fitness/FitnessActivities.html">FitnessActivities</a></code>, encoded as an integer for efficiency.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class=" api apilevel-" >
+
+
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1105,14 +1389,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_ALTITUDE">FIELD_ALTITUDE</a></td>
           <td class="jd-descrcol" width="100%">
             An altitude of a location represented as a float, in meters above sea level.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class="alt-color api apilevel-" >
+
+
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1121,14 +1405,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_AVERAGE">FIELD_AVERAGE</a></td>
           <td class="jd-descrcol" width="100%">
             An average value.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class=" api apilevel-" >
+
+
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1137,14 +1421,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_BPM">FIELD_BPM</a></td>
           <td class="jd-descrcol" width="100%">
             A heart rate in beats per minute.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class="alt-color api apilevel-" >
+
+
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1153,14 +1437,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_CALORIES">FIELD_CALORIES</a></td>
           <td class="jd-descrcol" width="100%">
             Calories in kcal.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class=" api apilevel-" >
+
+
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1176,7 +1460,7 @@
       </tr>
 
 
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1185,14 +1469,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_CONFIDENCE">FIELD_CONFIDENCE</a></td>
           <td class="jd-descrcol" width="100%">
             The confidence of an accompanied value, specified as a value between 0.0 and 100.0.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class=" api apilevel-" >
+
+
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1201,14 +1485,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_DISTANCE">FIELD_DISTANCE</a></td>
           <td class="jd-descrcol" width="100%">
             A distance in meters.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class="alt-color api apilevel-" >
+
+
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1217,13 +1501,29 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_DURATION">FIELD_DURATION</a></td>
           <td class="jd-descrcol" width="100%">
             A duration in milliseconds.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_FOOD_ITEM">FIELD_FOOD_ITEM</a></td>
+          <td class="jd-descrcol" width="100%">
+            The corresponding food item for a nutrition entry.
+
+
+
+          </td>
+      </tr>
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1233,13 +1533,13 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_HEIGHT">FIELD_HEIGHT</a></td>
           <td class="jd-descrcol" width="100%">
             A height in meters.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1249,13 +1549,13 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_HIGH_LATITUDE">FIELD_HIGH_LATITUDE</a></td>
           <td class="jd-descrcol" width="100%">
             A high latitude of a location bounding box represented as a float, in degrees.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1265,13 +1565,13 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_HIGH_LONGITUDE">FIELD_HIGH_LONGITUDE</a></td>
           <td class="jd-descrcol" width="100%">
             A high longitude of a location bounding box represented as a float, in degrees.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1281,13 +1581,13 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_LATITUDE">FIELD_LATITUDE</a></td>
           <td class="jd-descrcol" width="100%">
             A latitude of a location represented as a float, in degrees.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1297,13 +1597,13 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_LONGITUDE">FIELD_LONGITUDE</a></td>
           <td class="jd-descrcol" width="100%">
             A longitude of a location represented as a float, in degrees.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1313,13 +1613,13 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_LOW_LATITUDE">FIELD_LOW_LATITUDE</a></td>
           <td class="jd-descrcol" width="100%">
             A low latitude of a location bounding box represented as a float, in degrees.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1329,13 +1629,13 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_LOW_LONGITUDE">FIELD_LOW_LONGITUDE</a></td>
           <td class="jd-descrcol" width="100%">
             A low longitude of a location bounding box represented as a float, in degrees.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
@@ -1345,46 +1645,94 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_MAX">FIELD_MAX</a></td>
           <td class="jd-descrcol" width="100%">
             A maximum value.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
       <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
           final
           <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_MEAL_TYPE">FIELD_MEAL_TYPE</a></td>
+          <td class="jd-descrcol" width="100%">
+            Type of meal, represented as the appropriate int constant.
+
+
+
+          </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a></nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_MIN">FIELD_MIN</a></td>
           <td class="jd-descrcol" width="100%">
             A minimum value.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_NUM_SEGMENTS">FIELD_NUM_SEGMENTS</a></td>
+          <td class="jd-descrcol" width="100%">
+            A number of segments.
+
+
+
+          </td>
+      </tr>
+
+
       <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
           final
           <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_NUTRIENTS">FIELD_NUTRIENTS</a></td>
+          <td class="jd-descrcol" width="100%">
+            Nutrients ingested by the user, represented as a float map of nutrient key to quantity.
+
+
+
+          </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a></nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_PERCENTAGE">FIELD_PERCENTAGE</a></td>
           <td class="jd-descrcol" width="100%">
             A percentage value, between 0 and 100.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class=" api apilevel-" >
+
+
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1393,14 +1741,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_REVOLUTIONS">FIELD_REVOLUTIONS</a></td>
           <td class="jd-descrcol" width="100%">
             A count of revolutions.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class="alt-color api apilevel-" >
+
+
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1409,14 +1757,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_RPM">FIELD_RPM</a></td>
           <td class="jd-descrcol" width="100%">
             Revolutions per minute or rate per minute.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class=" api apilevel-" >
+
+
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1425,14 +1773,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_SPEED">FIELD_SPEED</a></td>
           <td class="jd-descrcol" width="100%">
             A speed in meter/sec.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class="alt-color api apilevel-" >
+
+
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1441,14 +1789,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_STEPS">FIELD_STEPS</a></td>
           <td class="jd-descrcol" width="100%">
             A count of steps.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class=" api apilevel-" >
+
+
+      <tr class="alt-color api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1457,14 +1805,14 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_WATTS">FIELD_WATTS</a></td>
           <td class="jd-descrcol" width="100%">
             Power in watts.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
-      <tr class="alt-color api apilevel-" >
+
+
+      <tr class=" api apilevel-" >
           <td class="jd-typecol"><nobr>
           public
           static
@@ -1473,13 +1821,13 @@
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Field.html#FIELD_WEIGHT">FIELD_WEIGHT</a></td>
           <td class="jd-descrcol" width="100%">
             A weight in kilograms.
-            
-    
+
+
 
           </td>
       </tr>
-      
-    
+
+
 
 </table>
 
@@ -1498,129 +1846,129 @@
 
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Field.html#describeContents()">describeContents</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Field.html#equals(java.lang.Object)">equals</a></span>(Object that)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Field.html#getFormat()">getFormat</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Returns the format of the field, as one of the format constant values.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Field.html#getName()">getName</a></span>()</nobr>
-        
+
         <div class="jd-descrdiv">
           Returns the name of the field.
-          
-    
+
+
 
         </div>
-  
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Field.html#hashCode()">hashCode</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Field.html#toString()">toString</a></span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Field.html#writeToParcel(android.os.Parcel, int)">writeToParcel</a></span>(Parcel dest, int flags)</nobr>
-        
+
   </td></tr>
 
 
@@ -1655,182 +2003,182 @@
   </div>
   <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             Object</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">clone</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             boolean</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">equals</span>(Object arg0)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">finalize</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             Class&lt;?&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">getClass</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">hashCode</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notify</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">notifyAll</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">toString</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
-            
-            
+
+
             final
-            
-            
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">wait</span>(long arg0)</nobr>
-        
+
   </td></tr>
 
 
@@ -1857,38 +2205,39 @@
   </div>
   <div id="inherited-methods-android.os.Parcelable-summary" style="display: none;">
     <table class="jd-sumtable-expando">
-    
 
 
-	 
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">describeContents</span>()</nobr>
-        
+
   </td></tr>
 
 
-	 
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
-            
-            
-            
-            
+
+
+
+
+
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad">writeToParcel</span>(Parcel arg0, int arg1)</nobr>
-        
+
   </td></tr>
 
 
@@ -1929,40 +2278,40 @@
 
 <A NAME="FORMAT_FLOAT"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         int
       </span>
         FORMAT_FLOAT
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Format constant indicating the field holds float values. </p></div>
 
-    
+
         <div class="jd-tagdata">
         <span class="jd-tagtitle">Constant Value: </span>
         <span>
-            
+
                 2
                 (0x00000002)
-            
+
         </span>
         </div>
-    
+
     </div>
 </div>
 
@@ -1970,40 +2319,1043 @@
 
 <A NAME="FORMAT_INT32"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         int
       </span>
         FORMAT_INT32
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Format constant indicating the field holds integer values. </p></div>
 
-    
+
         <div class="jd-tagdata">
         <span class="jd-tagtitle">Constant Value: </span>
         <span>
-            
+
                 1
                 (0x00000001)
-            
+
         </span>
         </div>
-    
+
+    </div>
+</div>
+
+
+
+<A NAME="FORMAT_MAP"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        FORMAT_MAP
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Format constant indicating the field holds a map of string keys to values.
+ The valid key space and units for the corresponding value should be documented as
+ part of the data type definition.
+
+ <p>Map values can be set using <code><a href="/reference/com/google/android/gms/fitness/data/Value.html#setKeyValue(java.lang.String, float)">setKeyValue(String, float)</a></code> and read using
+ <code><a href="/reference/com/google/android/gms/fitness/data/Value.html#getKeyValue(java.lang.String)">getKeyValue(String)</a></code>.
+
+ <p>Keys should be kept small whenever possible.  Data streams with large keys and
+ high data frequency may be down sampled.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                4
+                (0x00000004)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="FORMAT_STRING"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        FORMAT_STRING
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Format constant indicating the field holds string values.
+ Strings should be kept small whenever possible.  Data streams with large string
+ values and high data frequency may be down sampled.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                3
+                (0x00000003)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="MEAL_TYPE_BREAKFAST"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        MEAL_TYPE_BREAKFAST
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Meal type constant representing a breakfast meal.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                1
+                (0x00000001)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="MEAL_TYPE_DINNER"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        MEAL_TYPE_DINNER
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Meal type constant representing a dinner meal.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                3
+                (0x00000003)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="MEAL_TYPE_LUNCH"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        MEAL_TYPE_LUNCH
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Meal type constant representing a lunch meal.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                2
+                (0x00000002)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="MEAL_TYPE_SNACK"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        MEAL_TYPE_SNACK
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Meal type constant representing a snack meal.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                4
+                (0x00000004)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="MEAL_TYPE_UNKNOWN"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        MEAL_TYPE_UNKNOWN
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Meal type constant representing the meal type is unknown
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                0
+                (0x00000000)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_CALCIUM"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_CALCIUM
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Calcium amount in milligrams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "calcium"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_CALORIES"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_CALORIES
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Calories in kcal.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "calories"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_CHOLESTEROL"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_CHOLESTEROL
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Cholesterol in milligrams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "cholesterol"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_DIETARY_FIBER"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_DIETARY_FIBER
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Dietary fiber in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "dietary_fiber"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_IRON"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_IRON
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Iron amount in milligrams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "iron"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_MONOUNSATURATED_FAT"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_MONOUNSATURATED_FAT
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Monounsaturated fat in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "fat.monounsaturated"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_POLYUNSATURATED_FAT"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_POLYUNSATURATED_FAT
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Polyunsaturated fat in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "fat.polyunsaturated"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_POTASSIUM"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_POTASSIUM
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Potassium in milligrams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "potassium"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_PROTEIN"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_PROTEIN
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Protein amount in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "protein"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_SATURATED_FAT"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_SATURATED_FAT
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Saturated fat in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "fat.saturated"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_SODIUM"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_SODIUM
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Sodium in milligrams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "sodium"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_SUGAR"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_SUGAR
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Sugar amount in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "sugar"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_TOTAL_CARBS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_TOTAL_CARBS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Total carbohydrates in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "carbs.total"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_TOTAL_FAT"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_TOTAL_FAT
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Total fat in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "fat.total"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_TRANS_FAT"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_TRANS_FAT
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Trans fat in grams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "fat.trans"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_VITAMIN_A"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_VITAMIN_A
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Vitamin A amount in International Units (IU).  For converting from daily percentages, the
+ <a href="http://www.fda.gov/Food/GuidanceRegulation/GuidanceDocumentsRegulatoryInformation/LabelingNutrition/ucm064928.htm">
+ FDA recommended</a> 5000 IUs Daily Value can be used.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "vitamin_a"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="NUTRIENT_VITAMIN_C"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        NUTRIENT_VITAMIN_C
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Vitamin C amount in milligrams.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "vitamin_c"
+
+        </span>
+        </div>
+
     </div>
 </div>
 
@@ -2019,64 +3371,33 @@
 
 
 
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
 <A NAME="FIELD_ACCURACY"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_ACCURACY
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>The accuracy of an accompanied value (such as location).
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2084,33 +3405,33 @@
 
 <A NAME="FIELD_ACTIVITY"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_ACTIVITY
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>An activity type of <code><a href="/reference/com/google/android/gms/fitness/FitnessActivities.html">FitnessActivities</a></code>, encoded as an integer for efficiency.  The
  activity value should be stored using <code><a href="/reference/com/google/android/gms/fitness/data/Value.html#setActivity(java.lang.String)">setActivity(String)</a></code>,
  and read using <code><a href="/reference/com/google/android/gms/fitness/data/Value.html#asActivity()">asActivity()</a></code>
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2118,32 +3439,32 @@
 
 <A NAME="FIELD_ALTITUDE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_ALTITUDE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>An altitude of a location represented as a float, in meters above sea level.
  Some location samples don't have an altitude value so this field might not be set.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2151,31 +3472,31 @@
 
 <A NAME="FIELD_AVERAGE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_AVERAGE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>An average value.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2183,31 +3504,31 @@
 
 <A NAME="FIELD_BPM"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_BPM
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A heart rate in beats per minute.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2215,31 +3536,31 @@
 
 <A NAME="FIELD_CALORIES"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_CALORIES
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Calories in kcal.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2279,31 +3600,31 @@
 
 <A NAME="FIELD_CONFIDENCE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_CONFIDENCE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>The confidence of an accompanied value, specified as a value between 0.0 and 100.0.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2311,31 +3632,31 @@
 
 <A NAME="FIELD_DISTANCE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_DISTANCE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A distance in meters.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2343,31 +3664,63 @@
 
 <A NAME="FIELD_DURATION"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_DURATION
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A duration in milliseconds.
 </p></div>
 
-    
+
+    </div>
+</div>
+
+
+
+<A NAME="FIELD_FOOD_ITEM"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
+      </span>
+        FIELD_FOOD_ITEM
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The corresponding food item for a nutrition entry.
+</p></div>
+
+
     </div>
 </div>
 
@@ -2375,31 +3728,31 @@
 
 <A NAME="FIELD_HEIGHT"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_HEIGHT
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A height in meters.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2407,31 +3760,31 @@
 
 <A NAME="FIELD_HIGH_LATITUDE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_HIGH_LATITUDE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A high latitude of a location bounding box represented as a float, in degrees.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2439,31 +3792,31 @@
 
 <A NAME="FIELD_HIGH_LONGITUDE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_HIGH_LONGITUDE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A high longitude of a location bounding box represented as a float, in degrees.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2471,31 +3824,31 @@
 
 <A NAME="FIELD_LATITUDE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_LATITUDE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A latitude of a location represented as a float, in degrees.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2503,31 +3856,31 @@
 
 <A NAME="FIELD_LONGITUDE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_LONGITUDE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A longitude of a location represented as a float, in degrees.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2535,31 +3888,31 @@
 
 <A NAME="FIELD_LOW_LATITUDE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_LOW_LATITUDE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A low latitude of a location bounding box represented as a float, in degrees.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2567,31 +3920,31 @@
 
 <A NAME="FIELD_LOW_LONGITUDE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_LOW_LONGITUDE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A low longitude of a location bounding box represented as a float, in degrees.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2599,31 +3952,63 @@
 
 <A NAME="FIELD_MAX"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_MAX
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A maximum value.
 </p></div>
 
-    
+
+    </div>
+</div>
+
+
+
+<A NAME="FIELD_MEAL_TYPE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
+      </span>
+        FIELD_MEAL_TYPE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Type of meal, represented as the appropriate int constant.
+</p></div>
+
+
     </div>
 </div>
 
@@ -2631,31 +4016,97 @@
 
 <A NAME="FIELD_MIN"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_MIN
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A minimum value.
 </p></div>
 
-    
+
+    </div>
+</div>
+
+
+
+<A NAME="FIELD_NUM_SEGMENTS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
+      </span>
+        FIELD_NUM_SEGMENTS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>A number of segments.
+</p></div>
+
+
+    </div>
+</div>
+
+
+
+<A NAME="FIELD_NUTRIENTS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
+      </span>
+        FIELD_NUTRIENTS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Nutrients ingested by the user, represented as a float map of nutrient key to quantity.
+ The valid keys of the map are listed in this class using the <code>NUTRIENT_</code> prefix.
+ The documentation for each key describes the unit of its value.
+</p></div>
+
+
     </div>
 </div>
 
@@ -2663,31 +4114,31 @@
 
 <A NAME="FIELD_PERCENTAGE"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_PERCENTAGE
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A percentage value, between 0 and 100.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2695,31 +4146,31 @@
 
 <A NAME="FIELD_REVOLUTIONS"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_REVOLUTIONS
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A count of revolutions.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2727,31 +4178,31 @@
 
 <A NAME="FIELD_RPM"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_RPM
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Revolutions per minute or rate per minute.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2759,31 +4210,31 @@
 
 <A NAME="FIELD_SPEED"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_SPEED
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A speed in meter/sec.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2791,31 +4242,31 @@
 
 <A NAME="FIELD_STEPS"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_STEPS
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A count of steps.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2823,31 +4274,31 @@
 
 <A NAME="FIELD_WATTS"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_WATTS
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Power in watts.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2855,31 +4306,31 @@
 
 <A NAME="FIELD_WEIGHT"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-        static 
-        final 
+        public
+        static
+        final
         <a href="/reference/com/google/android/gms/fitness/data/Field.html">Field</a>
       </span>
         FIELD_WEIGHT
     </h4>
       <div class="api-level">
-        
-        
-  
+
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>A weight in kilograms.
 </p></div>
 
-    
+
     </div>
 </div>
 
@@ -2904,14 +4355,14 @@
 
 <A NAME="describeContents()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         int
       </span>
       <span class="sympad">describeContents</span>
@@ -2919,15 +4370,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -2936,14 +4387,14 @@
 
 <A NAME="equals(java.lang.Object)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         boolean
       </span>
       <span class="sympad">equals</span>
@@ -2951,15 +4402,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -2968,14 +4419,14 @@
 
 <A NAME="getFormat()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         int
       </span>
       <span class="sympad">getFormat</span>
@@ -2983,15 +4434,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Returns the format of the field, as one of the format constant values.
 </p></div>
 
@@ -3001,14 +4452,14 @@
 
 <A NAME="getName()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         String
       </span>
       <span class="sympad">getName</span>
@@ -3016,15 +4467,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p>Returns the name of the field.
 </p></div>
 
@@ -3034,14 +4485,14 @@
 
 <A NAME="hashCode()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         int
       </span>
       <span class="sympad">hashCode</span>
@@ -3049,15 +4500,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -3066,14 +4517,14 @@
 
 <A NAME="toString()"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         String
       </span>
       <span class="sympad">toString</span>
@@ -3081,15 +4532,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -3098,14 +4549,14 @@
 
 <A NAME="writeToParcel(android.os.Parcel, int)"></A>
 
-<div class="jd-details api apilevel-"> 
+<div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
       <span class="normal">
-        public 
-         
-         
-         
-         
+        public
+
+
+
+
         void
       </span>
       <span class="sympad">writeToParcel</span>
@@ -3113,15 +4564,15 @@
     </h4>
       <div class="api-level">
         <div></div>
-        
-  
+
+
 
       </div>
     <div class="jd-details-descr">
-      
-    
 
-      
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
@@ -3139,17 +4590,17 @@
 <A NAME="navbar_top"></A>
 
 <div id="footer" class="wrap" >
-        
+
 
   <div id="copyright">
-    
+
   Except as noted, this content is licensed under <a
-  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>. 
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
   For details and restrictions, see the <a href="/license.html">
   Content License</a>.
   </div>
   <div id="build_info">
-    
+
 <script src="/timestamp.js" type="text/javascript"></script>
 <script>document.write(BUILD_TIMESTAMP)</script>
 
@@ -3157,7 +4608,7 @@
 
 
   <div id="footerlinks">
-    
+
   <p>
     <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
     <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
@@ -3170,7 +4621,7 @@
 
 </div><!-- end doc-content -->
 
-</div> <!-- end body-content --> 
+</div> <!-- end body-content -->
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/Session.Builder.html b/docs/html/reference/com/google/android/gms/fitness/data/Session.Builder.html
index 22f70b5..d90933c 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/Session.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/Session.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1003,6 +1014,29 @@
             <a href="/reference/com/google/android/gms/fitness/data/Session.Builder.html">Session.Builder</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Session.Builder.html#setActiveTime(long, java.util.concurrent.TimeUnit)">setActiveTime</a></span>(long time, TimeUnit timeUnit)</nobr>
+
+        <div class="jd-descrdiv">
+          Sets the active session period duration.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            <a href="/reference/com/google/android/gms/fitness/data/Session.Builder.html">Session.Builder</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Session.Builder.html#setActivity(java.lang.String)">setActivity</a></span>(String activity)</nobr>
         
         <div class="jd-descrdiv">
@@ -1016,7 +1050,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1039,7 +1073,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1062,7 +1096,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1085,7 +1119,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1108,7 +1142,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1471,6 +1505,39 @@
 </div>
 
 
+<A NAME="setActiveTime(long, java.util.concurrent.TimeUnit)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        <a href="/reference/com/google/android/gms/fitness/data/Session.Builder.html">Session.Builder</a>
+      </span>
+      <span class="sympad">setActiveTime</span>
+      <span class="normal">(long time, TimeUnit timeUnit)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Sets the active session period duration.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="setActivity(java.lang.String)"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/Session.html b/docs/html/reference/com/google/android/gms/fitness/data/Session.html
index e2366e8..abe9fa2 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/Session.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/Session.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -809,9 +820,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
 
@@ -1101,31 +1109,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Session.html">Session</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Session.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1207,6 +1190,29 @@
             
             
             
+            long</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Session.html#getActiveTime(java.util.concurrent.TimeUnit)">getActiveTime</a></span>(TimeUnit timeUnit)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the active time period of the session.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1223,7 +1229,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1246,7 +1252,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1269,7 +1275,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1292,7 +1298,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1315,7 +1321,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1338,7 +1344,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1361,7 +1367,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1384,6 +1390,29 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Session.html#hasActiveTime()">hasActiveTime</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns whether the session active time is set.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -1851,44 +1880,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Session.html">Session</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
@@ -2011,6 +2002,50 @@
 </div>
 
 
+<A NAME="getActiveTime(java.util.concurrent.TimeUnit)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        long
+      </span>
+      <span class="sympad">getActiveTime</span>
+      <span class="normal">(TimeUnit timeUnit)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the active time period of the session.
+
+ <p>Make sure to use <code><a href="/reference/com/google/android/gms/fitness/data/Session.html#hasActiveTime()">hasActiveTime()</a></code> before using this method.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalStateException</td>
+            <td><code><a href="/reference/com/google/android/gms/fitness/data/Session.html#hasActiveTime()">hasActiveTime()</a></code> returns <code>false</code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="getActivity()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -2291,6 +2326,39 @@
 </div>
 
 
+<A NAME="hasActiveTime()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">hasActiveTime</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns whether the session active time is set.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="hashCode()"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/Subscription.html b/docs/html/reference/com/google/android/gms/fitness/data/Subscription.html
index f61d41e..4b7581e 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/Subscription.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/Subscription.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -803,9 +814,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
 
@@ -999,31 +1007,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Subscription.html">Subscription</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Subscription.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1480,44 +1463,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Subscription.html">Subscription</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/Value.html b/docs/html/reference/com/google/android/gms/fitness/data/Value.html
index 4a79a09..600e4d2 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/Value.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/Value.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -803,9 +814,6 @@
   
 
 
-  &#124; <a href="#lfields">Fields</a>
-  
-
 
 
 
@@ -1005,31 +1013,6 @@
 
 
 
-<!-- =========== FIELD SUMMARY =========== -->
-<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
-
-
-    
-      <tr class="alt-color api apilevel-" >
-          <td class="jd-typecol"><nobr>
-          public
-          static
-          final
-          Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Value.html">Value</a>&gt;</nobr></td>
-          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/data/Value.html#CREATOR">CREATOR</a></td>
-          <td class="jd-descrcol" width="100%">
-            
-            
-    
-
-          </td>
-      </tr>
-      
-    
-
-</table>
-
-
 
 
 
@@ -1121,6 +1104,52 @@
             
             
             
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Value.html#asString()">asString</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the value of this object as a string.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Value.html#clearKey(java.lang.String)">clearKey</a></span>(String key)</nobr>
+
+        <div class="jd-descrdiv">
+          Clears any value currently associated with the given <code>key</code> in the map.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1177,6 +1206,29 @@
             
             
             
+            Float</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Value.html#getKeyValue(java.lang.String)">getKeyValue</a></span>(String key)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the value of the given key in the map as a float.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1186,7 +1238,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1209,7 +1261,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1232,7 +1284,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1255,7 +1307,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1278,6 +1330,29 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Value.html#setKeyValue(java.lang.String, float)">setKeyValue</a></span>(String key, float value)</nobr>
+
+        <div class="jd-descrdiv">
+          Updates the value for a given key in the map to the given float value.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -1285,6 +1360,29 @@
             
             
             
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/data/Value.html#setString(java.lang.String)">setString</a></span>(String value)</nobr>
+
+        <div class="jd-descrdiv">
+          Updates this value object to represent a string value.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             String</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1294,7 +1392,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1609,44 +1707,6 @@
 <!-- Fields -->
 
 
-<!-- ========= FIELD DETAIL ======== -->
-<h2>Fields</h2>
-
-
-
-
-<A NAME="CREATOR"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-        static 
-        final 
-        Creator&lt;<a href="/reference/com/google/android/gms/fitness/data/Value.html">Value</a>&gt;
-      </span>
-        CREATOR
-    </h4>
-      <div class="api-level">
-        
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    
-    </div>
-</div>
-
-
-
-
 <!-- Public ctors -->
 
 
@@ -1795,6 +1855,91 @@
 </div>
 
 
+<A NAME="asString()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">asString</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the value of this object as a string.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalStateException</td>
+            <td>if the object does not hold a string value
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="clearKey(java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">clearKey</span>
+      <span class="normal">(String key)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Clears any value currently associated with the given <code>key</code> in the map. This method can
+ be used only on <code><a href="/reference/com/google/android/gms/fitness/data/Field.html#FORMAT_MAP">map</a></code> values.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>key</td>
+          <td>the key we're modifying
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="describeContents()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1897,6 +2042,52 @@
 </div>
 
 
+<A NAME="getKeyValue(java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        Float
+      </span>
+      <span class="sympad">getKeyValue</span>
+      <span class="normal">(String key)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the value of the given key in the map as a float.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li><code>null</code> if the key doesn't have a set value in the map
+</li></ul>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalStateException</td>
+            <td>if the object does not hold a map value</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="hashCode()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -2091,6 +2282,103 @@
 </div>
 
 
+<A NAME="setKeyValue(java.lang.String, float)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">setKeyValue</span>
+      <span class="normal">(String key, float value)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Updates the value for a given key in the map to the given float value.  Any previous
+ values associated with the key are erased.  This method can be used only on
+ <code><a href="/reference/com/google/android/gms/fitness/data/Field.html#FORMAT_MAP">map</a></code> values.
+
+ <p>Key values should be kept small whenever possible.  This is specially important for high
+ frequency streams, since large keys may result in down sampling.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>key</td>
+          <td>the key we're modifying</td>
+        </tr>
+        <tr>
+          <th>value</td>
+          <td>the new value for the given key
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="setString(java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">setString</span>
+      <span class="normal">(String value)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Updates this value object to represent a string value.  Any previous values associated
+ with this object are erased.
+
+ <p>String values should be kept small whenever possible.  This is specially important for
+ high frequency streams, since large values may result in down sampling.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>value</td>
+          <td>the new value that this objects holds
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="toString()"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/fitness/data/package-summary.html b/docs/html/reference/com/google/android/gms/fitness/data/package-summary.html
index 39eae35..b1ecc4a 100644
--- a/docs/html/reference/com/google/android/gms/fitness/data/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/fitness/data/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/package-summary.html b/docs/html/reference/com/google/android/gms/fitness/package-summary.html
index cfee1eb..82368a9 100644
--- a/docs/html/reference/com/google/android/gms/fitness/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/fitness/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/BleScanCallback.html b/docs/html/reference/com/google/android/gms/fitness/request/BleScanCallback.html
index d51b0ef..73f59de 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/BleScanCallback.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/BleScanCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/DataDeleteRequest.Builder.html b/docs/html/reference/com/google/android/gms/fitness/request/DataDeleteRequest.Builder.html
index f8fde92..54790db 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/DataDeleteRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/DataDeleteRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/DataDeleteRequest.html b/docs/html/reference/com/google/android/gms/fitness/request/DataDeleteRequest.html
index 4046552..c179aab 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/DataDeleteRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/DataDeleteRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html b/docs/html/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html
index a8fb6a2..53ef2cb 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1627,7 +1638,10 @@
  detailed data source or aggregate data source should be specified in the request
  <p>
  This method can be used instead of <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#aggregate(com.google.android.gms.fitness.data.DataSource, com.google.android.gms.fitness.data.DataType)">aggregate(DataSource, DataType)</a></code>
- when the application is not interested in a specific data source.</p></div>
+ when the application is not interested in a specific data source.
+ <p>
+ The resulting aggregated data can be queried via
+ <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getBuckets()">getBuckets()</a></code> and <code><a href="/reference/com/google/android/gms/fitness/data/Bucket.html#getDataSet(com.google.android.gms.fitness.data.DataType)">getDataSet(DataType)</a></code>.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -1696,9 +1710,12 @@
  aggregate data types for a given input data type
  see <code><a href="/reference/com/google/android/gms/fitness/data/DataType.html#getAggregatesForInput(com.google.android.gms.fitness.data.DataType)">getAggregatesForInput(DataType)</a></code>.
  <p>
- Aggregation should be requested in conjunction with one of the bucketing strategy: by
+ Aggregation should be requested in conjunction with one of the bucketing strategies: by
  time, session or activity.  At least one valid detailed data source or aggregate data
- source should be specified in the request.</p></div>
+ source should be specified in the request.
+ <p>
+ The resulting aggregated data can be queried via
+ <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getBuckets()">getBuckets()</a></code> and <code><a href="/reference/com/google/android/gms/fitness/data/Bucket.html#getDataSet(com.google.android.gms.fitness.data.DataType)">getDataSet(DataType)</a></code>.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -2241,7 +2258,10 @@
  aggregate data source should be specified in the request.
  <p>
  This method can be used instead of <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#read(com.google.android.gms.fitness.data.DataSource)">read(DataSource)</a></code> when the
- application is not interested in a specific data source.</p></div>
+ application is not interested in a specific data source.
+ <p>
+ The resulting unaggregated data can be queried via
+ <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getDataSet(com.google.android.gms.fitness.data.DataType)">getDataSet(DataType)</a></code>.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
@@ -2297,7 +2317,10 @@
 
       
   <div class="jd-tagdata jd-tagdescr"><p>Adds a specific data source we want to read data from to this request.  At least one
- valid detailed data source or aggregate data source should be specified in the request.</p></div>
+ valid detailed data source or aggregate data source should be specified in the request.
+ <p>
+ The resulting unaggregated data can be queried via
+ <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getDataSet(com.google.android.gms.fitness.data.DataSource)">getDataSet(DataSource)</a></code>.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
       <table class="jd-tagtable">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/DataReadRequest.html b/docs/html/reference/com/google/android/gms/fitness/request/DataReadRequest.html
index 2599376..a2fb2cf 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/DataReadRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/DataReadRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/DataSourcesRequest.Builder.html b/docs/html/reference/com/google/android/gms/fitness/request/DataSourcesRequest.Builder.html
index 7a011f4..d9715f2 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/DataSourcesRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/DataSourcesRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/DataSourcesRequest.html b/docs/html/reference/com/google/android/gms/fitness/request/DataSourcesRequest.html
index 4e8202a..eeb9a52 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/DataSourcesRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/DataSourcesRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.Builder.html b/docs/html/reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.Builder.html
index a522068..24f2109 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.html b/docs/html/reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.html
index 2114042..6719eb8 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/OnDataPointListener.html b/docs/html/reference/com/google/android/gms/fitness/request/OnDataPointListener.html
index a96981f..d73e5cd 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/OnDataPointListener.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/OnDataPointListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/SensorRequest.Builder.html b/docs/html/reference/com/google/android/gms/fitness/request/SensorRequest.Builder.html
index bd0367e..f83d383 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/SensorRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/SensorRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/SensorRequest.html b/docs/html/reference/com/google/android/gms/fitness/request/SensorRequest.html
index 16d5938..9aed66d 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/SensorRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/SensorRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/SessionInsertRequest.Builder.html b/docs/html/reference/com/google/android/gms/fitness/request/SessionInsertRequest.Builder.html
index 21b9f2f..6130684 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/SessionInsertRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/SessionInsertRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/SessionInsertRequest.html b/docs/html/reference/com/google/android/gms/fitness/request/SessionInsertRequest.html
index 8d8a4a9..a9899f3 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/SessionInsertRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/SessionInsertRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/SessionReadRequest.Builder.html b/docs/html/reference/com/google/android/gms/fitness/request/SessionReadRequest.Builder.html
index c8824f1..a8fe966 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/SessionReadRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/SessionReadRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/SessionReadRequest.html b/docs/html/reference/com/google/android/gms/fitness/request/SessionReadRequest.html
index 6af4342..13d5530 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/SessionReadRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/SessionReadRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/StartBleScanRequest.Builder.html b/docs/html/reference/com/google/android/gms/fitness/request/StartBleScanRequest.Builder.html
index dd23349..aa0571c 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/StartBleScanRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/StartBleScanRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/StartBleScanRequest.html b/docs/html/reference/com/google/android/gms/fitness/request/StartBleScanRequest.html
index 1f6ca73..7cf8c31 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/StartBleScanRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/StartBleScanRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/request/package-summary.html b/docs/html/reference/com/google/android/gms/fitness/request/package-summary.html
index 8853d31..3274e21 100644
--- a/docs/html/reference/com/google/android/gms/fitness/request/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/fitness/request/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/BleDevicesResult.html b/docs/html/reference/com/google/android/gms/fitness/result/BleDevicesResult.html
index a42aaf0..d45a942 100644
--- a/docs/html/reference/com/google/android/gms/fitness/result/BleDevicesResult.html
+++ b/docs/html/reference/com/google/android/gms/fitness/result/BleDevicesResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1148,6 +1159,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/BleDevicesResult.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1448,6 +1466,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1759,7 +1784,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/DailyTotalResult.html b/docs/html/reference/com/google/android/gms/fitness/result/DailyTotalResult.html
new file mode 100644
index 0000000..fc400f3
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/fitness/result/DailyTotalResult.html
@@ -0,0 +1,1716 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>DailyTotalResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">DailyTotalResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+  <a href="#inhconstants">Inherited Constants</a>
+
+
+
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    class
+<h1 itemprop="name">DailyTotalResult</h1>
+
+
+
+
+    extends Object<br/>
+
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+        Parcelable
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.fitness.result.DailyTotalResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result of <code><a href="/reference/com/google/android/gms/fitness/HistoryApi.html#readDailyTotal(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.data.DataType)">readDailyTotal(GoogleApiClient, DataType)</a></code>.  Use <code><a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html#getTotal()">getTotal()</a></code>
+ to access the data point containing the daily total for the requested data type.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="inhconstants" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Constants</div></th></tr>
+
+
+
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-constants-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>From interface
+android.os.Parcelable
+<div id="inherited-constants-android.os.Parcelable">
+  <div id="inherited-constants-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-constants-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">CONTENTS_FILE_DESCRIPTOR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">PARCELABLE_WRITE_RETURN_VALUE</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html#equals(java.lang.Object)">equals</a></span>(Object that)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            <a href="/reference/com/google/android/gms/fitness/data/DataSet.html">DataSet</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html#getTotal()">getTotal</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the resulting data set containing the daily total for the requested data type.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html#hashCode()">hashCode</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html#toString()">toString</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.os.Parcelable
+
+<div id="inherited-methods-android.os.Parcelable">
+  <div id="inherited-methods-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">describeContents</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">writeToParcel</span>(Parcel arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="equals(java.lang.Object)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">equals</span>
+      <span class="normal">(Object that)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getStatus()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>
+      </span>
+      <span class="sympad">getStatus</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getTotal()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        <a href="/reference/com/google/android/gms/fitness/data/DataSet.html">DataSet</a>
+      </span>
+      <span class="sympad">getTotal</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the resulting data set containing the daily total for the requested data type.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>the resulting data set, empty if there was no data for the data type,
+ and <code>null</code> if the request failed.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="hashCode()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">hashCode</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="toString()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">toString</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/DataReadResult.html b/docs/html/reference/com/google/android/gms/fitness/result/DataReadResult.html
index bd35465..7f05e0f 100644
--- a/docs/html/reference/com/google/android/gms/fitness/result/DataReadResult.html
+++ b/docs/html/reference/com/google/android/gms/fitness/result/DataReadResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1207,6 +1218,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1507,6 +1525,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1744,10 +1769,18 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Returns all of the <code><a href="/reference/com/google/android/gms/fitness/data/Bucket.html">Buckets</a></code> with aggregated data.  There will be exactly one
- data set for each aggregated data source requested in the <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.html">DataReadRequest</a></code> per
- bucket.  Returns an empty list if the read request failed.
-</p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns all of the <code><a href="/reference/com/google/android/gms/fitness/data/Bucket.html">Buckets</a></code> with aggregated data.  In each bucket,
+ there will be exactly one data set for each aggregated data source requested in the
+ <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.html">DataReadRequest</a></code>.
+ <p>
+ Buckets only contain aggregated data requested via
+ <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#aggregate(com.google.android.gms.fitness.data.DataSource, com.google.android.gms.fitness.data.DataType)">aggregate(DataSource, DataType)</a></code>.  Non-aggregated data can
+ be accessed via <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getDataSet(com.google.android.gms.fitness.data.DataType)">getDataSet(DataType)</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>an empty list if the read request failed.
+</li></ul>
+  </div>
 
     </div>
 </div>
@@ -1779,7 +1812,11 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Returns the resulting data set for the given <code>dataSource</code>.</p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the resulting data set for the given <code>dataSource</code>.
+ <p>
+ This method returns only non-aggregated data sets that were queried via
+ <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#read(com.google.android.gms.fitness.data.DataSource)">read(DataSource)</a></code>.  Aggregated data can be queried via
+ <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getBuckets()">getBuckets()</a></code>.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>a data set for the given data source, empty if no data was found.</li></ul>
@@ -1827,7 +1864,12 @@
       
   <div class="jd-tagdata jd-tagdescr"><p>Returns the resulting data set for the given <code>dataType</code>.  If more than one data source
  for the given data type was requested, this method will return the data for an arbitrary
- one.  Use <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getDataSet(com.google.android.gms.fitness.data.DataSource)">getDataSet(DataSource)</a></code> to read each specific data source.</p></div>
+ one.  Use <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getDataSet(com.google.android.gms.fitness.data.DataSource)">getDataSet(DataSource)</a></code> to read each specific data source.
+ <p>
+ This method returns only non-aggregated data sets that were queried via
+ <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#read(com.google.android.gms.fitness.data.DataType)">read(DataType)</a></code> or
+ <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#read(com.google.android.gms.fitness.data.DataSource)">read(DataSource)</a></code>.
+ Aggregated data can be queried via <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getBuckets()">getBuckets()</a></code>.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>a data set for the given data type, empty if no data was found.</li></ul>
@@ -1875,6 +1917,11 @@
       
   <div class="jd-tagdata jd-tagdescr"><p>Returns all of the data sets in the result.  There will be exactly one data set for each
  data source requested in the <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.html">DataReadRequest</a></code>.
+ <p>
+ This method returns only non-aggregated data sets that were queried via
+ <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#read(com.google.android.gms.fitness.data.DataType)">read(DataType)</a></code> or
+ <code><a href="/reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html#read(com.google.android.gms.fitness.data.DataSource)">read(DataSource)</a></code>.
+ Aggregated data can be queried via <code><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html#getBuckets()">getBuckets()</a></code>.
 </p></div>
 
     </div>
@@ -1907,7 +1954,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/DataSourcesResult.html b/docs/html/reference/com/google/android/gms/fitness/result/DataSourcesResult.html
index 6b1ed0e..85069ba 100644
--- a/docs/html/reference/com/google/android/gms/fitness/result/DataSourcesResult.html
+++ b/docs/html/reference/com/google/android/gms/fitness/result/DataSourcesResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1148,6 +1159,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/DataSourcesResult.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1448,6 +1466,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1759,7 +1784,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/DataTypeResult.html b/docs/html/reference/com/google/android/gms/fitness/result/DataTypeResult.html
index 9e4d23e..c6df1ec 100644
--- a/docs/html/reference/com/google/android/gms/fitness/result/DataTypeResult.html
+++ b/docs/html/reference/com/google/android/gms/fitness/result/DataTypeResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1128,6 +1139,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/DataTypeResult.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1428,6 +1446,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1698,7 +1723,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html b/docs/html/reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html
index 8e29aa9..f1254f2 100644
--- a/docs/html/reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html
+++ b/docs/html/reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1101,6 +1112,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1447,6 +1465,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1684,7 +1709,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/SessionReadResult.html b/docs/html/reference/com/google/android/gms/fitness/result/SessionReadResult.html
index 2bc638b..ba0dcce 100644
--- a/docs/html/reference/com/google/android/gms/fitness/result/SessionReadResult.html
+++ b/docs/html/reference/com/google/android/gms/fitness/result/SessionReadResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1178,6 +1189,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/fitness/result/SessionReadResult.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1478,6 +1496,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1849,7 +1874,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/SessionStopResult.html b/docs/html/reference/com/google/android/gms/fitness/result/SessionStopResult.html
index b2f591c..9a0eacf 100644
--- a/docs/html/reference/com/google/android/gms/fitness/result/SessionStopResult.html
+++ b/docs/html/reference/com/google/android/gms/fitness/result/SessionStopResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1430,6 +1441,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/fitness/result/package-summary.html b/docs/html/reference/com/google/android/gms/fitness/result/package-summary.html
index 80cb483..9cdcbb2 100644
--- a/docs/html/reference/com/google/android/gms/fitness/result/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/fitness/result/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -823,6 +834,17 @@
       
     
       <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/DailyTotalResult.html">DailyTotalResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/fitness/HistoryApi.html#readDailyTotal(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.data.DataType)">readDailyTotal(GoogleApiClient, DataType)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/DataReadResult.html">DataReadResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of <code><a href="/reference/com/google/android/gms/fitness/HistoryApi.html#readData(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.DataReadRequest)">readData(GoogleApiClient, DataReadRequest)</a></code>.&nbsp;
@@ -833,7 +855,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/DataSourcesResult.html">DataSourcesResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of <code><a href="/reference/com/google/android/gms/fitness/SensorsApi.html#findDataSources(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.DataSourcesRequest)">findDataSources(GoogleApiClient, DataSourcesRequest)</a></code>.&nbsp;
@@ -844,7 +866,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/DataTypeResult.html">DataTypeResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of
@@ -856,7 +878,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html">ListSubscriptionsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of <code><a href="/reference/com/google/android/gms/fitness/RecordingApi.html#listSubscriptions(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.data.DataType)">listSubscriptions(GoogleApiClient, DataType)</a></code>.&nbsp;
@@ -867,7 +889,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/SessionReadResult.html">SessionReadResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of <code><a href="/reference/com/google/android/gms/fitness/SessionsApi.html#readSession(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.fitness.request.SessionReadRequest)">readSession(GoogleApiClient, SessionReadRequest)</a></code>.&nbsp;
@@ -878,7 +900,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/fitness/result/SessionStopResult.html">SessionStopResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of <code><a href="/reference/com/google/android/gms/fitness/SessionsApi.html#stopSession(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">stopSession(GoogleApiClient, String)</a></code>.&nbsp;
diff --git a/docs/html/reference/com/google/android/gms/fitness/service/FitnessSensorService.html b/docs/html/reference/com/google/android/gms/fitness/service/FitnessSensorService.html
index 3625240..9302b9d 100644
--- a/docs/html/reference/com/google/android/gms/fitness/service/FitnessSensorService.html
+++ b/docs/html/reference/com/google/android/gms/fitness/service/FitnessSensorService.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/service/FitnessSensorServiceRequest.html b/docs/html/reference/com/google/android/gms/fitness/service/FitnessSensorServiceRequest.html
index 576e588..f40a50f 100644
--- a/docs/html/reference/com/google/android/gms/fitness/service/FitnessSensorServiceRequest.html
+++ b/docs/html/reference/com/google/android/gms/fitness/service/FitnessSensorServiceRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/service/SensorEventDispatcher.html b/docs/html/reference/com/google/android/gms/fitness/service/SensorEventDispatcher.html
index 546db41..f467c16 100644
--- a/docs/html/reference/com/google/android/gms/fitness/service/SensorEventDispatcher.html
+++ b/docs/html/reference/com/google/android/gms/fitness/service/SensorEventDispatcher.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/fitness/service/package-summary.html b/docs/html/reference/com/google/android/gms/fitness/service/package-summary.html
index 5332766..7fb0c0a 100644
--- a/docs/html/reference/com/google/android/gms/fitness/service/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/fitness/service/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/Game.html b/docs/html/reference/com/google/android/gms/games/Game.html
index bd1cb0d..fe75569 100644
--- a/docs/html/reference/com/google/android/gms/games/Game.html
+++ b/docs/html/reference/com/google/android/gms/games/Game.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/GameBuffer.html b/docs/html/reference/com/google/android/gms/games/GameBuffer.html
index 00a6a3a..3c4d5ba 100644
--- a/docs/html/reference/com/google/android/gms/games/GameBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/GameBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/GameEntity.html b/docs/html/reference/com/google/android/gms/games/GameEntity.html
index f70eda3..7440188 100644
--- a/docs/html/reference/com/google/android/gms/games/GameEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/GameEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/Games.GamesOptions.Builder.html b/docs/html/reference/com/google/android/gms/games/Games.GamesOptions.Builder.html
index 279e7a8..39e6184 100644
--- a/docs/html/reference/com/google/android/gms/games/Games.GamesOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/games/Games.GamesOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/Games.GamesOptions.html b/docs/html/reference/com/google/android/gms/games/Games.GamesOptions.html
index 7b130cd..14c7b90 100644
--- a/docs/html/reference/com/google/android/gms/games/Games.GamesOptions.html
+++ b/docs/html/reference/com/google/android/gms/games/Games.GamesOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/Games.html b/docs/html/reference/com/google/android/gms/games/Games.html
index ac19683..8a93168 100644
--- a/docs/html/reference/com/google/android/gms/games/Games.html
+++ b/docs/html/reference/com/google/android/gms/games/Games.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html b/docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html
index 73ce7fa..f5f14b3 100644
--- a/docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html
+++ b/docs/html/reference/com/google/android/gms/games/GamesActivityResultCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/GamesMetadata.LoadGamesResult.html b/docs/html/reference/com/google/android/gms/games/GamesMetadata.LoadGamesResult.html
index 241f635..4b1541d3 100644
--- a/docs/html/reference/com/google/android/gms/games/GamesMetadata.LoadGamesResult.html
+++ b/docs/html/reference/com/google/android/gms/games/GamesMetadata.LoadGamesResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1014,6 +1025,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/GamesMetadata.html b/docs/html/reference/com/google/android/gms/games/GamesMetadata.html
index 858e26d..8598032 100644
--- a/docs/html/reference/com/google/android/gms/games/GamesMetadata.html
+++ b/docs/html/reference/com/google/android/gms/games/GamesMetadata.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/GamesStatusCodes.html b/docs/html/reference/com/google/android/gms/games/GamesStatusCodes.html
index 2a8b616..46d7918 100644
--- a/docs/html/reference/com/google/android/gms/games/GamesStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/games/GamesStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1404,6 +1415,18 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_REQUEST_TOO_MANY_RECIPIENTS">STATUS_REQUEST_TOO_MANY_RECIPIENTS</a></td>
+        <td class="jd-descrcol" width="100%">
+          Sending request failed due to too many recipients.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_REQUEST_UPDATE_PARTIAL_SUCCESS">STATUS_REQUEST_UPDATE_PARTIAL_SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
           Some of the batched network operations succeeded.
@@ -1414,7 +1437,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_REQUEST_UPDATE_TOTAL_FAILURE">STATUS_REQUEST_UPDATE_TOTAL_FAILURE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1426,7 +1449,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_SNAPSHOT_COMMIT_FAILED">STATUS_SNAPSHOT_COMMIT_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1438,7 +1461,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_SNAPSHOT_CONFLICT">STATUS_SNAPSHOT_CONFLICT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1450,7 +1473,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_SNAPSHOT_CONFLICT_MISSING">STATUS_SNAPSHOT_CONFLICT_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1462,7 +1485,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_SNAPSHOT_CONTENTS_UNAVAILABLE">STATUS_SNAPSHOT_CONTENTS_UNAVAILABLE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1474,7 +1497,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_SNAPSHOT_CREATION_FAILED">STATUS_SNAPSHOT_CREATION_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1486,7 +1509,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_SNAPSHOT_FOLDER_UNAVAILABLE">STATUS_SNAPSHOT_FOLDER_UNAVAILABLE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1498,7 +1521,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_SNAPSHOT_NOT_FOUND">STATUS_SNAPSHOT_NOT_FOUND</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1510,7 +1533,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/GamesStatusCodes.html#STATUS_TIMEOUT">STATUS_TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -3479,6 +3502,48 @@
 
 
 
+<A NAME="STATUS_REQUEST_TOO_MANY_RECIPIENTS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        STATUS_REQUEST_TOO_MANY_RECIPIENTS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Sending request failed due to too many recipients.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                2002
+                (0x000007d2)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="STATUS_REQUEST_UPDATE_PARTIAL_SUCCESS"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/games/Notifications.html b/docs/html/reference/com/google/android/gms/games/Notifications.html
index 251f8c2..b2919ba 100644
--- a/docs/html/reference/com/google/android/gms/games/Notifications.html
+++ b/docs/html/reference/com/google/android/gms/games/Notifications.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/PageDirection.html b/docs/html/reference/com/google/android/gms/games/PageDirection.html
index 7263272..a1fe321 100644
--- a/docs/html/reference/com/google/android/gms/games/PageDirection.html
+++ b/docs/html/reference/com/google/android/gms/games/PageDirection.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/Player.html b/docs/html/reference/com/google/android/gms/games/Player.html
index f56b687..1956e2f 100644
--- a/docs/html/reference/com/google/android/gms/games/Player.html
+++ b/docs/html/reference/com/google/android/gms/games/Player.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/PlayerBuffer.html b/docs/html/reference/com/google/android/gms/games/PlayerBuffer.html
index 58ed67c..b3e01b7 100644
--- a/docs/html/reference/com/google/android/gms/games/PlayerBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/PlayerBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/PlayerEntity.html b/docs/html/reference/com/google/android/gms/games/PlayerEntity.html
index 40e2357..9a87442 100644
--- a/docs/html/reference/com/google/android/gms/games/PlayerEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/PlayerEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/PlayerLevel.html b/docs/html/reference/com/google/android/gms/games/PlayerLevel.html
index 441a09c..f366ac7 100644
--- a/docs/html/reference/com/google/android/gms/games/PlayerLevel.html
+++ b/docs/html/reference/com/google/android/gms/games/PlayerLevel.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/PlayerLevelInfo.html b/docs/html/reference/com/google/android/gms/games/PlayerLevelInfo.html
index fd7a8e0..0fba878 100644
--- a/docs/html/reference/com/google/android/gms/games/PlayerLevelInfo.html
+++ b/docs/html/reference/com/google/android/gms/games/PlayerLevelInfo.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/Players.LoadPlayersResult.html b/docs/html/reference/com/google/android/gms/games/Players.LoadPlayersResult.html
index e0a2b85..943b4cb 100644
--- a/docs/html/reference/com/google/android/gms/games/Players.LoadPlayersResult.html
+++ b/docs/html/reference/com/google/android/gms/games/Players.LoadPlayersResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1013,6 +1024,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/Players.LoadProfileSettingsResult.html b/docs/html/reference/com/google/android/gms/games/Players.LoadProfileSettingsResult.html
index 948a288..e2ba1f0 100644
--- a/docs/html/reference/com/google/android/gms/games/Players.LoadProfileSettingsResult.html
+++ b/docs/html/reference/com/google/android/gms/games/Players.LoadProfileSettingsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1016,6 +1027,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/Players.html b/docs/html/reference/com/google/android/gms/games/Players.html
index 72970c0..97a8c4f 100644
--- a/docs/html/reference/com/google/android/gms/games/Players.html
+++ b/docs/html/reference/com/google/android/gms/games/Players.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/Achievement.html b/docs/html/reference/com/google/android/gms/games/achievement/Achievement.html
index b617235..c1fe728 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/Achievement.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/Achievement.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html b/docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html
index 268def0..4118d7a 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/AchievementBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/AchievementEntity.html b/docs/html/reference/com/google/android/gms/games/achievement/AchievementEntity.html
index c7f16b5..7cd8e99 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/AchievementEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/AchievementEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/Achievements.LoadAchievementsResult.html b/docs/html/reference/com/google/android/gms/games/achievement/Achievements.LoadAchievementsResult.html
index 50e60ff..d5dd9e8 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/Achievements.LoadAchievementsResult.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/Achievements.LoadAchievementsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1013,6 +1024,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/Achievements.UpdateAchievementResult.html b/docs/html/reference/com/google/android/gms/games/achievement/Achievements.UpdateAchievementResult.html
index 4be08a5..db535ab 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/Achievements.UpdateAchievementResult.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/Achievements.UpdateAchievementResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1018,6 +1029,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/Achievements.html b/docs/html/reference/com/google/android/gms/games/achievement/Achievements.html
index 82727f8..6484f3b 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/Achievements.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/Achievements.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/achievement/package-summary.html b/docs/html/reference/com/google/android/gms/games/achievement/package-summary.html
index 674e370..5523e92 100644
--- a/docs/html/reference/com/google/android/gms/games/achievement/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/achievement/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/event/Event.html b/docs/html/reference/com/google/android/gms/games/event/Event.html
index 790de8d..41367ba 100644
--- a/docs/html/reference/com/google/android/gms/games/event/Event.html
+++ b/docs/html/reference/com/google/android/gms/games/event/Event.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/event/EventBuffer.html b/docs/html/reference/com/google/android/gms/games/event/EventBuffer.html
index 7f3736e..a484566 100644
--- a/docs/html/reference/com/google/android/gms/games/event/EventBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/event/EventBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/event/EventEntity.html b/docs/html/reference/com/google/android/gms/games/event/EventEntity.html
index c4b65cd..707964a 100644
--- a/docs/html/reference/com/google/android/gms/games/event/EventEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/event/EventEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/event/Events.LoadEventsResult.html b/docs/html/reference/com/google/android/gms/games/event/Events.LoadEventsResult.html
index 93969a0..0b59479 100644
--- a/docs/html/reference/com/google/android/gms/games/event/Events.LoadEventsResult.html
+++ b/docs/html/reference/com/google/android/gms/games/event/Events.LoadEventsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1013,6 +1024,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/event/Events.html b/docs/html/reference/com/google/android/gms/games/event/Events.html
index 29eeb60..73d0be7 100644
--- a/docs/html/reference/com/google/android/gms/games/event/Events.html
+++ b/docs/html/reference/com/google/android/gms/games/event/Events.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/event/package-summary.html b/docs/html/reference/com/google/android/gms/games/event/package-summary.html
index 97d0937..07bb9fd 100644
--- a/docs/html/reference/com/google/android/gms/games/event/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/event/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html
index 64bd8ab..668d2cd 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboard.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html
index 693ccdd..3ac9ae6 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html
index 9f0318f..eb76e22 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html
index 6f4a97c..c48ed88 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html
index cd15e52..e61e9a0 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LeaderboardMetadataResult.html b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LeaderboardMetadataResult.html
index d5b32d4..b35021c 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LeaderboardMetadataResult.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LeaderboardMetadataResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1013,6 +1024,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadPlayerScoreResult.html b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadPlayerScoreResult.html
index ff3c9db..641043b 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadPlayerScoreResult.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadPlayerScoreResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1004,6 +1015,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadScoresResult.html b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadScoresResult.html
index 156347f..d90d9a3 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadScoresResult.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadScoresResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1029,6 +1040,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.SubmitScoreResult.html b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.SubmitScoreResult.html
index 9a7130a..aaba72e 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.SubmitScoreResult.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.SubmitScoreResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1014,6 +1025,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.html b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.html
index 8d6b292..cca1909 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/Leaderboards.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.Result.html b/docs/html/reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.Result.html
index f124a97..2c0f8f9 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.Result.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.Result.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.html b/docs/html/reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.html
index b30a7ea..989482f 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html b/docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html
index f4f78a3..ca5ab65 100644
--- a/docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/leaderboard/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html
index f60cf3a..6fb4b00 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Invitation.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html b/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html
index 4237125..31492cf 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html b/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html
index 2b1f7435..367e48f 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/InvitationEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Invitations.LoadInvitationsResult.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Invitations.LoadInvitationsResult.html
index ec4d905..0852064 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Invitations.LoadInvitationsResult.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Invitations.LoadInvitationsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1009,6 +1020,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Invitations.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Invitations.html
index 078cdb2..0df8cc7 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Invitations.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Invitations.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Multiplayer.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Multiplayer.html
index 4bfd14e..6043d98 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Multiplayer.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Multiplayer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html
index a2e2bd2..5827c11 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html
index 8f2bb96..e121883 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Participant.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html
index 8d5bd00..42ebfd4 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html
index 2ade242..aee4395 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantResult.html b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantResult.html
index 444ad5a..82fb775 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantResult.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html
index 2290eee..d352265 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html b/docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html
index d0085e2..351e4f7 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/Participatable.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html b/docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html
index f99d01d..50fc977 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html
index f5e6f3f..8ca1601 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html
index f49a510..2b6406d 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.ReliableMessageSentCallback.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.ReliableMessageSentCallback.html
index 7808ef7..864979a 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.ReliableMessageSentCallback.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.ReliableMessageSentCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.html
index ce2a8bb..fc71b64 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html
index c4fd919..8ea005e 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/Room.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html
index c9d0303..94f77fb 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html
index f316b53..d51b52c 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html
index 1390da0..9e816bf 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html
index bb1cc8b..7ba6735 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html
index 1e4fcdb..5157adb 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html
index 52732d8..c9cd07a 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/LoadMatchesResponse.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/LoadMatchesResponse.html
index aef6be0..044ad30 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/LoadMatchesResponse.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/LoadMatchesResponse.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/OnTurnBasedMatchUpdateReceivedListener.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/OnTurnBasedMatchUpdateReceivedListener.html
index 8f2aff7..ef1e136 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/OnTurnBasedMatchUpdateReceivedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/OnTurnBasedMatchUpdateReceivedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html
index 92b8f14..4bc1348 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchBuffer.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchBuffer.html
index 9c5e9ec..9209e5d 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.Builder.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.Builder.html
index 27e697dc..cf65d3a 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.Builder.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.html
index bec0f88..51fa361 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html
index 4b79814..10403f7 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.CancelMatchResult.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.CancelMatchResult.html
index c7659d3..0d9cb25 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.CancelMatchResult.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.CancelMatchResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1005,6 +1016,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.InitiateMatchResult.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.InitiateMatchResult.html
index 8e1de26..8acad17 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.InitiateMatchResult.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.InitiateMatchResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1007,6 +1018,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LeaveMatchResult.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LeaveMatchResult.html
index 964a28c..b0d67e3 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LeaveMatchResult.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LeaveMatchResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1009,6 +1020,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchResult.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchResult.html
index f3c3cc0..4edffe6 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchResult.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1002,6 +1013,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchesResult.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchesResult.html
index 8c24bfc..1d64db8 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchesResult.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchesResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1009,6 +1020,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.UpdateMatchResult.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.UpdateMatchResult.html
index 4cdec59..046150c 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.UpdateMatchResult.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.UpdateMatchResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1012,6 +1023,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.html
index 32dcd91..429eaca 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/package-summary.html b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/package-summary.html
index 7c286ab..4ca71d6 100644
--- a/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/multiplayer/turnbased/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/package-summary.html b/docs/html/reference/com/google/android/gms/games/package-summary.html
index 8fc6030..9e2fd40 100644
--- a/docs/html/reference/com/google/android/gms/games/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/Milestone.html b/docs/html/reference/com/google/android/gms/games/quest/Milestone.html
index 683441d..f1c19d2 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/Milestone.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/Milestone.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/MilestoneBuffer.html b/docs/html/reference/com/google/android/gms/games/quest/MilestoneBuffer.html
index ea980ab..e68b105 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/MilestoneBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/MilestoneBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/MilestoneEntity.html b/docs/html/reference/com/google/android/gms/games/quest/MilestoneEntity.html
index 240af0b..ff11d79 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/MilestoneEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/MilestoneEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/Quest.html b/docs/html/reference/com/google/android/gms/games/quest/Quest.html
index 0f1b0ff..caf659b 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/Quest.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/Quest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/QuestBuffer.html b/docs/html/reference/com/google/android/gms/games/quest/QuestBuffer.html
index 3a46a80..09dc322 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/QuestBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/QuestBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/QuestEntity.html b/docs/html/reference/com/google/android/gms/games/quest/QuestEntity.html
index 5663d30..f7195c2 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/QuestEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/QuestEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/QuestUpdateListener.html b/docs/html/reference/com/google/android/gms/games/quest/QuestUpdateListener.html
index acb1ae6..2389df4 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/QuestUpdateListener.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/QuestUpdateListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/Quests.AcceptQuestResult.html b/docs/html/reference/com/google/android/gms/games/quest/Quests.AcceptQuestResult.html
index a3bc3aa..df00ad2 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/Quests.AcceptQuestResult.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/Quests.AcceptQuestResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -998,6 +1009,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/quest/Quests.ClaimMilestoneResult.html b/docs/html/reference/com/google/android/gms/games/quest/Quests.ClaimMilestoneResult.html
index b9da085..be7e8ad 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/Quests.ClaimMilestoneResult.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/Quests.ClaimMilestoneResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1019,6 +1030,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/quest/Quests.LoadQuestsResult.html b/docs/html/reference/com/google/android/gms/games/quest/Quests.LoadQuestsResult.html
index 664df98..0538bea 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/Quests.LoadQuestsResult.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/Quests.LoadQuestsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1016,6 +1027,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/quest/Quests.html b/docs/html/reference/com/google/android/gms/games/quest/Quests.html
index 231050f..5d033c9 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/Quests.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/Quests.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/quest/package-summary.html b/docs/html/reference/com/google/android/gms/games/quest/package-summary.html
index 630dbe9..b127f33 100644
--- a/docs/html/reference/com/google/android/gms/games/quest/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/quest/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/request/GameRequest.html b/docs/html/reference/com/google/android/gms/games/request/GameRequest.html
index 5717697..07a7664 100644
--- a/docs/html/reference/com/google/android/gms/games/request/GameRequest.html
+++ b/docs/html/reference/com/google/android/gms/games/request/GameRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/request/GameRequestBuffer.html b/docs/html/reference/com/google/android/gms/games/request/GameRequestBuffer.html
index 9d74341..582551b 100644
--- a/docs/html/reference/com/google/android/gms/games/request/GameRequestBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/request/GameRequestBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/request/GameRequestEntity.html b/docs/html/reference/com/google/android/gms/games/request/GameRequestEntity.html
index b294380..eee1a1e 100644
--- a/docs/html/reference/com/google/android/gms/games/request/GameRequestEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/request/GameRequestEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/request/OnRequestReceivedListener.html b/docs/html/reference/com/google/android/gms/games/request/OnRequestReceivedListener.html
index 552fa49..fb933cd 100644
--- a/docs/html/reference/com/google/android/gms/games/request/OnRequestReceivedListener.html
+++ b/docs/html/reference/com/google/android/gms/games/request/OnRequestReceivedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/request/Requests.LoadRequestsResult.html b/docs/html/reference/com/google/android/gms/games/request/Requests.LoadRequestsResult.html
index 5216089..ddcf84c 100644
--- a/docs/html/reference/com/google/android/gms/games/request/Requests.LoadRequestsResult.html
+++ b/docs/html/reference/com/google/android/gms/games/request/Requests.LoadRequestsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1016,6 +1027,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/request/Requests.UpdateRequestsResult.html b/docs/html/reference/com/google/android/gms/games/request/Requests.UpdateRequestsResult.html
index 4693374..8b1a50f 100644
--- a/docs/html/reference/com/google/android/gms/games/request/Requests.UpdateRequestsResult.html
+++ b/docs/html/reference/com/google/android/gms/games/request/Requests.UpdateRequestsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1040,6 +1051,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/request/Requests.html b/docs/html/reference/com/google/android/gms/games/request/Requests.html
index fbd0db2..d133df0 100644
--- a/docs/html/reference/com/google/android/gms/games/request/Requests.html
+++ b/docs/html/reference/com/google/android/gms/games/request/Requests.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -934,6 +945,18 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#MAX_REQUEST_RECIPIENTS">MAX_REQUEST_RECIPIENTS</a></td>
+        <td class="jd-descrcol" width="100%">
+          The maximum number of recipients for a gift/request.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#REQUEST_DEFAULT_LIFETIME_DAYS">REQUEST_DEFAULT_LIFETIME_DAYS</a></td>
         <td class="jd-descrcol" width="100%">
           Value used to signal the server to use the default request lifetime.
@@ -944,7 +967,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#REQUEST_DIRECTION_INBOUND">REQUEST_DIRECTION_INBOUND</a></td>
         <td class="jd-descrcol" width="100%">
@@ -956,7 +979,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#REQUEST_DIRECTION_OUTBOUND">REQUEST_DIRECTION_OUTBOUND</a></td>
         <td class="jd-descrcol" width="100%">
@@ -968,7 +991,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#REQUEST_UPDATE_OUTCOME_FAIL">REQUEST_UPDATE_OUTCOME_FAIL</a></td>
         <td class="jd-descrcol" width="100%">
@@ -980,7 +1003,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#REQUEST_UPDATE_OUTCOME_RETRY">REQUEST_UPDATE_OUTCOME_RETRY</a></td>
         <td class="jd-descrcol" width="100%">
@@ -992,7 +1015,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#REQUEST_UPDATE_OUTCOME_SUCCESS">REQUEST_UPDATE_OUTCOME_SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1004,7 +1027,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#REQUEST_UPDATE_TYPE_ACCEPT">REQUEST_UPDATE_TYPE_ACCEPT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1016,7 +1039,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#REQUEST_UPDATE_TYPE_DISMISS">REQUEST_UPDATE_TYPE_DISMISS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1028,7 +1051,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#SORT_ORDER_EXPIRING_SOON_FIRST">SORT_ORDER_EXPIRING_SOON_FIRST</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1040,7 +1063,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/games/request/Requests.html#SORT_ORDER_SOCIAL_AGGREGATION">SORT_ORDER_SOCIAL_AGGREGATION</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1453,6 +1476,48 @@
 
 
 
+<A NAME="MAX_REQUEST_RECIPIENTS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        MAX_REQUEST_RECIPIENTS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The maximum number of recipients for a gift/request.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                8
+                (0x00000008)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="REQUEST_DEFAULT_LIFETIME_DAYS"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/games/request/package-summary.html b/docs/html/reference/com/google/android/gms/games/request/package-summary.html
index fbb23f9..10eed55 100644
--- a/docs/html/reference/com/google/android/gms/games/request/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/request/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshot.html b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshot.html
index 51c7293..3d1d849 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshot.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshot.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotContents.html b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotContents.html
index 0de8990..07078b8 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotContents.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotContents.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotEntity.html b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotEntity.html
index f58657f..5459ee9 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadata.html b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadata.html
index 48b27c4..9dd4dad 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadata.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadata.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataBuffer.html b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataBuffer.html
index 63f2687..310bab9 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataBuffer.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.Builder.html b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.Builder.html
index a439a72..662bdc5 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.Builder.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.html b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.html
index 5a7d928..42578eb 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataEntity.html b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataEntity.html
index f148e9e..c7618e9 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataEntity.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/SnapshotMetadataEntity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.CommitSnapshotResult.html b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.CommitSnapshotResult.html
index 69b32c3..cd668cd 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.CommitSnapshotResult.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.CommitSnapshotResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1006,6 +1017,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.DeleteSnapshotResult.html b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.DeleteSnapshotResult.html
index 61e176d..b09f10b 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.DeleteSnapshotResult.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.DeleteSnapshotResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -999,6 +1010,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.LoadSnapshotsResult.html b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.LoadSnapshotsResult.html
index 7ae2177..db3052c 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.LoadSnapshotsResult.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.LoadSnapshotsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1013,6 +1024,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.OpenSnapshotResult.html b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.OpenSnapshotResult.html
index d3cc47c..eb8bd69 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.OpenSnapshotResult.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.OpenSnapshotResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1091,6 +1102,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.html b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.html
index 5bd257f..bfce28c 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/Snapshots.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/games/snapshot/package-summary.html b/docs/html/reference/com/google/android/gms/games/snapshot/package-summary.html
index 9198652..96cfdce 100644
--- a/docs/html/reference/com/google/android/gms/games/snapshot/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/games/snapshot/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html b/docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html
index c7ba18e..1375b91 100644
--- a/docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html
+++ b/docs/html/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1077,10 +1088,10 @@
     
     <tr class=" api apilevel-" >
         <td class="jd-typecol">String</td>
-        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#REGISTRATION_ID">REGISTRATION_ID</a></td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#MESSAGE_TYPE_SEND_EVENT">MESSAGE_TYPE_SEND_EVENT</a></td>
         <td class="jd-descrcol" width="100%">
-          Extra that contains the registration ID associated with a subscription
-
+          Returned by <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(Intent)</a></code> to indicate a sent message has been received by the GCM
+ server.
 
 
 
@@ -1754,7 +1765,7 @@
 
 
 
-<A NAME="REGISTRATION_ID"></A>
+<A NAME="MESSAGE_TYPE_SEND_EVENT"></A>
 
 <div class="jd-details api apilevel-">
     <h4 class="jd-details-title">
@@ -1764,7 +1775,7 @@
         final
         String
       </span>
-        REGISTRATION_ID
+        MESSAGE_TYPE_SEND_EVENT
     </h4>
       <div class="api-level">
 
@@ -1777,7 +1788,8 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p>Extra that contains the registration ID associated with a subscription
+  <div class="jd-tagdata jd-tagdescr"><p>Returned by <code><a href="/reference/com/google/android/gms/gcm/GoogleCloudMessaging.html#getMessageType(android.content.Intent)">getMessageType(Intent)</a></code> to indicate a sent message has been received by the GCM
+ server. The intent includes the message ID of the message.
 </p></div>
 
 
@@ -1785,7 +1797,7 @@
         <span class="jd-tagtitle">Constant Value: </span>
         <span>
 
-                "registration_id"
+                "send_event"
 
         </span>
         </div>
diff --git a/docs/html/reference/com/google/android/gms/gcm/package-summary.html b/docs/html/reference/com/google/android/gms/gcm/package-summary.html
index ba5623f..ff21c45 100644
--- a/docs/html/reference/com/google/android/gms/gcm/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/gcm/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/Address.AddressOptions.html b/docs/html/reference/com/google/android/gms/identity/intents/Address.AddressOptions.html
index ddc470e..166d689 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/Address.AddressOptions.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/Address.AddressOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/Address.html b/docs/html/reference/com/google/android/gms/identity/intents/Address.html
index be3065d..b97095a 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/Address.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/Address.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.ErrorCodes.html b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.ErrorCodes.html
index 4bb61cf..9052c6a 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.ErrorCodes.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.ErrorCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.Extras.html b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.Extras.html
index 91a8d52..2444b71 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.Extras.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.Extras.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.ResultCodes.html b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.ResultCodes.html
index 45a2e7e..f5905c3 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.ResultCodes.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.ResultCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.Themes.html b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.Themes.html
index c24c282..27cc89c 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.Themes.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.Themes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.html b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.html
index 189ed03..d3afe6f 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/AddressConstants.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/UserAddressRequest.Builder.html b/docs/html/reference/com/google/android/gms/identity/intents/UserAddressRequest.Builder.html
index 1957007..4a0accf 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/UserAddressRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/UserAddressRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/UserAddressRequest.html b/docs/html/reference/com/google/android/gms/identity/intents/UserAddressRequest.html
index 85c4066..d876c77 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/UserAddressRequest.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/UserAddressRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/model/CountrySpecification.html b/docs/html/reference/com/google/android/gms/identity/intents/model/CountrySpecification.html
index 11e4cbe..2001e28 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/model/CountrySpecification.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/model/CountrySpecification.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/model/UserAddress.html b/docs/html/reference/com/google/android/gms/identity/intents/model/UserAddress.html
index 9bf677e..4e8a911 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/model/UserAddress.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/model/UserAddress.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/model/package-summary.html b/docs/html/reference/com/google/android/gms/identity/intents/model/package-summary.html
index 2e83892..849c64f 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/model/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/model/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/identity/intents/package-summary.html b/docs/html/reference/com/google/android/gms/identity/intents/package-summary.html
index 369f284..6baa893 100644
--- a/docs/html/reference/com/google/android/gms/identity/intents/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/identity/intents/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/ActivityRecognition.html b/docs/html/reference/com/google/android/gms/location/ActivityRecognition.html
index c8fdab8..4943dd0 100644
--- a/docs/html/reference/com/google/android/gms/location/ActivityRecognition.html
+++ b/docs/html/reference/com/google/android/gms/location/ActivityRecognition.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/ActivityRecognitionApi.html b/docs/html/reference/com/google/android/gms/location/ActivityRecognitionApi.html
index ecc728e..22061db 100644
--- a/docs/html/reference/com/google/android/gms/location/ActivityRecognitionApi.html
+++ b/docs/html/reference/com/google/android/gms/location/ActivityRecognitionApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1038,8 +1049,9 @@
         </tr>
         <tr>
           <th>callbackIntent</td>
-          <td>pending intent object that no longer needs activity
-            detection updates</td>
+          <td>the PendingIntent that was used in
+        <code><a href="/reference/com/google/android/gms/location/ActivityRecognitionApi.html#requestActivityUpdates(com.google.android.gms.common.api.GoogleApiClient, long, android.app.PendingIntent)">requestActivityUpdates(GoogleApiClient, long, PendingIntent)</a></code>
+        or is equal as defined by <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code>.</td>
         </tr>
       </table>
   </div>
@@ -1126,8 +1138,8 @@
  See the documentation of <code><a href="/reference/android/app/PendingIntent.html">PendingIntent</a></code> for more
  details.
  <p>
- Applications can call this function several times in a row with the same
- callbackIntent to change the desired activity detection interval.
+ Any requests previously registered with <code><a href="/reference/com/google/android/gms/location/ActivityRecognitionApi.html#requestActivityUpdates(com.google.android.gms.common.api.GoogleApiClient, long, android.app.PendingIntent)">requestActivityUpdates(GoogleApiClient, long, PendingIntent)</a></code> that have the same
+ PendingIntent (as defined by <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code>) will be replaced by this request.
  <p>
  Calling this function requires the
  com.google.android.gms.permission.ACTIVITY_RECOGNITION permission.</p></div>
diff --git a/docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html b/docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html
index b360216..5cb8c88 100644
--- a/docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html
+++ b/docs/html/reference/com/google/android/gms/location/ActivityRecognitionResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/DetectedActivity.html b/docs/html/reference/com/google/android/gms/location/DetectedActivity.html
index 57c0559..74860f7 100644
--- a/docs/html/reference/com/google/android/gms/location/DetectedActivity.html
+++ b/docs/html/reference/com/google/android/gms/location/DetectedActivity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/FusedLocationProviderApi.html b/docs/html/reference/com/google/android/gms/location/FusedLocationProviderApi.html
index 6e32226..9eabd1c 100644
--- a/docs/html/reference/com/google/android/gms/location/FusedLocationProviderApi.html
+++ b/docs/html/reference/com/google/android/gms/location/FusedLocationProviderApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -967,6 +978,52 @@
             
             
             
+            <a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#getLocationAvailability(com.google.android.gms.common.api.GoogleApiClient)">getLocationAvailability</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the availability of location data.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#removeLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationCallback)">removeLocationUpdates</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/location/LocationCallback.html">LocationCallback</a> callback)</nobr>
+
+        <div class="jd-descrdiv">
+          Removes all location updates for the given location result listener.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1016,7 +1073,7 @@
             <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener, android.os.Looper)">requestLocationUpdates</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a> request, <a href="/reference/com/google/android/gms/location/LocationListener.html">LocationListener</a> listener, Looper looper)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationCallback, android.os.Looper)">requestLocationUpdates</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a> request, <a href="/reference/com/google/android/gms/location/LocationCallback.html">LocationCallback</a> callback, Looper looper)</nobr>
         
         <div class="jd-descrdiv">
           Requests location updates with a callback on the specified Looper thread.
@@ -1039,6 +1096,29 @@
             <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener, android.os.Looper)">requestLocationUpdates</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a> request, <a href="/reference/com/google/android/gms/location/LocationListener.html">LocationListener</a> listener, Looper looper)</nobr>
+
+        <div class="jd-descrdiv">
+          Requests location updates with a callback on the specified Looper thread.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">requestLocationUpdates</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a> request, <a href="/reference/com/google/android/gms/location/LocationListener.html">LocationListener</a> listener)</nobr>
         
         <div class="jd-descrdiv">
@@ -1052,7 +1132,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -1075,7 +1155,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -1098,7 +1178,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -1309,6 +1389,108 @@
 </div>
 
 
+<A NAME="getLocationAvailability(com.google.android.gms.common.api.GoogleApiClient)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a>
+      </span>
+      <span class="sympad">getLocationAvailability</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the availability of location data.
+ When <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html#isLocationAvailable()">isLocationAvailable()</a></code>
+ returns true, then the location returned by <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#getLastLocation(com.google.android.gms.common.api.GoogleApiClient)">getLastLocation(GoogleApiClient)</a></code> will be reasonably
+ up to date within the hints specified by the active <code><a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a></code>s.
+ <p>
+ If the client isn't connected to Google Play services and the request times out,
+ null is returned.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>An existing GoogleApiClient.  If not connected null will be returned.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="removeLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationCallback)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">removeLocationUpdates</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/location/LocationCallback.html">LocationCallback</a> callback)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Removes all location updates for the given location result listener.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>An existing GoogleApiClient.  It must be connected at the time of this call,
+               which is normally achieved by calling <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#connect()">connect()</a></code> and
+               waiting for <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)">onConnected(Bundle)</a></code>
+               to be called.</td>
+        </tr>
+        <tr>
+          <th>callback</td>
+          <td>The callback to remove.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>a PendingResult for the call, check <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine if it was
+         successful.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="removeLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationListener)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1404,7 +1586,9 @@
         </tr>
         <tr>
           <th>callbackIntent</td>
-          <td>The callback intent to remove.</td>
+          <td>The PendingIntent that was used in
+        <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, android.app.PendingIntent)">requestLocationUpdates(GoogleApiClient, LocationRequest, PendingIntent)</a></code>
+        or is equal as defined by <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code>.</td>
         </tr>
       </table>
   </div>
@@ -1419,6 +1603,89 @@
 </div>
 
 
+<A NAME="requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationCallback, android.os.Looper)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">requestLocationUpdates</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a> request, <a href="/reference/com/google/android/gms/location/LocationCallback.html">LocationCallback</a> callback, Looper looper)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Requests location updates with a callback on the specified Looper thread.
+ <p>
+ This method is suited for the foreground use cases,more specifically
+ for requesting locations while being connected to <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a></code>. For
+ background use cases, the <code><a href="/reference/android/app/PendingIntent.html">PendingIntent</a></code> version of the method is recommended, see
+ <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, android.app.PendingIntent)">requestLocationUpdates(GoogleApiClient, LocationRequest, PendingIntent)</a></code>.
+ <p>
+ Any previous LocationRequests registered on this LocationListener will be replaced.
+ <p>
+ Callbacks for <code><a href="/reference/com/google/android/gms/location/LocationCallback.html">LocationCallback</a></code> will be made on the specified thread, which must
+ already be a prepared looper thread.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>An existing GoogleApiClient.  It must be connected at the time of this call,
+               which is normally achieved by calling <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html#connect()">connect()</a></code> and
+               waiting for <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html#onConnected(android.os.Bundle)">onConnected(Bundle)</a></code>
+               to be called.</td>
+        </tr>
+        <tr>
+          <th>request</td>
+          <td>The location request for the updates.</td>
+        </tr>
+        <tr>
+          <th>callback</td>
+          <td>The callback for the location updates.</td>
+        </tr>
+        <tr>
+          <th>looper</td>
+          <td>The Looper object whose message queue will be used to implement the callback
+   mechanism, or null to make callbacks on the calling thread.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>a PendingResult for the call, check <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine if it was
+         successful.</li></ul>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalStateException</td>
+            <td>If looper is null and this method is executed in a
+                               thread that has not called Looper.prepare().
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener, android.os.Looper)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1485,8 +1752,18 @@
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>a PendingResult for the call, check <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine if it was
-         successful.
-</li></ul>
+         successful.</li></ul>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalStateException</td>
+            <td>If looper is null and this method is executed in a
+                               thread that has not called Looper.prepare().
+</td>
+        </tr>
+      </table>
   </div>
 
     </div>
@@ -1557,8 +1834,18 @@
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
       <ul class="nolist"><li>a PendingResult for the call, check <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine if it was
-         successful.
-</li></ul>
+         successful.</li></ul>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalStateException</td>
+            <td>If this method is executed in a thread that has not called
+                               Looper.prepare().
+</td>
+        </tr>
+      </table>
   </div>
 
     </div>
@@ -1599,7 +1886,8 @@
  <code><a href="/reference/com/google/android/gms/location/LocationListener.html">LocationListener</a></code> version of the method is recommended, see
  <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationListener)">requestLocationUpdates(GoogleApiClient, LocationRequest, LocationListener)</a></code>.
  <p>
- Any previous LocationRequests registered on this PendingIntent will be replaced.
+ Any previously registered requests that have the same PendingIntent
+ (as defined by <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code>) will be replaced by this request.
  <p>
  Location updates are sent with a key of <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#KEY_LOCATION_CHANGED">KEY_LOCATION_CHANGED</a></code>
  and a <code><a href="/reference/android/location/Location.html">Location</a></code> value on the intent.</p></div>
diff --git a/docs/html/reference/com/google/android/gms/location/Geofence.Builder.html b/docs/html/reference/com/google/android/gms/location/Geofence.Builder.html
index 4e9798e..9273aed 100644
--- a/docs/html/reference/com/google/android/gms/location/Geofence.Builder.html
+++ b/docs/html/reference/com/google/android/gms/location/Geofence.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/Geofence.html b/docs/html/reference/com/google/android/gms/location/Geofence.html
index 6490808..0cf488b 100644
--- a/docs/html/reference/com/google/android/gms/location/Geofence.html
+++ b/docs/html/reference/com/google/android/gms/location/Geofence.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/GeofenceStatusCodes.html b/docs/html/reference/com/google/android/gms/location/GeofenceStatusCodes.html
index 4dfc2d6..06dee33 100644
--- a/docs/html/reference/com/google/android/gms/location/GeofenceStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/location/GeofenceStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1018,6 +1029,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#API_NOT_AVAILABLE">API_NOT_AVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The client attempted to call a method from an API that failed to connect.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
           The result was canceled either due to client disconnect or <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code>.
@@ -1028,7 +1051,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1040,7 +1063,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#ERROR">ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1052,7 +1075,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1064,7 +1087,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERRUPTED">INTERRUPTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1076,7 +1099,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INVALID_ACCOUNT">INVALID_ACCOUNT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1088,7 +1111,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#LICENSE_CHECK_FAILED">LICENSE_CHECK_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1100,7 +1123,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#NETWORK_ERROR">NETWORK_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1112,7 +1135,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#RESOLUTION_REQUIRED">RESOLUTION_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1124,7 +1147,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_DISABLED">SERVICE_DISABLED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1136,7 +1159,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_INVALID">SERVICE_INVALID</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1148,7 +1171,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_MISSING">SERVICE_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1160,7 +1183,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1172,7 +1195,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1184,7 +1207,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1196,7 +1219,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS_CACHE">SUCCESS_CACHE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1208,7 +1231,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
diff --git a/docs/html/reference/com/google/android/gms/location/GeofencingApi.html b/docs/html/reference/com/google/android/gms/location/GeofencingApi.html
index 9fa468e..105073f 100644
--- a/docs/html/reference/com/google/android/gms/location/GeofencingApi.html
+++ b/docs/html/reference/com/google/android/gms/location/GeofencingApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1352,7 +1363,8 @@
       
   <div class="jd-tagdata jd-tagdescr"><p>Removes all geofences associated with the given <code>pendingIntent</code>.
  <p>
- Warning: please use <code><a href="/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT">FLAG_UPDATE_CURRENT</a></code>
+ Warning: <code><a href="/reference/android/app/PendingIntent.html#equals(java.lang.Object)">equals(Object)</a></code> is used for comparison.  Please use
+ <code><a href="/reference/android/app/PendingIntent.html#FLAG_UPDATE_CURRENT">FLAG_UPDATE_CURRENT</a></code>
  rather than <code><a href="/reference/android/app/PendingIntent.html#FLAG_CANCEL_CURRENT">FLAG_CANCEL_CURRENT</a></code> when
  creating the pending intent, otherwise you will not get the same pending
  intent you provided to
diff --git a/docs/html/reference/com/google/android/gms/location/GeofencingEvent.html b/docs/html/reference/com/google/android/gms/location/GeofencingEvent.html
index cbff80e..b3c496b 100644
--- a/docs/html/reference/com/google/android/gms/location/GeofencingEvent.html
+++ b/docs/html/reference/com/google/android/gms/location/GeofencingEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/GeofencingRequest.Builder.html b/docs/html/reference/com/google/android/gms/location/GeofencingRequest.Builder.html
index 3f47ca2..5888d8d 100644
--- a/docs/html/reference/com/google/android/gms/location/GeofencingRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/location/GeofencingRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/GeofencingRequest.html b/docs/html/reference/com/google/android/gms/location/GeofencingRequest.html
index 209f11f..61a4ddb 100644
--- a/docs/html/reference/com/google/android/gms/location/GeofencingRequest.html
+++ b/docs/html/reference/com/google/android/gms/location/GeofencingRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/LocationAvailability.html b/docs/html/reference/com/google/android/gms/location/LocationAvailability.html
new file mode 100644
index 0000000..8886fe6
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/location/LocationAvailability.html
@@ -0,0 +1,1888 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>LocationAvailability | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">LocationAvailability</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+  <a href="#inhconstants">Inherited Constants</a>
+
+
+
+  &#124; <a href="#lfields">Fields</a>
+
+
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+    final
+
+    class
+<h1 itemprop="name">LocationAvailability</h1>
+
+
+
+
+    extends Object<br/>
+
+
+
+
+
+
+      implements
+
+        Parcelable
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.location.LocationAvailability</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Status on the availability of location data</p>
+
+
+
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">See Also</h5>
+      <ul class="nolist"><li><code><a href="/">ERROR(LocationCallback#onLocationAvailability}
+/{@link LocationCallback#onLocationAvailability})</a></code></li>
+      </ul>
+  </div>
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="inhconstants" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Constants</div></th></tr>
+
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-constants-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>From interface
+android.os.Parcelable
+<div id="inherited-constants-android.os.Parcelable">
+  <div id="inherited-constants-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-constants-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">CONTENTS_FILE_DESCRIPTOR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">PARCELABLE_WRITE_RETURN_VALUE</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
+
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          LocationAvailabilityCreator</nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#CREATOR">CREATOR</a></td>
+          <td class="jd-descrcol" width="100%">
+
+
+
+
+          </td>
+      </tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#describeContents()">describeContents</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#equals(java.lang.Object)">equals</a></span>(Object other)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#extractLocationAvailability(android.content.Intent)">extractLocationAvailability</a></span>(Intent intent)</nobr>
+
+        <div class="jd-descrdiv">
+          Extracts the <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></code> from an Intent.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#hasLocationAvailability(android.content.Intent)">hasLocationAvailability</a></span>(Intent intent)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns true if an Intent contains a <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#hashCode()">hashCode</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#isLocationAvailable()">isLocationAvailable</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns true if the device location is known and reasonably up to date within the hints
+ requested by the active <code><a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a></code>s.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#toString()">toString</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationAvailability.html#writeToParcel(android.os.Parcel, int)">writeToParcel</a></span>(Parcel parcel, int flags)</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.os.Parcelable
+
+<div id="inherited-methods-android.os.Parcelable">
+  <div id="inherited-methods-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">describeContents</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">writeToParcel</span>(Parcel arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- ========= FIELD DETAIL ======== -->
+<h2>Fields</h2>
+
+
+
+
+<A NAME="CREATOR"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        LocationAvailabilityCreator
+      </span>
+        CREATOR
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+    </div>
+</div>
+
+
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="describeContents()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">describeContents</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="equals(java.lang.Object)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">equals</span>
+      <span class="normal">(Object other)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="extractLocationAvailability(android.content.Intent)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a>
+      </span>
+      <span class="sympad">extractLocationAvailability</span>
+      <span class="normal">(Intent intent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Extracts the <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></code> from an Intent.
+
+ <p>This is a utility function which extracts the <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></code>
+ from the extras of an Intent that was sent in response to a location request.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>a <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></code>, or <code>null</code> if the Intent doesn't contain
+ this data.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="hasLocationAvailability(android.content.Intent)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        boolean
+      </span>
+      <span class="sympad">hasLocationAvailability</span>
+      <span class="normal">(Intent intent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns true if an Intent contains a <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></code>.
+
+ <p>This is a utility function that can be called from inside an intent
+ receiver to make sure the received intent contains location availability data.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>true if the intent contains a <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></code>, false
+         otherwise.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="hashCode()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">hashCode</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="isLocationAvailable()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">isLocationAvailable</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns true if the device location is known and reasonably up to date within the hints
+ requested by the active <code><a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a></code>s.  Failure to determine location may result
+ from a number of causes including disabled location settings or an inability to retrieve
+ sensor data in the device's environment.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="toString()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">toString</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="writeToParcel(android.os.Parcel, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">writeToParcel</span>
+      <span class="normal">(Parcel parcel, int flags)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationCallback.html b/docs/html/reference/com/google/android/gms/location/LocationCallback.html
new file mode 100644
index 0000000..1f0e4ca
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/location/LocationCallback.html
@@ -0,0 +1,1470 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>LocationCallback | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">LocationCallback</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+  <a href="#pubctors">Ctors</a>
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+    abstract
+    class
+<h1 itemprop="name">LocationCallback</h1>
+
+
+
+
+    extends Object<br/>
+
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.location.LocationCallback</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Used for receiving notifications from the <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html">FusedLocationProviderApi</a></code> when the device
+ location has changed or can no longer be determined. The methods are called if the
+ <code><a href="/reference/com/google/android/gms/location/LocationCallback.html">LocationCallback</a></code> has been registered with the location client using the
+ <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#requestLocationUpdates(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationRequest, com.google.android.gms.location.LocationCallback, android.os.Looper)">requestLocationUpdates(GoogleApiClient, LocationRequest, LocationCallback, Looper)</a></code>
+ method.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationCallback.html#LocationCallback()">LocationCallback</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationCallback.html#onLocationAvailability(com.google.android.gms.location.LocationAvailability)">onLocationAvailability</a></span>(<a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a> locationAvailability)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when there is a change in the availability of location data.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationCallback.html#onLocationResult(com.google.android.gms.location.LocationResult)">onLocationResult</a></span>(<a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a> result)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when device location information is available.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="LocationCallback()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+
+      </span>
+      <span class="sympad">LocationCallback</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="onLocationAvailability(com.google.android.gms.location.LocationAvailability)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onLocationAvailability</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a> locationAvailability)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when there is a change in the availability of location data.
+
+ <p>When <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html#isLocationAvailable()">isLocationAvailable()</a></code> returns <code>false</code> you can assume
+ that location will not be returned in <code><a href="/reference/com/google/android/gms/location/LocationCallback.html#onLocationResult(com.google.android.gms.location.LocationResult)">onLocationResult(LocationResult)</a></code> until something changes
+ in the device's settings or environment.  Even when
+ <code><a href="/reference/com/google/android/gms/location/LocationAvailability.html#isLocationAvailable()">isLocationAvailable()</a></code> returns <code>true</code> the
+ <code><a href="/reference/com/google/android/gms/location/LocationCallback.html#onLocationResult(com.google.android.gms.location.LocationResult)">onLocationResult(LocationResult)</a></code> may not always be called regularly, however the device location
+ is known and both the most recently delivered location and
+ <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html#getLastLocation(com.google.android.gms.common.api.GoogleApiClient)">getLastLocation(GoogleApiClient)</a></code> will be reasonably up to date given the
+ hints specified by the active <code><a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a></code>s.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>locationAvailability</td>
+          <td>The current status of location availability.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="onLocationResult(com.google.android.gms.location.LocationResult)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onLocationResult</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a> result)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when device location information is available.
+
+ <p>The most recent location returned by <code><a href="/reference/com/google/android/gms/location/LocationResult.html#getLastLocation()">getLastLocation()</a></code> is not
+ guaranteed to be immediately fresh, but will be reasonably up to date given the hints
+ specified by the active <code><a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a></code>s.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>result</td>
+          <td>The latest location result available.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationListener.html b/docs/html/reference/com/google/android/gms/location/LocationListener.html
index e0afade..952aff1 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationListener.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/LocationRequest.html b/docs/html/reference/com/google/android/gms/location/LocationRequest.html
index 748a6b4..d051d41 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationRequest.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -806,6 +817,9 @@
   
 
 
+  &#124; <a href="#lfields">Fields</a>
+
+
 
 
 
@@ -1101,6 +1115,31 @@
 
 
 
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
+
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          LocationRequestCreator</nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationRequest.html#CREATOR">CREATOR</a></td>
+          <td class="jd-descrcol" width="100%">
+
+
+
+
+          </td>
+      </tr>
+
+
+
+</table>
+
+
 
 
 
@@ -1247,6 +1286,29 @@
             
             
             
+            long</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationRequest.html#getMaxWaitTime()">getMaxWaitTime</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Gets the maximum wait time in milliseconds for location updates.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1263,7 +1325,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1286,7 +1348,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1311,7 +1373,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1327,7 +1389,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1350,7 +1412,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1373,7 +1435,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1396,7 +1458,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1419,6 +1481,29 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            <a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationRequest.html#setMaxWaitTime(long)">setMaxWaitTime</a></span>(long millis)</nobr>
+
+        <div class="jd-descrdiv">
+          Sets the maximum wait time in milliseconds for location updates.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -2008,6 +2093,44 @@
 <!-- Fields -->
 
 
+<!-- ========= FIELD DETAIL ======== -->
+<h2>Fields</h2>
+
+
+
+
+<A NAME="CREATOR"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        LocationRequestCreator
+      </span>
+        CREATOR
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+    </div>
+</div>
+
+
+
+
 <!-- Public ctors -->
 
 
@@ -2246,6 +2369,49 @@
 </div>
 
 
+<A NAME="getMaxWaitTime()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        long
+      </span>
+      <span class="sympad">getMaxWaitTime</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Gets the maximum wait time in milliseconds for location updates.  If the wait time
+ is smaller than the interval requested with <code><a href="/reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">setInterval(long)</a></code>, then the interval
+ will be used instead.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>maximum wait time in milliseconds, inexact</li></ul>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">See Also</h5>
+      <ul class="nolist"><li><code><a href="/reference/com/google/android/gms/location/LocationRequest.html#setMaxWaitTime(long)">setMaxWaitTime(long)</a></code></li>
+      </ul>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="getNumUpdates()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -2649,6 +2815,69 @@
 </div>
 
 
+<A NAME="setMaxWaitTime(long)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        <a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a>
+      </span>
+      <span class="sympad">setMaxWaitTime</span>
+      <span class="normal">(long millis)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Sets the maximum wait time in milliseconds for location updates.
+
+ <p>If you pass a value at least 2x larger than the interval specified with
+ <code><a href="/reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">setInterval(long)</a></code>, then location delivery may be delayed and multiple locations can
+ be delivered at once. Locations are determined at the <code><a href="/reference/com/google/android/gms/location/LocationRequest.html#setInterval(long)">setInterval(long)</a></code> rate, but can be
+ delivered in batch after the interval you set in this method. This can consume less battery
+ and give more accurate locations, depending on the device's hardware capabilities. You
+ should set this value to be as large as possible for your needs if you don't need
+ immediate location delivery.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>millis</td>
+          <td>desired maximum wait time in millisecond, inexact</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>the same object, so that setters can be chained
+</li></ul>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Throws</h5>
+      <table class="jd-tagtable">
+        <tr>
+            <th>IllegalArgumentException</td>
+            <td>if the interval is less than zero</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="setNumUpdates(int)"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/location/LocationResult.html b/docs/html/reference/com/google/android/gms/location/LocationResult.html
new file mode 100644
index 0000000..b9305b0
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/location/LocationResult.html
@@ -0,0 +1,1999 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>LocationResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">LocationResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+  <a href="#inhconstants">Inherited Constants</a>
+
+
+
+  &#124; <a href="#lfields">Fields</a>
+
+
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+    final
+
+    class
+<h1 itemprop="name">LocationResult</h1>
+
+
+
+
+    extends Object<br/>
+
+
+
+
+
+
+      implements
+
+        Parcelable
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.location.LocationResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">A data class representing a geographic location result from the fused location provider.
+
+ <p>All locations returned by <code><a href="/reference/com/google/android/gms/location/LocationResult.html#getLocations()">getLocations()</a></code> are guaranteed to have a valid latitude,
+ longitude, and UTC timestamp.  On API level 17 or later they are also guaranteed to have
+ elapsed real-time since boot.  All other parameters are optional.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="inhconstants" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Constants</div></th></tr>
+
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-constants-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>From interface
+android.os.Parcelable
+<div id="inherited-constants-android.os.Parcelable">
+  <div id="inherited-constants-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-constants-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">CONTENTS_FILE_DESCRIPTOR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">PARCELABLE_WRITE_RETURN_VALUE</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
+
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          LocationResultCreator</nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationResult.html#CREATOR">CREATOR</a></td>
+          <td class="jd-descrcol" width="100%">
+
+
+
+
+          </td>
+      </tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#create(java.util.List<android.location.Location>)">create</a></span>(List&lt;Location&gt; locations)</nobr>
+
+        <div class="jd-descrdiv">
+          Creates a <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code> for the given locations.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#describeContents()">describeContents</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#equals(java.lang.Object)">equals</a></span>(Object other)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            <a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#extractResult(android.content.Intent)">extractResult</a></span>(Intent intent)</nobr>
+
+        <div class="jd-descrdiv">
+          Extracts the <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code> from an Intent.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Location</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#getLastLocation()">getLastLocation</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the most recent location available in this result, or null if no locations
+ are available.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            List&lt;Location&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#getLocations()">getLocations</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns locations computed, ordered from oldest to newest.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+            static
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#hasResult(android.content.Intent)">hasResult</a></span>(Intent intent)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns true if an Intent contains a <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#hashCode()">hashCode</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#toString()">toString</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationResult.html#writeToParcel(android.os.Parcel, int)">writeToParcel</a></span>(Parcel parcel, int flags)</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.os.Parcelable
+
+<div id="inherited-methods-android.os.Parcelable">
+  <div id="inherited-methods-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">describeContents</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">writeToParcel</span>(Parcel arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- ========= FIELD DETAIL ======== -->
+<h2>Fields</h2>
+
+
+
+
+<A NAME="CREATOR"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        LocationResultCreator
+      </span>
+        CREATOR
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+    </div>
+</div>
+
+
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="create(java.util.List<android.location.Location>)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a>
+      </span>
+      <span class="sympad">create</span>
+      <span class="normal">(List&lt;Location&gt; locations)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Creates a <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code> for the given locations.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="describeContents()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">describeContents</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="equals(java.lang.Object)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        boolean
+      </span>
+      <span class="sympad">equals</span>
+      <span class="normal">(Object other)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="extractResult(android.content.Intent)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        <a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a>
+      </span>
+      <span class="sympad">extractResult</span>
+      <span class="normal">(Intent intent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Extracts the <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code> from an Intent.
+
+ <p>This is a utility function which extracts the <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code>
+ from the extras of an Intent that was sent from the fused location provider.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>a <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code>, or <code>null</code> if the Intent doesn't contain a result.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="getLastLocation()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        Location
+      </span>
+      <span class="sympad">getLastLocation</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the most recent location available in this result, or null if no locations
+ are available.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getLocations()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        List&lt;Location&gt;
+      </span>
+      <span class="sympad">getLocations</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns locations computed, ordered from oldest to newest.
+
+ <p>No duplicate locations will be returned to any given listener (i.e. locations will not
+ overlap in time between subsequent calls to a listener).
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="hasResult(android.content.Intent)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+
+
+
+        boolean
+      </span>
+      <span class="sympad">hasResult</span>
+      <span class="normal">(Intent intent)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns true if an Intent contains a <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code>.
+
+ <p>This is a utility function that can be called from inside an intent
+ receiver to make sure the received intent is from the fused location provider.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>true if the intent contains a <code><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></code>, false
+         otherwise.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="hashCode()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">hashCode</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="toString()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">toString</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="writeToParcel(android.os.Parcel, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">writeToParcel</span>
+      <span class="normal">(Parcel parcel, int flags)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationServices.html b/docs/html/reference/com/google/android/gms/location/LocationServices.html
index 787daca..57beb69 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationServices.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationServices.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html b/docs/html/reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html
index 17845b7..c6aa836 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1046,7 +1057,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html#setAlwaysShow(boolean)">setAlwaysShow</a></span>(boolean show)</nobr>
 
         <div class="jd-descrdiv">
-          This method currently does nothing.
+          Always show the dialog, without the "Never" option to suppress future dialogs from this
+ app.
 
 
 
@@ -1504,14 +1516,13 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p>This method currently does nothing.
- In a future release, we may introduce the ability for users to suppress future dialogs
- from a given app. Calling this method before invoking the dialog will hide this option
- from users.
+  <div class="jd-tagdata jd-tagdescr"><p>Always show the dialog, without the "Never" option to suppress future dialogs from this
+ app. When this flag is set to true, the dialog will show up if the location settings do
+ not satisfy the request, even if a user has previously chosen "Never".
 
- Use this method if and only if your dialog is the result of an explicit user-initiated
- action that requires location. Canceling this dialog should also cancel the initiated
- action in your app.
+ NOTE: Only use this method if your dialog is the result of an explicit user-initiated
+ action that requires location to proceed. Canceling this dialog should also cancel the
+ initiated action.
 </p></div>
 
     </div>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationSettingsRequest.html b/docs/html/reference/com/google/android/gms/location/LocationSettingsRequest.html
index b65eb16..ab4764c 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationSettingsRequest.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationSettingsRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -813,6 +824,9 @@
 
 
 
+  &#124; <a href="#pubmethods">Methods</a>
+
+
 
 
   &#124; <a href="#inhmethods">Inherited Methods</a>
@@ -834,7 +848,7 @@
 <div id="jd-header">
     public
 
-
+    final
 
     class
 <h1 itemprop="name">LocationSettingsRequest</h1>
@@ -1059,6 +1073,47 @@
 
 
 
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationSettingsRequest.html#describeContents()">describeContents</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationSettingsRequest.html#writeToParcel(android.os.Parcel, int)">writeToParcel</a></span>(Parcel dest, int flags)</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
 
 
 
@@ -1405,6 +1460,75 @@
 <!-- ========= METHOD DETAIL ======== -->
 <!-- Public methdos -->
 
+<h2>Public Methods</h2>
+
+
+
+<A NAME="describeContents()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">describeContents</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="writeToParcel(android.os.Parcel, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">writeToParcel</span>
+      <span class="normal">(Parcel dest, int flags)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
 
 
 <!-- ========= METHOD DETAIL ======== -->
diff --git a/docs/html/reference/com/google/android/gms/location/LocationSettingsResult.html b/docs/html/reference/com/google/android/gms/location/LocationSettingsResult.html
index fad49b6..024d0b1 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationSettingsResult.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationSettingsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -841,7 +852,7 @@
 <div id="jd-header">
     public
 
-
+    final
 
     class
 <h1 itemprop="name">LocationSettingsResult</h1>
@@ -1066,6 +1077,22 @@
 
 
 
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationSettingsResult.html#describeContents()">describeContents</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             <a href="/reference/com/google/android/gms/location/LocationSettingsStates.html">LocationSettingsStates</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1082,7 +1109,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1094,6 +1121,29 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationSettingsResult.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationSettingsResult.html#writeToParcel(android.os.Parcel, int)">writeToParcel</a></span>(Parcel dest, int flags)</nobr>
+
   </td></tr>
 
 
@@ -1404,6 +1454,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1493,6 +1550,38 @@
 
 
 
+<A NAME="describeContents()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">describeContents</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 <A NAME="getLocationSettingsStates()"></A>
 
 <div class="jd-details api apilevel-">
@@ -1552,6 +1641,44 @@
 
 
 
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="writeToParcel(android.os.Parcel, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">writeToParcel</span>
+      <span class="normal">(Parcel dest, int flags)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
   <div class="jd-tagdata jd-tagdescr"><p></p></div>
 
     </div>
diff --git a/docs/html/reference/com/google/android/gms/location/LocationSettingsStates.html b/docs/html/reference/com/google/android/gms/location/LocationSettingsStates.html
index 1f0fbc1..358a331 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationSettingsStates.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationSettingsStates.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -834,7 +845,7 @@
 <div id="jd-header">
     public
 
-
+    final
 
     class
 <h1 itemprop="name">LocationSettingsStates</h1>
@@ -1043,6 +1054,22 @@
 
 
 
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationSettingsStates.html#describeContents()">describeContents</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
             static
 
             <a href="/reference/com/google/android/gms/location/LocationSettingsStates.html">LocationSettingsStates</a></nobr>
@@ -1061,7 +1088,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1084,7 +1111,7 @@
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1107,7 +1134,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1130,7 +1157,7 @@
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1153,7 +1180,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1176,7 +1203,7 @@
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1199,7 +1226,7 @@
 
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1222,7 +1249,7 @@
 
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
 
 
@@ -1245,6 +1272,22 @@
 
 
 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/LocationSettingsStates.html#writeToParcel(android.os.Parcel, int)">writeToParcel</a></span>(Parcel dest, int flags)</nobr>
+
+  </td></tr>
+
+
+
 </table>
 
 
@@ -1598,6 +1641,38 @@
 
 
 
+<A NAME="describeContents()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">describeContents</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 <A NAME="fromIntent(android.content.Intent)"></A>
 
 <div class="jd-details api apilevel-">
@@ -1902,6 +1977,38 @@
 </div>
 
 
+<A NAME="writeToParcel(android.os.Parcel, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">writeToParcel</span>
+      <span class="normal">(Parcel dest, int flags)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/location/LocationSettingsStatusCodes.html b/docs/html/reference/com/google/android/gms/location/LocationSettingsStatusCodes.html
index adf3e7c..531be89 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationSettingsStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationSettingsStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -959,6 +970,19 @@
     </tr>
 
 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationSettingsStatusCodes.html#USER_LOCATION_REPORTING_UNAVAILABLE">USER_LOCATION_REPORTING_UNAVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          User location reporting not available, no dialog pops up
+
+
+
+
+        </td>
+    </tr>
+
+
 
 </table>
 
@@ -991,6 +1015,18 @@
 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#API_NOT_AVAILABLE">API_NOT_AVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The client attempted to call a method from an API that failed to connect.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
           The result was canceled either due to client disconnect or <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code>.
@@ -1001,7 +1037,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1013,7 +1049,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#ERROR">ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1025,7 +1061,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1037,7 +1073,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERRUPTED">INTERRUPTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1049,7 +1085,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INVALID_ACCOUNT">INVALID_ACCOUNT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1061,7 +1097,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#LICENSE_CHECK_FAILED">LICENSE_CHECK_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1073,7 +1109,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#NETWORK_ERROR">NETWORK_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1085,7 +1121,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#RESOLUTION_REQUIRED">RESOLUTION_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1097,7 +1133,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_DISABLED">SERVICE_DISABLED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1109,7 +1145,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_INVALID">SERVICE_INVALID</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1121,7 +1157,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_MISSING">SERVICE_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1133,7 +1169,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1145,7 +1181,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1157,7 +1193,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1169,7 +1205,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS_CACHE">SUCCESS_CACHE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1181,7 +1217,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1540,6 +1576,48 @@
 
 
 
+<A NAME="USER_LOCATION_REPORTING_UNAVAILABLE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        USER_LOCATION_REPORTING_UNAVAILABLE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>User location reporting not available, no dialog pops up
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                8503
+                (0x00002137)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 
 <!-- Fields -->
 
diff --git a/docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html b/docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html
index c2c5387..a6b4d9d 100644
--- a/docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/location/LocationStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/SettingsApi.html b/docs/html/reference/com/google/android/gms/location/SettingsApi.html
index 58a3334..49ef4fa 100644
--- a/docs/html/reference/com/google/android/gms/location/SettingsApi.html
+++ b/docs/html/reference/com/google/android/gms/location/SettingsApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/package-summary.html b/docs/html/reference/com/google/android/gms/location/package-summary.html
index 75e9557..25663bb 100644
--- a/docs/html/reference/com/google/android/gms/location/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/location/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -974,6 +985,29 @@
       
     
       <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationAvailability.html">LocationAvailability</a></td>
+        <td class="jd-descrcol" width="100%">
+          Status on the availability of location data&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationCallback.html">LocationCallback</a></td>
+        <td class="jd-descrcol" width="100%">
+          Used for receiving notifications from the <code><a href="/reference/com/google/android/gms/location/FusedLocationProviderApi.html">FusedLocationProviderApi</a></code> when the device
+ location has changed or can no longer be determined.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationRequest.html">LocationRequest</a></td>
         <td class="jd-descrcol" width="100%">
           A data object that contains quality of service parameters for requests to
@@ -986,6 +1020,17 @@
       
     
       <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationResult.html">LocationResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          A data class representing a geographic location result from the fused location provider.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationServices.html">LocationServices</a></td>
         <td class="jd-descrcol" width="100%">
           The main entry point for location services integration.&nbsp;
@@ -996,7 +1041,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationSettingsRequest.html">LocationSettingsRequest</a></td>
         <td class="jd-descrcol" width="100%">
           Specifies the types of location services the client is interested in using.&nbsp;
@@ -1007,7 +1052,7 @@
       </tr>
 
 
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html">LocationSettingsRequest.Builder</a></td>
         <td class="jd-descrcol" width="100%">
           A builder that builds <code><a href="/reference/com/google/android/gms/location/LocationSettingsRequest.html">LocationSettingsRequest</a></code>.&nbsp;
@@ -1018,7 +1063,7 @@
       </tr>
 
 
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationSettingsResult.html">LocationSettingsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Result of checking settings via <code><a href="/reference/com/google/android/gms/location/SettingsApi.html#checkLocationSettings(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.location.LocationSettingsRequest)">checkLocationSettings(GoogleApiClient, LocationSettingsRequest)</a></code>,
@@ -1031,7 +1076,7 @@
       </tr>
 
 
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationSettingsStates.html">LocationSettingsStates</a></td>
         <td class="jd-descrcol" width="100%">
           Stores the current states of all location-related settings.&nbsp;
@@ -1042,7 +1087,7 @@
       </tr>
 
 
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationSettingsStatusCodes.html">LocationSettingsStatusCodes</a></td>
         <td class="jd-descrcol" width="100%">
           Location settings specific status codes, for use in <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code>
@@ -1054,7 +1099,7 @@
       </tr>
 
 
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/location/LocationStatusCodes.html">LocationStatusCodes</a></td>
         <td class="jd-descrcol" width="100%">
           <em>
diff --git a/docs/html/reference/com/google/android/gms/location/places/AddPlaceRequest.html b/docs/html/reference/com/google/android/gms/location/places/AddPlaceRequest.html
index 6061282..02dd871 100644
--- a/docs/html/reference/com/google/android/gms/location/places/AddPlaceRequest.html
+++ b/docs/html/reference/com/google/android/gms/location/places/AddPlaceRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1022,6 +1033,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html#AddPlaceRequest(java.lang.String, com.google.android.gms.maps.model.LatLng, java.lang.String, java.util.List<java.lang.Integer>, java.lang.String)">AddPlaceRequest</a></span>(String name, <a href="/reference/com/google/android/gms/maps/model/LatLng.html">LatLng</a> latLng, String address, List&lt;Integer&gt; placeTypes, String phoneNumber)</nobr>
 
+        <div class="jd-descrdiv">
+          Constructor for <code><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html">AddPlaceRequest</a></code>.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1038,6 +1056,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html#AddPlaceRequest(java.lang.String, com.google.android.gms.maps.model.LatLng, java.lang.String, java.util.List<java.lang.Integer>, android.net.Uri)">AddPlaceRequest</a></span>(String name, <a href="/reference/com/google/android/gms/maps/model/LatLng.html">LatLng</a> latLng, String address, List&lt;Integer&gt; placeTypes, Uri uri)</nobr>
 
+        <div class="jd-descrdiv">
+          Constructor for <code><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html">AddPlaceRequest</a></code>.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1054,6 +1079,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html#AddPlaceRequest(java.lang.String, com.google.android.gms.maps.model.LatLng, java.lang.String, java.util.List<java.lang.Integer>, java.lang.String, android.net.Uri)">AddPlaceRequest</a></span>(String name, <a href="/reference/com/google/android/gms/maps/model/LatLng.html">LatLng</a> latLng, String address, List&lt;Integer&gt; placeTypes, String phoneNumber, Uri uri)</nobr>
 
+        <div class="jd-descrdiv">
+          Constructor for <code><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html">AddPlaceRequest</a></code>.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1516,7 +1548,37 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Constructor for <code><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html">AddPlaceRequest</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>name</td>
+          <td>the full textual name of the business, point of interest, or other place. Limited
+        to 255 characters.</td>
+        </tr>
+        <tr>
+          <th>latLng</td>
+          <td>specifies the location of the place.</td>
+        </tr>
+        <tr>
+          <th>address</td>
+          <td>human-readable address of the place. If a place has a well-formatted,
+        human-readable address, it is more likely to pass the moderation process for inclusion
+        in the Google Places database.</td>
+        </tr>
+        <tr>
+          <th>placeTypes</td>
+          <td>list of place types that characterize this place. For a list of available
+        place types, see the documentation for the <code><a href="/reference/com/google/android/gms/location/places/Place.html">Place</a></code> interface.</td>
+        </tr>
+        <tr>
+          <th>phoneNumber</td>
+          <td>the phone number of this place.
+</td>
+        </tr>
+      </table>
+  </div>
 
     </div>
 </div>
@@ -1548,7 +1610,39 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Constructor for <code><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html">AddPlaceRequest</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>name</td>
+          <td>the full textual name of the business, point of interest, or other place. Limited
+        to 255 characters.</td>
+        </tr>
+        <tr>
+          <th>latLng</td>
+          <td>specifies the location of the place.</td>
+        </tr>
+        <tr>
+          <th>address</td>
+          <td>human-readable address of the place. If a place has a well-formatted,
+        human-readable address, it is more likely to pass the moderation process for inclusion
+        in the Google Places database.</td>
+        </tr>
+        <tr>
+          <th>placeTypes</td>
+          <td>list of place types that characterize this place. For a list of available
+        place types, see the documentation for the <code><a href="/reference/com/google/android/gms/location/places/Place.html">Place</a></code> interface.</td>
+        </tr>
+        <tr>
+          <th>uri</td>
+          <td>containing the address of the authoritative website for this place, such as a
+        business home page. If a place has a well-formatted website address, it is more likely
+        to pass the moderation process for inclusion in the Google Places database.
+</td>
+        </tr>
+      </table>
+  </div>
 
     </div>
 </div>
@@ -1580,7 +1674,43 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Constructor for <code><a href="/reference/com/google/android/gms/location/places/AddPlaceRequest.html">AddPlaceRequest</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>name</td>
+          <td>the full textual name of the business, point of interest, or other place. Limited
+        to 255 characters.</td>
+        </tr>
+        <tr>
+          <th>latLng</td>
+          <td>specifies the location of the place.</td>
+        </tr>
+        <tr>
+          <th>address</td>
+          <td>human-readable address of the place. If a place has a well-formatted,
+        human-readable address, it is more likely to pass the moderation process for inclusion
+        in the Google Places database.</td>
+        </tr>
+        <tr>
+          <th>placeTypes</td>
+          <td>list of place types that characterize this place. For a list of available
+        place types, see the documentation for the <code><a href="/reference/com/google/android/gms/location/places/Place.html">Place</a></code> interface.</td>
+        </tr>
+        <tr>
+          <th>phoneNumber</td>
+          <td>the phone number of this place.</td>
+        </tr>
+        <tr>
+          <th>uri</td>
+          <td>containing the address of the authoritative website for this place, such as a
+        business home page. If a place has a well-formatted website address, it is more likely
+        to pass the moderation process for inclusion in the Google Places database.
+</td>
+        </tr>
+      </table>
+  </div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/location/places/AutocompleteFilter.html b/docs/html/reference/com/google/android/gms/location/places/AutocompleteFilter.html
index cdd8044..5d1e00d 100644
--- a/docs/html/reference/com/google/android/gms/location/places/AutocompleteFilter.html
+++ b/docs/html/reference/com/google/android/gms/location/places/AutocompleteFilter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1453,7 +1464,9 @@
           <th>placeTypes</td>
           <td>The place types of predictions to be returned. Only places that have a type
         in this set will be returned. A null or empty set is the same as a set containing all
-        possible place types.
+        possible place types. For a list of available place types, see the list of <a
+        href="https://developers.google.com/places/documentation/supported_types#table3">
+        supported types</a>.
 </td>
         </tr>
       </table>
diff --git a/docs/html/reference/com/google/android/gms/location/places/AutocompletePrediction.Substring.html b/docs/html/reference/com/google/android/gms/location/places/AutocompletePrediction.Substring.html
index a7f373b..c7da1f65 100644
--- a/docs/html/reference/com/google/android/gms/location/places/AutocompletePrediction.Substring.html
+++ b/docs/html/reference/com/google/android/gms/location/places/AutocompletePrediction.Substring.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/AutocompletePrediction.html b/docs/html/reference/com/google/android/gms/location/places/AutocompletePrediction.html
index 5b4f15d..1055346 100644
--- a/docs/html/reference/com/google/android/gms/location/places/AutocompletePrediction.html
+++ b/docs/html/reference/com/google/android/gms/location/places/AutocompletePrediction.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html b/docs/html/reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html
index c04e570..2d14e2d 100644
--- a/docs/html/reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html
+++ b/docs/html/reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -930,8 +941,10 @@
 <h2>Class Overview</h2>
 <p itemprop="articleBody">A <code>DataBuffer</code> that represents a list of AutocompletePredictionEntitys.
  <p>
- NOTE: The listener must release this object after it is done with it, otherwise there might be a
- memory leak.
+ NOTE: The calling application must <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> this object after it is done with it to
+ prevent a memory leak. Refer to the <a
+ href="https://developers.google.com/places/documentation/android/buffers">developer's guide</a>
+ for more information about handling buffers.
 </p>
 
 
@@ -1027,6 +1040,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1654,6 +1674,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1867,7 +1894,13 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/location/places/GeoDataApi.html b/docs/html/reference/com/google/android/gms/location/places/GeoDataApi.html
index aac7149..23dc2af 100644
--- a/docs/html/reference/com/google/android/gms/location/places/GeoDataApi.html
+++ b/docs/html/reference/com/google/android/gms/location/places/GeoDataApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1109,6 +1120,10 @@
           <td>for which the autocomplete predictions are to be fetched.</td>
         </tr>
         <tr>
+          <th>bounds</td>
+          <td>for geographically biasing the autocomplete predictions.</td>
+        </tr>
+        <tr>
           <th>filter</td>
           <td>criteria for customizing the autocomplete predictions.</td>
         </tr>
diff --git a/docs/html/reference/com/google/android/gms/location/places/Place.html b/docs/html/reference/com/google/android/gms/location/places/Place.html
index 079b30f..2740dc2 100644
--- a/docs/html/reference/com/google/android/gms/location/places/Place.html
+++ b/docs/html/reference/com/google/android/gms/location/places/Place.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlaceBuffer.html b/docs/html/reference/com/google/android/gms/location/places/PlaceBuffer.html
index c48e1c8..84bc9e3 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlaceBuffer.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlaceBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -930,8 +941,10 @@
 <h2>Class Overview</h2>
 <p itemprop="articleBody">Data structure providing access to a list of <code><a href="/reference/com/google/android/gms/location/places/Place.html">Places</a></code>.
  <p>
- NOTE: The listener must release this object after it is done with it, otherwise there might be a
- memory leak.
+ NOTE: The calling application must <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> this object after it is done with it to
+ prevent a memory leak. Refer to the <a
+ href="https://developers.google.com/places/documentation/android/buffers">developer's guide</a>
+ for more information about handling buffers.
 </p>
 
 
@@ -1022,11 +1035,41 @@
 
 
 
+            CharSequence</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/location/places/PlaceBuffer.html#getAttributions()">getAttributions</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the attributions to be shown to the user.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
             <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/location/places/PlaceBuffer.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1638,6 +1681,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1825,6 +1875,47 @@
 </div>
 
 
+<A NAME="getAttributions()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        CharSequence
+      </span>
+      <span class="sympad">getAttributions</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the attributions to be shown to the user.
+ <p>
+ We recommend placing this information below any place information. See the
+ <a href="https://developers.google.com/places/android/attributions#third-party">Google
+ Places API Policies</a> for more details.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>attributions in HTML format, or null if there are no attributions to display.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="getStatus()"></A>
 
 <div class="jd-details api apilevel-">
@@ -1851,7 +1942,13 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlaceDetectionApi.html b/docs/html/reference/com/google/android/gms/location/places/PlaceDetectionApi.html
index 9f00af8..250952f 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlaceDetectionApi.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlaceDetectionApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlaceFilter.html b/docs/html/reference/com/google/android/gms/location/places/PlaceFilter.html
index 89e3e94..1d99566 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlaceFilter.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlaceFilter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlaceLikelihood.html b/docs/html/reference/com/google/android/gms/location/places/PlaceLikelihood.html
index d90cb25..b9c232f 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlaceLikelihood.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlaceLikelihood.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html b/docs/html/reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html
index 9c242d6..8ee9995 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -939,8 +950,10 @@
  The likelihoods are not guaranteed to be correct, and in a given PlaceLikelihoodBuffer they may
  not sum to 1.0.
  <p>
- NOTE: The listener must release this object after it is done with it, otherwise there might be a
- memory leak.
+ NOTE: The calling application must <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> this object after it is done with it to
+ prevent a memory leak. Refer to the <a
+ href="https://developers.google.com/places/documentation/android/buffers">developer's guide</a>
+ for more information about handling buffers.
 </p>
 
 
@@ -1059,6 +1072,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1686,6 +1706,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1902,11 +1929,11 @@
   <div class="jd-tagdata jd-tagdescr"><p>Returns the attributions to be shown to the user.
  <p>
  We recommend placing this information below any search results or place information. See the
- <a href="https://developers.google.com/places/policies#attribution_requirements">Google
+ <a href="https://developers.google.com/places/android/attributions#third-party">Google
  Places API Policies</a> for more details.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Returns</h5>
-      <ul class="nolist"><li>attributions in HTML format.
+      <ul class="nolist"><li>attributions in HTML format, or null if there are no attributions to display.
 </li></ul>
   </div>
 
@@ -1940,7 +1967,13 @@
 
 
 
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlaceReport.html b/docs/html/reference/com/google/android/gms/location/places/PlaceReport.html
index bdb3448..4b53c13 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlaceReport.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlaceReport.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlaceTypes.html b/docs/html/reference/com/google/android/gms/location/places/PlaceTypes.html
index c7671a9..ff7718e 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlaceTypes.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlaceTypes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/Places.html b/docs/html/reference/com/google/android/gms/location/places/Places.html
index faf7d0c..3aaced8 100644
--- a/docs/html/reference/com/google/android/gms/location/places/Places.html
+++ b/docs/html/reference/com/google/android/gms/location/places/Places.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlacesOptions.Builder.html b/docs/html/reference/com/google/android/gms/location/places/PlacesOptions.Builder.html
index 4bf1683..c3a8386 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlacesOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlacesOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlacesOptions.html b/docs/html/reference/com/google/android/gms/location/places/PlacesOptions.html
index 112b8b9..2ed7a54 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlacesOptions.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlacesOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/PlacesStatusCodes.html b/docs/html/reference/com/google/android/gms/location/places/PlacesStatusCodes.html
index c3e2088..bf5d8e3 100644
--- a/docs/html/reference/com/google/android/gms/location/places/PlacesStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/location/places/PlacesStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1065,6 +1076,18 @@
 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#API_NOT_AVAILABLE">API_NOT_AVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The client attempted to call a method from an API that failed to connect.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
           The result was canceled either due to client disconnect or <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code>.
@@ -1075,7 +1098,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1087,7 +1110,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#ERROR">ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1099,7 +1122,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1111,7 +1134,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERRUPTED">INTERRUPTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1123,7 +1146,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INVALID_ACCOUNT">INVALID_ACCOUNT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1135,7 +1158,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#LICENSE_CHECK_FAILED">LICENSE_CHECK_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1147,7 +1170,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#NETWORK_ERROR">NETWORK_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1159,7 +1182,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#RESOLUTION_REQUIRED">RESOLUTION_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1171,7 +1194,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_DISABLED">SERVICE_DISABLED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1183,7 +1206,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_INVALID">SERVICE_INVALID</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1195,7 +1218,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_MISSING">SERVICE_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1207,7 +1230,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1219,7 +1242,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1231,7 +1254,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1243,7 +1266,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS_CACHE">SUCCESS_CACHE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1255,7 +1278,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
diff --git a/docs/html/reference/com/google/android/gms/location/places/package-summary.html b/docs/html/reference/com/google/android/gms/location/places/package-summary.html
index 33e5e6e..22ecd8d 100644
--- a/docs/html/reference/com/google/android/gms/location/places/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/location/places/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/ui/PlacePicker.IntentBuilder.html b/docs/html/reference/com/google/android/gms/location/places/ui/PlacePicker.IntentBuilder.html
index df4d9a0..dc8bdd6 100644
--- a/docs/html/reference/com/google/android/gms/location/places/ui/PlacePicker.IntentBuilder.html
+++ b/docs/html/reference/com/google/android/gms/location/places/ui/PlacePicker.IntentBuilder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/ui/PlacePicker.html b/docs/html/reference/com/google/android/gms/location/places/ui/PlacePicker.html
index 958659b..5fbeec3 100644
--- a/docs/html/reference/com/google/android/gms/location/places/ui/PlacePicker.html
+++ b/docs/html/reference/com/google/android/gms/location/places/ui/PlacePicker.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/location/places/ui/package-summary.html b/docs/html/reference/com/google/android/gms/location/places/ui/package-summary.html
index 2e41b25..3108c76 100644
--- a/docs/html/reference/com/google/android/gms/location/places/ui/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/location/places/ui/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html b/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
index ca84cb2..a057d17 100644
--- a/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
+++ b/docs/html/reference/com/google/android/gms/maps/CameraUpdate.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html b/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
index 118df28..5a11b66 100644
--- a/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
+++ b/docs/html/reference/com/google/android/gms/maps/CameraUpdateFactory.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
index 0f976b2..d748774 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
index ef14443..09907ba 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
index 9601d43..da38433 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnIndoorStateChangeListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnIndoorStateChangeListener.html
index 2590680..65456e5 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnIndoorStateChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnIndoorStateChangeListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
index 5d16ced..95e1a8c 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
index e69a685..ec01176 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback.html
index ab3dc14..a748993 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
index f085e9f..d90f490 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
index 12eff5f..1768243 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
index a84b2a0..a62a741 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationButtonClickListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationButtonClickListener.html
index f38d1dc..5f17e92 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationButtonClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationButtonClickListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html
index 1e59cde..5932d2f 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback.html
index 169b03c..73bcb74 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMap.html b/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
index e20b7d4..c59d041 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMap.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html b/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
index ebd0068..36bdc66 100644
--- a/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/GoogleMapOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html b/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
index 2964e10..dc32e63 100644
--- a/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/LocationSource.html b/docs/html/reference/com/google/android/gms/maps/LocationSource.html
index 8343d785..009d82a 100644
--- a/docs/html/reference/com/google/android/gms/maps/LocationSource.html
+++ b/docs/html/reference/com/google/android/gms/maps/LocationSource.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/MapFragment.html b/docs/html/reference/com/google/android/gms/maps/MapFragment.html
index 85b31c1..c5e9797 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapFragment.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapFragment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -3456,6 +3467,8 @@
  <li>The callback will be executed in the main thread.
  <li>In the case where Google Play services is not installed on the user's device, the
  callback will not be triggered until the user installs it.
+ <li>In the rare case where the GoogleMap is destroyed immediately after creation, the
+ callback is not triggered.
  <li>The <code><a href="/reference/com/google/android/gms/maps/GoogleMap.html">GoogleMap</a></code> object provided by the callback is non-null.
  </ul></p></div>
   <div class="jd-tagdata">
diff --git a/docs/html/reference/com/google/android/gms/maps/MapView.html b/docs/html/reference/com/google/android/gms/maps/MapView.html
index 45f007b..c082043 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapView.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapView.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html b/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
index d69c811..56b513c 100644
--- a/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
+++ b/docs/html/reference/com/google/android/gms/maps/MapsInitializer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/OnMapReadyCallback.html b/docs/html/reference/com/google/android/gms/maps/OnMapReadyCallback.html
index deeb60d..2e7cdc5 100644
--- a/docs/html/reference/com/google/android/gms/maps/OnMapReadyCallback.html
+++ b/docs/html/reference/com/google/android/gms/maps/OnMapReadyCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/OnStreetViewPanoramaReadyCallback.html b/docs/html/reference/com/google/android/gms/maps/OnStreetViewPanoramaReadyCallback.html
index c807f60..97604e7 100644
--- a/docs/html/reference/com/google/android/gms/maps/OnStreetViewPanoramaReadyCallback.html
+++ b/docs/html/reference/com/google/android/gms/maps/OnStreetViewPanoramaReadyCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/Projection.html b/docs/html/reference/com/google/android/gms/maps/Projection.html
index 74ecb09..808eb80 100644
--- a/docs/html/reference/com/google/android/gms/maps/Projection.html
+++ b/docs/html/reference/com/google/android/gms/maps/Projection.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener.html b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener.html
index b640115..1b48cdb 100644
--- a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaChangeListener.html b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaChangeListener.html
index 0970264..6ab59e4 100644
--- a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaChangeListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaChangeListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaClickListener.html b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaClickListener.html
index 72f0ae6..7e5ed1e3 100644
--- a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaClickListener.html
+++ b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaClickListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -909,7 +920,7 @@
         
         <div class="jd-descrdiv">
           Called when the user makes a tap gesture on the panorama, but only if none of the
- overlays of the map handled the gesture.
+ overlays of the panorama handled the gesture.
           
     
 
@@ -993,7 +1004,7 @@
 
       
   <div class="jd-tagdata jd-tagdescr"><p>Called when the user makes a tap gesture on the panorama, but only if none of the
- overlays of the map handled the gesture. Implementations of this method are always
+ overlays of the panorama handled the gesture. Implementations of this method are always
  invoked on the main thread.</p></div>
   <div class="jd-tagdata">
       <h5 class="jd-tagtitle">Parameters</h5>
diff --git a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html
new file mode 100644
index 0000000..10e8e69
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html
@@ -0,0 +1,1077 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>StreetViewPanorama.OnStreetViewPanoramaLongClickListener | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">StreetViewPanorama.OnStreetViewPanoramaLongClickListener</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+<div class="sum-details-links">
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">StreetViewPanorama.OnStreetViewPanoramaLongClickListener</h1>
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaLongClickListener</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Callback interface for when the user long presses on the panorama.
+ <p>
+ Listeners will be invoked on the main thread
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html#onStreetViewPanoramaLongClick(com.google.android.gms.maps.model.StreetViewPanoramaOrientation)">onStreetViewPanoramaLongClick</a></span>(<a href="/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.html">StreetViewPanoramaOrientation</a> orientation)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the user makes a long-press gesture on the panorama, but only if none of the
+ overlays of the panorama handled the gesture.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="onStreetViewPanoramaLongClick(com.google.android.gms.maps.model.StreetViewPanoramaOrientation)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        void
+      </span>
+      <span class="sympad">onStreetViewPanoramaLongClick</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.html">StreetViewPanoramaOrientation</a> orientation)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when the user makes a long-press gesture on the panorama, but only if none of the
+ overlays of the panorama handled the gesture. Implementations of this method are always
+ invoked on the main thread.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>orientation</td>
+          <td>The tilt and bearing values corresponding to the point on the screen
+            where the user long-pressed. These values have an absolute value within a
+            specific panorama, and are independent of the current orientation of the
+            camera.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.html b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.html
index a78c7be..33d4e7a 100644
--- a/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.html
+++ b/docs/html/reference/com/google/android/gms/maps/StreetViewPanorama.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -980,6 +991,23 @@
     </tr>
     
     
+    <tr class=" api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html">StreetViewPanorama.OnStreetViewPanoramaLongClickListener</a></td>
+      <td class="jd-descrcol" width="100%">
+        Callback interface for when the user long presses on the panorama.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
 
 
 
@@ -1296,6 +1324,29 @@
         <td class="jd-typecol"><nobr>
             
             
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/maps/StreetViewPanorama.html#setOnStreetViewPanoramaLongClickListener(com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaLongClickListener)">setOnStreetViewPanoramaLongClickListener</a></span>(<a href="/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html">StreetViewPanorama.OnStreetViewPanoramaLongClickListener</a> listener)</nobr>
+
+        <div class="jd-descrdiv">
+          Sets a callback that's invoked when the panorama is long-pressed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
             
             
             
@@ -1315,7 +1366,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1338,7 +1389,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1361,7 +1412,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1384,7 +1435,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1407,7 +1458,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -1430,7 +1481,7 @@
 
 
 	 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
             
@@ -2213,6 +2264,49 @@
 </div>
 
 
+<A NAME="setOnStreetViewPanoramaLongClickListener(com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaLongClickListener)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+        final
+
+
+        void
+      </span>
+      <span class="sympad">setOnStreetViewPanoramaLongClickListener</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html">StreetViewPanorama.OnStreetViewPanoramaLongClickListener</a> listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Sets a callback that's invoked when the panorama is long-pressed.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>listener</td>
+          <td>The callback that's invoked when the panorama is long-pressed. To unset
+            the callback, use <code>null</code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="setPanningGesturesEnabled(boolean)"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaFragment.html b/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaFragment.html
index 80983fa..50c538d 100644
--- a/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaFragment.html
+++ b/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaFragment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaOptions.html b/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaOptions.html
index 9b7de1c..696a3cf 100644
--- a/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaView.html b/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaView.html
index a338a55..f461614 100644
--- a/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaView.html
+++ b/docs/html/reference/com/google/android/gms/maps/StreetViewPanoramaView.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html b/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
index e086e8f..8548903 100644
--- a/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
+++ b/docs/html/reference/com/google/android/gms/maps/SupportMapFragment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -3262,6 +3273,8 @@
  <li>The callback will be executed in the main thread.
  <li>In the case where Google Play services is not installed on the user's device, the
  callback will not be triggered until the user installs it.
+ <li>In the rare case where the GoogleMap is destroyed immediately after creation, the
+ callback is not triggered.
  <li>The <code><a href="/reference/com/google/android/gms/maps/GoogleMap.html">GoogleMap</a></code> object provided by the callback is non-null.
  </ul></p></div>
   <div class="jd-tagdata">
diff --git a/docs/html/reference/com/google/android/gms/maps/SupportStreetViewPanoramaFragment.html b/docs/html/reference/com/google/android/gms/maps/SupportStreetViewPanoramaFragment.html
index e140f0b..3370c41 100644
--- a/docs/html/reference/com/google/android/gms/maps/SupportStreetViewPanoramaFragment.html
+++ b/docs/html/reference/com/google/android/gms/maps/SupportStreetViewPanoramaFragment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/UiSettings.html b/docs/html/reference/com/google/android/gms/maps/UiSettings.html
index d1c8bb2..30063d9 100644
--- a/docs/html/reference/com/google/android/gms/maps/UiSettings.html
+++ b/docs/html/reference/com/google/android/gms/maps/UiSettings.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
index f6703b6..cde3690 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptor.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
index 0194652..54d1316 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
index b687f50..9440ec2 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
index a55eaaf..7e38f61 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/CameraPosition.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Circle.html b/docs/html/reference/com/google/android/gms/maps/model/Circle.html
index d0391c75..d5463c3 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Circle.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Circle.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html b/docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html
index ae9d3f7..d4a025d 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/CircleOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
index d2b7e4e..3394546 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlay.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
index b7c3517..fba321d 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/GroundOverlayOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/IndoorBuilding.html b/docs/html/reference/com/google/android/gms/maps/model/IndoorBuilding.html
index 3a248c5..155e09b 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/IndoorBuilding.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/IndoorBuilding.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/IndoorLevel.html b/docs/html/reference/com/google/android/gms/maps/model/IndoorLevel.html
index 46e0bba..93cf9fe 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/IndoorLevel.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/IndoorLevel.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLng.html b/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
index 7434904..f2f9225 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLng.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
index 46edc64..7d37168 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
index 694dafe..27cafc0 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/LatLngBounds.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Marker.html b/docs/html/reference/com/google/android/gms/maps/model/Marker.html
index 5b0e409..50ea713 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Marker.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Marker.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html b/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
index 1615d67..ba30ff2 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/MarkerOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Polygon.html b/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
index 6212db0..ce61d39 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Polygon.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html b/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
index 0d906b4..9975e21 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/PolygonOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Polyline.html b/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
index 953ab51..a313b91 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Polyline.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html b/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
index fed63d9..838bb88 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/PolylineOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html b/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
index 243415d..662aa38 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/RuntimeRemoteException.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.Builder.html b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.Builder.html
index bae66d5..c592154 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.Builder.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.html b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.html
index 5aceda7..f5441b1 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaLink.html b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaLink.html
index f0df0a49..d2568ca 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaLink.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaLink.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaLocation.html b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaLocation.html
index 13c88bc..95cdc3f 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaLocation.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaLocation.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.Builder.html b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.Builder.html
index 988abe3..97e9ce5 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.Builder.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.html b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.html
index 8859d7e..63c9686 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/Tile.html b/docs/html/reference/com/google/android/gms/maps/model/Tile.html
index 63afb94..763ec1a 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/Tile.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/Tile.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1030,7 +1041,7 @@
           int</nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/maps/model/Tile.html#height">height</a></td>
           <td class="jd-descrcol" width="100%">
-            The width of the image encoded by <code><a href="/reference/com/google/android/gms/maps/model/Tile.html#data">data</a></code> in pixels.
+            The height of the image encoded by <code><a href="/reference/com/google/android/gms/maps/model/Tile.html#data">data</a></code> in pixels.
             
     
 
@@ -1482,7 +1493,7 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>The width of the image encoded by <code><a href="/reference/com/google/android/gms/maps/model/Tile.html#data">data</a></code> in pixels. </p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>The height of the image encoded by <code><a href="/reference/com/google/android/gms/maps/model/Tile.html#data">data</a></code> in pixels. </p></div>
 
     
     </div>
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html b/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
index a9f59e0..09564a5 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileOverlay.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html b/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
index db1a2f1..dfef02c 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileOverlayOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html b/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
index a010d24..1143ff8 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/TileProvider.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html b/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
index 1446159..02e9399 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/UrlTileProvider.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html b/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
index fceaf4f..2126916 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/VisibleRegion.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/model/package-summary.html b/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
index 38cdf71..94f8530 100644
--- a/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/maps/model/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/maps/package-summary.html b/docs/html/reference/com/google/android/gms/maps/package-summary.html
index f72f971..4dbe85b 100644
--- a/docs/html/reference/com/google/android/gms/maps/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/maps/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1038,6 +1049,17 @@
       </tr>
       
     
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html">StreetViewPanorama.OnStreetViewPanoramaLongClickListener</a></td>
+        <td class="jd-descrcol" width="100%">
+          Callback interface for when the user long presses on the panorama.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
   </table>
 
     </div>
diff --git a/docs/html/reference/com/google/android/gms/nearby/Nearby.html b/docs/html/reference/com/google/android/gms/nearby/Nearby.html
index 6f6ee11..011f4cc 100644
--- a/docs/html/reference/com/google/android/gms/nearby/Nearby.html
+++ b/docs/html/reference/com/google/android/gms/nearby/Nearby.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/AppIdentifier.html b/docs/html/reference/com/google/android/gms/nearby/connection/AppIdentifier.html
index 3b20772..9a3b1f4 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/AppIdentifier.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/AppIdentifier.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/AppMetadata.html b/docs/html/reference/com/google/android/gms/nearby/connection/AppMetadata.html
index 88c67c2..01865d0 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/AppMetadata.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/AppMetadata.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.ConnectionRequestListener.html b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.ConnectionRequestListener.html
index 510d1c9..3386f65 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.ConnectionRequestListener.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.ConnectionRequestListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.ConnectionResponseCallback.html b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.ConnectionResponseCallback.html
index beb27ff..016a1e0 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.ConnectionResponseCallback.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.ConnectionResponseCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.EndpointDiscoveryListener.html b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.EndpointDiscoveryListener.html
index e088747..b761e66 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.EndpointDiscoveryListener.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.EndpointDiscoveryListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.MessageListener.html b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.MessageListener.html
index c25fc39..a946691 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.MessageListener.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.MessageListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.StartAdvertisingResult.html b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.StartAdvertisingResult.html
index eb74ab2..05c9b93 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.StartAdvertisingResult.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.StartAdvertisingResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1008,6 +1019,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.html b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.html
index 9cadba5..4a3eb1f 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/Connections.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/Connections.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/ConnectionsStatusCodes.html b/docs/html/reference/com/google/android/gms/nearby/connection/ConnectionsStatusCodes.html
index 252050e..928ca68 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/ConnectionsStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/ConnectionsStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1078,6 +1089,18 @@
 
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#API_NOT_AVAILABLE">API_NOT_AVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The client attempted to call a method from an API that failed to connect.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
           The result was canceled either due to client disconnect or <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code>.
@@ -1088,7 +1111,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1100,7 +1123,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#ERROR">ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1112,7 +1135,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1124,7 +1147,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERRUPTED">INTERRUPTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1136,7 +1159,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INVALID_ACCOUNT">INVALID_ACCOUNT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1148,7 +1171,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#LICENSE_CHECK_FAILED">LICENSE_CHECK_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1160,7 +1183,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#NETWORK_ERROR">NETWORK_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1172,7 +1195,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#RESOLUTION_REQUIRED">RESOLUTION_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1184,7 +1207,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_DISABLED">SERVICE_DISABLED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1196,7 +1219,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_INVALID">SERVICE_INVALID</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1208,7 +1231,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_MISSING">SERVICE_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1220,7 +1243,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1232,7 +1255,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1244,7 +1267,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1256,7 +1279,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS_CACHE">SUCCESS_CACHE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1268,7 +1291,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
diff --git a/docs/html/reference/com/google/android/gms/nearby/connection/package-summary.html b/docs/html/reference/com/google/android/gms/nearby/connection/package-summary.html
index 43e8b91..0b382e2 100644
--- a/docs/html/reference/com/google/android/gms/nearby/connection/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/nearby/connection/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/nearby/package-summary.html b/docs/html/reference/com/google/android/gms/nearby/package-summary.html
index 08ade68..9797d47 100644
--- a/docs/html/reference/com/google/android/gms/nearby/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/nearby/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/package-summary.html b/docs/html/reference/com/google/android/gms/package-summary.html
index 095ef2c..d9cf28e 100644
--- a/docs/html/reference/com/google/android/gms/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/panorama/Panorama.html b/docs/html/reference/com/google/android/gms/panorama/Panorama.html
index 6076bf5..b29ae79 100644
--- a/docs/html/reference/com/google/android/gms/panorama/Panorama.html
+++ b/docs/html/reference/com/google/android/gms/panorama/Panorama.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/panorama/PanoramaApi.PanoramaResult.html b/docs/html/reference/com/google/android/gms/panorama/PanoramaApi.PanoramaResult.html
index 1780582..57e8559 100644
--- a/docs/html/reference/com/google/android/gms/panorama/PanoramaApi.PanoramaResult.html
+++ b/docs/html/reference/com/google/android/gms/panorama/PanoramaApi.PanoramaResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -988,6 +999,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/panorama/PanoramaApi.html b/docs/html/reference/com/google/android/gms/panorama/PanoramaApi.html
index c036a26..c61495b 100644
--- a/docs/html/reference/com/google/android/gms/panorama/PanoramaApi.html
+++ b/docs/html/reference/com/google/android/gms/panorama/PanoramaApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/panorama/package-summary.html b/docs/html/reference/com/google/android/gms/panorama/package-summary.html
index b149329..7316821 100644
--- a/docs/html/reference/com/google/android/gms/panorama/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/panorama/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/Account.html b/docs/html/reference/com/google/android/gms/plus/Account.html
index 4aef37f..8b31153 100644
--- a/docs/html/reference/com/google/android/gms/plus/Account.html
+++ b/docs/html/reference/com/google/android/gms/plus/Account.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/Moments.LoadMomentsResult.html b/docs/html/reference/com/google/android/gms/plus/Moments.LoadMomentsResult.html
index c56c2f2..210e566 100644
--- a/docs/html/reference/com/google/android/gms/plus/Moments.LoadMomentsResult.html
+++ b/docs/html/reference/com/google/android/gms/plus/Moments.LoadMomentsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1054,6 +1065,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/plus/Moments.html b/docs/html/reference/com/google/android/gms/plus/Moments.html
index ecc2e32..c26d088 100644
--- a/docs/html/reference/com/google/android/gms/plus/Moments.html
+++ b/docs/html/reference/com/google/android/gms/plus/Moments.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/People.LoadPeopleResult.html b/docs/html/reference/com/google/android/gms/plus/People.LoadPeopleResult.html
index 5706ada..db1f51e 100644
--- a/docs/html/reference/com/google/android/gms/plus/People.LoadPeopleResult.html
+++ b/docs/html/reference/com/google/android/gms/plus/People.LoadPeopleResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1031,6 +1042,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/plus/People.OrderBy.html b/docs/html/reference/com/google/android/gms/plus/People.OrderBy.html
index f70be22..d64a9d6 100644
--- a/docs/html/reference/com/google/android/gms/plus/People.OrderBy.html
+++ b/docs/html/reference/com/google/android/gms/plus/People.OrderBy.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/People.html b/docs/html/reference/com/google/android/gms/plus/People.html
index 2ed8cacd..251ed0b 100644
--- a/docs/html/reference/com/google/android/gms/plus/People.html
+++ b/docs/html/reference/com/google/android/gms/plus/People.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/Plus.PlusOptions.Builder.html b/docs/html/reference/com/google/android/gms/plus/Plus.PlusOptions.Builder.html
index c133e63..16eee82 100644
--- a/docs/html/reference/com/google/android/gms/plus/Plus.PlusOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/Plus.PlusOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/Plus.PlusOptions.html b/docs/html/reference/com/google/android/gms/plus/Plus.PlusOptions.html
index 4c5e5c5..17bb650 100644
--- a/docs/html/reference/com/google/android/gms/plus/Plus.PlusOptions.html
+++ b/docs/html/reference/com/google/android/gms/plus/Plus.PlusOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/Plus.html b/docs/html/reference/com/google/android/gms/plus/Plus.html
index 648c258..cc98e01 100644
--- a/docs/html/reference/com/google/android/gms/plus/Plus.html
+++ b/docs/html/reference/com/google/android/gms/plus/Plus.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.DefaultOnPlusOneClickListener.html b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.DefaultOnPlusOneClickListener.html
index 2576373..8ba8352 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.DefaultOnPlusOneClickListener.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.DefaultOnPlusOneClickListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
index 6a3936b..28ff721 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
index c435a54..73b6441 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusOneButton.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusOneDummyView.html b/docs/html/reference/com/google/android/gms/plus/PlusOneDummyView.html
index 124d151..9d569d6 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusOneDummyView.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusOneDummyView.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html b/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
index 4fd2810..3e5f2eb 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusShare.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/PlusShare.html b/docs/html/reference/com/google/android/gms/plus/PlusShare.html
index 5946796..4e8bfb3 100644
--- a/docs/html/reference/com/google/android/gms/plus/PlusShare.html
+++ b/docs/html/reference/com/google/android/gms/plus/PlusShare.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html b/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html
index 0db1420..e478725 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html b/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html
index 6a121c5..1cf1183 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/ItemScope.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html b/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html
index 5250716..ca48862 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html b/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html
index 367ad6a..8478684 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/Moment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html b/docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html
index 8f8456a..16bae07 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/MomentBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html b/docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html
index 1a7968b..b75c860 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/moments/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html
index 1acffea..05b4650 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.AgeRange.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html
index 14f6afc..871a285 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html
index c7efce6..7811997 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html
index bbb3128..abbaee0 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html
index 06ce0a1..c8ea457 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Cover.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html
index 3638d83..8dea2af 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Gender.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html
index a7bed1b..acada0a 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Image.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html
index c77592a..c78be46 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Name.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html
index 74ef76f..fbe7bdf 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.ObjectType.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html
index d883b54..d529bcd 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html
index 3743d9a..086436e 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Organizations.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html
index 9208265..f5a84d4 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html
index fc0e72a..fa606bc 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html
index 55c050f..ae0adb0 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html
index 0606fb2..6e88aa6 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.Urls.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/Person.html b/docs/html/reference/com/google/android/gms/plus/model/people/Person.html
index 77e4f54..df4a875 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/Person.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/Person.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html b/docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html
index bf5e393..e6dd143 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/PersonBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html b/docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html
index b3b4e69..b6ff25d 100644
--- a/docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/plus/model/people/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/plus/package-summary.html b/docs/html/reference/com/google/android/gms/plus/package-summary.html
index cea3af4..4dac6f2 100644
--- a/docs/html/reference/com/google/android/gms/plus/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/plus/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/safetynet/SafetyNet.html b/docs/html/reference/com/google/android/gms/safetynet/SafetyNet.html
index 5709c30..1b26dec 100644
--- a/docs/html/reference/com/google/android/gms/safetynet/SafetyNet.html
+++ b/docs/html/reference/com/google/android/gms/safetynet/SafetyNet.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html b/docs/html/reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html
index 2c15485..9edc99d 100644
--- a/docs/html/reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html
+++ b/docs/html/reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -995,6 +1006,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
 
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/safetynet/SafetyNetApi.html b/docs/html/reference/com/google/android/gms/safetynet/SafetyNetApi.html
index 0db9259..7b0fa59 100644
--- a/docs/html/reference/com/google/android/gms/safetynet/SafetyNetApi.html
+++ b/docs/html/reference/com/google/android/gms/safetynet/SafetyNetApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/safetynet/package-summary.html b/docs/html/reference/com/google/android/gms/safetynet/package-summary.html
index d90272e..9a709ca 100644
--- a/docs/html/reference/com/google/android/gms/safetynet/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/safetynet/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/search/GoogleNowAuthState.html b/docs/html/reference/com/google/android/gms/search/GoogleNowAuthState.html
new file mode 100644
index 0000000..c0e8f26
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/search/GoogleNowAuthState.html
@@ -0,0 +1,1574 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>GoogleNowAuthState | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">GoogleNowAuthState</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+  <a href="#inhconstants">Inherited Constants</a>
+
+
+
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    class
+<h1 itemprop="name">GoogleNowAuthState</h1>
+
+
+
+
+    extends Object<br/>
+
+
+
+
+
+
+      implements
+
+        Parcelable
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.search.GoogleNowAuthState</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Output of
+ <code><a href="/reference/com/google/android/gms/search/SearchAuthApi.html#getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, String)</a></code>.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="inhconstants" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Constants</div></th></tr>
+
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-constants-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>From interface
+android.os.Parcelable
+<div id="inherited-constants-android.os.Parcelable">
+  <div id="inherited-constants-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-constants-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">CONTENTS_FILE_DESCRIPTOR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">PARCELABLE_WRITE_RETURN_VALUE</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/search/GoogleNowAuthState.html#getAccessToken()">getAccessToken</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the OAuth access token or null if access token is unavailable.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/search/GoogleNowAuthState.html#getAuthCode()">getAuthCode</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the OAuth authorization code or null if authorization code is unavailable.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            long</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/search/GoogleNowAuthState.html#getNextAllowedTimeMillis()">getNextAllowedTimeMillis</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          If the request was rejected by the throttler then the next allowed request wall time
+ (milliseconds since epoch) is returned.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.os.Parcelable
+
+<div id="inherited-methods-android.os.Parcelable">
+  <div id="inherited-methods-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">describeContents</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">writeToParcel</span>(Parcel arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getAccessToken()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">getAccessToken</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the OAuth access token or null if access token is unavailable.
+ <p>
+ Access token is made available instead of auth code when an authorization code was already
+ issued for the web app client ID. This access token may be used with the Now API or it can be
+ revoked to subsequently obtain a new auth code.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getAuthCode()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        String
+      </span>
+      <span class="sympad">getAuthCode</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the OAuth authorization code or null if authorization code is unavailable.
+ <p>
+ The authorization code may be sent to the web application where it can be sent along with the
+ client secret to the Google OAuth server to obtain a pair of refresh and access tokens. For
+ details see
+ <a href="https://developers.google.com/accounts/docs/CrossClientAuth">Cross-client
+ Identity</a>.
+ <p>
+ If an authorization code was already issued for the web app client ID then an authorization
+ code will not be available and an access token will be made available instead. See
+ <code><a href="/reference/com/google/android/gms/search/GoogleNowAuthState.html#getAccessToken()">getAccessToken()</a></code>.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getNextAllowedTimeMillis()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        long
+      </span>
+      <span class="sympad">getNextAllowedTimeMillis</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>If the request was rejected by the throttler then the next allowed request wall time
+ (milliseconds since epoch) is returned.
+</p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html b/docs/html/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html
new file mode 100644
index 0000000..8cfc56f
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html
@@ -0,0 +1,1599 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>SearchAuth.StatusCodes | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">SearchAuth.StatusCodes</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+  <a href="#constants">Constants</a>
+
+
+
+
+
+
+  &#124; <a href="#pubctors">Ctors</a>
+
+
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    class
+<h1 itemprop="name">SearchAuth.StatusCodes</h1>
+
+
+
+
+    extends Object<br/>
+
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.search.SearchAuth.StatusCodes</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Status codes for SearchAuth API containing a combination of common status codes and custom
+ status codes.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html#AUTH_DISABLED">AUTH_DISABLED</a></td>
+        <td class="jd-descrcol" width="100%">
+          Authorization for the requested access is disabled for the caller.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html#AUTH_THROTTLED">AUTH_THROTTLED</a></td>
+        <td class="jd-descrcol" width="100%">
+          API call has been rejected by the throttler.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
+        <td class="jd-descrcol" width="100%">
+          The application is misconfigured.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
+        <td class="jd-descrcol" width="100%">
+          An internal error occurred.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html#SUCCESS">SUCCESS</a></td>
+        <td class="jd-descrcol" width="100%">
+          The operation was successful.
+
+
+
+        </td>
+    </tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html#SearchAuth.StatusCodes()">SearchAuth.StatusCodes</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="AUTH_DISABLED"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        AUTH_DISABLED
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Authorization for the requested access is disabled for the caller. For example, it may be
+ disabled due to opt-outs or lack of opt-ins by the user.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                10000
+                (0x00002710)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="AUTH_THROTTLED"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        AUTH_THROTTLED
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>API call has been rejected by the throttler. Retry on or after
+ <code><a href="/reference/com/google/android/gms/search/GoogleNowAuthState.html#getNextAllowedTimeMillis()">getNextAllowedTimeMillis()</a></code>.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                10001
+                (0x00002711)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="DEVELOPER_ERROR"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        DEVELOPER_ERROR
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The application is misconfigured. This error is not recoverable and will be treated as fatal.
+ The developer should look at the logs after this to determine more actionable information.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                10
+                (0x0000000a)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="INTERNAL_ERROR"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        INTERNAL_ERROR
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>An internal error occurred. Retrying should resolve the problem.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                8
+                (0x00000008)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="SUCCESS"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        SUCCESS
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>The operation was successful.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                0
+                (0x00000000)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="SearchAuth.StatusCodes()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+
+      </span>
+      <span class="sympad">SearchAuth.StatusCodes</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/search/SearchAuth.html b/docs/html/reference/com/google/android/gms/search/SearchAuth.html
new file mode 100644
index 0000000..7d73953
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/search/SearchAuth.html
@@ -0,0 +1,1383 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>SearchAuth | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">SearchAuth</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+  <a href="#nestedclasses">Nested Classes</a>
+
+
+
+
+
+
+
+
+  &#124; <a href="#lfields">Fields</a>
+
+
+
+
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    class
+<h1 itemprop="name">SearchAuth</h1>
+
+
+
+
+    extends Object<br/>
+
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.search.SearchAuth</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">The main entry point to the SearchAuth APIs.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        class</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html">SearchAuth.StatusCodes</a></td>
+      <td class="jd-descrcol" width="100%">
+        Status codes for SearchAuth API containing a combination of common status codes and custom
+ status codes.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== FIELD SUMMARY =========== -->
+<table id="lfields" class="jd-sumtable"><tr><th colspan="12">Fields</th></tr>
+
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;<a href="/reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html">Api.ApiOptions.NoOptions</a>&gt;</nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.html#API">API</a></td>
+          <td class="jd-descrcol" width="100%">
+            Identifies the SearchAuth API when used with <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html#addApi(com.google.android.gms.common.api.Api<? extends com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions>)">addApi(Api<? extends Api.ApiOptions.NotRequiredOptions>)</a></code>.
+
+
+
+          </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/search/SearchAuthApi.html">SearchAuthApi</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.html#SearchAuthApi">SearchAuthApi</a></td>
+          <td class="jd-descrcol" width="100%">
+            Entry point to the SearchAuth API methods.
+
+
+
+          </td>
+      </tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- ========= FIELD DETAIL ======== -->
+<h2>Fields</h2>
+
+
+
+
+<A NAME="API"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/common/api/Api.html">Api</a>&lt;<a href="/reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html">Api.ApiOptions.NoOptions</a>&gt;
+      </span>
+        API
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Identifies the SearchAuth API when used with <code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html#addApi(com.google.android.gms.common.api.Api<? extends com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions>)">addApi(Api<? extends Api.ApiOptions.NotRequiredOptions>)</a></code>.
+</p></div>
+
+
+    </div>
+</div>
+
+
+
+<A NAME="SearchAuthApi"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/search/SearchAuthApi.html">SearchAuthApi</a>
+      </span>
+        SearchAuthApi
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Entry point to the SearchAuth API methods.
+</p></div>
+
+
+    </div>
+</div>
+
+
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html b/docs/html/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html
new file mode 100644
index 0000000..099818a
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html
@@ -0,0 +1,1151 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>SearchAuthApi.GoogleNowAuthResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">SearchAuthApi.GoogleNowAuthResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">SearchAuthApi.GoogleNowAuthResult</h1>
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.search.SearchAuthApi.GoogleNowAuthResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result of <code><a href="/reference/com/google/android/gms/search/SearchAuthApi.html#getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">getGoogleNowAuth(GoogleApiClient, String)</a></code>.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/search/GoogleNowAuthState.html">GoogleNowAuthState</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html#getGoogleNowAuthState()">getGoogleNowAuthState</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the auth state if <code><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus()</a></code> indicates success.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getGoogleNowAuthState()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/search/GoogleNowAuthState.html">GoogleNowAuthState</a>
+      </span>
+      <span class="sympad">getGoogleNowAuthState</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the auth state if <code><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus()</a></code> indicates success.
+ Otherwise, returns null.
+</p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/search/SearchAuthApi.html b/docs/html/reference/com/google/android/gms/search/SearchAuthApi.html
new file mode 100644
index 0000000..218e068
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/search/SearchAuthApi.html
@@ -0,0 +1,1145 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>SearchAuthApi | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">SearchAuthApi</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+<div class="sum-details-links">
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    interface
+<h1 itemprop="name">SearchAuthApi</h1>
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.search.SearchAuthApi</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">API for Google Search auth.
+ <p>
+ Usage example:
+ <pre>
+ <code>SearchAuthApi searchAuthApi = SearchAuth.SearchAuthApi;
+ GoogleApiClient client = new GoogleApiClient.Builder(context)
+         .addApi(SearchAuth.API)
+         .build();
+ client.connect();
+
+ try {
+     // Invoke methods of searchAuthApi.
+ &#125; finally {
+     client.disconnect();
+ &#125;
+ </code>
+ </pre>
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html">SearchAuthApi.GoogleNowAuthResult</a></td>
+      <td class="jd-descrcol" width="100%">
+        Result of <code><a href="/reference/com/google/android/gms/search/SearchAuthApi.html#getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">getGoogleNowAuth(GoogleApiClient, String)</a></code>.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html">SearchAuthApi.GoogleNowAuthResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/search/SearchAuthApi.html#getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">getGoogleNowAuth</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String webAppClientId)</nobr>
+
+        <div class="jd-descrdiv">
+          Obtains authorization for the caller to use the Now API to publish to the Google Now user,
+ if any, on this device.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html">SearchAuthApi.GoogleNowAuthResult</a>&gt;
+      </span>
+      <span class="sympad">getGoogleNowAuth</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String webAppClientId)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Obtains authorization for the caller to use the Now API to publish to the Google Now user,
+ if any, on this device.
+ <p>
+ Usage example:
+ <pre>
+ <code>SearchAuthApi.GoogleNowAuthResult authResult;
+ try {
+     authResult = searchAuthApi.getGoogleNowAuth(client, WEB_APP_CLIENT_ID)
+             .await();
+ &#125; finally {
+     client.disconnect();
+ &#125;
+
+ Status status = authResult.getStatus();
+ if (status.isSuccess()) {
+     GoogleNowAuthState authState = authResult.getGoogleNowAuthState();
+     if (authState.getAuthCode() != null) {
+         // Send auth code to your server and from your server obtain OAuth refresh
+         // and access tokens.
+     &#125; else if (authState.getAccessToken() != null) {
+         // Already obtained auth code before. To get a new auth code revoke this
+         // token and retry.
+     &#125;
+ &#125;
+ </code>
+ </pre></p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td><code><a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a></code> that includes <code><a href="/reference/com/google/android/gms/search/SearchAuth.html#API">API</a></code>.</td>
+        </tr>
+        <tr>
+          <th>webAppClientId</td>
+          <td>Client ID, in the Google Developer Console, of the web application
+                       that will be using the Now API.</td>
+        </tr>
+      </table>
+  </div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Returns</h5>
+      <ul class="nolist"><li>Pending result for <code><a href="/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html">SearchAuthApi.GoogleNowAuthResult</a></code>.
+</li></ul>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/search/package-summary.html b/docs/html/reference/com/google/android/gms/search/package-summary.html
new file mode 100644
index 0000000..8110260
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/search/package-summary.html
@@ -0,0 +1,946 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>com.google.android.gms.search | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+
+<body class="gc-documentation google
+  develop reference">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">com.google.android.gms.search</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12" id="doc-col">
+
+<div id="api-info-block">
+<div class="api-level">
+
+
+
+
+</div>
+</div>
+
+<div id="jd-header">
+  package
+  <h1>com.google.android.gms.search</h1>
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+
+
+  <div class="jd-descr">
+    Contains the Search APIs
+
+  </div>
+
+
+
+
+
+
+
+
+
+    <h2>Interfaces</h2>
+    <div class="jd-sumtable">
+
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuthApi.html">SearchAuthApi</a></td>
+        <td class="jd-descrcol" width="100%">
+          API for Google Search auth.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html">SearchAuthApi.GoogleNowAuthResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/search/SearchAuthApi.html#getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">getGoogleNowAuth(GoogleApiClient, String)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+    </div>
+
+
+
+
+    <h2>Classes</h2>
+    <div class="jd-sumtable">
+
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/GoogleNowAuthState.html">GoogleNowAuthState</a></td>
+        <td class="jd-descrcol" width="100%">
+          Output of
+ <code><a href="/reference/com/google/android/gms/search/SearchAuthApi.html#getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">getGoogleNowAuth(com.google.android.gms.common.api.GoogleApiClient, String)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.html">SearchAuth</a></td>
+        <td class="jd-descrcol" width="100%">
+          The main entry point to the SearchAuth APIs.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/search/SearchAuth.StatusCodes.html">SearchAuth.StatusCodes</a></td>
+        <td class="jd-descrcol" width="100%">
+          Status codes for SearchAuth API containing a combination of common status codes and custom
+ status codes.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+    </div>
+
+
+
+
+
+
+
+
+
+
+
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div><!-- end jd-content -->
+</div><!-- doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/security/ProviderInstaller.ProviderInstallListener.html b/docs/html/reference/com/google/android/gms/security/ProviderInstaller.ProviderInstallListener.html
index a6ffcc9..3fb3b954 100644
--- a/docs/html/reference/com/google/android/gms/security/ProviderInstaller.ProviderInstallListener.html
+++ b/docs/html/reference/com/google/android/gms/security/ProviderInstaller.ProviderInstallListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/security/ProviderInstaller.html b/docs/html/reference/com/google/android/gms/security/ProviderInstaller.html
index 8724069..7a1a331 100644
--- a/docs/html/reference/com/google/android/gms/security/ProviderInstaller.html
+++ b/docs/html/reference/com/google/android/gms/security/ProviderInstaller.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/security/package-summary.html b/docs/html/reference/com/google/android/gms/security/package-summary.html
index faf2503..8fedd3a 100644
--- a/docs/html/reference/com/google/android/gms/security/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/security/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/Container.FunctionCallMacroCallback.html b/docs/html/reference/com/google/android/gms/tagmanager/Container.FunctionCallMacroCallback.html
index 7bd0eca..17c840c 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/Container.FunctionCallMacroCallback.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/Container.FunctionCallMacroCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/Container.FunctionCallTagCallback.html b/docs/html/reference/com/google/android/gms/tagmanager/Container.FunctionCallTagCallback.html
index 18710d0..afed8abd 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/Container.FunctionCallTagCallback.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/Container.FunctionCallTagCallback.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/Container.html b/docs/html/reference/com/google/android/gms/tagmanager/Container.html
index 1689def..372be65 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/Container.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/Container.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/ContainerHolder.ContainerAvailableListener.html b/docs/html/reference/com/google/android/gms/tagmanager/ContainerHolder.ContainerAvailableListener.html
index cdffbbc..39c0f0b 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/ContainerHolder.ContainerAvailableListener.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/ContainerHolder.ContainerAvailableListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/ContainerHolder.html b/docs/html/reference/com/google/android/gms/tagmanager/ContainerHolder.html
index 53137d9..ebabc63 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/ContainerHolder.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/ContainerHolder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1100,6 +1111,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/DataLayer.html b/docs/html/reference/com/google/android/gms/tagmanager/DataLayer.html
index c2c863a..e01d5c7 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/DataLayer.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/DataLayer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html b/docs/html/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html
index 240cec9..e07894a 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -788,6 +799,13 @@
   
 
 
+
+
+
+
+
+
+
 <div class="sum-details-links">
 
 Summary:
@@ -805,9 +823,6 @@
 
 
 
-  &#124; <a href="#pubmethods">Methods</a>
-  
-
 
 
   &#124; <a href="#inhmethods">Inherited Methods</a>
@@ -841,7 +856,11 @@
   
 
   
-    extends BroadcastReceiver<br/>
+
+
+
+
+    extends <a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html">CampaignTrackingReceiver</a><br/>
   
   
   
@@ -864,7 +883,7 @@
 
     <tr>
          	
-        <td colspan="3" class="jd-inheritance-class-cell">java.lang.Object</td>
+        <td colspan="4" class="jd-inheritance-class-cell">java.lang.Object</td>
     </tr>
     
 
@@ -872,7 +891,7 @@
         
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
          	
-        <td colspan="2" class="jd-inheritance-class-cell">android.content.BroadcastReceiver</td>
+        <td colspan="3" class="jd-inheritance-class-cell">android.content.BroadcastReceiver</td>
     </tr>
     
 
@@ -882,6 +901,18 @@
         
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
          	
+        <td colspan="2" class="jd-inheritance-class-cell"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html">com.google.android.gms.analytics.CampaignTrackingReceiver</a></td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
         <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.tagmanager.InstallReferrerReceiver</td>
     </tr>
     
@@ -999,8 +1030,33 @@
 
 
 
+
+
+
+
+
 <!-- ========== METHOD SUMMARY =========== -->
-<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingReceiver" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingReceiver-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  <a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html">com.google.android.gms.analytics.CampaignTrackingReceiver</a>
+
+<div id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingReceiver">
+  <div id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingReceiver-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingReceiver-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
 
 
 
@@ -1015,26 +1071,18 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html#onReceive(android.content.Context, android.content.Intent)">onReceive</a></span>(Context context, Intent intent)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingReceiver.html#onReceive(android.content.Context, android.content.Intent)">onReceive</a></span>(Context context, Intent intent)</nobr>
         
   </td></tr>
 
 
-
 </table>
+  </div>
+</div>
+</td></tr>
 
 
 
-
-
-
-
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="inhmethods" class="jd-sumtable"><tr><th>
-  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
-  <div style="clear:left;">Inherited Methods</div></th></tr>
-
-
 <tr class="api apilevel-" >
 <td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.BroadcastReceiver" class="jd-expando-trigger closed"
@@ -1627,43 +1675,6 @@
 <!-- ========= METHOD DETAIL ======== -->
 <!-- Public methdos -->
 
-<h2>Public Methods</h2>
-
-
-
-<A NAME="onReceive(android.content.Context, android.content.Intent)"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        void
-      </span>
-      <span class="sympad">onReceive</span>
-      <span class="normal">(Context context, Intent intent)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-
 
 
 <!-- ========= METHOD DETAIL ======== -->
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/InstallReferrerService.html b/docs/html/reference/com/google/android/gms/tagmanager/InstallReferrerService.html
index 0e479c1..5358f87 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/InstallReferrerService.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/InstallReferrerService.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -850,9 +861,6 @@
 
 
 
-  &#124; <a href="#promethods">Protected Methods</a>
-  
-
 
   &#124; <a href="#inhmethods">Inherited Methods</a>
 
@@ -897,7 +905,7 @@
   
 
   
-    extends IntentService<br/>
+    extends <a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html">CampaignTrackingService</a><br/>
   
   
   
@@ -964,7 +972,7 @@
         
             <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
          	
-        <td colspan="2" class="jd-inheritance-class-cell">android.app.IntentService</td>
+        <td colspan="2" class="jd-inheritance-class-cell"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html">com.google.android.gms.analytics.CampaignTrackingService</a></td>
     </tr>
     
 
@@ -2208,22 +2216,6 @@
             </nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/tagmanager/InstallReferrerService.html#InstallReferrerService(java.lang.String)">InstallReferrerService</a></span>(String name)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            </nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/tagmanager/InstallReferrerService.html#InstallReferrerService()">InstallReferrerService</a></span>()</nobr>
         
   </td></tr>
@@ -2239,31 +2231,6 @@
 
 
 
-<!-- ========== METHOD SUMMARY =========== -->
-<table id="promethods" class="jd-sumtable"><tr><th colspan="12">Protected Methods</th></tr>
-
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/tagmanager/InstallReferrerService.html#onHandleIntent(android.content.Intent)">onHandleIntent</a></span>(Intent intent)</nobr>
-        
-  </td></tr>
-
-
-
-</table>
-
-
 
 
 
@@ -2275,19 +2242,19 @@
 
 <tr class="api apilevel-" >
 <td colspan="12">
-  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.app.IntentService" class="jd-expando-trigger closed"
-          ><img id="inherited-methods-android.app.IntentService-trigger"
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingService" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingService-trigger"
           src="/assets/images/triangle-closed.png"
           class="jd-expando-trigger-img" /></a>
 From class
 
-  android.app.IntentService
+  <a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html">com.google.android.gms.analytics.CampaignTrackingService</a>
 
-<div id="inherited-methods-android.app.IntentService">
-  <div id="inherited-methods-android.app.IntentService-list"
+<div id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingService">
+  <div id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingService-list"
         class="jd-inheritedlinks">
   </div>
-  <div id="inherited-methods-android.app.IntentService-summary" style="display: none;">
+  <div id="inherited-methods-com.google.android.gms.analytics.CampaignTrackingService-summary" style="display: none;">
     <table class="jd-sumtable-expando">
     
 
@@ -2303,7 +2270,7 @@
             IBinder</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onBind</span>(Intent arg0)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#onBind(android.content.Intent)">onBind</a></span>(Intent intent)</nobr>
         
   </td></tr>
 
@@ -2319,7 +2286,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onCreate</span>()</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#onCreate()">onCreate</a></span>()</nobr>
         
   </td></tr>
 
@@ -2335,39 +2302,7 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onDestroy</span>()</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class=" api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            abstract
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onHandleIntent</span>(Intent arg0)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onStart</span>(Intent arg0, int arg1)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#onDestroy()">onDestroy</a></span>()</nobr>
         
   </td></tr>
 
@@ -2383,23 +2318,7 @@
             int</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">onStartCommand</span>(Intent arg0, int arg1, int arg2)</nobr>
-        
-  </td></tr>
-
-
-	 
-    <tr class="alt-color api apilevel-" >
-        <td class="jd-typecol"><nobr>
-            
-            
-            
-            
-            
-            void</nobr>
-        </td>
-        <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad">setIntentRedelivery</span>(boolean arg0)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/analytics/CampaignTrackingService.html#onStartCommand(android.content.Intent, int, int)">onStartCommand</a></span>(Intent intent, int flags, int startId)</nobr>
         
   </td></tr>
 
@@ -6232,38 +6151,6 @@
 
 
 
-<A NAME="InstallReferrerService(java.lang.String)"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        public 
-         
-         
-         
-         
-        
-      </span>
-      <span class="sympad">InstallReferrerService</span>
-      <span class="normal">(String name)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
 <A NAME="InstallReferrerService()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -6311,43 +6198,6 @@
 
 <!-- ========= METHOD DETAIL ======== -->
 
-<h2>Protected Methods</h2>
-
-
-
-<A NAME="onHandleIntent(android.content.Intent)"></A>
-
-<div class="jd-details api apilevel-"> 
-    <h4 class="jd-details-title">
-      <span class="normal">
-        protected 
-         
-         
-         
-         
-        void
-      </span>
-      <span class="sympad">onHandleIntent</span>
-      <span class="normal">(Intent intent)</span>
-    </h4>
-      <div class="api-level">
-        <div></div>
-        
-  
-
-      </div>
-    <div class="jd-details-descr">
-      
-    
-
-      
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
-
-    </div>
-</div>
-
-
-
 
 
 <!-- ========= END OF CLASS DATA ========= -->
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/PreviewActivity.html b/docs/html/reference/com/google/android/gms/tagmanager/PreviewActivity.html
index 3851c5f..2866d1a 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/PreviewActivity.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/PreviewActivity.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/TagManager.html b/docs/html/reference/com/google/android/gms/tagmanager/TagManager.html
index faa1dff..8e2b682 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/TagManager.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/TagManager.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/tagmanager/package-summary.html b/docs/html/reference/com/google/android/gms/tagmanager/package-summary.html
index 35855b4..1caa512 100644
--- a/docs/html/reference/com/google/android/gms/tagmanager/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/tagmanager/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/Address.html b/docs/html/reference/com/google/android/gms/wallet/Address.html
index 257ec29..ac6dc62 100644
--- a/docs/html/reference/com/google/android/gms/wallet/Address.html
+++ b/docs/html/reference/com/google/android/gms/wallet/Address.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/Cart.Builder.html b/docs/html/reference/com/google/android/gms/wallet/Cart.Builder.html
index d86a8e6..1dd0ced 100644
--- a/docs/html/reference/com/google/android/gms/wallet/Cart.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/Cart.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/Cart.html b/docs/html/reference/com/google/android/gms/wallet/Cart.html
index d6f011c..46198a7 100644
--- a/docs/html/reference/com/google/android/gms/wallet/Cart.html
+++ b/docs/html/reference/com/google/android/gms/wallet/Cart.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/CountrySpecification.html b/docs/html/reference/com/google/android/gms/wallet/CountrySpecification.html
index 7d4fe11..76a04ed 100644
--- a/docs/html/reference/com/google/android/gms/wallet/CountrySpecification.html
+++ b/docs/html/reference/com/google/android/gms/wallet/CountrySpecification.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/EnableWalletOptimizationReceiver.html b/docs/html/reference/com/google/android/gms/wallet/EnableWalletOptimizationReceiver.html
index 3436e96..7177079 100644
--- a/docs/html/reference/com/google/android/gms/wallet/EnableWalletOptimizationReceiver.html
+++ b/docs/html/reference/com/google/android/gms/wallet/EnableWalletOptimizationReceiver.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/FullWallet.html b/docs/html/reference/com/google/android/gms/wallet/FullWallet.html
index da5897f..4c15522 100644
--- a/docs/html/reference/com/google/android/gms/wallet/FullWallet.html
+++ b/docs/html/reference/com/google/android/gms/wallet/FullWallet.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/FullWalletRequest.Builder.html b/docs/html/reference/com/google/android/gms/wallet/FullWalletRequest.Builder.html
index 8d7f9d7..e47b4d2 100644
--- a/docs/html/reference/com/google/android/gms/wallet/FullWalletRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/FullWalletRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/FullWalletRequest.html b/docs/html/reference/com/google/android/gms/wallet/FullWalletRequest.html
index 9112424..00a8404 100644
--- a/docs/html/reference/com/google/android/gms/wallet/FullWalletRequest.html
+++ b/docs/html/reference/com/google/android/gms/wallet/FullWalletRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/GiftCardWalletObject.html b/docs/html/reference/com/google/android/gms/wallet/GiftCardWalletObject.html
index e777317..68e804d 100644
--- a/docs/html/reference/com/google/android/gms/wallet/GiftCardWalletObject.html
+++ b/docs/html/reference/com/google/android/gms/wallet/GiftCardWalletObject.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/InstrumentInfo.html b/docs/html/reference/com/google/android/gms/wallet/InstrumentInfo.html
index 4ecb8c7..277a223 100644
--- a/docs/html/reference/com/google/android/gms/wallet/InstrumentInfo.html
+++ b/docs/html/reference/com/google/android/gms/wallet/InstrumentInfo.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/LineItem.Builder.html b/docs/html/reference/com/google/android/gms/wallet/LineItem.Builder.html
index 9485102..42a2253 100644
--- a/docs/html/reference/com/google/android/gms/wallet/LineItem.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/LineItem.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/LineItem.Role.html b/docs/html/reference/com/google/android/gms/wallet/LineItem.Role.html
index 090e95d..8879b87 100644
--- a/docs/html/reference/com/google/android/gms/wallet/LineItem.Role.html
+++ b/docs/html/reference/com/google/android/gms/wallet/LineItem.Role.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/LineItem.html b/docs/html/reference/com/google/android/gms/wallet/LineItem.html
index 5b358a8..b618f60 100644
--- a/docs/html/reference/com/google/android/gms/wallet/LineItem.html
+++ b/docs/html/reference/com/google/android/gms/wallet/LineItem.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/LoyaltyWalletObject.html b/docs/html/reference/com/google/android/gms/wallet/LoyaltyWalletObject.html
index f5642c5..8adcc83 100644
--- a/docs/html/reference/com/google/android/gms/wallet/LoyaltyWalletObject.html
+++ b/docs/html/reference/com/google/android/gms/wallet/LoyaltyWalletObject.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/MaskedWallet.Builder.html b/docs/html/reference/com/google/android/gms/wallet/MaskedWallet.Builder.html
index e89e9a1..97c0187 100644
--- a/docs/html/reference/com/google/android/gms/wallet/MaskedWallet.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/MaskedWallet.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/MaskedWallet.html b/docs/html/reference/com/google/android/gms/wallet/MaskedWallet.html
index 1b03019..e36f845 100644
--- a/docs/html/reference/com/google/android/gms/wallet/MaskedWallet.html
+++ b/docs/html/reference/com/google/android/gms/wallet/MaskedWallet.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/MaskedWalletRequest.Builder.html b/docs/html/reference/com/google/android/gms/wallet/MaskedWalletRequest.Builder.html
index a0783f2..0fc3a7f 100644
--- a/docs/html/reference/com/google/android/gms/wallet/MaskedWalletRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/MaskedWalletRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/MaskedWalletRequest.html b/docs/html/reference/com/google/android/gms/wallet/MaskedWalletRequest.html
index b8662db..dd3221f 100644
--- a/docs/html/reference/com/google/android/gms/wallet/MaskedWalletRequest.html
+++ b/docs/html/reference/com/google/android/gms/wallet/MaskedWalletRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Builder.html b/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Builder.html
index 71612de..97d56b2 100644
--- a/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.Error.html b/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.Error.html
index 01d955b..d24d5d5 100644
--- a/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.Error.html
+++ b/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.Error.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.html b/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.html
index 4235846..5193874 100644
--- a/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.html
+++ b/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.html b/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.html
index 36cf22d..88c2d07 100644
--- a/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.html
+++ b/docs/html/reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/OfferWalletObject.html b/docs/html/reference/com/google/android/gms/wallet/OfferWalletObject.html
index c54153e..1cc4ffa 100644
--- a/docs/html/reference/com/google/android/gms/wallet/OfferWalletObject.html
+++ b/docs/html/reference/com/google/android/gms/wallet/OfferWalletObject.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/PaymentInstrumentType.html b/docs/html/reference/com/google/android/gms/wallet/PaymentInstrumentType.html
index 850581e..5da8cda 100644
--- a/docs/html/reference/com/google/android/gms/wallet/PaymentInstrumentType.html
+++ b/docs/html/reference/com/google/android/gms/wallet/PaymentInstrumentType.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/Payments.html b/docs/html/reference/com/google/android/gms/wallet/Payments.html
index b8679ee..f1a5a7e 100644
--- a/docs/html/reference/com/google/android/gms/wallet/Payments.html
+++ b/docs/html/reference/com/google/android/gms/wallet/Payments.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/ProxyCard.html b/docs/html/reference/com/google/android/gms/wallet/ProxyCard.html
index 975205f..ba3c104 100644
--- a/docs/html/reference/com/google/android/gms/wallet/ProxyCard.html
+++ b/docs/html/reference/com/google/android/gms/wallet/ProxyCard.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/Wallet.WalletOptions.Builder.html b/docs/html/reference/com/google/android/gms/wallet/Wallet.WalletOptions.Builder.html
index cb1e4de..a8688cd 100644
--- a/docs/html/reference/com/google/android/gms/wallet/Wallet.WalletOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/Wallet.WalletOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/Wallet.WalletOptions.html b/docs/html/reference/com/google/android/gms/wallet/Wallet.WalletOptions.html
index 34556c4..66e55a7 100644
--- a/docs/html/reference/com/google/android/gms/wallet/Wallet.WalletOptions.html
+++ b/docs/html/reference/com/google/android/gms/wallet/Wallet.WalletOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/Wallet.html b/docs/html/reference/com/google/android/gms/wallet/Wallet.html
index a14ab53..15d8d8b 100644
--- a/docs/html/reference/com/google/android/gms/wallet/Wallet.html
+++ b/docs/html/reference/com/google/android/gms/wallet/Wallet.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/WalletConstants.html b/docs/html/reference/com/google/android/gms/wallet/WalletConstants.html
index e78f11c..834fa46 100644
--- a/docs/html/reference/com/google/android/gms/wallet/WalletConstants.html
+++ b/docs/html/reference/com/google/android/gms/wallet/WalletConstants.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1160,6 +1171,18 @@
     
     
     <tr class=" api apilevel-" >
+        <td class="jd-typecol">String</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletConstants.html#METADATA_TAG_WALLET_API_ENABLED">METADATA_TAG_WALLET_API_ENABLED</a></td>
+        <td class="jd-descrcol" width="100%">
+          Name of the metadata tag that is a signal from your application that it uses Wallet APIs.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletConstants.html#RESULT_ERROR">RESULT_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1171,7 +1194,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletConstants.html#STYLE_NO_TRANSITION">STYLE_NO_TRANSITION</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1186,7 +1209,7 @@
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletConstants.html#STYLE_SLIDE_TRANSITION">STYLE_SLIDE_TRANSITION</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1201,7 +1224,7 @@
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletConstants.html#THEME_DARK">THEME_DARK</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1215,7 +1238,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletConstants.html#THEME_HOLO_DARK">THEME_HOLO_DARK</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1230,7 +1253,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletConstants.html#THEME_HOLO_LIGHT">THEME_HOLO_LIGHT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1245,7 +1268,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wallet/WalletConstants.html#THEME_LIGHT">THEME_LIGHT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -2362,6 +2385,58 @@
 
 
 
+<A NAME="METADATA_TAG_WALLET_API_ENABLED"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        String
+      </span>
+        METADATA_TAG_WALLET_API_ENABLED
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Name of the metadata tag that is a signal from your application that it uses Wallet APIs.
+ Note:
+ In future versions this metadata tag will be required in your application manifest to use
+ Wallet APIs in your app.
+
+ Example of using the tag:
+ <application ...>
+     <meta-data
+         android:name="com.google.android.gms.wallet.api.enabled"
+         android:value="true" />
+         ...
+ </application>
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                "com.google.android.gms.wallet.api.enabled"
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="RESULT_ERROR"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/BuyButtonAppearance.html b/docs/html/reference/com/google/android/gms/wallet/fragment/BuyButtonAppearance.html
index be40832..537cbad 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/BuyButtonAppearance.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/BuyButtonAppearance.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/BuyButtonText.html b/docs/html/reference/com/google/android/gms/wallet/fragment/BuyButtonText.html
index 203d7fe..86dbf44 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/BuyButtonText.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/BuyButtonText.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/Dimension.html b/docs/html/reference/com/google/android/gms/wallet/fragment/Dimension.html
index 1ca8348..921de6d 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/Dimension.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/Dimension.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.OnStateChangedListener.html b/docs/html/reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.OnStateChangedListener.html
index 87ab72a..0486d59 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.OnStateChangedListener.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.OnStateChangedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.html b/docs/html/reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.html
index b82685c..cb7d54c 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragment.OnStateChangedListener.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragment.OnStateChangedListener.html
index e7c0899..5ff997c 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragment.OnStateChangedListener.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragment.OnStateChangedListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragment.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragment.html
index d2427f9..6d727e7 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragment.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragment.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder.html
index bbdfc8b..64a7ad5 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.html
index 9224b74..52c1ba5 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentMode.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentMode.html
index a83e2ce..4a7f65b 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentMode.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentMode.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.Builder.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.Builder.html
index ca05739..741a0f0 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.html
index 38c6637..95ba843 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentState.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentState.html
index 37265ad..fa92a19 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentState.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentState.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentStyle.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentStyle.html
index 3245f2b..6aec1a4 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentStyle.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletFragmentStyle.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletLogoImageType.html b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletLogoImageType.html
index 2219369..c37c770 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/WalletLogoImageType.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/WalletLogoImageType.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/fragment/package-summary.html b/docs/html/reference/com/google/android/gms/wallet/fragment/package-summary.html
index 1b16aa8..912e174 100644
--- a/docs/html/reference/com/google/android/gms/wallet/fragment/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/wallet/fragment/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wallet/package-summary.html b/docs/html/reference/com/google/android/gms/wallet/package-summary.html
index 94d7f61..285432b 100644
--- a/docs/html/reference/com/google/android/gms/wallet/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/wallet/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/Asset.html b/docs/html/reference/com/google/android/gms/wearable/Asset.html
index cad1f2e..9c59bbd 100644
--- a/docs/html/reference/com/google/android/gms/wearable/Asset.html
+++ b/docs/html/reference/com/google/android/gms/wearable/Asset.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html
new file mode 100644
index 0000000..1f8ac16
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html
@@ -0,0 +1,1076 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>CapabilityApi.AddLocalCapabilityResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">CapabilityApi.AddLocalCapabilityResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">CapabilityApi.AddLocalCapabilityResult</h1>
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.CapabilityApi.AddLocalCapabilityResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#addLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">addLocalCapability(GoogleApiClient, String)</a></code> </p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html
new file mode 100644
index 0000000..4ff03a4
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html
@@ -0,0 +1,1111 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>CapabilityApi.CapabilityListener | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">CapabilityApi.CapabilityListener</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#pubmethods">Methods</a>
+
+
+
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">CapabilityApi.CapabilityListener</h1>
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.CapabilityApi.CapabilityListener</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
+          ><img id="subclasses-indirect-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
+
+  <div id="subclasses-indirect">
+      <div id="subclasses-indirect-list"
+              class="jd-inheritedlinks"
+
+              >
+
+
+              <a href="/reference/com/google/android/gms/wearable/WearableListenerService.html">WearableListenerService</a>
+
+
+      </div>
+      <div id="subclasses-indirect-summary"
+              style="display: none;"
+              >
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html">WearableListenerService</a></td>
+        <td class="jd-descrcol" width="100%">
+          Receives events from other nodes, such as data changes, messages or connectivity events.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+      </div>
+  </div>
+</td></tr></table>
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Listener for changes in the reachable nodes providing a capability. </p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html#onCapabilityChanged(com.google.android.gms.wearable.CapabilityInfo)">onCapabilityChanged</a></span>(<a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a> capabilityInfo)</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="onCapabilityChanged(com.google.android.gms.wearable.CapabilityInfo)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        void
+      </span>
+      <span class="sympad">onCapabilityChanged</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a> capabilityInfo)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html
new file mode 100644
index 0000000..af62963
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html
@@ -0,0 +1,1141 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>CapabilityApi.GetAllCapabilitiesResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">CapabilityApi.GetAllCapabilitiesResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">CapabilityApi.GetAllCapabilitiesResult</h1>
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.CapabilityApi.GetAllCapabilitiesResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities(GoogleApiClient, int)</a></code> </p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            Map&lt;String,&nbsp;<a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html#getAllCapabilities()">getAllCapabilities</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getAllCapabilities()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        Map&lt;String,&nbsp;<a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a>&gt;
+      </span>
+      <span class="sympad">getAllCapabilities</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html
new file mode 100644
index 0000000..daf13c5
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html
@@ -0,0 +1,1141 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>CapabilityApi.GetCapabilityResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">CapabilityApi.GetCapabilityResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">CapabilityApi.GetCapabilityResult</h1>
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.CapabilityApi.GetCapabilityResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability(GoogleApiClient, String, int)</a></code> </p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html#getCapability()">getCapability</a></span>()</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getCapability()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a>
+      </span>
+      <span class="sympad">getCapability</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html
new file mode 100644
index 0000000..83df493
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html
@@ -0,0 +1,1076 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>CapabilityApi.RemoveLocalCapabilityResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">CapabilityApi.RemoveLocalCapabilityResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">CapabilityApi.RemoveLocalCapabilityResult</h1>
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.CapabilityApi.RemoveLocalCapabilityResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#removeLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">removeLocalCapability(GoogleApiClient, String)</a></code> </p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.html b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.html
new file mode 100644
index 0000000..2950a25
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/CapabilityApi.html
@@ -0,0 +1,1594 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>CapabilityApi | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">CapabilityApi</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+<div class="sum-details-links">
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    interface
+<h1 itemprop="name">CapabilityApi</h1>
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.CapabilityApi</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Exposes an API to learn about capabilities provided by nodes on the Wear network.
+
+ <p>Capabilities are local to an application.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html">CapabilityApi.AddLocalCapabilityResult</a></td>
+      <td class="jd-descrcol" width="100%">
+        Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#addLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">addLocalCapability(GoogleApiClient, String)</a></code> &nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">CapabilityApi.CapabilityListener</a></td>
+      <td class="jd-descrcol" width="100%">
+        Listener for changes in the reachable nodes providing a capability.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html">CapabilityApi.GetAllCapabilitiesResult</a></td>
+      <td class="jd-descrcol" width="100%">
+        Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities(GoogleApiClient, int)</a></code> &nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html">CapabilityApi.GetCapabilityResult</a></td>
+      <td class="jd-descrcol" width="100%">
+        Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability(GoogleApiClient, String, int)</a></code> &nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html">CapabilityApi.RemoveLocalCapabilityResult</a></td>
+      <td class="jd-descrcol" width="100%">
+        Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#removeLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">removeLocalCapability(GoogleApiClient, String)</a></code> &nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#FILTER_ALL">FILTER_ALL</a></td>
+        <td class="jd-descrcol" width="100%">
+          Filter type for
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability(GoogleApiClient, String, int)</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities(GoogleApiClient, int)</a></code>:
+ If this filter is set then the full set of nodes that declare the given capability will
+ be included in the capability's <code><a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a></code>.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#FILTER_REACHABLE">FILTER_REACHABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Filter type for
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability(GoogleApiClient, String, int)</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities(GoogleApiClient, int)</a></code>:
+ If this filter is set then only reachable nodes that declare the given capability will
+ be included in the capability's <code><a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a></code>.
+
+
+
+        </td>
+    </tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#addCapabilityListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.CapabilityApi.CapabilityListener, java.lang.String)">addCapabilityListener</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">CapabilityApi.CapabilityListener</a> listener, String capability)</nobr>
+
+        <div class="jd-descrdiv">
+          Registers a listener to be notified of capabilities being added to or removed from the Wear
+ network.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html">CapabilityApi.AddLocalCapabilityResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#addLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">addLocalCapability</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String capability)</nobr>
+
+        <div class="jd-descrdiv">
+          Announces that a capability has become available on the local node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html">CapabilityApi.GetAllCapabilitiesResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, int nodeFilter)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns information about all capabilities, including the nodes that declare
+ those capabilities.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html">CapabilityApi.GetCapabilityResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String capability, int nodeFilter)</nobr>
+
+        <div class="jd-descrdiv">
+          Returns information about a capability, including the nodes that declare that capability.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#removeCapabilityListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.CapabilityApi.CapabilityListener, java.lang.String)">removeCapabilityListener</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">CapabilityApi.CapabilityListener</a> listener, String capability)</nobr>
+
+        <div class="jd-descrdiv">
+          Removes a listener which was previously added through <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#addCapabilityListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.CapabilityApi.CapabilityListener, java.lang.String)">addCapabilityListener(GoogleApiClient, CapabilityApi.CapabilityListener, String)</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html">CapabilityApi.RemoveLocalCapabilityResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#removeLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">removeLocalCapability</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String capability)</nobr>
+
+        <div class="jd-descrdiv">
+          Announces that a capability is no longer available on the local node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="FILTER_ALL"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        FILTER_ALL
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Filter type for
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability(GoogleApiClient, String, int)</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities(GoogleApiClient, int)</a></code>:
+ If this filter is set then the full set of nodes that declare the given capability will
+ be included in the capability's <code><a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a></code>.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                0
+                (0x00000000)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="FILTER_REACHABLE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        FILTER_REACHABLE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Filter type for
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability(GoogleApiClient, String, int)</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities(GoogleApiClient, int)</a></code>:
+ If this filter is set then only reachable nodes that declare the given capability will
+ be included in the capability's <code><a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a></code>.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                1
+                (0x00000001)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="addCapabilityListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.CapabilityApi.CapabilityListener, java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">addCapabilityListener</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">CapabilityApi.CapabilityListener</a> listener, String capability)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Registers a listener to be notified of capabilities being added to or removed from the Wear
+ network.
+ Calls to this method should be balanced with <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#removeCapabilityListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.CapabilityApi.CapabilityListener, java.lang.String)">removeCapabilityListener(GoogleApiClient, CapabilityApi.CapabilityListener, String)</a></code> to avoid
+ leaking resources.
+
+ <p>Callers wishing to be notified of events in the background should use
+ <code><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html">WearableListenerService</a></code>.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="addLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html">CapabilityApi.AddLocalCapabilityResult</a>&gt;
+      </span>
+      <span class="sympad">addLocalCapability</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String capability)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Announces that a capability has become available on the local node.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html">CapabilityApi.GetAllCapabilitiesResult</a>&gt;
+      </span>
+      <span class="sympad">getAllCapabilities</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, int nodeFilter)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns information about all capabilities, including the nodes that declare
+ those capabilities. The filter parameter controls whether all nodes are returned,
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#FILTER_ALL">FILTER_ALL</a></code>, or only those that are currently reachable by this node,
+ <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#FILTER_REACHABLE">FILTER_REACHABLE</a></code>.
+ <p>The local node will never be returned in the set of nodes.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html">CapabilityApi.GetCapabilityResult</a>&gt;
+      </span>
+      <span class="sympad">getCapability</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String capability, int nodeFilter)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns information about a capability, including the nodes that declare that capability.
+ The filter parameter controls whether all nodes are returned, <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#FILTER_ALL">FILTER_ALL</a></code>, or
+ only those that are currently reachable by this node, <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#FILTER_REACHABLE">FILTER_REACHABLE</a></code>.
+ <p>The local node will never be returned in the set of nodes.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="removeCapabilityListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.CapabilityApi.CapabilityListener, java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">removeCapabilityListener</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">CapabilityApi.CapabilityListener</a> listener, String capability)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Removes a listener which was previously added through <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#addCapabilityListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.CapabilityApi.CapabilityListener, java.lang.String)">addCapabilityListener(GoogleApiClient, CapabilityApi.CapabilityListener, String)</a></code>.
+ The listener is only removed from listening for the capability provided and will
+ continue to receive messages for any other capabilities it was previously registered for
+ that have not also been removed.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="removeLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html">CapabilityApi.RemoveLocalCapabilityResult</a>&gt;
+      </span>
+      <span class="sympad">removeLocalCapability</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String capability)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Announces that a capability is no longer available on the local node.
+ Note: this will not remove any capabilities announced in the Manifest for an app.
+</p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/CapabilityInfo.html b/docs/html/reference/com/google/android/gms/wearable/CapabilityInfo.html
new file mode 100644
index 0000000..fdde207
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/CapabilityInfo.html
@@ -0,0 +1,1117 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>CapabilityInfo | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">CapabilityInfo</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+<div class="sum-details-links">
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    interface
+<h1 itemprop="name">CapabilityInfo</h1>
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.CapabilityInfo</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Information about a Capability on the network and where it is available.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html#getName()">getName</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the name of the capability.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            Set&lt;<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html#getNodes()">getNodes</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the set of nodes for the capability.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getName()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        String
+      </span>
+      <span class="sympad">getName</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the name of the capability.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getNodes()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        Set&lt;<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a>&gt;
+      </span>
+      <span class="sympad">getNodes</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the set of nodes for the capability. Disconnected nodes may or may not be included in
+ the set.
+</p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html b/docs/html/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html
new file mode 100644
index 0000000..c1f9fc1
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html
@@ -0,0 +1,1211 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>Channel.GetInputStreamResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">Channel.GetInputStreamResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">Channel.GetInputStreamResult</h1>
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Releasable.html">Releasable</a>
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.Channel.GetInputStreamResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code>.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            InputStream</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html#getInputStream()">getInputStream</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns an input stream which can read data from the remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Releasable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Releasable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Releasable.html">com.google.android.gms.common.api.Releasable</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Releasable">
+  <div id="inherited-methods-com.google.android.gms.common.api.Releasable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Releasable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Releasable.html#release()">release</a></span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getInputStream()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        InputStream
+      </span>
+      <span class="sympad">getInputStream</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns an input stream which can read data from the remote node. The stream should be
+ closed when no longer needed. This method will only return <code>null</code> if this result's
+ <a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">status</a></a> was not <a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">success</a></a>.
+
+ <p>The returned stream will throw <code><a href="/reference/java/io/IOException.html">IOException</a></code> on read if any connection
+ errors occur. This exception might be a <code><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html">ChannelIOException</a></code>.
+
+ <p>Since data for this stream comes over the network, reads may block for a long
+ time.
+
+ <p>Multiple calls to this method will return the same instance.
+</p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html b/docs/html/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html
new file mode 100644
index 0000000..5edfe44
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html
@@ -0,0 +1,1212 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>Channel.GetOutputStreamResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">Channel.GetOutputStreamResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">Channel.GetOutputStreamResult</h1>
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Releasable.html">Releasable</a>
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.Channel.GetOutputStreamResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            OutputStream</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html#getOutputStream()">getOutputStream</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns an output stream which can send data to a remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Releasable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Releasable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Releasable.html">com.google.android.gms.common.api.Releasable</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Releasable">
+  <div id="inherited-methods-com.google.android.gms.common.api.Releasable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Releasable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Releasable.html#release()">release</a></span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getOutputStream()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        OutputStream
+      </span>
+      <span class="sympad">getOutputStream</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns an output stream which can send data to a remote node. The stream should be
+ closed when no longer needed. This method will only return <code>null</code> if this result's
+ <a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">status</a></a> was not <a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">success</a></a>.
+
+ <p>The returned stream will throw <code><a href="/reference/java/io/IOException.html">IOException</a></code> on write if any connection
+ errors occur. This exception might be a <code><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html">ChannelIOException</a></code>.
+
+ <p>Data written to this stream is buffered. If you wish to send the current data
+ without waiting for the buffer to fill up, <a href="/reference/java/io/OutputStream.html#flush()">flush</a></a> the
+ stream.
+
+ <p>Multiple calls to this method will return the same instance.
+</p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/Channel.html b/docs/html/reference/com/google/android/gms/wearable/Channel.html
new file mode 100644
index 0000000..48b80da
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/Channel.html
@@ -0,0 +1,2016 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>Channel | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">Channel</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+  <a href="#nestedclasses">Nested Classes</a>
+
+
+
+
+
+
+
+  &#124; <a href="#inhconstants">Inherited Constants</a>
+
+
+
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    interface
+<h1 itemprop="name">Channel</h1>
+
+
+
+
+
+      implements
+
+        Parcelable
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.Channel</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">A channel created through <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#openChannel(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.String)">openChannel(GoogleApiClient, String, String)</a></code>.
+
+ <p>The implementation of this interface is parcelable and immutable, and implements
+ reasonable <code><a href="/reference/java/lang/Object.html#equals(java.lang.Object)">equals(Object)</a></code> and <code><a href="/reference/java/lang/Object.html#hashCode()">hashCode()</a></code> methods, so
+ can be used in collections.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html">Channel.GetInputStreamResult</a></td>
+      <td class="jd-descrcol" width="100%">
+        Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code>.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html">Channel.GetOutputStreamResult</a></td>
+      <td class="jd-descrcol" width="100%">
+        Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="inhconstants" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Constants</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-constants-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>From interface
+android.os.Parcelable
+<div id="inherited-constants-android.os.Parcelable">
+  <div id="inherited-constants-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-constants-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">CONTENTS_FILE_DESCRIPTOR</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol">PARCELABLE_WRITE_RETURN_VALUE</td>
+        <td class="jd-descrcol" width="100%">
+
+
+
+
+        </td>
+    </tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a> listener)</nobr>
+
+        <div class="jd-descrdiv">
+          Registers a listener to be notified of events for this channel.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</nobr>
+
+        <div class="jd-descrdiv">
+          Closes this channel, making any future operations on it invalid.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, int errorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Closes this channel, passing an application-defined error code to the remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html">Channel.GetInputStreamResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</nobr>
+
+        <div class="jd-descrdiv">
+          Opens the input side of the channel to receive data from the remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#getNodeId()">getNodeId</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the node ID of the node on the other side of the channel.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html">Channel.GetOutputStreamResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</nobr>
+
+        <div class="jd-descrdiv">
+          Opens the output side of the channel to send data to the remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#getPath()">getPath</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the path that was used to open the channel.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#receiveFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, boolean)">receiveFile</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri, boolean append)</nobr>
+
+        <div class="jd-descrdiv">
+          Reads input from this channel into a file.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">removeListener</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a> listener)</nobr>
+
+        <div class="jd-descrdiv">
+          Removes a listener which was previously added through
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener(GoogleApiClient, ChannelApi.ChannelListener)</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#sendFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, long, long)">sendFile</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri, long startOffset, long length)</nobr>
+
+        <div class="jd-descrdiv">
+          Reads from a file into the output side of the channel.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Channel.html#sendFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri)">sendFile</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri)</nobr>
+
+        <div class="jd-descrdiv">
+          Reads from a file into the output side of the channel.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.os.Parcelable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-android.os.Parcelable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  android.os.Parcelable
+
+<div id="inherited-methods-android.os.Parcelable">
+  <div id="inherited-methods-android.os.Parcelable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-android.os.Parcelable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">describeContents</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">writeToParcel</span>(Parcel arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">addListener</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a> listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Registers a listener to be notified of events for this channel. This is the same as
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener(GoogleApiClient, ChannelApi.ChannelListener)</a></code>, but the listener
+ will only be notified of events for this channel. The listener will not receive
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelOpened(com.google.android.gms.wearable.Channel)">onChannelOpened(Channel)</a></code> events.
+
+ <p>Calls to this method should balanced with
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">removeListener(GoogleApiClient, ChannelApi.ChannelListener)</a></code> to avoid
+ leaking resources.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>listener</td>
+          <td>a listener which will be notified of changes to the specified stream
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="close(com.google.android.gms.common.api.GoogleApiClient)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">close</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Closes this channel, making any future operations on it invalid.
+
+ <p>This method behaves like <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>, with
+ <code>errorCode == 0</code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="close(com.google.android.gms.common.api.GoogleApiClient, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">close</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, int errorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Closes this channel, passing an application-defined error code to the remote node. The error
+ code will be passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, and will cause
+ remote reads and writes to the channel to fail with <code><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html">ChannelIOException</a></code>.
+
+ <p>The <code><a href="/reference/java/io/InputStream.html">InputStream</a></code> and <code><a href="/reference/java/io/OutputStream.html">OutputStream</a></code> returned from
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code> should
+ be closed prior to calling this method. If they are not, both streams will throw
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html">ChannelIOException</a></code> on the next read or write operation.
+
+ <p><code>errorCode == 0</code> is used to indicate that no error occurred.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>errorCode</td>
+          <td>an app-defined error code to pass to the remote node
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="getInputStream(com.google.android.gms.common.api.GoogleApiClient)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html">Channel.GetInputStreamResult</a>&gt;
+      </span>
+      <span class="sympad">getInputStream</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Opens the input side of the channel to receive data from the remote node. Methods on the
+ returned input stream may throw <code><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html">ChannelIOException</a></code>. See
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html#getInputStream()">GetInputStreamResult.getInputStream()</a></code>
+
+ <p>This method should only be used once on any channel, and once it was called,
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#receiveFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, boolean)">receiveFile(GoogleApiClient, Uri, boolean)</a></code> cannot be used.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="getNodeId()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        String
+      </span>
+      <span class="sympad">getNodeId</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the node ID of the node on the other side of the channel. </p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getOutputStream(com.google.android.gms.common.api.GoogleApiClient)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html">Channel.GetOutputStreamResult</a>&gt;
+      </span>
+      <span class="sympad">getOutputStream</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Opens the output side of the channel to send data to the remote node. Methods on the
+ returned output stream may throw <code><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html">ChannelIOException</a></code>. See
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html#getOutputStream()">GetOutputStreamResult.getOutputStream()</a></code>
+
+ <p>This method should only be used once on any channel, and once it was called,
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#sendFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, long, long)">sendFile(GoogleApiClient, Uri, long, long)</a></code> cannot be used.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="getPath()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        String
+      </span>
+      <span class="sympad">getPath</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the path that was used to open the channel. </p></div>
+
+    </div>
+</div>
+
+
+<A NAME="receiveFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, boolean)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">receiveFile</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri, boolean append)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Reads input from this channel into a file. This is equivalent to calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code>, reading from the input stream and
+ writing it to a file, but is implemented more efficiently. Writing to the file
+ will be done in a background process owned by Google Play Services.
+
+ <p>This method should only be used once on any channel, and once it was called,
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code> cannot be used. The channel should not be
+ immediately closed after calling this method. To be notified when the file is ready,
+ install a <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a></code>, with an implementation of
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>uri</td>
+          <td>URI of the file into which data should be written. This should be a
+         <a href="/reference/android/net/Uri.html#fromFile(java.io.File)">file URI</a></a> for a file which is accessible to
+         the current process for writing.</td>
+        </tr>
+        <tr>
+          <th>append</td>
+          <td>if true, data from the channel will be appended to the file, instead of
+         overwriting it.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">removeListener</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a> listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Removes a listener which was previously added through
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener(GoogleApiClient, ChannelApi.ChannelListener)</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>listener</td>
+          <td>a listener which was added using
+         <code><a href="/reference/com/google/android/gms/wearable/Channel.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener(GoogleApiClient, ChannelApi.ChannelListener)</a></code>
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="sendFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, long, long)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">sendFile</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri, long startOffset, long length)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Reads from a file into the output side of the channel. This is equivalent to calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>, reading from a file and writing
+ into the <code><a href="/reference/java/io/OutputStream.html">OutputStream</a></code>, but is implemented more efficiently. Reading from the file
+ will be done in a background process owned by Google Play Services.
+
+ <p>This method should only be used once on any channel, and once it was called,
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code> cannot be used. The channel should not be
+ immediately closed after calling this method. To be notified when the file has been sent,
+ install a <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a></code>, with an implementation of
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>uri</td>
+          <td>URI of the file from which data should be read. This should be a
+         <a href="/reference/android/net/Uri.html#fromFile(java.io.File)">file URI</a></a> for a file which is accessible to
+         the current process for reading.</td>
+        </tr>
+        <tr>
+          <th>startOffset</td>
+          <td>byte offset from which to start reading</td>
+        </tr>
+        <tr>
+          <th>length</td>
+          <td>maximum number of bytes to read from the file, or <code>-1</code> if the file
+        should be read to its end. If the file doesn't contain enough bytes to reach
+        <code>length</code>, fewer bytes will be read.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="sendFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">sendFile</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Reads from a file into the output side of the channel. This is equivalent to calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>, reading from a file and writing
+ into the <code><a href="/reference/java/io/OutputStream.html">OutputStream</a></code>, but is implemented more efficiently. Reading from the file
+ will be done in a background process owned by Google Play Services.
+
+ <p>This method should only be used once on any channel, and once it was called,
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code> cannot be used. The channel should not be
+ immediately closed after calling this method. To be notified when the file has been sent,
+ install a <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a></code>, with an implementation of
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code>.
+
+ <p>This method is identical to calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#sendFile(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, long, long)">sendFile(GoogleApiClient, Uri, long, long)</a></code> with <code>offset == 0</code>
+ and <code>length == -1</code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>uri</td>
+          <td>URI of the file from which data should be read. This should be a
+         <a href="/reference/android/net/Uri.html#fromFile(java.io.File)">file URI</a></a> for a file which is accessible to
+         the current process for reading.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html b/docs/html/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html
new file mode 100644
index 0000000..c0aa90b
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html
@@ -0,0 +1,1590 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>ChannelApi.ChannelListener | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">ChannelApi.ChannelListener</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+  <a href="#constants">Constants</a>
+
+
+
+
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">ChannelApi.ChannelListener</h1>
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.ChannelApi.ChannelListener</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+<table class="jd-sumtable jd-sumtable-subclasses"><tr><td colspan="12" style="border:none;margin:0;padding:0;">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="subclasses-indirect" class="jd-expando-trigger closed"
+          ><img id="subclasses-indirect-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>Known Indirect Subclasses
+
+  <div id="subclasses-indirect">
+      <div id="subclasses-indirect-list"
+              class="jd-inheritedlinks"
+
+              >
+
+
+              <a href="/reference/com/google/android/gms/wearable/WearableListenerService.html">WearableListenerService</a>
+
+
+      </div>
+      <div id="subclasses-indirect-summary"
+              style="display: none;"
+              >
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html">WearableListenerService</a></td>
+        <td class="jd-descrcol" width="100%">
+          Receives events from other nodes, such as data changes, messages or connectivity events.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+      </div>
+  </div>
+</td></tr></table>
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">A listener which will be notified on changes to channels.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></td>
+        <td class="jd-descrcol" width="100%">
+          Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the closing is due to a remote node being disconnected.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the stream is closed due to the local node calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></td>
+        <td class="jd-descrcol" width="100%">
+          Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> (but not
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>), when the stream was closed under normal conditions, e.g the
+ whole file was read, or the <code><a href="/reference/java/io/OutputStream.html">OutputStream</a></code> on the remote node was closed
+ normally.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the stream is closed due to the remote node calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>.
+
+
+
+        </td>
+    </tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelOpened(com.google.android.gms.wearable.Channel)">onChannelOpened</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when a new channel is opened by a remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the input side of a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the output side of a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="CLOSE_REASON_DISCONNECTED"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CLOSE_REASON_DISCONNECTED
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the closing is due to a remote node being disconnected.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                1
+                (0x00000001)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="CLOSE_REASON_LOCAL_CLOSE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CLOSE_REASON_LOCAL_CLOSE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the stream is closed due to the local node calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                3
+                (0x00000003)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="CLOSE_REASON_NORMAL"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CLOSE_REASON_NORMAL
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> (but not
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>), when the stream was closed under normal conditions, e.g the
+ whole file was read, or the <code><a href="/reference/java/io/OutputStream.html">OutputStream</a></code> on the remote node was closed
+ normally.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                0
+                (0x00000000)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="CLOSE_REASON_REMOTE_CLOSE"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        CLOSE_REASON_REMOTE_CLOSE
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the stream is closed due to the remote node calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                2
+                (0x00000002)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="onChannelClosed(com.google.android.gms.wearable.Channel, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        void
+      </span>
+      <span class="sympad">onChannelClosed</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when a channel is closed. This can happen through an explicit call to
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code> on
+ either side of the connection, or due to disconnecting from the remote node.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>closeReason</td>
+          <td>the reason for the channel closing. One of
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>,
+         or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>.</td>
+        </tr>
+        <tr>
+          <th>appSpecificErrorCode</td>
+          <td>the error code specified on <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code>,
+         or 0 if <code>closeReason</code> is <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="onChannelOpened(com.google.android.gms.wearable.Channel)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        void
+      </span>
+      <span class="sympad">onChannelOpened</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when a new channel is opened by a remote node. </p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onInputClosed(com.google.android.gms.wearable.Channel, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        void
+      </span>
+      <span class="sympad">onInputClosed</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when the input side of a channel is closed.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>closeReason</td>
+          <td>the reason for the input closing. One of
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>,
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>, or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code></td>
+        </tr>
+        <tr>
+          <th>appSpecificErrorCode</td>
+          <td>the error code specified on <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code>,
+         or 0 if <code>closeReason</code> is <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>
+         or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="onOutputClosed(com.google.android.gms.wearable.Channel, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        void
+      </span>
+      <span class="sympad">onOutputClosed</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when the output side of a channel is closed.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>closeReason</td>
+          <td>the reason for the output closing. One of
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>,
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>, or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code></td>
+        </tr>
+        <tr>
+          <th>appSpecificErrorCode</td>
+          <td>the error code specified on <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code>,
+         or 0 if <code>closeReason</code> is <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>
+         or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/ChannelApi.CloseReason.html b/docs/html/reference/com/google/android/gms/wearable/ChannelApi.CloseReason.html
new file mode 100644
index 0000000..42759bf
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/ChannelApi.CloseReason.html
@@ -0,0 +1,1126 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>ChannelApi.CloseReason | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">ChannelApi.CloseReason</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+    abstract
+    @interface
+<h1 itemprop="name">ChannelApi.CloseReason</h1>
+
+
+
+
+
+      implements
+
+        Annotation
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.ChannelApi.CloseReason</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">An annotation for values passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, and other methods
+ on the <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a></code> interface. Annotated method parameters will always take one
+ of the following values:
+ <ul>
+     <li><code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>
+     <li><code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code>
+     <li><code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>
+     <li><code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>
+ </ul>
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.annotation.Annotation" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.annotation.Annotation-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  java.lang.annotation.Annotation
+
+<div id="inherited-methods-java.lang.annotation.Annotation">
+  <div id="inherited-methods-java.lang.annotation.Annotation-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.annotation.Annotation-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            Class&lt;?&nbsp;extends&nbsp;Annotation&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">annotationType</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html b/docs/html/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html
new file mode 100644
index 0000000..4f1cd4b
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html
@@ -0,0 +1,1152 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>ChannelApi.OpenChannelResult | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">ChannelApi.OpenChannelResult</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+
+
+  <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+    static
+
+
+    interface
+<h1 itemprop="name">ChannelApi.OpenChannelResult</h1>
+
+
+
+
+
+      implements
+
+        <a href="/reference/com/google/android/gms/common/api/Result.html">Result</a>
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.ChannelApi.OpenChannelResult</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Result of <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#openChannel(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.String)">openChannel(GoogleApiClient, String, String)</a></code>.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html#getChannel()">getChannel</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the newly created channel, or <code>null</code>, if the connection couldn't be
+ opened.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.common.api.Result" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.common.api.Result-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/common/api/Result.html">com.google.android.gms.common.api.Result</a>
+
+<div id="inherited-methods-com.google.android.gms.common.api.Result">
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.common.api.Result-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/Status.html">Status</a></nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getChannel()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a>
+      </span>
+      <span class="sympad">getChannel</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the newly created channel, or <code>null</code>, if the connection couldn't be
+ opened.
+</p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/ChannelApi.html b/docs/html/reference/com/google/android/gms/wearable/ChannelApi.html
new file mode 100644
index 0000000..e6773f7
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/ChannelApi.html
@@ -0,0 +1,1302 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>ChannelApi | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">ChannelApi</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+<div class="sum-details-links">
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    interface
+<h1 itemprop="name">ChannelApi</h1>
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.ChannelApi</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">Client interface for Wearable Channel API. Allows apps on a wearable device to send and receive
+ data from other wearable nodes.
+
+ <p>Channels are bidirectional. Each side, both the initiator and the receiver may both read and
+ write to the channel by using <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code>. Once a channel is established, the API
+ for the initiator and receiver are identical.
+
+ <p>Channels are only available when the wearable nodes are connected. When the remote node
+ disconnects, all existing channels will be closed. Any listeners (added through
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener(GoogleApiClient, ChannelListener)</a></code> and any installed
+ <code><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html">WearableListenerService</a></code>) will be notified of the channel closing.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<table id="nestedclasses" class="jd-sumtable"><tr><th colspan="12">Nested Classes</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a></td>
+      <td class="jd-descrcol" width="100%">
+        A listener which will be notified on changes to channels.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        @interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.CloseReason.html">ChannelApi.CloseReason</a></td>
+      <td class="jd-descrcol" width="100%">
+        An annotation for values passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, and other methods
+ on the <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a></code> interface.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+      <td class="jd-typecol"><nobr>
+
+
+
+
+        interface</nobr></td>
+      <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html">ChannelApi.OpenChannelResult</a></td>
+      <td class="jd-descrcol" width="100%">
+        Result of <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#openChannel(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.String)">openChannel(GoogleApiClient, String, String)</a></code>.&nbsp;
+
+
+
+      </td>
+    </tr>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a> listener)</nobr>
+
+        <div class="jd-descrdiv">
+          Registers a listener to be notified of channel events.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html">ChannelApi.OpenChannelResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#openChannel(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.String)">openChannel</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String nodeId, String path)</nobr>
+
+        <div class="jd-descrdiv">
+          Opens a channel to exchange data with a remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">removeListener</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a> listener)</nobr>
+
+        <div class="jd-descrdiv">
+          Removes a listener which was previously added through
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener(GoogleApiClient, ChannelListener)</a></code>.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">addListener</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a> listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Registers a listener to be notified of channel events. Calls to this method should
+ balanced with <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">removeListener(GoogleApiClient, ChannelListener)</a></code> to avoid leaking
+ resources.
+
+ <p>Callers wishing to be notified of events in the background should use
+ <code><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html">WearableListenerService</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>listener</td>
+          <td>a listener which will be notified of changes to any channel
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="openChannel(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.String)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html">ChannelApi.OpenChannelResult</a>&gt;
+      </span>
+      <span class="sympad">openChannel</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, String nodeId, String path)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Opens a channel to exchange data with a remote node.
+
+ <p>Channel which are no longer needed should be closed using
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code>.
+
+ <p>This call involves a network round trip, so may be long running. <code>client</code> must
+ remain connected during that time, or the request will be cancelled (like any other Play
+ Services API calls).</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>nodeId</td>
+          <td>the node ID of a wearable node, as returned from
+        <code><a href="/reference/com/google/android/gms/wearable/NodeApi.html#getConnectedNodes(com.google.android.gms.common.api.GoogleApiClient)">getConnectedNodes(GoogleApiClient)</a></code></td>
+        </tr>
+        <tr>
+          <th>path</td>
+          <td>an app-specific identifier for the channel
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/common/api/Status.html">Status</a>&gt;
+      </span>
+      <span class="sympad">removeListener</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a> listener)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Removes a listener which was previously added through
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener(GoogleApiClient, ChannelListener)</a></code>.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>client</td>
+          <td>a connected client</td>
+        </tr>
+        <tr>
+          <th>listener</td>
+          <td>a listener which was added using
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.ChannelApi.ChannelListener)">addListener(GoogleApiClient, ChannelListener)</a></code>
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/ChannelIOException.html b/docs/html/reference/com/google/android/gms/wearable/ChannelIOException.html
new file mode 100644
index 0000000..4f2e9c8
--- /dev/null
+++ b/docs/html/reference/com/google/android/gms/wearable/ChannelIOException.html
@@ -0,0 +1,1757 @@
+<!DOCTYPE html>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<html>
+<head>
+
+
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="viewport" content="width=device-width" />
+
+<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
+<title>ChannelIOException | Android Developers</title>
+
+<!-- STYLESHEETS -->
+<link rel="stylesheet"
+href="//fonts.googleapis.com/css?family=Roboto+Condensed">
+<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:light,regular,medium,thin,italic,mediumitalic,bold"
+  title="roboto">
+<link href="/assets/css/default.css?v=5" rel="stylesheet" type="text/css">
+
+
+
+<!-- JAVASCRIPT -->
+<script src="//www.google.com/jsapi" type="text/javascript"></script>
+<script src="/assets/js/android_3p-bundle.js" type="text/javascript"></script>
+<script type="text/javascript">
+  var toRoot = "/";
+  var metaTags = [];
+  var devsite = false;
+</script>
+<script src="/assets/js/docs.js?v=3" type="text/javascript"></script>
+
+
+
+<script>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+  ga('create', 'UA-5831155-1', 'android.com');
+  ga('create', 'UA-49880327-2', 'android.com', {'name': 'universal'});  // New tracker);
+  ga('send', 'pageview');
+  ga('universal.send', 'pageview'); // Send page view for new tracker.
+</script>
+
+</head>
+
+<body class="gc-documentation google
+  develop reference" itemscope itemtype="http://schema.org/Article">
+  <div id="doc-api-level" class="" style="display:none"></div>
+  <a name="top"></a>
+
+
+<a name="top"></a>
+
+<!-- dialog to prompt lang pref change when loaded from hardcoded URL
+<div id="langMessage" style="display:none">
+  <div>
+    <div class="lang en">
+      <p>You requested a page in English, would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang es">
+      <p>You requested a page in Spanish (Español), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ja">
+      <p>You requested a page in Japanese (日本語), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ko">
+      <p>You requested a page in Korean (한국어), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang ru">
+      <p>You requested a page in Russian (Русский), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-cn">
+      <p>You requested a page in Simplified Chinese (简体中文), would you like to proceed with this language setting?</p>
+    </div>
+    <div class="lang zh-tw">
+      <p>You requested a page in Traditional Chinese (繁體中文), would you like to proceed with this language setting?</p>
+    </div>
+    <a href="#" class="button yes" onclick="return false;">
+      <span class="lang en">Yes</span>
+      <span class="lang es">Sí</span>
+      <span class="lang ja">Yes</span>
+      <span class="lang ko">Yes</span>
+      <span class="lang ru">Yes</span>
+      <span class="lang zh-cn">是的</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+    <a href="#" class="button" onclick="$('#langMessage').hide();return false;">
+      <span class="lang en">No</span>
+      <span class="lang es">No</span>
+      <span class="lang ja">No</span>
+      <span class="lang ko">No</span>
+      <span class="lang ru">No</span>
+      <span class="lang zh-cn">没有</span>
+      <span class="lang zh-tw">没有</span>
+    </a>
+  </div>
+</div> -->
+
+
+  <!-- Header -->
+  <div id="header-wrapper">
+    <div id="header">
+
+
+
+
+      <div class="wrap" id="header-wrap">
+        <div class="col-3 logo">
+          <a href="/index.html">
+            <img src="/assets/images/dac_logo.png"
+                srcset="/assets/images/dac_logo@2x.png 2x"
+                width="123" height="25" alt="Android Developers" />
+          </a>
+          <div class="btn-quicknav" id="btn-quicknav">
+            <a href="#" class="arrow-inactive">Quicknav</a>
+            <a href="#" class="arrow-active">Quicknav</a>
+          </div>
+        </div>
+        <ul class="nav-x col-9">
+            <li class="design">
+              <a href="/design/index.html"
+              zh-tw-lang="設計"
+              zh-cn-lang="设计"
+              ru-lang="Проектирование"
+              ko-lang="디자인"
+              ja-lang="設計"
+              es-lang="Diseñar"
+              >Design</a></li>
+            <li class="develop"><a href="/develop/index.html"
+              zh-tw-lang="開發"
+              zh-cn-lang="开发"
+              ru-lang="Разработка"
+              ko-lang="개발"
+              ja-lang="開発"
+              es-lang="Desarrollar"
+              >Develop</a></li>
+            <li class="distribute last"><a href="/distribute/index.html"
+              zh-tw-lang="發佈"
+              zh-cn-lang="分发"
+              ru-lang="Распространение"
+              ko-lang="배포"
+              ja-lang="配布"
+              es-lang="Distribuir"
+              >Distribute</a></li>
+        </ul>
+
+
+
+
+<div class="menu-container">
+  <div class="moremenu">
+    <div id="more-btn"></div>
+  </div>
+  <div class="morehover" id="moremenu">
+    <div class="top"></div>
+    <div class="mid">
+      <div class="header">Links</div>
+      <ul>
+        <li><a href="https://play.google.com/apps/publish/" target="_googleplay">Google Play Developer Console</a></li>
+        <li><a href="http://android-developers.blogspot.com/">Android Developers Blog</a></li>
+        <li><a href="/about/index.html">About Android</a></li>
+      </ul>
+      <div class="header">Android Sites</div>
+      <ul>
+        <li><a href="http://www.android.com">Android.com</a></li>
+        <li class="active"><a>Android Developers</a></li>
+        <li><a href="http://source.android.com">Android Open Source Project</a></li>
+      </ul>
+
+
+
+        <div class="header">Language</div>
+          <div id="language" class="locales">
+            <select name="language" onChange="changeLangPref(this.value, true)">
+                <option value="en">English</option>
+                <option value="es">Español</option>
+                <option value="ja">日本語</option>
+                <option value="ko">한국어</option>
+                <option value="ru">Русский</option>
+                <option value="zh-cn">中文(简体)</option>
+                <option value="zh-tw">中文(繁體)</option>
+            </select>
+          </div>
+        <script type="text/javascript">
+          <!--
+          loadLangPref();
+            //-->
+        </script>
+
+
+      <br class="clearfix" />
+    </div><!-- end 'mid' -->
+    <div class="bottom"></div>
+  </div><!-- end 'moremenu' -->
+
+  <div class="search" id="search-container">
+    <div class="search-inner">
+      <div id="search-btn"></div>
+      <div class="left"></div>
+      <form onsubmit="return submit_search()">
+        <input id="search_autocomplete" type="text" value="" autocomplete="off" name="q"
+          onfocus="search_focus_changed(this, true)" onblur="search_focus_changed(this, false)"
+          onkeydown="return search_changed(event, true, '/')"
+          onkeyup="return search_changed(event, false, '/')" />
+      </form>
+      <div class="right"></div>
+      <a class="close hide">close</a>
+      <div class="left"></div>
+      <div class="right"></div>
+    </div><!-- end search-inner -->
+  </div><!-- end search-container -->
+
+  <div class="search_filtered_wrapper reference">
+    <div class="suggest-card reference no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+
+  <div class="search_filtered_wrapper docs">
+    <div class="suggest-card dummy no-display">&nbsp;</div>
+    <div class="suggest-card develop no-display">
+      <ul class="search_filtered">
+      </ul>
+      <div class="child-card guides no-display">
+      </div>
+      <div class="child-card training no-display">
+      </div>
+      <div class="child-card samples no-display">
+      </div>
+    </div>
+    <div class="suggest-card design no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+    <div class="suggest-card distribute no-display">
+      <ul class="search_filtered">
+      </ul>
+    </div>
+  </div>
+</div><!-- end menu-container (search and menu widget) -->
+
+
+
+        <!-- Expanded quicknav -->
+        <div id="quicknav" class="col-13">
+          <ul>
+            <li class="about">
+              <ul>
+                <li><a href="/about/index.html">About</a></li>
+                <li><a href="/wear/index.html">Wear</a></li>
+                <li><a href="/tv/index.html">TV</a></li>
+                <li><a href="/auto/index.html">Auto</a></li>
+              </ul>
+            </li>
+            <li class="design">
+              <ul>
+                <li><a href="/design/index.html">Get Started</a></li>
+                <li><a href="/design/devices.html">Devices</a></li>
+                <li><a href="/design/style/index.html">Style</a></li>
+                <li><a href="/design/patterns/index.html">Patterns</a></li>
+                <li><a href="/design/building-blocks/index.html">Building Blocks</a></li>
+                <li><a href="/design/downloads/index.html">Downloads</a></li>
+                <li><a href="/design/videos/index.html">Videos</a></li>
+              </ul>
+            </li>
+            <li class="develop">
+              <ul>
+                <li><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a>
+                </li>
+                <li><a href="/google/index.html">Google Services</a>
+                </li>
+
+                  <li><a href="/samples/index.html">Samples</a>
+                  </li>
+
+              </ul>
+            </li>
+            <li class="distribute last">
+              <ul>
+                <li><a href="/distribute/googleplay/index.html">Google Play</a></li>
+                <li><a href="/distribute/essentials/index.html">Essentials</a></li>
+                <li><a href="/distribute/users/index.html">Get Users</a></li>
+                <li><a href="/distribute/engage/index.html">Engage &amp; Retain</a></li>
+                <li><a href="/distribute/monetize/index.html">Monetize</a></li>
+                <li><a href="/distribute/analyze/index.html">Analyze</a></li>
+                <li><a href="/distribute/tools/index.html">Tools &amp; Reference</a></li>
+                <li><a href="/distribute/stories/index.html">Developer Stories</a></li>
+              </ul>
+            </li>
+          </ul>
+        </div><!-- /Expanded quicknav -->
+      </div><!-- end header-wrap.wrap -->
+    </div><!-- end header -->
+
+
+    <!-- Secondary x-nav -->
+    <div id="nav-x">
+        <div class="wrap" style="position:relative;z-index:1">
+
+
+
+
+
+            <ul class="nav-x col-9 develop" style="width:100%">
+                <li class="training"><a href="/training/index.html"
+                  zh-tw-lang="訓練課程"
+                  zh-cn-lang="培训"
+                  ru-lang="Курсы"
+                  ko-lang="교육"
+                  ja-lang="トレーニング"
+                  es-lang="Capacitación"
+                  >Training</a></li>
+                <li class="guide"><a href="/guide/index.html"
+                  zh-tw-lang="API 指南"
+                  zh-cn-lang="API 指南"
+                  ru-lang="Руководства по API"
+                  ko-lang="API 가이드"
+                  ja-lang="API ガイド"
+                  es-lang="Guías de la API"
+                  >API Guides</a></li>
+                <li class="reference"><a href="/reference/packages.html"
+                  zh-tw-lang="參考資源"
+                  zh-cn-lang="参考"
+                  ru-lang="Справочник"
+                  ko-lang="참조문서"
+                  ja-lang="リファレンス"
+                  es-lang="Referencia"
+                  >Reference</a></li>
+                <li class="tools"><a href="/sdk/index.html"
+                  zh-tw-lang="相關工具"
+                  zh-cn-lang="工具"
+                  ru-lang="Инструменты"
+                  ko-lang="도구"
+                  ja-lang="ツール"
+                  es-lang="Herramientas"
+                  >Tools</a></li>
+                <li class="google"><a href="/google/index.html"
+                  >Google Services</a>
+                </li>
+
+                  <li class="samples"><a href="/samples/index.html"
+                    >Samples</a>
+                  </li>
+
+            </ul>
+        </div>
+    </div>
+    <!-- /Sendondary x-nav DEVELOP -->
+
+
+
+    <div id="searchResults" class="wrap" style="display:none;">
+      <h2 id="searchTitle">Results</h2>
+      <div id="leftSearchControl" class="search-control">Loading...</div>
+    </div>
+  </div> <!--end header-wrapper -->
+
+  <div id="sticky-header">
+    <div>
+      <a class="logo" href="#top"></a>
+      <a class="top" href="#top"></a>
+      <ul class="breadcrumb">
+
+        <li class="current">ChannelIOException</li>
+      </ul>
+    </div>
+  </div>
+
+
+
+
+
+
+  <div class="wrap clearfix" id="body-content">
+    <div class="col-4" id="side-nav" itemscope itemtype="http://schema.org/SiteNavigationElement">
+      <div id="devdoc-nav" class="scroll-pane">
+
+
+
+<ul id="nav">
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/index.html">
+          <span class="en">Overview</span>
+      </a></div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/games.html">
+          <span class="en">Games</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/location.html">
+          <span class="en">Location</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/plus.html">
+          <span class="en">Google+</span>
+                </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/maps.html">
+          <span class="en">Maps</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/drive.html">
+          <span class="en">Drive</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/cast.html">
+          <span class="en">Cast</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/ads.html">
+      <span class="en">Ads</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/id.html">
+          <span class="en">Advertising ID</span></a>
+      </li>
+    </ul>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header empty"><a href="/google/play-services/wallet.html">
+          <span class="en">Wallet</span>
+      </a></div>
+  </li>
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play-services/index.html">
+      <span class="en">Google Play Services</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play-services/setup.html">
+          <span class="en">Setting Up Google Play Services</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/auth/api-client.html">
+          <span class="en">Accessing Google APIs</span></a>
+        </div>
+        <ul>
+          <li>
+            <a href="/google/auth/http-auth.html">
+              <span class="en">Authorizing with Google for REST APIs</span>
+            </a>
+          </li>
+        </ul>
+      </li>
+      <li id="gms-tree-list" class="nav-section">
+        <div class="nav-section-header">
+          <a href="/reference/gms-packages.html">
+            <span class="en">Reference</span>
+          </a>
+        <div>
+      </li>
+    </ul>
+  </li>
+
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/billing/index.html" zh-cn-lang="应用内结算">
+      <span class="en">Google Play In-app Billing</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/billing/billing_overview.html" zh-cn-lang="应用内结算概述">
+              <span class="en">Overview</span></a>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/api.html" zh-cn-lang="应用内结算 API">
+              <span class="en">Version 3 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li class="nav-section"><div class="nav-section-header"><a href="/google/play/billing/v2/api.html">
+              <span class="en">Version 2 API</span></a></div>
+              <ul>
+              <li><a href="/google/play/billing/v2/billing_integrate.html">
+              <span class="en">Implementing the API</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a></li>
+              <li><a href="/google/play/billing/v2/billing_reference.html">
+              <span class="en">Reference</span></a></li>
+              </ul>
+      </li>
+      <li><a href="/google/play/billing/billing_subscriptions.html">
+              <span class="en">Subscriptions</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_best_practices.html" zh-cn-lang="安全性和设计">
+              <span class="en">Security and Design</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_testing.html" zh-cn-lang="测试应用内结算">
+              <span class="en">Testing In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/billing_admin.html" zh-cn-lang="管理应用内结算">
+              <span class="en">Administering In-app Billing</span></a>
+      </li>
+      <li><a href="/google/play/billing/versions.html">
+              <span class="en">Version Notes</span></a>
+      </li>
+    </ul>
+  </li>
+
+
+
+   <li class="nav-section">
+      <div class="nav-section-header"><a href="/google/gcm/index.html">
+        <span class="en">Google Cloud Messaging</span></a>
+      </div>
+      <ul>
+        <li><a href="/google/gcm/gcm.html">
+            <span class="en">Overview</span></a>
+        </li>
+        <li><a href="/google/gcm/gs.html">
+            <span class="en">Getting Started</span></a>
+        </li>
+        <li><a href="/google/gcm/client.html">
+            <span class="en">Implementing GCM Client</span></a>
+        </li>
+        <li class="nav-section"><div class="nav-section-header"><a href="/google/gcm/server.html">
+              <span class="en">Implementing GCM Server</span></a></div>
+              <ul>
+              <li><a href="/google/gcm/ccs.html">
+              <span class="en">CCS (XMPP)</span></a></li>
+              <li><a href="/google/gcm/http.html">
+              <span class="en">HTTP</span></a></li>
+              </ul>
+        </li>
+        <li><a href="/google/gcm/server-ref.html">
+            <span class="en">Server Reference</span></a>
+        </li>
+        <li><a href="/google/gcm/notifications.html">
+              <span class="en">User Notifications</span></a>
+        </li>
+        <li><a href="/google/gcm/c2dm.html">
+            <span class="en">Migration</span></a>
+        </li>
+      </ul>
+  </li>
+
+  <li class="nav-section">
+  <div class="nav-section-header empty"><a href="/google/gcs/index.html">
+        <span class="en">Google Cloud Save</span></a>
+      </div>
+  </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/dist.html">
+      <span class="en">Google Play Distribution</span></a>
+    </div>
+    <ul>
+      <li><a href="/google/play/filters.html">
+          <span class="en">Filters on Google Play</span></a>
+      </li>
+      <li><a href="/google/play/billing/gp-purchase-status-api.html">
+              <span class="en">Google Play Developer API</span></a>
+      </li>
+      <li><a href="/google/play/publishing/multiple-apks.html">
+          <span class="en">Multiple APK Support</span></a>
+      </li>
+      <li><a href="/google/play/expansion-files.html">
+          <span class="en">APK Expansion Files</span></a>
+      </li>
+      <li class="nav-section">
+        <div class="nav-section-header"><a href="/google/play/licensing/index.html">
+          <span class="en">Application Licensing</span></a>
+        </div>
+        <ul>
+          <li><a href="/google/play/licensing/overview.html">
+              <span class="en">Licensing Overview</span></a>
+          </li>
+          <li><a href="/google/play/licensing/setting-up.html">
+              <span class="en">Setting Up for Licensing</span></a>
+          </li>
+          <li><a href="/google/play/licensing/adding-licensing.html">
+              <span class="en">Adding Licensing to Your App</span></a>
+          </li>
+          <li><a href="/google/play/licensing/licensing-reference.html">
+              <span class="en">Licensing Reference</span></a>
+          </li>
+        </ul>
+      </li>
+
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/backup/index.html">
+      Android Backup Service</a>
+    </div>
+    <ul>
+      <li><a href="/google/backup/signup.html">
+          Register</a>
+      </li>
+    </ul>
+  </li>
+
+  </ul>
+
+</li>
+
+
+
+</ul>
+
+<script type="text/javascript">
+<!--
+    buildToggleLists();
+    changeNavLang(getLangPref());
+//-->
+</script>
+
+
+
+
+      </div>
+      <script type="text/javascript">
+       showGoogleRefTree();
+
+      </script>
+    </div> <!-- end side-nav -->
+    <script>
+      $(document).ready(function() {
+        scrollIntoView("devdoc-nav");
+        });
+    </script>
+
+
+
+
+
+
+<div class="col-12"  id="doc-col">
+
+<div id="api-info-block">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="sum-details-links">
+
+Summary:
+
+
+
+
+
+
+
+
+
+  <a href="#pubctors">Ctors</a>
+
+
+
+
+  &#124; <a href="#pubmethods">Methods</a>
+
+
+
+
+  &#124; <a href="#inhmethods">Inherited Methods</a>
+
+&#124; <a href="#" onclick="return toggleAllClassInherited()" id="toggleAllClassInherited">[Expand All]</a>
+
+</div><!-- end sum-details-links -->
+<div class="api-level">
+
+
+
+
+</div>
+</div><!-- end api-info-block -->
+
+
+<!-- ======== START OF CLASS DATA ======== -->
+
+<div id="jd-header">
+    public
+
+
+
+    class
+<h1 itemprop="name">ChannelIOException</h1>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+    extends IOException<br/>
+
+
+
+
+
+
+
+
+
+
+
+
+</div><!-- end header -->
+
+<div id="naMessage"></div>
+
+<div id="jd-content" class="api apilevel-">
+<table class="jd-inheritance-table">
+
+
+    <tr>
+
+        <td colspan="5" class="jd-inheritance-class-cell">java.lang.Object</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="4" class="jd-inheritance-class-cell">java.lang.Throwable</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="3" class="jd-inheritance-class-cell">java.lang.Exception</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="2" class="jd-inheritance-class-cell">java.io.IOException</td>
+    </tr>
+
+
+    <tr>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;</td>
+
+            <td class="jd-inheritance-space">&nbsp;&nbsp;&nbsp;&#x21b3;</td>
+
+        <td colspan="1" class="jd-inheritance-class-cell">com.google.android.gms.wearable.ChannelIOException</td>
+    </tr>
+
+
+</table>
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Class Overview</h2>
+<p itemprop="articleBody">A subclass of <code><a href="/reference/java/io/IOException.html">IOException</a></code> which can be thrown from the streams returned by
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>.
+</p>
+
+
+
+
+
+</div><!-- jd-descr -->
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div class="jd-descr">
+
+
+<h2>Summary</h2>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<table id="pubctors" class="jd-sumtable"><tr><th colspan="12">Public Constructors</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            </nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html#ChannelIOException(java.lang.String, int, int)">ChannelIOException</a></span>(String message, int closeReason, int appSpecificErrorCode)</nobr>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="pubmethods" class="jd-sumtable"><tr><th colspan="12">Public Methods</th></tr>
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html#getAppSpecificErrorCode()">getAppSpecificErrorCode</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns the app-specific error code passed to <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>
+ if that's the reason for the stream closing, or <code>0</code> otherwise.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html#getCloseReason()">getCloseReason</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Returns one of <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>,
+ or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>, to indicate
+ the reason for the stream closing.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+</table>
+
+
+
+
+
+
+
+<!-- ========== METHOD SUMMARY =========== -->
+<table id="inhmethods" class="jd-sumtable"><tr><th>
+  <a href="#" class="toggle-all" onclick="return toggleAllInherited(this, null)">[Expand]</a>
+  <div style="clear:left;">Inherited Methods</div></th></tr>
+
+
+
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Throwable" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Throwable-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Throwable
+
+<div id="inherited-methods-java.lang.Throwable">
+  <div id="inherited-methods-java.lang.Throwable-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Throwable-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">addSuppressed</span>(Throwable arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Throwable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">fillInStackTrace</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Throwable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getCause</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getLocalizedMessage</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getMessage</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            StackTraceElement[]</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getStackTrace</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Throwable[]</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getSuppressed</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Throwable</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">initCause</span>(Throwable arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">printStackTrace</span>(PrintStream arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">printStackTrace</span>(PrintWriter arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">printStackTrace</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">setStackTrace</span>(StackTraceElement[] arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-java.lang.Object" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-java.lang.Object-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From class
+
+  java.lang.Object
+
+<div id="inherited-methods-java.lang.Object">
+  <div id="inherited-methods-java.lang.Object-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-java.lang.Object-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            Object</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">clone</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">equals</span>(Object arg0)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">finalize</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            Class&lt;?&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">getClass</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            int</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">hashCode</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notify</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">notifyAll</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            String</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">toString</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>()</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0, int arg1)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+            final
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad">wait</span>(long arg0)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+
+</table>
+
+
+</div><!-- jd-descr (summary) -->
+
+<!-- Details -->
+
+
+
+
+
+
+
+
+<!-- XML Attributes -->
+
+
+<!-- Enum Values -->
+
+
+<!-- Constants -->
+
+
+<!-- Fields -->
+
+
+<!-- Public ctors -->
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<h2>Public Constructors</h2>
+
+
+
+<A NAME="ChannelIOException(java.lang.String, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+
+      </span>
+      <span class="sympad">ChannelIOException</span>
+      <span class="normal">(String message, int closeReason, int appSpecificErrorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<!-- Protected ctors -->
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+<!-- Public methdos -->
+
+<h2>Public Methods</h2>
+
+
+
+<A NAME="getAppSpecificErrorCode()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">getAppSpecificErrorCode</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the app-specific error code passed to <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>
+ if that's the reason for the stream closing, or <code>0</code> otherwise.
+</p></div>
+
+    </div>
+</div>
+
+
+<A NAME="getCloseReason()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        int
+      </span>
+      <span class="sympad">getCloseReason</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Returns one of <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>,
+ or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>, to indicate
+ the reason for the stream closing.
+</p></div>
+
+    </div>
+</div>
+
+
+
+
+
+<!-- ========= METHOD DETAIL ======== -->
+
+
+
+<!-- ========= END OF CLASS DATA ========= -->
+<A NAME="navbar_top"></A>
+
+<div id="footer" class="wrap" >
+
+
+  <div id="copyright">
+
+  Except as noted, this content is licensed under <a
+  href="http://www.apache.org/licenses/LICENSE-2.0">Apache 2.0</a>.
+  For details and restrictions, see the <a href="/license.html">
+  Content License</a>.
+  </div>
+  <div id="build_info">
+
+<script src="/timestamp.js" type="text/javascript"></script>
+<script>document.write(BUILD_TIMESTAMP)</script>
+
+  </div>
+
+
+  <div id="footerlinks">
+
+  <p>
+    <a href="/about/index.html">About Android</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/legal.html">Legal</a>&nbsp;&nbsp;|&nbsp;
+    <a href="/support.html">Support</a>
+  </p>
+  </div>
+
+</div> <!-- end footer -->
+</div> <!-- jd-content -->
+
+</div><!-- end doc-content -->
+
+</div> <!-- end body-content -->
+
+
+
+
+
+
+</body>
+</html>
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataApi.DataItemResult.html b/docs/html/reference/com/google/android/gms/wearable/DataApi.DataItemResult.html
index 1e8be76..2274546 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataApi.DataItemResult.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataApi.DataItemResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -994,6 +1005,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataApi.DataListener.html b/docs/html/reference/com/google/android/gms/wearable/DataApi.DataListener.html
index bb294df..b977b69 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataApi.DataListener.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataApi.DataListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html b/docs/html/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html
index 74c3e9b..641cbf5 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -994,6 +1005,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html b/docs/html/reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html
index 6da460a..0b598bf 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1029,6 +1040,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataApi.html b/docs/html/reference/com/google/android/gms/wearable/DataApi.html
index 853a97c..3370357 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataApi.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -989,6 +1000,47 @@
 
 
 
+<!-- =========== ENUM CONSTANT SUMMARY =========== -->
+<table id="constants" class="jd-sumtable"><tr><th colspan="12">Constants</th></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.html#FILTER_LITERAL">FILTER_LITERAL</a></td>
+        <td class="jd-descrcol" width="100%">
+          Filter type for
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#getDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">getDataItems(GoogleApiClient, Uri, int)</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">deleteDataItems(GoogleApiClient, Uri, int)</a></code>:
+ if this filter is set, the given URI will be taken as a literal path, and the operation
+ will apply to the matching item only.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.html#FILTER_PREFIX">FILTER_PREFIX</a></td>
+        <td class="jd-descrcol" width="100%">
+          Filter type for
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#getDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">getDataItems(GoogleApiClient, Uri, int)</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">deleteDataItems(GoogleApiClient, Uri, int)</a></code>:
+ if this filter is set, the given URI will be taken as a path prefix, and the operation
+ will apply to all matching items.
+
+
+
+        </td>
+    </tr>
+
+
+
+</table>
+
+
 
 
 
@@ -1042,7 +1094,7 @@
             <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html">DataApi.DeleteDataItemsResult</a>&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
-        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/DataApi.html#deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri)">deleteDataItems</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri)</nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/DataApi.html#deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">deleteDataItems</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri, int filterType)</nobr>
         
         <div class="jd-descrdiv">
           Removes all specified <code><a href="/reference/com/google/android/gms/wearable/DataItem.html">data items</a></code> from the Android Wear network.
@@ -1062,6 +1114,29 @@
             
             
             
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html">DataApi.DeleteDataItemsResult</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/DataApi.html#deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri)">deleteDataItems</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri)</nobr>
+
+        <div class="jd-descrdiv">
+          Removes all specified <code><a href="/reference/com/google/android/gms/wearable/DataItem.html">data items</a></code> from the Android Wear network.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
             <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/DataApi.DataItemResult.html">DataApi.DataItemResult</a>&gt;</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
@@ -1078,7 +1153,7 @@
 
 
 	 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
             
@@ -1101,6 +1176,30 @@
 
 
 	 
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/DataItemBuffer.html">DataItemBuffer</a>&gt;</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/DataApi.html#getDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">getDataItems</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri, int filterType)</nobr>
+
+        <div class="jd-descrdiv">
+          Retrieves all <code><a href="/reference/com/google/android/gms/wearable/DataItem.html">data items</a></code> matching the provided URI and filter type, from
+ the Android Wear network.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol"><nobr>
             abstract
@@ -1246,6 +1345,105 @@
 <!-- Constants -->
 
 
+<!-- ========= ENUM CONSTANTS DETAIL ======== -->
+<h2>Constants</h2>
+
+
+
+
+<A NAME="FILTER_LITERAL"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        FILTER_LITERAL
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Filter type for
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#getDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">getDataItems(GoogleApiClient, Uri, int)</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">deleteDataItems(GoogleApiClient, Uri, int)</a></code>:
+ if this filter is set, the given URI will be taken as a literal path, and the operation
+ will apply to the matching item only.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                0
+                (0x00000000)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+<A NAME="FILTER_PREFIX"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        FILTER_PREFIX
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Filter type for
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#getDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">getDataItems(GoogleApiClient, Uri, int)</a></code>,
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)">deleteDataItems(GoogleApiClient, Uri, int)</a></code>:
+ if this filter is set, the given URI will be taken as a path prefix, and the operation
+ will apply to all matching items.
+</p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                1
+                (0x00000001)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
+
 <!-- Fields -->
 
 
@@ -1302,6 +1500,48 @@
 </div>
 
 
+<A NAME="deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html">DataApi.DeleteDataItemsResult</a>&gt;
+      </span>
+      <span class="sympad">deleteDataItems</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri, int filterType)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Removes all specified <code><a href="/reference/com/google/android/gms/wearable/DataItem.html">data items</a></code> from the Android Wear network.
+
+ <p>If <code>uri</code> is fully specified, this method will delete at
+ most one data item. If <code>uri</code> contains no host, multiple data items may be
+ deleted, since different nodes may create data items with the same path. See
+ <code><a href="/reference/com/google/android/gms/wearable/DataApi.html">DataApi</a></code> for details of the URI format.
+
+ <p>The <code>filterType</code> parameter changes the interpretation of <code>uri</code>.
+ For example, if <code>uri</code> represents a path prefix, all items matching that
+ prefix will be deleted.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="deleteDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1412,6 +1652,52 @@
 </div>
 
 
+<A NAME="getDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        <a href="/reference/com/google/android/gms/common/api/PendingResult.html">PendingResult</a>&lt;<a href="/reference/com/google/android/gms/wearable/DataItemBuffer.html">DataItemBuffer</a>&gt;
+      </span>
+      <span class="sympad">getDataItems</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client, Uri uri, int filterType)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Retrieves all <code><a href="/reference/com/google/android/gms/wearable/DataItem.html">data items</a></code> matching the provided URI and filter type, from
+ the Android Wear network.
+
+ <p>The URI must contain a path. If <code>uri</code> is fully specified, at most one data item
+ will be returned. If <code>uri</code> contains no host, multiple data items may be returned,
+ since different nodes may create data items with the same path. See <code><a href="/reference/com/google/android/gms/wearable/DataApi.html">DataApi</a></code> for
+ details of the URI format.
+
+ <p>Callers must call <code><a href="/reference/com/google/android/gms/common/data/AbstractDataBuffer.html#release()">release()</a></code> on the returned buffer when finished
+ processing results.
+
+ <p>The <code>filterType</code> parameter changes the interpretation of <code>uri</code>.
+ For example, if <code>uri</code> represents a path prefix, all items matching that prefix
+ will be returned.
+</p></div>
+
+    </div>
+</div>
+
+
 <A NAME="getDataItems(com.google.android.gms.common.api.GoogleApiClient, android.net.Uri)"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataEvent.html b/docs/html/reference/com/google/android/gms/wearable/DataEvent.html
index 7ada00a..78035d4 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataEvent.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataEventBuffer.html b/docs/html/reference/com/google/android/gms/wearable/DataEventBuffer.html
index 2743169..da748cd 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataEventBuffer.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataEventBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1044,6 +1055,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/DataEventBuffer.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1655,6 +1673,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1900,7 +1925,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataItem.html b/docs/html/reference/com/google/android/gms/wearable/DataItem.html
index 3f0c74d..e3f1b0e 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataItem.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataItem.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataItemAsset.html b/docs/html/reference/com/google/android/gms/wearable/DataItemAsset.html
index 58466c1..294c62b 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataItemAsset.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataItemAsset.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataItemBuffer.html b/docs/html/reference/com/google/android/gms/wearable/DataItemBuffer.html
index 30c0e4f..5129d91 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataItemBuffer.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataItemBuffer.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1039,6 +1050,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/DataItemBuffer.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1650,6 +1668,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1895,7 +1920,13 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns the status of this result.  Use <code><a href="/reference/com/google/android/gms/common/api/Status.html#isSuccess()">isSuccess()</a></code> to determine whether the
+ call was successful, and <code><a href="/reference/com/google/android/gms/common/api/Status.html#getStatusCode()">getStatusCode()</a></code> to determine what the error cause
+ was.
+
+ <p>Certain errors are due to failures that can be resolved by launching a particular intent.
+ The resolution intent is available via <code><a href="/reference/com/google/android/gms/common/api/Status.html#getResolution()">getResolution()</a></code>.
+</p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataMap.html b/docs/html/reference/com/google/android/gms/wearable/DataMap.html
index 63d7d18..5e955ed 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataMap.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataMap.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/DataMapItem.html b/docs/html/reference/com/google/android/gms/wearable/DataMapItem.html
index 9c5f796..8775452 100644
--- a/docs/html/reference/com/google/android/gms/wearable/DataMapItem.html
+++ b/docs/html/reference/com/google/android/gms/wearable/DataMapItem.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/MessageApi.MessageListener.html b/docs/html/reference/com/google/android/gms/wearable/MessageApi.MessageListener.html
index d5084c2..6e1c287 100644
--- a/docs/html/reference/com/google/android/gms/wearable/MessageApi.MessageListener.html
+++ b/docs/html/reference/com/google/android/gms/wearable/MessageApi.MessageListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html b/docs/html/reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html
index 19aee42..32c3570 100644
--- a/docs/html/reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html
+++ b/docs/html/reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -996,6 +1007,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/wearable/MessageApi.html b/docs/html/reference/com/google/android/gms/wearable/MessageApi.html
index 876902a..66307e3 100644
--- a/docs/html/reference/com/google/android/gms/wearable/MessageApi.html
+++ b/docs/html/reference/com/google/android/gms/wearable/MessageApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/MessageEvent.html b/docs/html/reference/com/google/android/gms/wearable/MessageEvent.html
index c177915..49bcfad 100644
--- a/docs/html/reference/com/google/android/gms/wearable/MessageEvent.html
+++ b/docs/html/reference/com/google/android/gms/wearable/MessageEvent.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/Node.html b/docs/html/reference/com/google/android/gms/wearable/Node.html
index a74b271..a29696a 100644
--- a/docs/html/reference/com/google/android/gms/wearable/Node.html
+++ b/docs/html/reference/com/google/android/gms/wearable/Node.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -939,6 +950,29 @@
 
 
 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            boolean</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/Node.html#isNearby()">isNearby</a></span>()</nobr>
+
+        <div class="jd-descrdiv">
+          Indicates that this node can be considered geographically nearby the local node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
 </table>
 
 
@@ -1052,6 +1086,39 @@
 </div>
 
 
+<A NAME="isNearby()"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+        abstract
+
+        boolean
+      </span>
+      <span class="sympad">isNearby</span>
+      <span class="normal">()</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Indicates that this node can be considered geographically nearby the local node.
+</p></div>
+
+    </div>
+</div>
+
+
 
 
 
diff --git a/docs/html/reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html b/docs/html/reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html
index ca60b33..14c660a 100644
--- a/docs/html/reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html
+++ b/docs/html/reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -938,7 +949,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html#getNodes()">getNodes</a></span>()</nobr>
         
         <div class="jd-descrdiv">
-          Returns a list of connected nodes.
+          Returns a list of connected nodes, either directly or indirectly via a directly
+ connected node.
           
     
 
@@ -994,6 +1006,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
@@ -1071,7 +1090,8 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Returns a list of connected nodes. This list doesn't include the local node. </p></div>
+  <div class="jd-tagdata jd-tagdescr"><p>Returns a list of connected nodes, either directly or indirectly via a directly
+ connected node. This list doesn't include the local node. </p></div>
 
     </div>
 </div>
diff --git a/docs/html/reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html b/docs/html/reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html
index 707ce38..8e460c9 100644
--- a/docs/html/reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html
+++ b/docs/html/reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -994,6 +1005,13 @@
         <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/common/api/Result.html#getStatus()">getStatus</a></span>()</nobr>
         
+        <div class="jd-descrdiv">
+          Returns the status of this result.
+
+
+
+        </div>
+
   </td></tr>
 
 
diff --git a/docs/html/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html b/docs/html/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html
index cbb1ed8..3b29be9 100644
--- a/docs/html/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html
+++ b/docs/html/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -970,7 +981,7 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerConnected(com.google.android.gms.wearable.Node)">onPeerConnected</a></span>(<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a> peer)</nobr>
         
         <div class="jd-descrdiv">
-          Notification that a peer has been connected.
+          Notification that a peer is now reachable by this node.
           
     
 
@@ -993,7 +1004,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerDisconnected(com.google.android.gms.wearable.Node)">onPeerDisconnected</a></span>(<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a> peer)</nobr>
         
         <div class="jd-descrdiv">
-          Notification that a peer has been disconnected.
+          Notification that a peer has been disconnected from this node or is no longer reachable
+ by this node.
           
     
 
@@ -1076,7 +1088,14 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Notification that a peer has been connected.
+  <div class="jd-tagdata jd-tagdescr"><p>Notification that a peer is now reachable by this node. It may be directly connected
+ to this node or it may be reachable only via a directly connected node.
+
+ <p>Changes to a node's hop count or nearby status alone will not trigger an
+ <code><a href="/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerConnected(com.google.android.gms.wearable.Node)">onPeerConnected(Node)</a></code> event as long as the node was already connected.
+
+ <p>Since multiple nodes can be connected to a network at the same time,
+ peer connected and disconnected events can come in any order.
 </p></div>
 
     </div>
@@ -1109,7 +1128,11 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Notification that a peer has been disconnected.
+  <div class="jd-tagdata jd-tagdescr"><p>Notification that a peer has been disconnected from this node or is no longer reachable
+ by this node.
+
+ <p>Since multiple nodes can be connected to a network at the same time,
+ peer connected and disconnected events can come in any order.
 </p></div>
 
     </div>
diff --git a/docs/html/reference/com/google/android/gms/wearable/NodeApi.html b/docs/html/reference/com/google/android/gms/wearable/NodeApi.html
index 0ac664b..64a3d3d 100644
--- a/docs/html/reference/com/google/android/gms/wearable/NodeApi.html
+++ b/docs/html/reference/com/google/android/gms/wearable/NodeApi.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -990,7 +1001,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/NodeApi.html#getConnectedNodes(com.google.android.gms.common.api.GoogleApiClient)">getConnectedNodes</a></span>(<a href="/reference/com/google/android/gms/common/api/GoogleApiClient.html">GoogleApiClient</a> client)</nobr>
         
         <div class="jd-descrdiv">
-          Gets a list of nodes to which this device is currently connected.
+          Gets a list of nodes to which this device is currently connected, either directly or
+ indirectly via a directly connected node.
           
     
 
@@ -1120,7 +1132,7 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Registers a listener to receive all node events. Calls to this method should balanced
+  <div class="jd-tagdata jd-tagdescr"><p>Registers a listener to receive all node events. Calls to this method should be balanced
  with <code><a href="/reference/com/google/android/gms/wearable/NodeApi.html#removeListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.NodeApi.NodeListener)">removeListener(GoogleApiClient, NodeListener)</a></code>, to avoid leaking resources.
 
  <p>Callers wishing to be notified of node events in the background should use
@@ -1157,7 +1169,8 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Gets a list of nodes to which this device is currently connected.
+  <div class="jd-tagdata jd-tagdescr"><p>Gets a list of nodes to which this device is currently connected, either directly or
+ indirectly via a directly connected node.
 
  <p>The returned list will not include the
  <a href="/reference/com/google/android/gms/wearable/NodeApi.html#getLocalNode(com.google.android.gms.common.api.GoogleApiClient)">local node</a></a>.
diff --git a/docs/html/reference/com/google/android/gms/wearable/PutDataMapRequest.html b/docs/html/reference/com/google/android/gms/wearable/PutDataMapRequest.html
index ef5a023..58c80b5 100644
--- a/docs/html/reference/com/google/android/gms/wearable/PutDataMapRequest.html
+++ b/docs/html/reference/com/google/android/gms/wearable/PutDataMapRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/PutDataRequest.html b/docs/html/reference/com/google/android/gms/wearable/PutDataRequest.html
index 59564fc..aedcfce 100644
--- a/docs/html/reference/com/google/android/gms/wearable/PutDataRequest.html
+++ b/docs/html/reference/com/google/android/gms/wearable/PutDataRequest.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/Wearable.WearableOptions.Builder.html b/docs/html/reference/com/google/android/gms/wearable/Wearable.WearableOptions.Builder.html
index 4d0379d..2c75e28 100644
--- a/docs/html/reference/com/google/android/gms/wearable/Wearable.WearableOptions.Builder.html
+++ b/docs/html/reference/com/google/android/gms/wearable/Wearable.WearableOptions.Builder.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/Wearable.WearableOptions.html b/docs/html/reference/com/google/android/gms/wearable/Wearable.WearableOptions.html
index b22ec38..7fea53e 100644
--- a/docs/html/reference/com/google/android/gms/wearable/Wearable.WearableOptions.html
+++ b/docs/html/reference/com/google/android/gms/wearable/Wearable.WearableOptions.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
diff --git a/docs/html/reference/com/google/android/gms/wearable/Wearable.html b/docs/html/reference/com/google/android/gms/wearable/Wearable.html
index 83f4bba..df138a5 100644
--- a/docs/html/reference/com/google/android/gms/wearable/Wearable.html
+++ b/docs/html/reference/com/google/android/gms/wearable/Wearable.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -975,6 +986,38 @@
           public
           static
           final
+          <a href="/reference/com/google/android/gms/wearable/CapabilityApi.html">CapabilityApi</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Wearable.html#CapabilityApi">CapabilityApi</a></td>
+          <td class="jd-descrcol" width="100%">
+
+
+
+
+          </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
+          <a href="/reference/com/google/android/gms/wearable/ChannelApi.html">ChannelApi</a></nobr></td>
+          <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Wearable.html#ChannelApi">ChannelApi</a></td>
+          <td class="jd-descrcol" width="100%">
+
+
+
+
+          </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+          <td class="jd-typecol"><nobr>
+          public
+          static
+          final
           <a href="/reference/com/google/android/gms/wearable/DataApi.html">DataApi</a></nobr></td>
           <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Wearable.html#DataApi">DataApi</a></td>
           <td class="jd-descrcol" width="100%">
@@ -1308,6 +1351,68 @@
 
 
 
+<A NAME="CapabilityApi"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/wearable/CapabilityApi.html">CapabilityApi</a>
+      </span>
+        CapabilityApi
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+    </div>
+</div>
+
+
+
+<A NAME="ChannelApi"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        <a href="/reference/com/google/android/gms/wearable/ChannelApi.html">ChannelApi</a>
+      </span>
+        ChannelApi
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+
+    </div>
+</div>
+
+
+
 <A NAME="DataApi"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/wearable/WearableListenerService.html b/docs/html/reference/com/google/android/gms/wearable/WearableListenerService.html
index 11241ee..3f75212 100644
--- a/docs/html/reference/com/google/android/gms/wearable/WearableListenerService.html
+++ b/docs/html/reference/com/google/android/gms/wearable/WearableListenerService.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -811,7 +822,21 @@
   
 
 
+
+
+
+
+
+
+
+
+
+
   
+
+
+
+
   
 
   
@@ -832,6 +857,8 @@
    
   
   
+
+
   
   
 
@@ -922,6 +949,10 @@
       
         <a href="/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html">NodeApi.NodeListener</a> 
       
+        <a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">CapabilityApi.CapabilityListener</a>
+
+        <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a>
+
   
   
 
@@ -2203,6 +2234,88 @@
 
 
 
+
+<tr class="api apilevel-" >
+<td colspan="12">
+
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-constants-com.google.android.gms.wearable.ChannelApi.ChannelListener" class="jd-expando-trigger closed"
+          ><img id="inherited-constants-com.google.android.gms.wearable.ChannelApi.ChannelListener-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>From interface
+<a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">com.google.android.gms.wearable.ChannelApi.ChannelListener</a>
+<div id="inherited-constants-com.google.android.gms.wearable.ChannelApi.ChannelListener">
+  <div id="inherited-constants-com.google.android.gms.wearable.ChannelApi.ChannelListener-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-constants-com.google.android.gms.wearable.ChannelApi.ChannelListener-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></td>
+        <td class="jd-descrcol" width="100%">
+          Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the closing is due to a remote node being disconnected.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the stream is closed due to the local node calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></td>
+        <td class="jd-descrcol" width="100%">
+          Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> (but not
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>), when the stream was closed under normal conditions, e.g the
+ whole file was read, or the <code><a href="/reference/java/io/OutputStream.html">OutputStream</a></code> on the remote node was closed
+ normally.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></td>
+        <td class="jd-descrcol" width="100%">
+          Value passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed(Channel, int, int)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed(Channel, int, int)</a></code> when the stream is closed due to the remote node calling
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code>.
+
+
+
+        </td>
+    </tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+
 </table>
 
 
@@ -2274,6 +2387,84 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onCapabilityChanged(com.google.android.gms.wearable.CapabilityInfo)">onCapabilityChanged</a></span>(<a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a> capabilityInfo)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onChannelOpened(com.google.android.gms.wearable.Channel)">onChannelOpened</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when a new channel is opened by a remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onConnectedNodes(java.util.List<com.google.android.gms.wearable.Node>)">onConnectedNodes</a></span>(List&lt;<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a>&gt; connectedNodes)</nobr>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onCreate()">onCreate</a></span>()</nobr>
         
   </td></tr>
@@ -2329,6 +2520,29 @@
             void</nobr>
         </td>
         <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the input side of a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onMessageReceived(com.google.android.gms.wearable.MessageEvent)">onMessageReceived</a></span>(<a href="/reference/com/google/android/gms/wearable/MessageEvent.html">MessageEvent</a> messageEvent)</nobr>
         
         <div class="jd-descrdiv">
@@ -2342,6 +2556,29 @@
 
 
 	 
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the output side of a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol"><nobr>
             
@@ -2355,7 +2592,7 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onPeerConnected(com.google.android.gms.wearable.Node)">onPeerConnected</a></span>(<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a> peer)</nobr>
         
         <div class="jd-descrdiv">
-          Receives peer connected events.
+          Notification that a peer is now reachable by this node.
           
     
 
@@ -2378,7 +2615,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onPeerDisconnected(com.google.android.gms.wearable.Node)">onPeerDisconnected</a></span>(<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a> peer)</nobr>
         
         <div class="jd-descrdiv">
-          Receives peer disconnected events.
+          Notification that a peer has been disconnected from this node or is no longer reachable
+ by this node.
           
     
 
@@ -6263,7 +6501,7 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerConnected(com.google.android.gms.wearable.Node)">onPeerConnected</a></span>(<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a> peer)</nobr>
         
         <div class="jd-descrdiv">
-          Notification that a peer has been connected.
+          Notification that a peer is now reachable by this node.
           
     
 
@@ -6286,7 +6524,8 @@
         <span class="sympad"><a href="/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerDisconnected(com.google.android.gms.wearable.Node)">onPeerDisconnected</a></span>(<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a> peer)</nobr>
         
         <div class="jd-descrdiv">
-          Notification that a peer has been disconnected.
+          Notification that a peer has been disconnected from this node or is no longer reachable
+ by this node.
           
     
 
@@ -6304,6 +6543,166 @@
 
 <tr class="api apilevel-" >
 <td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.wearable.CapabilityApi.CapabilityListener" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.wearable.CapabilityApi.CapabilityListener-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">com.google.android.gms.wearable.CapabilityApi.CapabilityListener</a>
+
+<div id="inherited-methods-com.google.android.gms.wearable.CapabilityApi.CapabilityListener">
+  <div id="inherited-methods-com.google.android.gms.wearable.CapabilityApi.CapabilityListener-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.wearable.CapabilityApi.CapabilityListener-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html#onCapabilityChanged(com.google.android.gms.wearable.CapabilityInfo)">onCapabilityChanged</a></span>(<a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a> capabilityInfo)</nobr>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
+  <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-com.google.android.gms.wearable.ChannelApi.ChannelListener" class="jd-expando-trigger closed"
+          ><img id="inherited-methods-com.google.android.gms.wearable.ChannelApi.ChannelListener-trigger"
+          src="/assets/images/triangle-closed.png"
+          class="jd-expando-trigger-img" /></a>
+From interface
+
+  <a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">com.google.android.gms.wearable.ChannelApi.ChannelListener</a>
+
+<div id="inherited-methods-com.google.android.gms.wearable.ChannelApi.ChannelListener">
+  <div id="inherited-methods-com.google.android.gms.wearable.ChannelApi.ChannelListener-list"
+        class="jd-inheritedlinks">
+  </div>
+  <div id="inherited-methods-com.google.android.gms.wearable.ChannelApi.ChannelListener-summary" style="display: none;">
+    <table class="jd-sumtable-expando">
+
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelOpened(com.google.android.gms.wearable.Channel)">onChannelOpened</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when a new channel is opened by a remote node.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onInputClosed(com.google.android.gms.wearable.Channel, int, int)">onInputClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the input side of a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol"><nobr>
+            abstract
+
+
+
+
+            void</nobr>
+        </td>
+        <td class="jd-linkcol" width="100%"><nobr>
+        <span class="sympad"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onOutputClosed(com.google.android.gms.wearable.Channel, int, int)">onOutputClosed</a></span>(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</nobr>
+
+        <div class="jd-descrdiv">
+          Called when the output side of a channel is closed.
+
+
+
+        </div>
+
+  </td></tr>
+
+
+</table>
+  </div>
+</div>
+</td></tr>
+
+
+
+<tr class="api apilevel-" >
+<td colspan="12">
   <a href="#" onclick="return toggleInherited(this, null)" id="inherited-methods-android.content.ComponentCallbacks" class="jd-expando-trigger closed"
           ><img id="inherited-methods-android.content.ComponentCallbacks-trigger"
           src="/assets/images/triangle-closed.png"
@@ -6472,6 +6871,153 @@
 </div>
 
 
+<A NAME="onCapabilityChanged(com.google.android.gms.wearable.CapabilityInfo)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onCapabilityChanged</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a> capabilityInfo)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onChannelClosed(com.google.android.gms.wearable.Channel, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onChannelClosed</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when a channel is closed. This can happen through an explicit call to
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code> or <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient, int)">close(GoogleApiClient, int)</a></code> on
+ either side of the connection, or due to disconnecting from the remote node.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>closeReason</td>
+          <td>the reason for the channel closing. One of
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>,
+         or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>.</td>
+        </tr>
+        <tr>
+          <th>appSpecificErrorCode</td>
+          <td>the error code specified on <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code>,
+         or 0 if <code>closeReason</code> is <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
+<A NAME="onChannelOpened(com.google.android.gms.wearable.Channel)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onChannelOpened</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when a new channel is opened by a remote node. </p></div>
+
+    </div>
+</div>
+
+
+<A NAME="onConnectedNodes(java.util.List<com.google.android.gms.wearable.Node>)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onConnectedNodes</span>
+      <span class="normal">(List&lt;<a href="/reference/com/google/android/gms/wearable/Node.html">Node</a>&gt; connectedNodes)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p></p></div>
+
+    </div>
+</div>
+
+
 <A NAME="onCreate()"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -6541,7 +7087,6 @@
  <p>
  Applications needing to track the of all its data items, may use
  <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#getDataItems(com.google.android.gms.common.api.GoogleApiClient)">getDataItems(GoogleApiClient)</a></code> on boot to retrieve all existing data items.
- <p>
 </p></div>
 
     </div>
@@ -6580,6 +7125,56 @@
 </div>
 
 
+<A NAME="onInputClosed(com.google.android.gms.wearable.Channel, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onInputClosed</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when the input side of a channel is closed.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>closeReason</td>
+          <td>the reason for the input closing. One of
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>,
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>, or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code></td>
+        </tr>
+        <tr>
+          <th>appSpecificErrorCode</td>
+          <td>the error code specified on <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code>,
+         or 0 if <code>closeReason</code> is <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>
+         or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="onMessageReceived(com.google.android.gms.wearable.MessageEvent)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -6613,6 +7208,56 @@
 </div>
 
 
+<A NAME="onOutputClosed(com.google.android.gms.wearable.Channel, int, int)"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+
+
+
+
+        void
+      </span>
+      <span class="sympad">onOutputClosed</span>
+      <span class="normal">(<a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a> channel, int closeReason, int appSpecificErrorCode)</span>
+    </h4>
+      <div class="api-level">
+        <div></div>
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Called when the output side of a channel is closed.</p></div>
+  <div class="jd-tagdata">
+      <h5 class="jd-tagtitle">Parameters</h5>
+      <table class="jd-tagtable">
+        <tr>
+          <th>closeReason</td>
+          <td>the reason for the output closing. One of
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>, <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_REMOTE_CLOSE">CLOSE_REASON_REMOTE_CLOSE</a></code>,
+         <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_LOCAL_CLOSE">CLOSE_REASON_LOCAL_CLOSE</a></code>, or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code></td>
+        </tr>
+        <tr>
+          <th>appSpecificErrorCode</td>
+          <td>the error code specified on <code><a href="/reference/com/google/android/gms/wearable/Channel.html#close(com.google.android.gms.common.api.GoogleApiClient)">close(GoogleApiClient)</a></code>,
+         or 0 if <code>closeReason</code> is <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_DISCONNECTED">CLOSE_REASON_DISCONNECTED</a></code>
+         or <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#CLOSE_REASON_NORMAL">CLOSE_REASON_NORMAL</a></code>.
+</td>
+        </tr>
+      </table>
+  </div>
+
+    </div>
+</div>
+
+
 <A NAME="onPeerConnected(com.google.android.gms.wearable.Node)"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -6639,11 +7284,14 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Receives peer connected events.
- <p>
- Node events are determined by the connectivity between two Android Wear devices. For
- example, a wearable turned on will connect to a phone and trigger a <code><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onPeerConnected(com.google.android.gms.wearable.Node)">onPeerConnected(Node)</a></code>
- event.
+  <div class="jd-tagdata jd-tagdescr"><p>Notification that a peer is now reachable by this node. It may be directly connected
+ to this node or it may be reachable only via a directly connected node.
+
+ <p>Changes to a node's hop count or nearby status alone will not trigger an
+ <code><a href="/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html#onPeerConnected(com.google.android.gms.wearable.Node)">onPeerConnected(Node)</a></code> event as long as the node was already connected.
+
+ <p>Since multiple nodes can be connected to a network at the same time,
+ peer connected and disconnected events can come in any order.
 </p></div>
 
     </div>
@@ -6676,11 +7324,11 @@
     
 
       
-  <div class="jd-tagdata jd-tagdescr"><p>Receives peer disconnected events.
- <p>
- Node events are determined by the connectivity between two Android Wear devices. For
- example, a wearable moving out of range of a phone will trigger a
- <code><a href="/reference/com/google/android/gms/wearable/WearableListenerService.html#onPeerDisconnected(com.google.android.gms.wearable.Node)">onPeerDisconnected(Node)</a></code> event.
+  <div class="jd-tagdata jd-tagdescr"><p>Notification that a peer has been disconnected from this node or is no longer reachable
+ by this node.
+
+ <p>Since multiple nodes can be connected to a network at the same time,
+ peer connected and disconnected events can come in any order.
 </p></div>
 
     </div>
diff --git a/docs/html/reference/com/google/android/gms/wearable/WearableStatusCodes.html b/docs/html/reference/com/google/android/gms/wearable/WearableStatusCodes.html
index 074d165..d25264d 100644
--- a/docs/html/reference/com/google/android/gms/wearable/WearableStatusCodes.html
+++ b/docs/html/reference/com/google/android/gms/wearable/WearableStatusCodes.html
@@ -562,7 +562,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -976,6 +987,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/WearableStatusCodes.html#DUPLICATE_CAPABILITY">DUPLICATE_CAPABILITY</a></td>
+        <td class="jd-descrcol" width="100%">
+          Indicates that the specified capability already exists.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/WearableStatusCodes.html#DUPLICATE_LISTENER">DUPLICATE_LISTENER</a></td>
         <td class="jd-descrcol" width="100%">
           Indicates that the specified listener is already registered.
@@ -986,7 +1009,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/WearableStatusCodes.html#INVALID_TARGET_NODE">INVALID_TARGET_NODE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -998,7 +1021,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/WearableStatusCodes.html#TARGET_NODE_NOT_CONNECTED">TARGET_NODE_NOT_CONNECTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1010,6 +1033,18 @@
     </tr>
     
     
+    <tr class="alt-color api apilevel-" >
+        <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/WearableStatusCodes.html#UNKNOWN_CAPABILITY">UNKNOWN_CAPABILITY</a></td>
+        <td class="jd-descrcol" width="100%">
+          Indicates that the specified capability is not recognized.
+
+
+
+        </td>
+    </tr>
+
+
     <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/WearableStatusCodes.html#UNKNOWN_LISTENER">UNKNOWN_LISTENER</a></td>
@@ -1054,6 +1089,18 @@
     
     <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#API_NOT_AVAILABLE">API_NOT_AVAILABLE</a></td>
+        <td class="jd-descrcol" width="100%">
+          The client attempted to call a method from an API that failed to connect.
+
+
+
+        </td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#CANCELED">CANCELED</a></td>
         <td class="jd-descrcol" width="100%">
           The result was canceled either due to client disconnect or <code><a href="/reference/com/google/android/gms/common/api/PendingResult.html#cancel()">cancel()</a></code>.
@@ -1064,7 +1111,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#DEVELOPER_ERROR">DEVELOPER_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1076,7 +1123,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#ERROR">ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1088,7 +1135,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERNAL_ERROR">INTERNAL_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1100,7 +1147,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INTERRUPTED">INTERRUPTED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1112,7 +1159,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#INVALID_ACCOUNT">INVALID_ACCOUNT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1124,7 +1171,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#LICENSE_CHECK_FAILED">LICENSE_CHECK_FAILED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1136,7 +1183,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#NETWORK_ERROR">NETWORK_ERROR</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1148,7 +1195,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#RESOLUTION_REQUIRED">RESOLUTION_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1160,7 +1207,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_DISABLED">SERVICE_DISABLED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1172,7 +1219,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_INVALID">SERVICE_INVALID</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1184,7 +1231,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_MISSING">SERVICE_MISSING</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1196,7 +1243,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SERVICE_VERSION_UPDATE_REQUIRED">SERVICE_VERSION_UPDATE_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1208,7 +1255,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SIGN_IN_REQUIRED">SIGN_IN_REQUIRED</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1220,7 +1267,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS">SUCCESS</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1232,7 +1279,7 @@
     </tr>
     
     
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#SUCCESS_CACHE">SUCCESS_CACHE</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1244,7 +1291,7 @@
     </tr>
     
     
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-typecol">int</td>
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/common/api/CommonStatusCodes.html#TIMEOUT">TIMEOUT</a></td>
         <td class="jd-descrcol" width="100%">
@@ -1675,6 +1722,47 @@
 
 
 
+<A NAME="DUPLICATE_CAPABILITY"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        DUPLICATE_CAPABILITY
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Indicates that the specified capability already exists. </p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                4006
+                (0x00000fa6)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="DUPLICATE_LISTENER"></A>
 
 <div class="jd-details api apilevel-"> 
@@ -1798,6 +1886,47 @@
 
 
 
+<A NAME="UNKNOWN_CAPABILITY"></A>
+
+<div class="jd-details api apilevel-">
+    <h4 class="jd-details-title">
+      <span class="normal">
+        public
+        static
+        final
+        int
+      </span>
+        UNKNOWN_CAPABILITY
+    </h4>
+      <div class="api-level">
+
+
+
+
+      </div>
+    <div class="jd-details-descr">
+
+
+
+
+  <div class="jd-tagdata jd-tagdescr"><p>Indicates that the specified capability is not recognized. </p></div>
+
+
+        <div class="jd-tagdata">
+        <span class="jd-tagtitle">Constant Value: </span>
+        <span>
+
+                4007
+                (0x00000fa7)
+
+        </span>
+        </div>
+
+    </div>
+</div>
+
+
+
 <A NAME="UNKNOWN_LISTENER"></A>
 
 <div class="jd-details api apilevel-"> 
diff --git a/docs/html/reference/com/google/android/gms/wearable/package-summary.html b/docs/html/reference/com/google/android/gms/wearable/package-summary.html
index c6c2380..c9a7cad 100644
--- a/docs/html/reference/com/google/android/gms/wearable/package-summary.html
+++ b/docs/html/reference/com/google/android/gms/wearable/package-summary.html
@@ -563,7 +563,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -794,6 +805,28 @@
 
 
   
+    <h2>Annotations</h2>
+    <div class="jd-sumtable">
+
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.CloseReason.html">ChannelApi.CloseReason</a></td>
+        <td class="jd-descrcol" width="100%">
+          An annotation for values passed to <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html#onChannelClosed(com.google.android.gms.wearable.Channel, int, int)">onChannelClosed(Channel, int, int)</a></code>, and other methods
+ on the <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a></code> interface.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+    </div>
+
 
 
   
@@ -804,6 +837,149 @@
   <table class="jd-sumtable-expando">
     
       <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html">CapabilityApi</a></td>
+        <td class="jd-descrcol" width="100%">
+          Exposes an API to learn about capabilities provided by nodes on the Wear network.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html">CapabilityApi.AddLocalCapabilityResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#addLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">addLocalCapability(GoogleApiClient, String)</a></code> &nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html">CapabilityApi.CapabilityListener</a></td>
+        <td class="jd-descrcol" width="100%">
+          Listener for changes in the reachable nodes providing a capability.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html">CapabilityApi.GetAllCapabilitiesResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getAllCapabilities(com.google.android.gms.common.api.GoogleApiClient, int)">getAllCapabilities(GoogleApiClient, int)</a></code> &nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html">CapabilityApi.GetCapabilityResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)">getCapability(GoogleApiClient, String, int)</a></code> &nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html">CapabilityApi.RemoveLocalCapabilityResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result returned from <code><a href="/reference/com/google/android/gms/wearable/CapabilityApi.html#removeLocalCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String)">removeLocalCapability(GoogleApiClient, String)</a></code> &nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/CapabilityInfo.html">CapabilityInfo</a></td>
+        <td class="jd-descrcol" width="100%">
+          Information about a Capability on the network and where it is available.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.html">Channel</a></td>
+        <td class="jd-descrcol" width="100%">
+          A channel created through <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#openChannel(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.String)">openChannel(GoogleApiClient, String, String)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html">Channel.GetInputStreamResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html">Channel.GetOutputStreamResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.html">ChannelApi</a></td>
+        <td class="jd-descrcol" width="100%">
+          Client interface for Wearable Channel API.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html">ChannelApi.ChannelListener</a></td>
+        <td class="jd-descrcol" width="100%">
+          A listener which will be notified on changes to channels.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html">ChannelApi.OpenChannelResult</a></td>
+        <td class="jd-descrcol" width="100%">
+          Result of <code><a href="/reference/com/google/android/gms/wearable/ChannelApi.html#openChannel(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, java.lang.String)">openChannel(GoogleApiClient, String, String)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.html">DataApi</a></td>
         <td class="jd-descrcol" width="100%">
           Exposes an API for components to read or write <a href="/reference/com/google/android/gms/wearable/DataItem.html">data items</a></a> and
@@ -815,7 +991,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.DataItemResult.html">DataApi.DataItemResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains a single data item.&nbsp;
@@ -826,7 +1002,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.DataListener.html">DataApi.DataListener</a></td>
         <td class="jd-descrcol" width="100%">
           Used with <code><a href="/reference/com/google/android/gms/wearable/DataApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.DataApi.DataListener)">addListener(GoogleApiClient, DataApi.DataListener)</a></code> to receive data events.&nbsp;
@@ -837,7 +1013,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html">DataApi.DeleteDataItemsResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains the number of deleted items.&nbsp;
@@ -848,7 +1024,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html">DataApi.GetFdForAssetResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains a file descriptor for the requested asset.&nbsp;
@@ -859,7 +1035,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataEvent.html">DataEvent</a></td>
         <td class="jd-descrcol" width="100%">
           Data interface for data events.&nbsp;
@@ -870,7 +1046,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataItem.html">DataItem</a></td>
         <td class="jd-descrcol" width="100%">
           The base object of data stored in the Android Wear network.&nbsp;
@@ -881,7 +1057,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/DataItemAsset.html">DataItemAsset</a></td>
         <td class="jd-descrcol" width="100%">
           A reference to an asset stored in a data item.&nbsp;
@@ -892,7 +1068,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/MessageApi.html">MessageApi</a></td>
         <td class="jd-descrcol" width="100%">
           Exposes an API for components to send messages to other nodes.&nbsp;
@@ -903,7 +1079,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/MessageApi.MessageListener.html">MessageApi.MessageListener</a></td>
         <td class="jd-descrcol" width="100%">
           Used with <code><a href="/reference/com/google/android/gms/wearable/MessageApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.MessageApi.MessageListener)">addListener(GoogleApiClient, MessageApi.MessageListener)</a></code> to receive message events.&nbsp;
@@ -914,7 +1090,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html">MessageApi.SendMessageResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains the request id assigned to the message.&nbsp;
@@ -925,7 +1101,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/MessageEvent.html">MessageEvent</a></td>
         <td class="jd-descrcol" width="100%">
           Information about a message received by a <a href="/reference/com/google/android/gms/wearable/MessageApi.MessageListener.html">listener</a></a>.&nbsp;
@@ -936,7 +1112,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/Node.html">Node</a></td>
         <td class="jd-descrcol" width="100%">
           Information about a particular node in the Android Wear network.&nbsp;
@@ -947,7 +1123,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/NodeApi.html">NodeApi</a></td>
         <td class="jd-descrcol" width="100%">
           Exposes an API for to learn about local or connected Nodes.&nbsp;
@@ -958,7 +1134,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html">NodeApi.GetConnectedNodesResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains a list of connected nodes.&nbsp;
@@ -969,7 +1145,7 @@
       </tr>
       
     
-      <tr class=" api apilevel-" >
+      <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html">NodeApi.GetLocalNodeResult</a></td>
         <td class="jd-descrcol" width="100%">
           Contains the name and id that represents this device.&nbsp;
@@ -980,7 +1156,7 @@
       </tr>
       
     
-      <tr class="alt-color api apilevel-" >
+      <tr class=" api apilevel-" >
         <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/NodeApi.NodeListener.html">NodeApi.NodeListener</a></td>
         <td class="jd-descrcol" width="100%">
           Used with <code><a href="/reference/com/google/android/gms/wearable/NodeApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.NodeApi.NodeListener)">addListener(GoogleApiClient, NodeApi.NodeListener)</a></code> to receive node events.&nbsp;
@@ -1147,6 +1323,29 @@
 
 
   
+    <h2>Exceptions</h2>
+    <div class="jd-sumtable">
+
+
+  <table class="jd-sumtable-expando">
+
+      <tr class="alt-color api apilevel-" >
+        <td class="jd-linkcol"><a href="/reference/com/google/android/gms/wearable/ChannelIOException.html">ChannelIOException</a></td>
+        <td class="jd-descrcol" width="100%">
+          A subclass of <code><a href="/reference/java/io/IOException.html">IOException</a></code> which can be thrown from the streams returned by
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getInputStream(com.google.android.gms.common.api.GoogleApiClient)">getInputStream(GoogleApiClient)</a></code> and
+ <code><a href="/reference/com/google/android/gms/wearable/Channel.html#getOutputStream(com.google.android.gms.common.api.GoogleApiClient)">getOutputStream(GoogleApiClient)</a></code>.&nbsp;
+
+
+
+        </td>
+      </tr>
+
+
+  </table>
+
+    </div>
+
 
 
   
diff --git a/docs/html/reference/gms-packages.html b/docs/html/reference/gms-packages.html
index edc3b81..73d355e 100644
--- a/docs/html/reference/gms-packages.html
+++ b/docs/html/reference/gms-packages.html
@@ -553,7 +553,18 @@
           <span class="en">Wallet</span>
       </a></div>
   </li>
-
+  <li class="nav-section">
+    <div class="nav-section-header"><a href="/google/play/safetynet/index.html">
+          <span class="en">SafetyNet</span>
+      </a></div>
+      <ul>
+        <li>
+          <a href="/google/play/safetynet/start.html">
+            <span class="en">Getting Started</span>
+          </a>
+        </li>
+      </ul>
+  </li>
 
   <li class="nav-section">
     <div class="nav-section-header"><a href="/google/play-services/index.html">
@@ -1167,33 +1178,41 @@
 
     <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol">
+  <a href="/reference/com/google/android/gms/search/package-summary.html">com.google.android.gms.search</a></td>
+        <td class="jd-descrcol" width="100%">Contains the Search APIs
+</td>
+    </tr>
+
+
+    <tr class=" api apilevel-" >
+        <td class="jd-linkcol">
   <a href="/reference/com/google/android/gms/security/package-summary.html">com.google.android.gms.security</a></td>
         <td class="jd-descrcol" width="100%"></td>
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol">
   <a href="/reference/com/google/android/gms/tagmanager/package-summary.html">com.google.android.gms.tagmanager</a></td>
         <td class="jd-descrcol" width="100%"></td>
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-linkcol">
   <a href="/reference/com/google/android/gms/wallet/package-summary.html">com.google.android.gms.wallet</a></td>
         <td class="jd-descrcol" width="100%">Contains the Wallet Client for Google Play services.</td>
     </tr>
 
 
-    <tr class=" api apilevel-" >
+    <tr class="alt-color api apilevel-" >
         <td class="jd-linkcol">
   <a href="/reference/com/google/android/gms/wallet/fragment/package-summary.html">com.google.android.gms.wallet.fragment</a></td>
         <td class="jd-descrcol" width="100%">Contains WalletFragment.</td>
     </tr>
 
 
-    <tr class="alt-color api apilevel-" >
+    <tr class=" api apilevel-" >
         <td class="jd-linkcol">
   <a href="/reference/com/google/android/gms/wearable/package-summary.html">com.google.android.gms.wearable</a></td>
         <td class="jd-descrcol" width="100%"></td>
diff --git a/docs/html/reference/gms_lists.js b/docs/html/reference/gms_lists.js
index e4fc5f4..466db55 100644
--- a/docs/html/reference/gms_lists.js
+++ b/docs/html/reference/gms_lists.js
@@ -78,8 +78,8 @@
       { id:76, label:"com.google.android.gms.analytics.HitBuilders.SocialBuilder", link:"reference/com/google/android/gms/analytics/HitBuilders.SocialBuilder.html", type:"class", deprecated:"false" },
       { id:77, label:"com.google.android.gms.analytics.HitBuilders.TimingBuilder", link:"reference/com/google/android/gms/analytics/HitBuilders.TimingBuilder.html", type:"class", deprecated:"false" },
       { id:78, label:"com.google.android.gms.analytics.HitBuilders.TransactionBuilder", link:"reference/com/google/android/gms/analytics/HitBuilders.TransactionBuilder.html", type:"class", deprecated:"true" },
-      { id:79, label:"com.google.android.gms.analytics.Logger", link:"reference/com/google/android/gms/analytics/Logger.html", type:"class", deprecated:"false" },
-      { id:80, label:"com.google.android.gms.analytics.Logger.LogLevel", link:"reference/com/google/android/gms/analytics/Logger.LogLevel.html", type:"class", deprecated:"false" },
+      { id:79, label:"com.google.android.gms.analytics.Logger", link:"reference/com/google/android/gms/analytics/Logger.html", type:"class", deprecated:"true" },
+      { id:80, label:"com.google.android.gms.analytics.Logger.LogLevel", link:"reference/com/google/android/gms/analytics/Logger.LogLevel.html", type:"class", deprecated:"true" },
       { id:81, label:"com.google.android.gms.analytics.StandardExceptionParser", link:"reference/com/google/android/gms/analytics/StandardExceptionParser.html", type:"class", deprecated:"false" },
       { id:82, label:"com.google.android.gms.analytics.Tracker", link:"reference/com/google/android/gms/analytics/Tracker.html", type:"class", deprecated:"false" },
       { id:83, label:"com.google.android.gms.analytics.ecommerce", link:"reference/com/google/android/gms/analytics/ecommerce/package-summary.html", type:"package", deprecated:"false" },
@@ -144,563 +144,590 @@
       { id:142, label:"com.google.android.gms.common.AccountPicker", link:"reference/com/google/android/gms/common/AccountPicker.html", type:"class", deprecated:"false" },
       { id:143, label:"com.google.android.gms.common.ConnectionResult", link:"reference/com/google/android/gms/common/ConnectionResult.html", type:"class", deprecated:"false" },
       { id:144, label:"com.google.android.gms.common.ErrorDialogFragment", link:"reference/com/google/android/gms/common/ErrorDialogFragment.html", type:"class", deprecated:"false" },
-      { id:145, label:"com.google.android.gms.common.GooglePlayServicesNotAvailableException", link:"reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html", type:"class", deprecated:"false" },
-      { id:146, label:"com.google.android.gms.common.GooglePlayServicesRepairableException", link:"reference/com/google/android/gms/common/GooglePlayServicesRepairableException.html", type:"class", deprecated:"false" },
-      { id:147, label:"com.google.android.gms.common.GooglePlayServicesUtil", link:"reference/com/google/android/gms/common/GooglePlayServicesUtil.html", type:"class", deprecated:"false" },
-      { id:148, label:"com.google.android.gms.common.Scopes", link:"reference/com/google/android/gms/common/Scopes.html", type:"class", deprecated:"false" },
-      { id:149, label:"com.google.android.gms.common.SignInButton", link:"reference/com/google/android/gms/common/SignInButton.html", type:"class", deprecated:"false" },
-      { id:150, label:"com.google.android.gms.common.SupportErrorDialogFragment", link:"reference/com/google/android/gms/common/SupportErrorDialogFragment.html", type:"class", deprecated:"false" },
-      { id:151, label:"com.google.android.gms.common.UserRecoverableException", link:"reference/com/google/android/gms/common/UserRecoverableException.html", type:"class", deprecated:"false" },
-      { id:152, label:"com.google.android.gms.common.annotation", link:"reference/com/google/android/gms/common/annotation/package-summary.html", type:"package", deprecated:"false" },
-      { id:153, label:"com.google.android.gms.common.annotation.KeepName", link:"reference/com/google/android/gms/common/annotation/KeepName.html", type:"class", deprecated:"false" },
-      { id:154, label:"com.google.android.gms.common.api", link:"reference/com/google/android/gms/common/api/package-summary.html", type:"package", deprecated:"false" },
-      { id:155, label:"com.google.android.gms.common.api.Api", link:"reference/com/google/android/gms/common/api/Api.html", type:"class", deprecated:"false" },
-      { id:156, label:"com.google.android.gms.common.api.Api.ApiOptions", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.html", type:"class", deprecated:"false" },
-      { id:157, label:"com.google.android.gms.common.api.Api.ApiOptions.HasOptions", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.HasOptions.html", type:"class", deprecated:"false" },
-      { id:158, label:"com.google.android.gms.common.api.Api.ApiOptions.NoOptions", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html", type:"class", deprecated:"false" },
-      { id:159, label:"com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.NotRequiredOptions.html", type:"class", deprecated:"false" },
-      { id:160, label:"com.google.android.gms.common.api.Api.ApiOptions.Optional", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.Optional.html", type:"class", deprecated:"false" },
-      { id:161, label:"com.google.android.gms.common.api.Batch", link:"reference/com/google/android/gms/common/api/Batch.html", type:"class", deprecated:"false" },
-      { id:162, label:"com.google.android.gms.common.api.Batch.Builder", link:"reference/com/google/android/gms/common/api/Batch.Builder.html", type:"class", deprecated:"false" },
-      { id:163, label:"com.google.android.gms.common.api.BatchResult", link:"reference/com/google/android/gms/common/api/BatchResult.html", type:"class", deprecated:"false" },
-      { id:164, label:"com.google.android.gms.common.api.BatchResultToken", link:"reference/com/google/android/gms/common/api/BatchResultToken.html", type:"class", deprecated:"false" },
-      { id:165, label:"com.google.android.gms.common.api.CommonStatusCodes", link:"reference/com/google/android/gms/common/api/CommonStatusCodes.html", type:"class", deprecated:"false" },
-      { id:166, label:"com.google.android.gms.common.api.GoogleApiClient", link:"reference/com/google/android/gms/common/api/GoogleApiClient.html", type:"class", deprecated:"false" },
-      { id:167, label:"com.google.android.gms.common.api.GoogleApiClient.Builder", link:"reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html", type:"class", deprecated:"false" },
-      { id:168, label:"com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks", link:"reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html", type:"class", deprecated:"false" },
-      { id:169, label:"com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener", link:"reference/com/google/android/gms/common/api/GoogleApiClient.OnConnectionFailedListener.html", type:"class", deprecated:"false" },
-      { id:170, label:"com.google.android.gms.common.api.GoogleApiClient.ServerAuthCodeCallbacks", link:"reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.html", type:"class", deprecated:"false" },
-      { id:171, label:"com.google.android.gms.common.api.GoogleApiClient.ServerAuthCodeCallbacks.CheckResult", link:"reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.CheckResult.html", type:"class", deprecated:"false" },
-      { id:172, label:"com.google.android.gms.common.api.PendingResult", link:"reference/com/google/android/gms/common/api/PendingResult.html", type:"class", deprecated:"false" },
-      { id:173, label:"com.google.android.gms.common.api.PendingResults", link:"reference/com/google/android/gms/common/api/PendingResults.html", type:"class", deprecated:"false" },
-      { id:174, label:"com.google.android.gms.common.api.Releasable", link:"reference/com/google/android/gms/common/api/Releasable.html", type:"class", deprecated:"false" },
-      { id:175, label:"com.google.android.gms.common.api.Result", link:"reference/com/google/android/gms/common/api/Result.html", type:"class", deprecated:"false" },
-      { id:176, label:"com.google.android.gms.common.api.ResultCallback", link:"reference/com/google/android/gms/common/api/ResultCallback.html", type:"class", deprecated:"false" },
-      { id:177, label:"com.google.android.gms.common.api.Scope", link:"reference/com/google/android/gms/common/api/Scope.html", type:"class", deprecated:"false" },
-      { id:178, label:"com.google.android.gms.common.api.Status", link:"reference/com/google/android/gms/common/api/Status.html", type:"class", deprecated:"false" },
-      { id:179, label:"com.google.android.gms.common.data", link:"reference/com/google/android/gms/common/data/package-summary.html", type:"package", deprecated:"false" },
-      { id:180, label:"com.google.android.gms.common.data.AbstractDataBuffer", link:"reference/com/google/android/gms/common/data/AbstractDataBuffer.html", type:"class", deprecated:"false" },
-      { id:181, label:"com.google.android.gms.common.data.DataBuffer", link:"reference/com/google/android/gms/common/data/DataBuffer.html", type:"class", deprecated:"false" },
-      { id:182, label:"com.google.android.gms.common.data.DataBufferObserver", link:"reference/com/google/android/gms/common/data/DataBufferObserver.html", type:"class", deprecated:"false" },
-      { id:183, label:"com.google.android.gms.common.data.DataBufferObserver.Observable", link:"reference/com/google/android/gms/common/data/DataBufferObserver.Observable.html", type:"class", deprecated:"false" },
-      { id:184, label:"com.google.android.gms.common.data.DataBufferObserverSet", link:"reference/com/google/android/gms/common/data/DataBufferObserverSet.html", type:"class", deprecated:"false" },
-      { id:185, label:"com.google.android.gms.common.data.DataBufferUtils", link:"reference/com/google/android/gms/common/data/DataBufferUtils.html", type:"class", deprecated:"false" },
-      { id:186, label:"com.google.android.gms.common.data.Freezable", link:"reference/com/google/android/gms/common/data/Freezable.html", type:"class", deprecated:"false" },
-      { id:187, label:"com.google.android.gms.common.data.FreezableUtils", link:"reference/com/google/android/gms/common/data/FreezableUtils.html", type:"class", deprecated:"false" },
-      { id:188, label:"com.google.android.gms.common.images", link:"reference/com/google/android/gms/common/images/package-summary.html", type:"package", deprecated:"false" },
-      { id:189, label:"com.google.android.gms.common.images.ImageManager", link:"reference/com/google/android/gms/common/images/ImageManager.html", type:"class", deprecated:"false" },
-      { id:190, label:"com.google.android.gms.common.images.ImageManager.OnImageLoadedListener", link:"reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html", type:"class", deprecated:"false" },
-      { id:191, label:"com.google.android.gms.common.images.WebImage", link:"reference/com/google/android/gms/common/images/WebImage.html", type:"class", deprecated:"false" },
-      { id:192, label:"com.google.android.gms.drive", link:"reference/com/google/android/gms/drive/package-summary.html", type:"package", deprecated:"false" },
-      { id:193, label:"com.google.android.gms.drive.CreateFileActivityBuilder", link:"reference/com/google/android/gms/drive/CreateFileActivityBuilder.html", type:"class", deprecated:"false" },
-      { id:194, label:"com.google.android.gms.drive.Drive", link:"reference/com/google/android/gms/drive/Drive.html", type:"class", deprecated:"false" },
-      { id:195, label:"com.google.android.gms.drive.DriveApi", link:"reference/com/google/android/gms/drive/DriveApi.html", type:"class", deprecated:"false" },
-      { id:196, label:"com.google.android.gms.drive.DriveApi.DriveContentsResult", link:"reference/com/google/android/gms/drive/DriveApi.DriveContentsResult.html", type:"class", deprecated:"false" },
-      { id:197, label:"com.google.android.gms.drive.DriveApi.DriveIdResult", link:"reference/com/google/android/gms/drive/DriveApi.DriveIdResult.html", type:"class", deprecated:"false" },
-      { id:198, label:"com.google.android.gms.drive.DriveApi.MetadataBufferResult", link:"reference/com/google/android/gms/drive/DriveApi.MetadataBufferResult.html", type:"class", deprecated:"false" },
-      { id:199, label:"com.google.android.gms.drive.DriveContents", link:"reference/com/google/android/gms/drive/DriveContents.html", type:"class", deprecated:"false" },
-      { id:200, label:"com.google.android.gms.drive.DriveFile", link:"reference/com/google/android/gms/drive/DriveFile.html", type:"class", deprecated:"false" },
-      { id:201, label:"com.google.android.gms.drive.DriveFile.DownloadProgressListener", link:"reference/com/google/android/gms/drive/DriveFile.DownloadProgressListener.html", type:"class", deprecated:"false" },
-      { id:202, label:"com.google.android.gms.drive.DriveFolder", link:"reference/com/google/android/gms/drive/DriveFolder.html", type:"class", deprecated:"false" },
-      { id:203, label:"com.google.android.gms.drive.DriveFolder.DriveFileResult", link:"reference/com/google/android/gms/drive/DriveFolder.DriveFileResult.html", type:"class", deprecated:"false" },
-      { id:204, label:"com.google.android.gms.drive.DriveFolder.DriveFolderResult", link:"reference/com/google/android/gms/drive/DriveFolder.DriveFolderResult.html", type:"class", deprecated:"false" },
-      { id:205, label:"com.google.android.gms.drive.DriveId", link:"reference/com/google/android/gms/drive/DriveId.html", type:"class", deprecated:"false" },
-      { id:206, label:"com.google.android.gms.drive.DrivePreferencesApi", link:"reference/com/google/android/gms/drive/DrivePreferencesApi.html", type:"class", deprecated:"false" },
-      { id:207, label:"com.google.android.gms.drive.DrivePreferencesApi.FileUploadPreferencesResult", link:"reference/com/google/android/gms/drive/DrivePreferencesApi.FileUploadPreferencesResult.html", type:"class", deprecated:"false" },
-      { id:208, label:"com.google.android.gms.drive.DriveResource", link:"reference/com/google/android/gms/drive/DriveResource.html", type:"class", deprecated:"false" },
-      { id:209, label:"com.google.android.gms.drive.DriveResource.MetadataResult", link:"reference/com/google/android/gms/drive/DriveResource.MetadataResult.html", type:"class", deprecated:"false" },
-      { id:210, label:"com.google.android.gms.drive.DriveStatusCodes", link:"reference/com/google/android/gms/drive/DriveStatusCodes.html", type:"class", deprecated:"false" },
-      { id:211, label:"com.google.android.gms.drive.ExecutionOptions", link:"reference/com/google/android/gms/drive/ExecutionOptions.html", type:"class", deprecated:"false" },
-      { id:212, label:"com.google.android.gms.drive.ExecutionOptions.Builder", link:"reference/com/google/android/gms/drive/ExecutionOptions.Builder.html", type:"class", deprecated:"false" },
-      { id:213, label:"com.google.android.gms.drive.FileUploadPreferences", link:"reference/com/google/android/gms/drive/FileUploadPreferences.html", type:"class", deprecated:"false" },
-      { id:214, label:"com.google.android.gms.drive.Metadata", link:"reference/com/google/android/gms/drive/Metadata.html", type:"class", deprecated:"false" },
-      { id:215, label:"com.google.android.gms.drive.MetadataBuffer", link:"reference/com/google/android/gms/drive/MetadataBuffer.html", type:"class", deprecated:"false" },
-      { id:216, label:"com.google.android.gms.drive.MetadataChangeSet", link:"reference/com/google/android/gms/drive/MetadataChangeSet.html", type:"class", deprecated:"false" },
-      { id:217, label:"com.google.android.gms.drive.MetadataChangeSet.Builder", link:"reference/com/google/android/gms/drive/MetadataChangeSet.Builder.html", type:"class", deprecated:"false" },
-      { id:218, label:"com.google.android.gms.drive.OpenFileActivityBuilder", link:"reference/com/google/android/gms/drive/OpenFileActivityBuilder.html", type:"class", deprecated:"false" },
-      { id:219, label:"com.google.android.gms.drive.events", link:"reference/com/google/android/gms/drive/events/package-summary.html", type:"package", deprecated:"false" },
-      { id:220, label:"com.google.android.gms.drive.events.ChangeEvent", link:"reference/com/google/android/gms/drive/events/ChangeEvent.html", type:"class", deprecated:"false" },
-      { id:221, label:"com.google.android.gms.drive.events.ChangeListener", link:"reference/com/google/android/gms/drive/events/ChangeListener.html", type:"class", deprecated:"false" },
-      { id:222, label:"com.google.android.gms.drive.events.CompletionEvent", link:"reference/com/google/android/gms/drive/events/CompletionEvent.html", type:"class", deprecated:"false" },
-      { id:223, label:"com.google.android.gms.drive.events.CompletionListener", link:"reference/com/google/android/gms/drive/events/CompletionListener.html", type:"class", deprecated:"false" },
-      { id:224, label:"com.google.android.gms.drive.events.DriveEvent", link:"reference/com/google/android/gms/drive/events/DriveEvent.html", type:"class", deprecated:"false" },
-      { id:225, label:"com.google.android.gms.drive.events.DriveEventService", link:"reference/com/google/android/gms/drive/events/DriveEventService.html", type:"class", deprecated:"false" },
-      { id:226, label:"com.google.android.gms.drive.events.ResourceEvent", link:"reference/com/google/android/gms/drive/events/ResourceEvent.html", type:"class", deprecated:"false" },
-      { id:227, label:"com.google.android.gms.drive.metadata", link:"reference/com/google/android/gms/drive/metadata/package-summary.html", type:"package", deprecated:"false" },
-      { id:228, label:"com.google.android.gms.drive.metadata.CustomPropertyKey", link:"reference/com/google/android/gms/drive/metadata/CustomPropertyKey.html", type:"class", deprecated:"false" },
-      { id:229, label:"com.google.android.gms.drive.metadata.MetadataField", link:"reference/com/google/android/gms/drive/metadata/MetadataField.html", type:"class", deprecated:"false" },
-      { id:230, label:"com.google.android.gms.drive.metadata.SearchableCollectionMetadataField", link:"reference/com/google/android/gms/drive/metadata/SearchableCollectionMetadataField.html", type:"class", deprecated:"false" },
-      { id:231, label:"com.google.android.gms.drive.metadata.SearchableMetadataField", link:"reference/com/google/android/gms/drive/metadata/SearchableMetadataField.html", type:"class", deprecated:"false" },
-      { id:232, label:"com.google.android.gms.drive.metadata.SearchableOrderedMetadataField", link:"reference/com/google/android/gms/drive/metadata/SearchableOrderedMetadataField.html", type:"class", deprecated:"false" },
-      { id:233, label:"com.google.android.gms.drive.metadata.SortableMetadataField", link:"reference/com/google/android/gms/drive/metadata/SortableMetadataField.html", type:"class", deprecated:"false" },
-      { id:234, label:"com.google.android.gms.drive.query", link:"reference/com/google/android/gms/drive/query/package-summary.html", type:"package", deprecated:"false" },
-      { id:235, label:"com.google.android.gms.drive.query.Filter", link:"reference/com/google/android/gms/drive/query/Filter.html", type:"class", deprecated:"false" },
-      { id:236, label:"com.google.android.gms.drive.query.Filters", link:"reference/com/google/android/gms/drive/query/Filters.html", type:"class", deprecated:"false" },
-      { id:237, label:"com.google.android.gms.drive.query.Query", link:"reference/com/google/android/gms/drive/query/Query.html", type:"class", deprecated:"false" },
-      { id:238, label:"com.google.android.gms.drive.query.Query.Builder", link:"reference/com/google/android/gms/drive/query/Query.Builder.html", type:"class", deprecated:"false" },
-      { id:239, label:"com.google.android.gms.drive.query.SearchableField", link:"reference/com/google/android/gms/drive/query/SearchableField.html", type:"class", deprecated:"false" },
-      { id:240, label:"com.google.android.gms.drive.query.SortOrder", link:"reference/com/google/android/gms/drive/query/SortOrder.html", type:"class", deprecated:"false" },
-      { id:241, label:"com.google.android.gms.drive.query.SortOrder.Builder", link:"reference/com/google/android/gms/drive/query/SortOrder.Builder.html", type:"class", deprecated:"false" },
-      { id:242, label:"com.google.android.gms.drive.query.SortableField", link:"reference/com/google/android/gms/drive/query/SortableField.html", type:"class", deprecated:"false" },
-      { id:243, label:"com.google.android.gms.drive.widget", link:"reference/com/google/android/gms/drive/widget/package-summary.html", type:"package", deprecated:"false" },
-      { id:244, label:"com.google.android.gms.drive.widget.DataBufferAdapter", link:"reference/com/google/android/gms/drive/widget/DataBufferAdapter.html", type:"class", deprecated:"false" },
-      { id:245, label:"com.google.android.gms.fitness", link:"reference/com/google/android/gms/fitness/package-summary.html", type:"package", deprecated:"false" },
-      { id:246, label:"com.google.android.gms.fitness.BleApi", link:"reference/com/google/android/gms/fitness/BleApi.html", type:"class", deprecated:"false" },
-      { id:247, label:"com.google.android.gms.fitness.ConfigApi", link:"reference/com/google/android/gms/fitness/ConfigApi.html", type:"class", deprecated:"false" },
-      { id:248, label:"com.google.android.gms.fitness.Fitness", link:"reference/com/google/android/gms/fitness/Fitness.html", type:"class", deprecated:"false" },
-      { id:249, label:"com.google.android.gms.fitness.FitnessActivities", link:"reference/com/google/android/gms/fitness/FitnessActivities.html", type:"class", deprecated:"false" },
-      { id:250, label:"com.google.android.gms.fitness.FitnessStatusCodes", link:"reference/com/google/android/gms/fitness/FitnessStatusCodes.html", type:"class", deprecated:"false" },
-      { id:251, label:"com.google.android.gms.fitness.HistoryApi", link:"reference/com/google/android/gms/fitness/HistoryApi.html", type:"class", deprecated:"false" },
-      { id:252, label:"com.google.android.gms.fitness.HistoryApi.ViewIntentBuilder", link:"reference/com/google/android/gms/fitness/HistoryApi.ViewIntentBuilder.html", type:"class", deprecated:"false" },
-      { id:253, label:"com.google.android.gms.fitness.RecordingApi", link:"reference/com/google/android/gms/fitness/RecordingApi.html", type:"class", deprecated:"false" },
-      { id:254, label:"com.google.android.gms.fitness.SensorsApi", link:"reference/com/google/android/gms/fitness/SensorsApi.html", type:"class", deprecated:"false" },
-      { id:255, label:"com.google.android.gms.fitness.SessionsApi", link:"reference/com/google/android/gms/fitness/SessionsApi.html", type:"class", deprecated:"false" },
-      { id:256, label:"com.google.android.gms.fitness.SessionsApi.ViewIntentBuilder", link:"reference/com/google/android/gms/fitness/SessionsApi.ViewIntentBuilder.html", type:"class", deprecated:"false" },
-      { id:257, label:"com.google.android.gms.fitness.data", link:"reference/com/google/android/gms/fitness/data/package-summary.html", type:"package", deprecated:"false" },
-      { id:258, label:"com.google.android.gms.fitness.data.BleDevice", link:"reference/com/google/android/gms/fitness/data/BleDevice.html", type:"class", deprecated:"false" },
-      { id:259, label:"com.google.android.gms.fitness.data.Bucket", link:"reference/com/google/android/gms/fitness/data/Bucket.html", type:"class", deprecated:"false" },
-      { id:260, label:"com.google.android.gms.fitness.data.DataPoint", link:"reference/com/google/android/gms/fitness/data/DataPoint.html", type:"class", deprecated:"false" },
-      { id:261, label:"com.google.android.gms.fitness.data.DataSet", link:"reference/com/google/android/gms/fitness/data/DataSet.html", type:"class", deprecated:"false" },
-      { id:262, label:"com.google.android.gms.fitness.data.DataSource", link:"reference/com/google/android/gms/fitness/data/DataSource.html", type:"class", deprecated:"false" },
-      { id:263, label:"com.google.android.gms.fitness.data.DataSource.Builder", link:"reference/com/google/android/gms/fitness/data/DataSource.Builder.html", type:"class", deprecated:"false" },
-      { id:264, label:"com.google.android.gms.fitness.data.DataType", link:"reference/com/google/android/gms/fitness/data/DataType.html", type:"class", deprecated:"false" },
-      { id:265, label:"com.google.android.gms.fitness.data.Device", link:"reference/com/google/android/gms/fitness/data/Device.html", type:"class", deprecated:"false" },
-      { id:266, label:"com.google.android.gms.fitness.data.Field", link:"reference/com/google/android/gms/fitness/data/Field.html", type:"class", deprecated:"false" },
-      { id:267, label:"com.google.android.gms.fitness.data.Session", link:"reference/com/google/android/gms/fitness/data/Session.html", type:"class", deprecated:"false" },
-      { id:268, label:"com.google.android.gms.fitness.data.Session.Builder", link:"reference/com/google/android/gms/fitness/data/Session.Builder.html", type:"class", deprecated:"false" },
-      { id:269, label:"com.google.android.gms.fitness.data.Subscription", link:"reference/com/google/android/gms/fitness/data/Subscription.html", type:"class", deprecated:"false" },
-      { id:270, label:"com.google.android.gms.fitness.data.Value", link:"reference/com/google/android/gms/fitness/data/Value.html", type:"class", deprecated:"false" },
-      { id:271, label:"com.google.android.gms.fitness.request", link:"reference/com/google/android/gms/fitness/request/package-summary.html", type:"package", deprecated:"false" },
-      { id:272, label:"com.google.android.gms.fitness.request.BleScanCallback", link:"reference/com/google/android/gms/fitness/request/BleScanCallback.html", type:"class", deprecated:"false" },
-      { id:273, label:"com.google.android.gms.fitness.request.DataDeleteRequest", link:"reference/com/google/android/gms/fitness/request/DataDeleteRequest.html", type:"class", deprecated:"false" },
-      { id:274, label:"com.google.android.gms.fitness.request.DataDeleteRequest.Builder", link:"reference/com/google/android/gms/fitness/request/DataDeleteRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:275, label:"com.google.android.gms.fitness.request.DataReadRequest", link:"reference/com/google/android/gms/fitness/request/DataReadRequest.html", type:"class", deprecated:"false" },
-      { id:276, label:"com.google.android.gms.fitness.request.DataReadRequest.Builder", link:"reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:277, label:"com.google.android.gms.fitness.request.DataSourcesRequest", link:"reference/com/google/android/gms/fitness/request/DataSourcesRequest.html", type:"class", deprecated:"false" },
-      { id:278, label:"com.google.android.gms.fitness.request.DataSourcesRequest.Builder", link:"reference/com/google/android/gms/fitness/request/DataSourcesRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:279, label:"com.google.android.gms.fitness.request.DataTypeCreateRequest", link:"reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.html", type:"class", deprecated:"false" },
-      { id:280, label:"com.google.android.gms.fitness.request.DataTypeCreateRequest.Builder", link:"reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:281, label:"com.google.android.gms.fitness.request.OnDataPointListener", link:"reference/com/google/android/gms/fitness/request/OnDataPointListener.html", type:"class", deprecated:"false" },
-      { id:282, label:"com.google.android.gms.fitness.request.SensorRequest", link:"reference/com/google/android/gms/fitness/request/SensorRequest.html", type:"class", deprecated:"false" },
-      { id:283, label:"com.google.android.gms.fitness.request.SensorRequest.Builder", link:"reference/com/google/android/gms/fitness/request/SensorRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:284, label:"com.google.android.gms.fitness.request.SessionInsertRequest", link:"reference/com/google/android/gms/fitness/request/SessionInsertRequest.html", type:"class", deprecated:"false" },
-      { id:285, label:"com.google.android.gms.fitness.request.SessionInsertRequest.Builder", link:"reference/com/google/android/gms/fitness/request/SessionInsertRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:286, label:"com.google.android.gms.fitness.request.SessionReadRequest", link:"reference/com/google/android/gms/fitness/request/SessionReadRequest.html", type:"class", deprecated:"false" },
-      { id:287, label:"com.google.android.gms.fitness.request.SessionReadRequest.Builder", link:"reference/com/google/android/gms/fitness/request/SessionReadRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:288, label:"com.google.android.gms.fitness.request.StartBleScanRequest", link:"reference/com/google/android/gms/fitness/request/StartBleScanRequest.html", type:"class", deprecated:"false" },
-      { id:289, label:"com.google.android.gms.fitness.request.StartBleScanRequest.Builder", link:"reference/com/google/android/gms/fitness/request/StartBleScanRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:290, label:"com.google.android.gms.fitness.result", link:"reference/com/google/android/gms/fitness/result/package-summary.html", type:"package", deprecated:"false" },
-      { id:291, label:"com.google.android.gms.fitness.result.BleDevicesResult", link:"reference/com/google/android/gms/fitness/result/BleDevicesResult.html", type:"class", deprecated:"false" },
-      { id:292, label:"com.google.android.gms.fitness.result.DataReadResult", link:"reference/com/google/android/gms/fitness/result/DataReadResult.html", type:"class", deprecated:"false" },
-      { id:293, label:"com.google.android.gms.fitness.result.DataSourcesResult", link:"reference/com/google/android/gms/fitness/result/DataSourcesResult.html", type:"class", deprecated:"false" },
-      { id:294, label:"com.google.android.gms.fitness.result.DataTypeResult", link:"reference/com/google/android/gms/fitness/result/DataTypeResult.html", type:"class", deprecated:"false" },
-      { id:295, label:"com.google.android.gms.fitness.result.ListSubscriptionsResult", link:"reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html", type:"class", deprecated:"false" },
-      { id:296, label:"com.google.android.gms.fitness.result.SessionReadResult", link:"reference/com/google/android/gms/fitness/result/SessionReadResult.html", type:"class", deprecated:"false" },
-      { id:297, label:"com.google.android.gms.fitness.result.SessionStopResult", link:"reference/com/google/android/gms/fitness/result/SessionStopResult.html", type:"class", deprecated:"false" },
-      { id:298, label:"com.google.android.gms.fitness.service", link:"reference/com/google/android/gms/fitness/service/package-summary.html", type:"package", deprecated:"false" },
-      { id:299, label:"com.google.android.gms.fitness.service.FitnessSensorService", link:"reference/com/google/android/gms/fitness/service/FitnessSensorService.html", type:"class", deprecated:"false" },
-      { id:300, label:"com.google.android.gms.fitness.service.FitnessSensorServiceRequest", link:"reference/com/google/android/gms/fitness/service/FitnessSensorServiceRequest.html", type:"class", deprecated:"false" },
-      { id:301, label:"com.google.android.gms.fitness.service.SensorEventDispatcher", link:"reference/com/google/android/gms/fitness/service/SensorEventDispatcher.html", type:"class", deprecated:"false" },
-      { id:302, label:"com.google.android.gms.games", link:"reference/com/google/android/gms/games/package-summary.html", type:"package", deprecated:"false" },
-      { id:303, label:"com.google.android.gms.games.Game", link:"reference/com/google/android/gms/games/Game.html", type:"class", deprecated:"false" },
-      { id:304, label:"com.google.android.gms.games.GameBuffer", link:"reference/com/google/android/gms/games/GameBuffer.html", type:"class", deprecated:"false" },
-      { id:305, label:"com.google.android.gms.games.GameEntity", link:"reference/com/google/android/gms/games/GameEntity.html", type:"class", deprecated:"false" },
-      { id:306, label:"com.google.android.gms.games.Games", link:"reference/com/google/android/gms/games/Games.html", type:"class", deprecated:"false" },
-      { id:307, label:"com.google.android.gms.games.Games.GamesOptions", link:"reference/com/google/android/gms/games/Games.GamesOptions.html", type:"class", deprecated:"false" },
-      { id:308, label:"com.google.android.gms.games.Games.GamesOptions.Builder", link:"reference/com/google/android/gms/games/Games.GamesOptions.Builder.html", type:"class", deprecated:"false" },
-      { id:309, label:"com.google.android.gms.games.GamesActivityResultCodes", link:"reference/com/google/android/gms/games/GamesActivityResultCodes.html", type:"class", deprecated:"false" },
-      { id:310, label:"com.google.android.gms.games.GamesMetadata", link:"reference/com/google/android/gms/games/GamesMetadata.html", type:"class", deprecated:"false" },
-      { id:311, label:"com.google.android.gms.games.GamesMetadata.LoadGamesResult", link:"reference/com/google/android/gms/games/GamesMetadata.LoadGamesResult.html", type:"class", deprecated:"false" },
-      { id:312, label:"com.google.android.gms.games.GamesStatusCodes", link:"reference/com/google/android/gms/games/GamesStatusCodes.html", type:"class", deprecated:"false" },
-      { id:313, label:"com.google.android.gms.games.Notifications", link:"reference/com/google/android/gms/games/Notifications.html", type:"class", deprecated:"false" },
-      { id:314, label:"com.google.android.gms.games.PageDirection", link:"reference/com/google/android/gms/games/PageDirection.html", type:"class", deprecated:"false" },
-      { id:315, label:"com.google.android.gms.games.Player", link:"reference/com/google/android/gms/games/Player.html", type:"class", deprecated:"false" },
-      { id:316, label:"com.google.android.gms.games.PlayerBuffer", link:"reference/com/google/android/gms/games/PlayerBuffer.html", type:"class", deprecated:"false" },
-      { id:317, label:"com.google.android.gms.games.PlayerEntity", link:"reference/com/google/android/gms/games/PlayerEntity.html", type:"class", deprecated:"false" },
-      { id:318, label:"com.google.android.gms.games.PlayerLevel", link:"reference/com/google/android/gms/games/PlayerLevel.html", type:"class", deprecated:"false" },
-      { id:319, label:"com.google.android.gms.games.PlayerLevelInfo", link:"reference/com/google/android/gms/games/PlayerLevelInfo.html", type:"class", deprecated:"false" },
-      { id:320, label:"com.google.android.gms.games.Players", link:"reference/com/google/android/gms/games/Players.html", type:"class", deprecated:"false" },
-      { id:321, label:"com.google.android.gms.games.Players.LoadPlayersResult", link:"reference/com/google/android/gms/games/Players.LoadPlayersResult.html", type:"class", deprecated:"false" },
-      { id:322, label:"com.google.android.gms.games.Players.LoadProfileSettingsResult", link:"reference/com/google/android/gms/games/Players.LoadProfileSettingsResult.html", type:"class", deprecated:"false" },
-      { id:323, label:"com.google.android.gms.games.achievement", link:"reference/com/google/android/gms/games/achievement/package-summary.html", type:"package", deprecated:"false" },
-      { id:324, label:"com.google.android.gms.games.achievement.Achievement", link:"reference/com/google/android/gms/games/achievement/Achievement.html", type:"class", deprecated:"false" },
-      { id:325, label:"com.google.android.gms.games.achievement.AchievementBuffer", link:"reference/com/google/android/gms/games/achievement/AchievementBuffer.html", type:"class", deprecated:"false" },
-      { id:326, label:"com.google.android.gms.games.achievement.AchievementEntity", link:"reference/com/google/android/gms/games/achievement/AchievementEntity.html", type:"class", deprecated:"false" },
-      { id:327, label:"com.google.android.gms.games.achievement.Achievements", link:"reference/com/google/android/gms/games/achievement/Achievements.html", type:"class", deprecated:"false" },
-      { id:328, label:"com.google.android.gms.games.achievement.Achievements.LoadAchievementsResult", link:"reference/com/google/android/gms/games/achievement/Achievements.LoadAchievementsResult.html", type:"class", deprecated:"false" },
-      { id:329, label:"com.google.android.gms.games.achievement.Achievements.UpdateAchievementResult", link:"reference/com/google/android/gms/games/achievement/Achievements.UpdateAchievementResult.html", type:"class", deprecated:"false" },
-      { id:330, label:"com.google.android.gms.games.event", link:"reference/com/google/android/gms/games/event/package-summary.html", type:"package", deprecated:"false" },
-      { id:331, label:"com.google.android.gms.games.event.Event", link:"reference/com/google/android/gms/games/event/Event.html", type:"class", deprecated:"false" },
-      { id:332, label:"com.google.android.gms.games.event.EventBuffer", link:"reference/com/google/android/gms/games/event/EventBuffer.html", type:"class", deprecated:"false" },
-      { id:333, label:"com.google.android.gms.games.event.EventEntity", link:"reference/com/google/android/gms/games/event/EventEntity.html", type:"class", deprecated:"false" },
-      { id:334, label:"com.google.android.gms.games.event.Events", link:"reference/com/google/android/gms/games/event/Events.html", type:"class", deprecated:"false" },
-      { id:335, label:"com.google.android.gms.games.event.Events.LoadEventsResult", link:"reference/com/google/android/gms/games/event/Events.LoadEventsResult.html", type:"class", deprecated:"false" },
-      { id:336, label:"com.google.android.gms.games.leaderboard", link:"reference/com/google/android/gms/games/leaderboard/package-summary.html", type:"package", deprecated:"false" },
-      { id:337, label:"com.google.android.gms.games.leaderboard.Leaderboard", link:"reference/com/google/android/gms/games/leaderboard/Leaderboard.html", type:"class", deprecated:"false" },
-      { id:338, label:"com.google.android.gms.games.leaderboard.LeaderboardBuffer", link:"reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html", type:"class", deprecated:"false" },
-      { id:339, label:"com.google.android.gms.games.leaderboard.LeaderboardScore", link:"reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html", type:"class", deprecated:"false" },
-      { id:340, label:"com.google.android.gms.games.leaderboard.LeaderboardScoreBuffer", link:"reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html", type:"class", deprecated:"false" },
-      { id:341, label:"com.google.android.gms.games.leaderboard.LeaderboardVariant", link:"reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html", type:"class", deprecated:"false" },
-      { id:342, label:"com.google.android.gms.games.leaderboard.Leaderboards", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.html", type:"class", deprecated:"false" },
-      { id:343, label:"com.google.android.gms.games.leaderboard.Leaderboards.LeaderboardMetadataResult", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.LeaderboardMetadataResult.html", type:"class", deprecated:"false" },
-      { id:344, label:"com.google.android.gms.games.leaderboard.Leaderboards.LoadPlayerScoreResult", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadPlayerScoreResult.html", type:"class", deprecated:"false" },
-      { id:345, label:"com.google.android.gms.games.leaderboard.Leaderboards.LoadScoresResult", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadScoresResult.html", type:"class", deprecated:"false" },
-      { id:346, label:"com.google.android.gms.games.leaderboard.Leaderboards.SubmitScoreResult", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.SubmitScoreResult.html", type:"class", deprecated:"false" },
-      { id:347, label:"com.google.android.gms.games.leaderboard.ScoreSubmissionData", link:"reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.html", type:"class", deprecated:"false" },
-      { id:348, label:"com.google.android.gms.games.leaderboard.ScoreSubmissionData.Result", link:"reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.Result.html", type:"class", deprecated:"false" },
-      { id:349, label:"com.google.android.gms.games.multiplayer", link:"reference/com/google/android/gms/games/multiplayer/package-summary.html", type:"package", deprecated:"false" },
-      { id:350, label:"com.google.android.gms.games.multiplayer.Invitation", link:"reference/com/google/android/gms/games/multiplayer/Invitation.html", type:"class", deprecated:"false" },
-      { id:351, label:"com.google.android.gms.games.multiplayer.InvitationBuffer", link:"reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html", type:"class", deprecated:"false" },
-      { id:352, label:"com.google.android.gms.games.multiplayer.InvitationEntity", link:"reference/com/google/android/gms/games/multiplayer/InvitationEntity.html", type:"class", deprecated:"false" },
-      { id:353, label:"com.google.android.gms.games.multiplayer.Invitations", link:"reference/com/google/android/gms/games/multiplayer/Invitations.html", type:"class", deprecated:"false" },
-      { id:354, label:"com.google.android.gms.games.multiplayer.Invitations.LoadInvitationsResult", link:"reference/com/google/android/gms/games/multiplayer/Invitations.LoadInvitationsResult.html", type:"class", deprecated:"false" },
-      { id:355, label:"com.google.android.gms.games.multiplayer.Multiplayer", link:"reference/com/google/android/gms/games/multiplayer/Multiplayer.html", type:"class", deprecated:"false" },
-      { id:356, label:"com.google.android.gms.games.multiplayer.OnInvitationReceivedListener", link:"reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html", type:"class", deprecated:"false" },
-      { id:357, label:"com.google.android.gms.games.multiplayer.Participant", link:"reference/com/google/android/gms/games/multiplayer/Participant.html", type:"class", deprecated:"false" },
-      { id:358, label:"com.google.android.gms.games.multiplayer.ParticipantBuffer", link:"reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html", type:"class", deprecated:"false" },
-      { id:359, label:"com.google.android.gms.games.multiplayer.ParticipantEntity", link:"reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html", type:"class", deprecated:"false" },
-      { id:360, label:"com.google.android.gms.games.multiplayer.ParticipantResult", link:"reference/com/google/android/gms/games/multiplayer/ParticipantResult.html", type:"class", deprecated:"false" },
-      { id:361, label:"com.google.android.gms.games.multiplayer.ParticipantUtils", link:"reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html", type:"class", deprecated:"false" },
-      { id:362, label:"com.google.android.gms.games.multiplayer.Participatable", link:"reference/com/google/android/gms/games/multiplayer/Participatable.html", type:"class", deprecated:"false" },
-      { id:363, label:"com.google.android.gms.games.multiplayer.realtime", link:"reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html", type:"package", deprecated:"false" },
-      { id:364, label:"com.google.android.gms.games.multiplayer.realtime.RealTimeMessage", link:"reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html", type:"class", deprecated:"false" },
-      { id:365, label:"com.google.android.gms.games.multiplayer.realtime.RealTimeMessageReceivedListener", link:"reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html", type:"class", deprecated:"false" },
-      { id:366, label:"com.google.android.gms.games.multiplayer.realtime.RealTimeMultiplayer", link:"reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.html", type:"class", deprecated:"false" },
-      { id:367, label:"com.google.android.gms.games.multiplayer.realtime.RealTimeMultiplayer.ReliableMessageSentCallback", link:"reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.ReliableMessageSentCallback.html", type:"class", deprecated:"false" },
-      { id:368, label:"com.google.android.gms.games.multiplayer.realtime.Room", link:"reference/com/google/android/gms/games/multiplayer/realtime/Room.html", type:"class", deprecated:"false" },
-      { id:369, label:"com.google.android.gms.games.multiplayer.realtime.RoomConfig", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html", type:"class", deprecated:"false" },
-      { id:370, label:"com.google.android.gms.games.multiplayer.realtime.RoomConfig.Builder", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html", type:"class", deprecated:"false" },
-      { id:371, label:"com.google.android.gms.games.multiplayer.realtime.RoomEntity", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html", type:"class", deprecated:"false" },
-      { id:372, label:"com.google.android.gms.games.multiplayer.realtime.RoomStatusUpdateListener", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html", type:"class", deprecated:"false" },
-      { id:373, label:"com.google.android.gms.games.multiplayer.realtime.RoomUpdateListener", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html", type:"class", deprecated:"false" },
-      { id:374, label:"com.google.android.gms.games.multiplayer.turnbased", link:"reference/com/google/android/gms/games/multiplayer/turnbased/package-summary.html", type:"package", deprecated:"false" },
-      { id:375, label:"com.google.android.gms.games.multiplayer.turnbased.LoadMatchesResponse", link:"reference/com/google/android/gms/games/multiplayer/turnbased/LoadMatchesResponse.html", type:"class", deprecated:"false" },
-      { id:376, label:"com.google.android.gms.games.multiplayer.turnbased.OnTurnBasedMatchUpdateReceivedListener", link:"reference/com/google/android/gms/games/multiplayer/turnbased/OnTurnBasedMatchUpdateReceivedListener.html", type:"class", deprecated:"false" },
-      { id:377, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html", type:"class", deprecated:"false" },
-      { id:378, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchBuffer", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchBuffer.html", type:"class", deprecated:"false" },
-      { id:379, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchConfig", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.html", type:"class", deprecated:"false" },
-      { id:380, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchConfig.Builder", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.Builder.html", type:"class", deprecated:"false" },
-      { id:381, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchEntity", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html", type:"class", deprecated:"false" },
-      { id:382, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.html", type:"class", deprecated:"false" },
-      { id:383, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.CancelMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.CancelMatchResult.html", type:"class", deprecated:"false" },
-      { id:384, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.InitiateMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.InitiateMatchResult.html", type:"class", deprecated:"false" },
-      { id:385, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.LeaveMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LeaveMatchResult.html", type:"class", deprecated:"false" },
-      { id:386, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.LoadMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchResult.html", type:"class", deprecated:"false" },
-      { id:387, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.LoadMatchesResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchesResult.html", type:"class", deprecated:"false" },
-      { id:388, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.UpdateMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.UpdateMatchResult.html", type:"class", deprecated:"false" },
-      { id:389, label:"com.google.android.gms.games.quest", link:"reference/com/google/android/gms/games/quest/package-summary.html", type:"package", deprecated:"false" },
-      { id:390, label:"com.google.android.gms.games.quest.Milestone", link:"reference/com/google/android/gms/games/quest/Milestone.html", type:"class", deprecated:"false" },
-      { id:391, label:"com.google.android.gms.games.quest.MilestoneBuffer", link:"reference/com/google/android/gms/games/quest/MilestoneBuffer.html", type:"class", deprecated:"false" },
-      { id:392, label:"com.google.android.gms.games.quest.MilestoneEntity", link:"reference/com/google/android/gms/games/quest/MilestoneEntity.html", type:"class", deprecated:"false" },
-      { id:393, label:"com.google.android.gms.games.quest.Quest", link:"reference/com/google/android/gms/games/quest/Quest.html", type:"class", deprecated:"false" },
-      { id:394, label:"com.google.android.gms.games.quest.QuestBuffer", link:"reference/com/google/android/gms/games/quest/QuestBuffer.html", type:"class", deprecated:"false" },
-      { id:395, label:"com.google.android.gms.games.quest.QuestEntity", link:"reference/com/google/android/gms/games/quest/QuestEntity.html", type:"class", deprecated:"false" },
-      { id:396, label:"com.google.android.gms.games.quest.QuestUpdateListener", link:"reference/com/google/android/gms/games/quest/QuestUpdateListener.html", type:"class", deprecated:"false" },
-      { id:397, label:"com.google.android.gms.games.quest.Quests", link:"reference/com/google/android/gms/games/quest/Quests.html", type:"class", deprecated:"false" },
-      { id:398, label:"com.google.android.gms.games.quest.Quests.AcceptQuestResult", link:"reference/com/google/android/gms/games/quest/Quests.AcceptQuestResult.html", type:"class", deprecated:"false" },
-      { id:399, label:"com.google.android.gms.games.quest.Quests.ClaimMilestoneResult", link:"reference/com/google/android/gms/games/quest/Quests.ClaimMilestoneResult.html", type:"class", deprecated:"false" },
-      { id:400, label:"com.google.android.gms.games.quest.Quests.LoadQuestsResult", link:"reference/com/google/android/gms/games/quest/Quests.LoadQuestsResult.html", type:"class", deprecated:"false" },
-      { id:401, label:"com.google.android.gms.games.request", link:"reference/com/google/android/gms/games/request/package-summary.html", type:"package", deprecated:"false" },
-      { id:402, label:"com.google.android.gms.games.request.GameRequest", link:"reference/com/google/android/gms/games/request/GameRequest.html", type:"class", deprecated:"false" },
-      { id:403, label:"com.google.android.gms.games.request.GameRequestBuffer", link:"reference/com/google/android/gms/games/request/GameRequestBuffer.html", type:"class", deprecated:"false" },
-      { id:404, label:"com.google.android.gms.games.request.GameRequestEntity", link:"reference/com/google/android/gms/games/request/GameRequestEntity.html", type:"class", deprecated:"false" },
-      { id:405, label:"com.google.android.gms.games.request.OnRequestReceivedListener", link:"reference/com/google/android/gms/games/request/OnRequestReceivedListener.html", type:"class", deprecated:"false" },
-      { id:406, label:"com.google.android.gms.games.request.Requests", link:"reference/com/google/android/gms/games/request/Requests.html", type:"class", deprecated:"false" },
-      { id:407, label:"com.google.android.gms.games.request.Requests.LoadRequestsResult", link:"reference/com/google/android/gms/games/request/Requests.LoadRequestsResult.html", type:"class", deprecated:"false" },
-      { id:408, label:"com.google.android.gms.games.request.Requests.UpdateRequestsResult", link:"reference/com/google/android/gms/games/request/Requests.UpdateRequestsResult.html", type:"class", deprecated:"false" },
-      { id:409, label:"com.google.android.gms.games.snapshot", link:"reference/com/google/android/gms/games/snapshot/package-summary.html", type:"package", deprecated:"false" },
-      { id:410, label:"com.google.android.gms.games.snapshot.Snapshot", link:"reference/com/google/android/gms/games/snapshot/Snapshot.html", type:"class", deprecated:"false" },
-      { id:411, label:"com.google.android.gms.games.snapshot.SnapshotContents", link:"reference/com/google/android/gms/games/snapshot/SnapshotContents.html", type:"class", deprecated:"false" },
-      { id:412, label:"com.google.android.gms.games.snapshot.SnapshotEntity", link:"reference/com/google/android/gms/games/snapshot/SnapshotEntity.html", type:"class", deprecated:"false" },
-      { id:413, label:"com.google.android.gms.games.snapshot.SnapshotMetadata", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadata.html", type:"class", deprecated:"false" },
-      { id:414, label:"com.google.android.gms.games.snapshot.SnapshotMetadataBuffer", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadataBuffer.html", type:"class", deprecated:"false" },
-      { id:415, label:"com.google.android.gms.games.snapshot.SnapshotMetadataChange", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.html", type:"class", deprecated:"false" },
-      { id:416, label:"com.google.android.gms.games.snapshot.SnapshotMetadataChange.Builder", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.Builder.html", type:"class", deprecated:"false" },
-      { id:417, label:"com.google.android.gms.games.snapshot.SnapshotMetadataEntity", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadataEntity.html", type:"class", deprecated:"false" },
-      { id:418, label:"com.google.android.gms.games.snapshot.Snapshots", link:"reference/com/google/android/gms/games/snapshot/Snapshots.html", type:"class", deprecated:"false" },
-      { id:419, label:"com.google.android.gms.games.snapshot.Snapshots.CommitSnapshotResult", link:"reference/com/google/android/gms/games/snapshot/Snapshots.CommitSnapshotResult.html", type:"class", deprecated:"false" },
-      { id:420, label:"com.google.android.gms.games.snapshot.Snapshots.DeleteSnapshotResult", link:"reference/com/google/android/gms/games/snapshot/Snapshots.DeleteSnapshotResult.html", type:"class", deprecated:"false" },
-      { id:421, label:"com.google.android.gms.games.snapshot.Snapshots.LoadSnapshotsResult", link:"reference/com/google/android/gms/games/snapshot/Snapshots.LoadSnapshotsResult.html", type:"class", deprecated:"false" },
-      { id:422, label:"com.google.android.gms.games.snapshot.Snapshots.OpenSnapshotResult", link:"reference/com/google/android/gms/games/snapshot/Snapshots.OpenSnapshotResult.html", type:"class", deprecated:"false" },
-      { id:423, label:"com.google.android.gms.gcm", link:"reference/com/google/android/gms/gcm/package-summary.html", type:"package", deprecated:"false" },
-      { id:424, label:"com.google.android.gms.gcm.GoogleCloudMessaging", link:"reference/com/google/android/gms/gcm/GoogleCloudMessaging.html", type:"class", deprecated:"false" },
-      { id:425, label:"com.google.android.gms.identity.intents", link:"reference/com/google/android/gms/identity/intents/package-summary.html", type:"package", deprecated:"false" },
-      { id:426, label:"com.google.android.gms.identity.intents.Address", link:"reference/com/google/android/gms/identity/intents/Address.html", type:"class", deprecated:"false" },
-      { id:427, label:"com.google.android.gms.identity.intents.Address.AddressOptions", link:"reference/com/google/android/gms/identity/intents/Address.AddressOptions.html", type:"class", deprecated:"false" },
-      { id:428, label:"com.google.android.gms.identity.intents.AddressConstants", link:"reference/com/google/android/gms/identity/intents/AddressConstants.html", type:"class", deprecated:"false" },
-      { id:429, label:"com.google.android.gms.identity.intents.AddressConstants.ErrorCodes", link:"reference/com/google/android/gms/identity/intents/AddressConstants.ErrorCodes.html", type:"class", deprecated:"false" },
-      { id:430, label:"com.google.android.gms.identity.intents.AddressConstants.Extras", link:"reference/com/google/android/gms/identity/intents/AddressConstants.Extras.html", type:"class", deprecated:"false" },
-      { id:431, label:"com.google.android.gms.identity.intents.AddressConstants.ResultCodes", link:"reference/com/google/android/gms/identity/intents/AddressConstants.ResultCodes.html", type:"class", deprecated:"false" },
-      { id:432, label:"com.google.android.gms.identity.intents.AddressConstants.Themes", link:"reference/com/google/android/gms/identity/intents/AddressConstants.Themes.html", type:"class", deprecated:"false" },
-      { id:433, label:"com.google.android.gms.identity.intents.UserAddressRequest", link:"reference/com/google/android/gms/identity/intents/UserAddressRequest.html", type:"class", deprecated:"false" },
-      { id:434, label:"com.google.android.gms.identity.intents.UserAddressRequest.Builder", link:"reference/com/google/android/gms/identity/intents/UserAddressRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:435, label:"com.google.android.gms.identity.intents.model", link:"reference/com/google/android/gms/identity/intents/model/package-summary.html", type:"package", deprecated:"false" },
-      { id:436, label:"com.google.android.gms.identity.intents.model.CountrySpecification", link:"reference/com/google/android/gms/identity/intents/model/CountrySpecification.html", type:"class", deprecated:"false" },
-      { id:437, label:"com.google.android.gms.identity.intents.model.UserAddress", link:"reference/com/google/android/gms/identity/intents/model/UserAddress.html", type:"class", deprecated:"false" },
-      { id:438, label:"com.google.android.gms.location", link:"reference/com/google/android/gms/location/package-summary.html", type:"package", deprecated:"false" },
-      { id:439, label:"com.google.android.gms.location.ActivityRecognition", link:"reference/com/google/android/gms/location/ActivityRecognition.html", type:"class", deprecated:"false" },
-      { id:440, label:"com.google.android.gms.location.ActivityRecognitionApi", link:"reference/com/google/android/gms/location/ActivityRecognitionApi.html", type:"class", deprecated:"false" },
-      { id:441, label:"com.google.android.gms.location.ActivityRecognitionResult", link:"reference/com/google/android/gms/location/ActivityRecognitionResult.html", type:"class", deprecated:"false" },
-      { id:442, label:"com.google.android.gms.location.DetectedActivity", link:"reference/com/google/android/gms/location/DetectedActivity.html", type:"class", deprecated:"false" },
-      { id:443, label:"com.google.android.gms.location.FusedLocationProviderApi", link:"reference/com/google/android/gms/location/FusedLocationProviderApi.html", type:"class", deprecated:"false" },
-      { id:444, label:"com.google.android.gms.location.Geofence", link:"reference/com/google/android/gms/location/Geofence.html", type:"class", deprecated:"false" },
-      { id:445, label:"com.google.android.gms.location.Geofence.Builder", link:"reference/com/google/android/gms/location/Geofence.Builder.html", type:"class", deprecated:"false" },
-      { id:446, label:"com.google.android.gms.location.GeofenceStatusCodes", link:"reference/com/google/android/gms/location/GeofenceStatusCodes.html", type:"class", deprecated:"false" },
-      { id:447, label:"com.google.android.gms.location.GeofencingApi", link:"reference/com/google/android/gms/location/GeofencingApi.html", type:"class", deprecated:"false" },
-      { id:448, label:"com.google.android.gms.location.GeofencingEvent", link:"reference/com/google/android/gms/location/GeofencingEvent.html", type:"class", deprecated:"false" },
-      { id:449, label:"com.google.android.gms.location.GeofencingRequest", link:"reference/com/google/android/gms/location/GeofencingRequest.html", type:"class", deprecated:"false" },
-      { id:450, label:"com.google.android.gms.location.GeofencingRequest.Builder", link:"reference/com/google/android/gms/location/GeofencingRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:451, label:"com.google.android.gms.location.LocationListener", link:"reference/com/google/android/gms/location/LocationListener.html", type:"class", deprecated:"false" },
-      { id:452, label:"com.google.android.gms.location.LocationRequest", link:"reference/com/google/android/gms/location/LocationRequest.html", type:"class", deprecated:"false" },
-      { id:453, label:"com.google.android.gms.location.LocationServices", link:"reference/com/google/android/gms/location/LocationServices.html", type:"class", deprecated:"false" },
-      { id:454, label:"com.google.android.gms.location.LocationSettingsRequest", link:"reference/com/google/android/gms/location/LocationSettingsRequest.html", type:"class", deprecated:"false" },
-      { id:455, label:"com.google.android.gms.location.LocationSettingsRequest.Builder", link:"reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:456, label:"com.google.android.gms.location.LocationSettingsResult", link:"reference/com/google/android/gms/location/LocationSettingsResult.html", type:"class", deprecated:"false" },
-      { id:457, label:"com.google.android.gms.location.LocationSettingsStates", link:"reference/com/google/android/gms/location/LocationSettingsStates.html", type:"class", deprecated:"false" },
-      { id:458, label:"com.google.android.gms.location.LocationSettingsStatusCodes", link:"reference/com/google/android/gms/location/LocationSettingsStatusCodes.html", type:"class", deprecated:"false" },
-      { id:459, label:"com.google.android.gms.location.LocationStatusCodes", link:"reference/com/google/android/gms/location/LocationStatusCodes.html", type:"class", deprecated:"true" },
-      { id:460, label:"com.google.android.gms.location.SettingsApi", link:"reference/com/google/android/gms/location/SettingsApi.html", type:"class", deprecated:"false" },
-      { id:461, label:"com.google.android.gms.location.places", link:"reference/com/google/android/gms/location/places/package-summary.html", type:"package", deprecated:"false" },
-      { id:462, label:"com.google.android.gms.location.places.AddPlaceRequest", link:"reference/com/google/android/gms/location/places/AddPlaceRequest.html", type:"class", deprecated:"false" },
-      { id:463, label:"com.google.android.gms.location.places.AutocompleteFilter", link:"reference/com/google/android/gms/location/places/AutocompleteFilter.html", type:"class", deprecated:"false" },
-      { id:464, label:"com.google.android.gms.location.places.AutocompletePrediction", link:"reference/com/google/android/gms/location/places/AutocompletePrediction.html", type:"class", deprecated:"false" },
-      { id:465, label:"com.google.android.gms.location.places.AutocompletePrediction.Substring", link:"reference/com/google/android/gms/location/places/AutocompletePrediction.Substring.html", type:"class", deprecated:"false" },
-      { id:466, label:"com.google.android.gms.location.places.AutocompletePredictionBuffer", link:"reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html", type:"class", deprecated:"false" },
-      { id:467, label:"com.google.android.gms.location.places.GeoDataApi", link:"reference/com/google/android/gms/location/places/GeoDataApi.html", type:"class", deprecated:"false" },
-      { id:468, label:"com.google.android.gms.location.places.Place", link:"reference/com/google/android/gms/location/places/Place.html", type:"class", deprecated:"false" },
-      { id:469, label:"com.google.android.gms.location.places.PlaceBuffer", link:"reference/com/google/android/gms/location/places/PlaceBuffer.html", type:"class", deprecated:"false" },
-      { id:470, label:"com.google.android.gms.location.places.PlaceDetectionApi", link:"reference/com/google/android/gms/location/places/PlaceDetectionApi.html", type:"class", deprecated:"false" },
-      { id:471, label:"com.google.android.gms.location.places.PlaceFilter", link:"reference/com/google/android/gms/location/places/PlaceFilter.html", type:"class", deprecated:"false" },
-      { id:472, label:"com.google.android.gms.location.places.PlaceLikelihood", link:"reference/com/google/android/gms/location/places/PlaceLikelihood.html", type:"class", deprecated:"false" },
-      { id:473, label:"com.google.android.gms.location.places.PlaceLikelihoodBuffer", link:"reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html", type:"class", deprecated:"false" },
-      { id:474, label:"com.google.android.gms.location.places.PlaceReport", link:"reference/com/google/android/gms/location/places/PlaceReport.html", type:"class", deprecated:"false" },
-      { id:475, label:"com.google.android.gms.location.places.PlaceTypes", link:"reference/com/google/android/gms/location/places/PlaceTypes.html", type:"class", deprecated:"false" },
-      { id:476, label:"com.google.android.gms.location.places.Places", link:"reference/com/google/android/gms/location/places/Places.html", type:"class", deprecated:"false" },
-      { id:477, label:"com.google.android.gms.location.places.PlacesOptions", link:"reference/com/google/android/gms/location/places/PlacesOptions.html", type:"class", deprecated:"false" },
-      { id:478, label:"com.google.android.gms.location.places.PlacesOptions.Builder", link:"reference/com/google/android/gms/location/places/PlacesOptions.Builder.html", type:"class", deprecated:"false" },
-      { id:479, label:"com.google.android.gms.location.places.PlacesStatusCodes", link:"reference/com/google/android/gms/location/places/PlacesStatusCodes.html", type:"class", deprecated:"false" },
-      { id:480, label:"com.google.android.gms.location.places.ui", link:"reference/com/google/android/gms/location/places/ui/package-summary.html", type:"package", deprecated:"false" },
-      { id:481, label:"com.google.android.gms.location.places.ui.PlacePicker", link:"reference/com/google/android/gms/location/places/ui/PlacePicker.html", type:"class", deprecated:"false" },
-      { id:482, label:"com.google.android.gms.location.places.ui.PlacePicker.IntentBuilder", link:"reference/com/google/android/gms/location/places/ui/PlacePicker.IntentBuilder.html", type:"class", deprecated:"false" },
-      { id:483, label:"com.google.android.gms.maps", link:"reference/com/google/android/gms/maps/package-summary.html", type:"package", deprecated:"false" },
-      { id:484, label:"com.google.android.gms.maps.CameraUpdate", link:"reference/com/google/android/gms/maps/CameraUpdate.html", type:"class", deprecated:"false" },
-      { id:485, label:"com.google.android.gms.maps.CameraUpdateFactory", link:"reference/com/google/android/gms/maps/CameraUpdateFactory.html", type:"class", deprecated:"false" },
-      { id:486, label:"com.google.android.gms.maps.GoogleMap", link:"reference/com/google/android/gms/maps/GoogleMap.html", type:"class", deprecated:"false" },
-      { id:487, label:"com.google.android.gms.maps.GoogleMap.CancelableCallback", link:"reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html", type:"class", deprecated:"false" },
-      { id:488, label:"com.google.android.gms.maps.GoogleMap.InfoWindowAdapter", link:"reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html", type:"class", deprecated:"false" },
-      { id:489, label:"com.google.android.gms.maps.GoogleMap.OnCameraChangeListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html", type:"class", deprecated:"false" },
-      { id:490, label:"com.google.android.gms.maps.GoogleMap.OnIndoorStateChangeListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnIndoorStateChangeListener.html", type:"class", deprecated:"false" },
-      { id:491, label:"com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html", type:"class", deprecated:"false" },
-      { id:492, label:"com.google.android.gms.maps.GoogleMap.OnMapClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html", type:"class", deprecated:"false" },
-      { id:493, label:"com.google.android.gms.maps.GoogleMap.OnMapLoadedCallback", link:"reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback.html", type:"class", deprecated:"false" },
-      { id:494, label:"com.google.android.gms.maps.GoogleMap.OnMapLongClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html", type:"class", deprecated:"false" },
-      { id:495, label:"com.google.android.gms.maps.GoogleMap.OnMarkerClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html", type:"class", deprecated:"false" },
-      { id:496, label:"com.google.android.gms.maps.GoogleMap.OnMarkerDragListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html", type:"class", deprecated:"false" },
-      { id:497, label:"com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMyLocationButtonClickListener.html", type:"class", deprecated:"false" },
-      { id:498, label:"com.google.android.gms.maps.GoogleMap.OnMyLocationChangeListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html", type:"class", deprecated:"true" },
-      { id:499, label:"com.google.android.gms.maps.GoogleMap.SnapshotReadyCallback", link:"reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback.html", type:"class", deprecated:"false" },
-      { id:500, label:"com.google.android.gms.maps.GoogleMapOptions", link:"reference/com/google/android/gms/maps/GoogleMapOptions.html", type:"class", deprecated:"false" },
-      { id:501, label:"com.google.android.gms.maps.LocationSource", link:"reference/com/google/android/gms/maps/LocationSource.html", type:"class", deprecated:"false" },
-      { id:502, label:"com.google.android.gms.maps.LocationSource.OnLocationChangedListener", link:"reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html", type:"class", deprecated:"false" },
-      { id:503, label:"com.google.android.gms.maps.MapFragment", link:"reference/com/google/android/gms/maps/MapFragment.html", type:"class", deprecated:"false" },
-      { id:504, label:"com.google.android.gms.maps.MapView", link:"reference/com/google/android/gms/maps/MapView.html", type:"class", deprecated:"false" },
-      { id:505, label:"com.google.android.gms.maps.MapsInitializer", link:"reference/com/google/android/gms/maps/MapsInitializer.html", type:"class", deprecated:"false" },
-      { id:506, label:"com.google.android.gms.maps.OnMapReadyCallback", link:"reference/com/google/android/gms/maps/OnMapReadyCallback.html", type:"class", deprecated:"false" },
-      { id:507, label:"com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback", link:"reference/com/google/android/gms/maps/OnStreetViewPanoramaReadyCallback.html", type:"class", deprecated:"false" },
-      { id:508, label:"com.google.android.gms.maps.Projection", link:"reference/com/google/android/gms/maps/Projection.html", type:"class", deprecated:"false" },
-      { id:509, label:"com.google.android.gms.maps.StreetViewPanorama", link:"reference/com/google/android/gms/maps/StreetViewPanorama.html", type:"class", deprecated:"false" },
-      { id:510, label:"com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener", link:"reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener.html", type:"class", deprecated:"false" },
-      { id:511, label:"com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaChangeListener", link:"reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaChangeListener.html", type:"class", deprecated:"false" },
-      { id:512, label:"com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaClickListener", link:"reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaClickListener.html", type:"class", deprecated:"false" },
-      { id:513, label:"com.google.android.gms.maps.StreetViewPanoramaFragment", link:"reference/com/google/android/gms/maps/StreetViewPanoramaFragment.html", type:"class", deprecated:"false" },
-      { id:514, label:"com.google.android.gms.maps.StreetViewPanoramaOptions", link:"reference/com/google/android/gms/maps/StreetViewPanoramaOptions.html", type:"class", deprecated:"false" },
-      { id:515, label:"com.google.android.gms.maps.StreetViewPanoramaView", link:"reference/com/google/android/gms/maps/StreetViewPanoramaView.html", type:"class", deprecated:"false" },
-      { id:516, label:"com.google.android.gms.maps.SupportMapFragment", link:"reference/com/google/android/gms/maps/SupportMapFragment.html", type:"class", deprecated:"false" },
-      { id:517, label:"com.google.android.gms.maps.SupportStreetViewPanoramaFragment", link:"reference/com/google/android/gms/maps/SupportStreetViewPanoramaFragment.html", type:"class", deprecated:"false" },
-      { id:518, label:"com.google.android.gms.maps.UiSettings", link:"reference/com/google/android/gms/maps/UiSettings.html", type:"class", deprecated:"false" },
-      { id:519, label:"com.google.android.gms.maps.model", link:"reference/com/google/android/gms/maps/model/package-summary.html", type:"package", deprecated:"false" },
-      { id:520, label:"com.google.android.gms.maps.model.BitmapDescriptor", link:"reference/com/google/android/gms/maps/model/BitmapDescriptor.html", type:"class", deprecated:"false" },
-      { id:521, label:"com.google.android.gms.maps.model.BitmapDescriptorFactory", link:"reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html", type:"class", deprecated:"false" },
-      { id:522, label:"com.google.android.gms.maps.model.CameraPosition", link:"reference/com/google/android/gms/maps/model/CameraPosition.html", type:"class", deprecated:"false" },
-      { id:523, label:"com.google.android.gms.maps.model.CameraPosition.Builder", link:"reference/com/google/android/gms/maps/model/CameraPosition.Builder.html", type:"class", deprecated:"false" },
-      { id:524, label:"com.google.android.gms.maps.model.Circle", link:"reference/com/google/android/gms/maps/model/Circle.html", type:"class", deprecated:"false" },
-      { id:525, label:"com.google.android.gms.maps.model.CircleOptions", link:"reference/com/google/android/gms/maps/model/CircleOptions.html", type:"class", deprecated:"false" },
-      { id:526, label:"com.google.android.gms.maps.model.GroundOverlay", link:"reference/com/google/android/gms/maps/model/GroundOverlay.html", type:"class", deprecated:"false" },
-      { id:527, label:"com.google.android.gms.maps.model.GroundOverlayOptions", link:"reference/com/google/android/gms/maps/model/GroundOverlayOptions.html", type:"class", deprecated:"false" },
-      { id:528, label:"com.google.android.gms.maps.model.IndoorBuilding", link:"reference/com/google/android/gms/maps/model/IndoorBuilding.html", type:"class", deprecated:"false" },
-      { id:529, label:"com.google.android.gms.maps.model.IndoorLevel", link:"reference/com/google/android/gms/maps/model/IndoorLevel.html", type:"class", deprecated:"false" },
-      { id:530, label:"com.google.android.gms.maps.model.LatLng", link:"reference/com/google/android/gms/maps/model/LatLng.html", type:"class", deprecated:"false" },
-      { id:531, label:"com.google.android.gms.maps.model.LatLngBounds", link:"reference/com/google/android/gms/maps/model/LatLngBounds.html", type:"class", deprecated:"false" },
-      { id:532, label:"com.google.android.gms.maps.model.LatLngBounds.Builder", link:"reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html", type:"class", deprecated:"false" },
-      { id:533, label:"com.google.android.gms.maps.model.Marker", link:"reference/com/google/android/gms/maps/model/Marker.html", type:"class", deprecated:"false" },
-      { id:534, label:"com.google.android.gms.maps.model.MarkerOptions", link:"reference/com/google/android/gms/maps/model/MarkerOptions.html", type:"class", deprecated:"false" },
-      { id:535, label:"com.google.android.gms.maps.model.Polygon", link:"reference/com/google/android/gms/maps/model/Polygon.html", type:"class", deprecated:"false" },
-      { id:536, label:"com.google.android.gms.maps.model.PolygonOptions", link:"reference/com/google/android/gms/maps/model/PolygonOptions.html", type:"class", deprecated:"false" },
-      { id:537, label:"com.google.android.gms.maps.model.Polyline", link:"reference/com/google/android/gms/maps/model/Polyline.html", type:"class", deprecated:"false" },
-      { id:538, label:"com.google.android.gms.maps.model.PolylineOptions", link:"reference/com/google/android/gms/maps/model/PolylineOptions.html", type:"class", deprecated:"false" },
-      { id:539, label:"com.google.android.gms.maps.model.RuntimeRemoteException", link:"reference/com/google/android/gms/maps/model/RuntimeRemoteException.html", type:"class", deprecated:"false" },
-      { id:540, label:"com.google.android.gms.maps.model.StreetViewPanoramaCamera", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.html", type:"class", deprecated:"false" },
-      { id:541, label:"com.google.android.gms.maps.model.StreetViewPanoramaCamera.Builder", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.Builder.html", type:"class", deprecated:"false" },
-      { id:542, label:"com.google.android.gms.maps.model.StreetViewPanoramaLink", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaLink.html", type:"class", deprecated:"false" },
-      { id:543, label:"com.google.android.gms.maps.model.StreetViewPanoramaLocation", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaLocation.html", type:"class", deprecated:"false" },
-      { id:544, label:"com.google.android.gms.maps.model.StreetViewPanoramaOrientation", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.html", type:"class", deprecated:"false" },
-      { id:545, label:"com.google.android.gms.maps.model.StreetViewPanoramaOrientation.Builder", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.Builder.html", type:"class", deprecated:"false" },
-      { id:546, label:"com.google.android.gms.maps.model.Tile", link:"reference/com/google/android/gms/maps/model/Tile.html", type:"class", deprecated:"false" },
-      { id:547, label:"com.google.android.gms.maps.model.TileOverlay", link:"reference/com/google/android/gms/maps/model/TileOverlay.html", type:"class", deprecated:"false" },
-      { id:548, label:"com.google.android.gms.maps.model.TileOverlayOptions", link:"reference/com/google/android/gms/maps/model/TileOverlayOptions.html", type:"class", deprecated:"false" },
-      { id:549, label:"com.google.android.gms.maps.model.TileProvider", link:"reference/com/google/android/gms/maps/model/TileProvider.html", type:"class", deprecated:"false" },
-      { id:550, label:"com.google.android.gms.maps.model.UrlTileProvider", link:"reference/com/google/android/gms/maps/model/UrlTileProvider.html", type:"class", deprecated:"false" },
-      { id:551, label:"com.google.android.gms.maps.model.VisibleRegion", link:"reference/com/google/android/gms/maps/model/VisibleRegion.html", type:"class", deprecated:"false" },
-      { id:552, label:"com.google.android.gms.nearby", link:"reference/com/google/android/gms/nearby/package-summary.html", type:"package", deprecated:"false" },
-      { id:553, label:"com.google.android.gms.nearby.Nearby", link:"reference/com/google/android/gms/nearby/Nearby.html", type:"class", deprecated:"false" },
-      { id:554, label:"com.google.android.gms.nearby.connection", link:"reference/com/google/android/gms/nearby/connection/package-summary.html", type:"package", deprecated:"false" },
-      { id:555, label:"com.google.android.gms.nearby.connection.AppIdentifier", link:"reference/com/google/android/gms/nearby/connection/AppIdentifier.html", type:"class", deprecated:"false" },
-      { id:556, label:"com.google.android.gms.nearby.connection.AppMetadata", link:"reference/com/google/android/gms/nearby/connection/AppMetadata.html", type:"class", deprecated:"false" },
-      { id:557, label:"com.google.android.gms.nearby.connection.Connections", link:"reference/com/google/android/gms/nearby/connection/Connections.html", type:"class", deprecated:"false" },
-      { id:558, label:"com.google.android.gms.nearby.connection.Connections.ConnectionRequestListener", link:"reference/com/google/android/gms/nearby/connection/Connections.ConnectionRequestListener.html", type:"class", deprecated:"false" },
-      { id:559, label:"com.google.android.gms.nearby.connection.Connections.ConnectionResponseCallback", link:"reference/com/google/android/gms/nearby/connection/Connections.ConnectionResponseCallback.html", type:"class", deprecated:"false" },
-      { id:560, label:"com.google.android.gms.nearby.connection.Connections.EndpointDiscoveryListener", link:"reference/com/google/android/gms/nearby/connection/Connections.EndpointDiscoveryListener.html", type:"class", deprecated:"false" },
-      { id:561, label:"com.google.android.gms.nearby.connection.Connections.MessageListener", link:"reference/com/google/android/gms/nearby/connection/Connections.MessageListener.html", type:"class", deprecated:"false" },
-      { id:562, label:"com.google.android.gms.nearby.connection.Connections.StartAdvertisingResult", link:"reference/com/google/android/gms/nearby/connection/Connections.StartAdvertisingResult.html", type:"class", deprecated:"false" },
-      { id:563, label:"com.google.android.gms.nearby.connection.ConnectionsStatusCodes", link:"reference/com/google/android/gms/nearby/connection/ConnectionsStatusCodes.html", type:"class", deprecated:"false" },
-      { id:564, label:"com.google.android.gms.panorama", link:"reference/com/google/android/gms/panorama/package-summary.html", type:"package", deprecated:"false" },
-      { id:565, label:"com.google.android.gms.panorama.Panorama", link:"reference/com/google/android/gms/panorama/Panorama.html", type:"class", deprecated:"false" },
-      { id:566, label:"com.google.android.gms.panorama.PanoramaApi", link:"reference/com/google/android/gms/panorama/PanoramaApi.html", type:"class", deprecated:"false" },
-      { id:567, label:"com.google.android.gms.panorama.PanoramaApi.PanoramaResult", link:"reference/com/google/android/gms/panorama/PanoramaApi.PanoramaResult.html", type:"class", deprecated:"false" },
-      { id:568, label:"com.google.android.gms.plus", link:"reference/com/google/android/gms/plus/package-summary.html", type:"package", deprecated:"false" },
-      { id:569, label:"com.google.android.gms.plus.Account", link:"reference/com/google/android/gms/plus/Account.html", type:"class", deprecated:"false" },
-      { id:570, label:"com.google.android.gms.plus.Moments", link:"reference/com/google/android/gms/plus/Moments.html", type:"class", deprecated:"false" },
-      { id:571, label:"com.google.android.gms.plus.Moments.LoadMomentsResult", link:"reference/com/google/android/gms/plus/Moments.LoadMomentsResult.html", type:"class", deprecated:"false" },
-      { id:572, label:"com.google.android.gms.plus.People", link:"reference/com/google/android/gms/plus/People.html", type:"class", deprecated:"false" },
-      { id:573, label:"com.google.android.gms.plus.People.LoadPeopleResult", link:"reference/com/google/android/gms/plus/People.LoadPeopleResult.html", type:"class", deprecated:"false" },
-      { id:574, label:"com.google.android.gms.plus.People.OrderBy", link:"reference/com/google/android/gms/plus/People.OrderBy.html", type:"class", deprecated:"false" },
-      { id:575, label:"com.google.android.gms.plus.Plus", link:"reference/com/google/android/gms/plus/Plus.html", type:"class", deprecated:"false" },
-      { id:576, label:"com.google.android.gms.plus.Plus.PlusOptions", link:"reference/com/google/android/gms/plus/Plus.PlusOptions.html", type:"class", deprecated:"false" },
-      { id:577, label:"com.google.android.gms.plus.Plus.PlusOptions.Builder", link:"reference/com/google/android/gms/plus/Plus.PlusOptions.Builder.html", type:"class", deprecated:"false" },
-      { id:578, label:"com.google.android.gms.plus.PlusOneButton", link:"reference/com/google/android/gms/plus/PlusOneButton.html", type:"class", deprecated:"false" },
-      { id:579, label:"com.google.android.gms.plus.PlusOneButton.DefaultOnPlusOneClickListener", link:"reference/com/google/android/gms/plus/PlusOneButton.DefaultOnPlusOneClickListener.html", type:"class", deprecated:"false" },
-      { id:580, label:"com.google.android.gms.plus.PlusOneButton.OnPlusOneClickListener", link:"reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html", type:"class", deprecated:"false" },
-      { id:581, label:"com.google.android.gms.plus.PlusOneDummyView", link:"reference/com/google/android/gms/plus/PlusOneDummyView.html", type:"class", deprecated:"false" },
-      { id:582, label:"com.google.android.gms.plus.PlusShare", link:"reference/com/google/android/gms/plus/PlusShare.html", type:"class", deprecated:"false" },
-      { id:583, label:"com.google.android.gms.plus.PlusShare.Builder", link:"reference/com/google/android/gms/plus/PlusShare.Builder.html", type:"class", deprecated:"false" },
-      { id:584, label:"com.google.android.gms.plus.model.moments", link:"reference/com/google/android/gms/plus/model/moments/package-summary.html", type:"package", deprecated:"false" },
-      { id:585, label:"com.google.android.gms.plus.model.moments.ItemScope", link:"reference/com/google/android/gms/plus/model/moments/ItemScope.html", type:"class", deprecated:"false" },
-      { id:586, label:"com.google.android.gms.plus.model.moments.ItemScope.Builder", link:"reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html", type:"class", deprecated:"false" },
-      { id:587, label:"com.google.android.gms.plus.model.moments.Moment", link:"reference/com/google/android/gms/plus/model/moments/Moment.html", type:"class", deprecated:"false" },
-      { id:588, label:"com.google.android.gms.plus.model.moments.Moment.Builder", link:"reference/com/google/android/gms/plus/model/moments/Moment.Builder.html", type:"class", deprecated:"false" },
-      { id:589, label:"com.google.android.gms.plus.model.moments.MomentBuffer", link:"reference/com/google/android/gms/plus/model/moments/MomentBuffer.html", type:"class", deprecated:"false" },
-      { id:590, label:"com.google.android.gms.plus.model.people", link:"reference/com/google/android/gms/plus/model/people/package-summary.html", type:"package", deprecated:"false" },
-      { id:591, label:"com.google.android.gms.plus.model.people.Person", link:"reference/com/google/android/gms/plus/model/people/Person.html", type:"class", deprecated:"false" },
-      { id:592, label:"com.google.android.gms.plus.model.people.Person.AgeRange", link:"reference/com/google/android/gms/plus/model/people/Person.AgeRange.html", type:"class", deprecated:"false" },
-      { id:593, label:"com.google.android.gms.plus.model.people.Person.Cover", link:"reference/com/google/android/gms/plus/model/people/Person.Cover.html", type:"class", deprecated:"false" },
-      { id:594, label:"com.google.android.gms.plus.model.people.Person.Cover.CoverInfo", link:"reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html", type:"class", deprecated:"false" },
-      { id:595, label:"com.google.android.gms.plus.model.people.Person.Cover.CoverPhoto", link:"reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html", type:"class", deprecated:"false" },
-      { id:596, label:"com.google.android.gms.plus.model.people.Person.Cover.Layout", link:"reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html", type:"class", deprecated:"false" },
-      { id:597, label:"com.google.android.gms.plus.model.people.Person.Gender", link:"reference/com/google/android/gms/plus/model/people/Person.Gender.html", type:"class", deprecated:"false" },
-      { id:598, label:"com.google.android.gms.plus.model.people.Person.Image", link:"reference/com/google/android/gms/plus/model/people/Person.Image.html", type:"class", deprecated:"false" },
-      { id:599, label:"com.google.android.gms.plus.model.people.Person.Name", link:"reference/com/google/android/gms/plus/model/people/Person.Name.html", type:"class", deprecated:"false" },
-      { id:600, label:"com.google.android.gms.plus.model.people.Person.ObjectType", link:"reference/com/google/android/gms/plus/model/people/Person.ObjectType.html", type:"class", deprecated:"false" },
-      { id:601, label:"com.google.android.gms.plus.model.people.Person.Organizations", link:"reference/com/google/android/gms/plus/model/people/Person.Organizations.html", type:"class", deprecated:"false" },
-      { id:602, label:"com.google.android.gms.plus.model.people.Person.Organizations.Type", link:"reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html", type:"class", deprecated:"false" },
-      { id:603, label:"com.google.android.gms.plus.model.people.Person.PlacesLived", link:"reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html", type:"class", deprecated:"false" },
-      { id:604, label:"com.google.android.gms.plus.model.people.Person.RelationshipStatus", link:"reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html", type:"class", deprecated:"false" },
-      { id:605, label:"com.google.android.gms.plus.model.people.Person.Urls", link:"reference/com/google/android/gms/plus/model/people/Person.Urls.html", type:"class", deprecated:"false" },
-      { id:606, label:"com.google.android.gms.plus.model.people.Person.Urls.Type", link:"reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html", type:"class", deprecated:"false" },
-      { id:607, label:"com.google.android.gms.plus.model.people.PersonBuffer", link:"reference/com/google/android/gms/plus/model/people/PersonBuffer.html", type:"class", deprecated:"false" },
-      { id:608, label:"com.google.android.gms.safetynet", link:"reference/com/google/android/gms/safetynet/package-summary.html", type:"package", deprecated:"false" },
-      { id:609, label:"com.google.android.gms.safetynet.SafetyNet", link:"reference/com/google/android/gms/safetynet/SafetyNet.html", type:"class", deprecated:"false" },
-      { id:610, label:"com.google.android.gms.safetynet.SafetyNetApi", link:"reference/com/google/android/gms/safetynet/SafetyNetApi.html", type:"class", deprecated:"false" },
-      { id:611, label:"com.google.android.gms.safetynet.SafetyNetApi.AttestationResult", link:"reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html", type:"class", deprecated:"false" },
-      { id:612, label:"com.google.android.gms.security", link:"reference/com/google/android/gms/security/package-summary.html", type:"package", deprecated:"false" },
-      { id:613, label:"com.google.android.gms.security.ProviderInstaller", link:"reference/com/google/android/gms/security/ProviderInstaller.html", type:"class", deprecated:"false" },
-      { id:614, label:"com.google.android.gms.security.ProviderInstaller.ProviderInstallListener", link:"reference/com/google/android/gms/security/ProviderInstaller.ProviderInstallListener.html", type:"class", deprecated:"false" },
-      { id:615, label:"com.google.android.gms.tagmanager", link:"reference/com/google/android/gms/tagmanager/package-summary.html", type:"package", deprecated:"false" },
-      { id:616, label:"com.google.android.gms.tagmanager.Container", link:"reference/com/google/android/gms/tagmanager/Container.html", type:"class", deprecated:"false" },
-      { id:617, label:"com.google.android.gms.tagmanager.Container.FunctionCallMacroCallback", link:"reference/com/google/android/gms/tagmanager/Container.FunctionCallMacroCallback.html", type:"class", deprecated:"false" },
-      { id:618, label:"com.google.android.gms.tagmanager.Container.FunctionCallTagCallback", link:"reference/com/google/android/gms/tagmanager/Container.FunctionCallTagCallback.html", type:"class", deprecated:"false" },
-      { id:619, label:"com.google.android.gms.tagmanager.ContainerHolder", link:"reference/com/google/android/gms/tagmanager/ContainerHolder.html", type:"class", deprecated:"false" },
-      { id:620, label:"com.google.android.gms.tagmanager.ContainerHolder.ContainerAvailableListener", link:"reference/com/google/android/gms/tagmanager/ContainerHolder.ContainerAvailableListener.html", type:"class", deprecated:"false" },
-      { id:621, label:"com.google.android.gms.tagmanager.DataLayer", link:"reference/com/google/android/gms/tagmanager/DataLayer.html", type:"class", deprecated:"false" },
-      { id:622, label:"com.google.android.gms.tagmanager.InstallReferrerReceiver", link:"reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html", type:"class", deprecated:"false" },
-      { id:623, label:"com.google.android.gms.tagmanager.InstallReferrerService", link:"reference/com/google/android/gms/tagmanager/InstallReferrerService.html", type:"class", deprecated:"false" },
-      { id:624, label:"com.google.android.gms.tagmanager.PreviewActivity", link:"reference/com/google/android/gms/tagmanager/PreviewActivity.html", type:"class", deprecated:"false" },
-      { id:625, label:"com.google.android.gms.tagmanager.TagManager", link:"reference/com/google/android/gms/tagmanager/TagManager.html", type:"class", deprecated:"false" },
-      { id:626, label:"com.google.android.gms.wallet", link:"reference/com/google/android/gms/wallet/package-summary.html", type:"package", deprecated:"false" },
-      { id:627, label:"com.google.android.gms.wallet.Address", link:"reference/com/google/android/gms/wallet/Address.html", type:"class", deprecated:"true" },
-      { id:628, label:"com.google.android.gms.wallet.Cart", link:"reference/com/google/android/gms/wallet/Cart.html", type:"class", deprecated:"false" },
-      { id:629, label:"com.google.android.gms.wallet.Cart.Builder", link:"reference/com/google/android/gms/wallet/Cart.Builder.html", type:"class", deprecated:"false" },
-      { id:630, label:"com.google.android.gms.wallet.CountrySpecification", link:"reference/com/google/android/gms/wallet/CountrySpecification.html", type:"class", deprecated:"true" },
-      { id:631, label:"com.google.android.gms.wallet.EnableWalletOptimizationReceiver", link:"reference/com/google/android/gms/wallet/EnableWalletOptimizationReceiver.html", type:"class", deprecated:"false" },
-      { id:632, label:"com.google.android.gms.wallet.FullWallet", link:"reference/com/google/android/gms/wallet/FullWallet.html", type:"class", deprecated:"false" },
-      { id:633, label:"com.google.android.gms.wallet.FullWalletRequest", link:"reference/com/google/android/gms/wallet/FullWalletRequest.html", type:"class", deprecated:"false" },
-      { id:634, label:"com.google.android.gms.wallet.FullWalletRequest.Builder", link:"reference/com/google/android/gms/wallet/FullWalletRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:635, label:"com.google.android.gms.wallet.GiftCardWalletObject", link:"reference/com/google/android/gms/wallet/GiftCardWalletObject.html", type:"class", deprecated:"false" },
-      { id:636, label:"com.google.android.gms.wallet.InstrumentInfo", link:"reference/com/google/android/gms/wallet/InstrumentInfo.html", type:"class", deprecated:"false" },
-      { id:637, label:"com.google.android.gms.wallet.LineItem", link:"reference/com/google/android/gms/wallet/LineItem.html", type:"class", deprecated:"false" },
-      { id:638, label:"com.google.android.gms.wallet.LineItem.Builder", link:"reference/com/google/android/gms/wallet/LineItem.Builder.html", type:"class", deprecated:"false" },
-      { id:639, label:"com.google.android.gms.wallet.LineItem.Role", link:"reference/com/google/android/gms/wallet/LineItem.Role.html", type:"class", deprecated:"false" },
-      { id:640, label:"com.google.android.gms.wallet.LoyaltyWalletObject", link:"reference/com/google/android/gms/wallet/LoyaltyWalletObject.html", type:"class", deprecated:"false" },
-      { id:641, label:"com.google.android.gms.wallet.MaskedWallet", link:"reference/com/google/android/gms/wallet/MaskedWallet.html", type:"class", deprecated:"false" },
-      { id:642, label:"com.google.android.gms.wallet.MaskedWallet.Builder", link:"reference/com/google/android/gms/wallet/MaskedWallet.Builder.html", type:"class", deprecated:"false" },
-      { id:643, label:"com.google.android.gms.wallet.MaskedWalletRequest", link:"reference/com/google/android/gms/wallet/MaskedWalletRequest.html", type:"class", deprecated:"false" },
-      { id:644, label:"com.google.android.gms.wallet.MaskedWalletRequest.Builder", link:"reference/com/google/android/gms/wallet/MaskedWalletRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:645, label:"com.google.android.gms.wallet.NotifyTransactionStatusRequest", link:"reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.html", type:"class", deprecated:"false" },
-      { id:646, label:"com.google.android.gms.wallet.NotifyTransactionStatusRequest.Builder", link:"reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Builder.html", type:"class", deprecated:"false" },
-      { id:647, label:"com.google.android.gms.wallet.NotifyTransactionStatusRequest.Status", link:"reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.html", type:"class", deprecated:"false" },
-      { id:648, label:"com.google.android.gms.wallet.NotifyTransactionStatusRequest.Status.Error", link:"reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.Error.html", type:"class", deprecated:"false" },
-      { id:649, label:"com.google.android.gms.wallet.OfferWalletObject", link:"reference/com/google/android/gms/wallet/OfferWalletObject.html", type:"class", deprecated:"false" },
-      { id:650, label:"com.google.android.gms.wallet.PaymentInstrumentType", link:"reference/com/google/android/gms/wallet/PaymentInstrumentType.html", type:"class", deprecated:"false" },
-      { id:651, label:"com.google.android.gms.wallet.Payments", link:"reference/com/google/android/gms/wallet/Payments.html", type:"class", deprecated:"false" },
-      { id:652, label:"com.google.android.gms.wallet.ProxyCard", link:"reference/com/google/android/gms/wallet/ProxyCard.html", type:"class", deprecated:"false" },
-      { id:653, label:"com.google.android.gms.wallet.Wallet", link:"reference/com/google/android/gms/wallet/Wallet.html", type:"class", deprecated:"false" },
-      { id:654, label:"com.google.android.gms.wallet.Wallet.WalletOptions", link:"reference/com/google/android/gms/wallet/Wallet.WalletOptions.html", type:"class", deprecated:"false" },
-      { id:655, label:"com.google.android.gms.wallet.Wallet.WalletOptions.Builder", link:"reference/com/google/android/gms/wallet/Wallet.WalletOptions.Builder.html", type:"class", deprecated:"false" },
-      { id:656, label:"com.google.android.gms.wallet.WalletConstants", link:"reference/com/google/android/gms/wallet/WalletConstants.html", type:"class", deprecated:"false" },
-      { id:657, label:"com.google.android.gms.wallet.fragment", link:"reference/com/google/android/gms/wallet/fragment/package-summary.html", type:"package", deprecated:"false" },
-      { id:658, label:"com.google.android.gms.wallet.fragment.BuyButtonAppearance", link:"reference/com/google/android/gms/wallet/fragment/BuyButtonAppearance.html", type:"class", deprecated:"false" },
-      { id:659, label:"com.google.android.gms.wallet.fragment.BuyButtonText", link:"reference/com/google/android/gms/wallet/fragment/BuyButtonText.html", type:"class", deprecated:"false" },
-      { id:660, label:"com.google.android.gms.wallet.fragment.Dimension", link:"reference/com/google/android/gms/wallet/fragment/Dimension.html", type:"class", deprecated:"false" },
-      { id:661, label:"com.google.android.gms.wallet.fragment.SupportWalletFragment", link:"reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.html", type:"class", deprecated:"false" },
-      { id:662, label:"com.google.android.gms.wallet.fragment.SupportWalletFragment.OnStateChangedListener", link:"reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.OnStateChangedListener.html", type:"class", deprecated:"false" },
-      { id:663, label:"com.google.android.gms.wallet.fragment.WalletFragment", link:"reference/com/google/android/gms/wallet/fragment/WalletFragment.html", type:"class", deprecated:"false" },
-      { id:664, label:"com.google.android.gms.wallet.fragment.WalletFragment.OnStateChangedListener", link:"reference/com/google/android/gms/wallet/fragment/WalletFragment.OnStateChangedListener.html", type:"class", deprecated:"false" },
-      { id:665, label:"com.google.android.gms.wallet.fragment.WalletFragmentInitParams", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.html", type:"class", deprecated:"false" },
-      { id:666, label:"com.google.android.gms.wallet.fragment.WalletFragmentInitParams.Builder", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder.html", type:"class", deprecated:"false" },
-      { id:667, label:"com.google.android.gms.wallet.fragment.WalletFragmentMode", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentMode.html", type:"class", deprecated:"false" },
-      { id:668, label:"com.google.android.gms.wallet.fragment.WalletFragmentOptions", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.html", type:"class", deprecated:"false" },
-      { id:669, label:"com.google.android.gms.wallet.fragment.WalletFragmentOptions.Builder", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.Builder.html", type:"class", deprecated:"false" },
-      { id:670, label:"com.google.android.gms.wallet.fragment.WalletFragmentState", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentState.html", type:"class", deprecated:"false" },
-      { id:671, label:"com.google.android.gms.wallet.fragment.WalletFragmentStyle", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentStyle.html", type:"class", deprecated:"false" },
-      { id:672, label:"com.google.android.gms.wallet.fragment.WalletLogoImageType", link:"reference/com/google/android/gms/wallet/fragment/WalletLogoImageType.html", type:"class", deprecated:"false" },
-      { id:673, label:"com.google.android.gms.wearable", link:"reference/com/google/android/gms/wearable/package-summary.html", type:"package", deprecated:"false" },
-      { id:674, label:"com.google.android.gms.wearable.Asset", link:"reference/com/google/android/gms/wearable/Asset.html", type:"class", deprecated:"false" },
-      { id:675, label:"com.google.android.gms.wearable.DataApi", link:"reference/com/google/android/gms/wearable/DataApi.html", type:"class", deprecated:"false" },
-      { id:676, label:"com.google.android.gms.wearable.DataApi.DataItemResult", link:"reference/com/google/android/gms/wearable/DataApi.DataItemResult.html", type:"class", deprecated:"false" },
-      { id:677, label:"com.google.android.gms.wearable.DataApi.DataListener", link:"reference/com/google/android/gms/wearable/DataApi.DataListener.html", type:"class", deprecated:"false" },
-      { id:678, label:"com.google.android.gms.wearable.DataApi.DeleteDataItemsResult", link:"reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html", type:"class", deprecated:"false" },
-      { id:679, label:"com.google.android.gms.wearable.DataApi.GetFdForAssetResult", link:"reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html", type:"class", deprecated:"false" },
-      { id:680, label:"com.google.android.gms.wearable.DataEvent", link:"reference/com/google/android/gms/wearable/DataEvent.html", type:"class", deprecated:"false" },
-      { id:681, label:"com.google.android.gms.wearable.DataEventBuffer", link:"reference/com/google/android/gms/wearable/DataEventBuffer.html", type:"class", deprecated:"false" },
-      { id:682, label:"com.google.android.gms.wearable.DataItem", link:"reference/com/google/android/gms/wearable/DataItem.html", type:"class", deprecated:"false" },
-      { id:683, label:"com.google.android.gms.wearable.DataItemAsset", link:"reference/com/google/android/gms/wearable/DataItemAsset.html", type:"class", deprecated:"false" },
-      { id:684, label:"com.google.android.gms.wearable.DataItemBuffer", link:"reference/com/google/android/gms/wearable/DataItemBuffer.html", type:"class", deprecated:"false" },
-      { id:685, label:"com.google.android.gms.wearable.DataMap", link:"reference/com/google/android/gms/wearable/DataMap.html", type:"class", deprecated:"false" },
-      { id:686, label:"com.google.android.gms.wearable.DataMapItem", link:"reference/com/google/android/gms/wearable/DataMapItem.html", type:"class", deprecated:"false" },
-      { id:687, label:"com.google.android.gms.wearable.MessageApi", link:"reference/com/google/android/gms/wearable/MessageApi.html", type:"class", deprecated:"false" },
-      { id:688, label:"com.google.android.gms.wearable.MessageApi.MessageListener", link:"reference/com/google/android/gms/wearable/MessageApi.MessageListener.html", type:"class", deprecated:"false" },
-      { id:689, label:"com.google.android.gms.wearable.MessageApi.SendMessageResult", link:"reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html", type:"class", deprecated:"false" },
-      { id:690, label:"com.google.android.gms.wearable.MessageEvent", link:"reference/com/google/android/gms/wearable/MessageEvent.html", type:"class", deprecated:"false" },
-      { id:691, label:"com.google.android.gms.wearable.Node", link:"reference/com/google/android/gms/wearable/Node.html", type:"class", deprecated:"false" },
-      { id:692, label:"com.google.android.gms.wearable.NodeApi", link:"reference/com/google/android/gms/wearable/NodeApi.html", type:"class", deprecated:"false" },
-      { id:693, label:"com.google.android.gms.wearable.NodeApi.GetConnectedNodesResult", link:"reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html", type:"class", deprecated:"false" },
-      { id:694, label:"com.google.android.gms.wearable.NodeApi.GetLocalNodeResult", link:"reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html", type:"class", deprecated:"false" },
-      { id:695, label:"com.google.android.gms.wearable.NodeApi.NodeListener", link:"reference/com/google/android/gms/wearable/NodeApi.NodeListener.html", type:"class", deprecated:"false" },
-      { id:696, label:"com.google.android.gms.wearable.PutDataMapRequest", link:"reference/com/google/android/gms/wearable/PutDataMapRequest.html", type:"class", deprecated:"false" },
-      { id:697, label:"com.google.android.gms.wearable.PutDataRequest", link:"reference/com/google/android/gms/wearable/PutDataRequest.html", type:"class", deprecated:"false" },
-      { id:698, label:"com.google.android.gms.wearable.Wearable", link:"reference/com/google/android/gms/wearable/Wearable.html", type:"class", deprecated:"false" },
-      { id:699, label:"com.google.android.gms.wearable.Wearable.WearableOptions", link:"reference/com/google/android/gms/wearable/Wearable.WearableOptions.html", type:"class", deprecated:"false" },
-      { id:700, label:"com.google.android.gms.wearable.Wearable.WearableOptions.Builder", link:"reference/com/google/android/gms/wearable/Wearable.WearableOptions.Builder.html", type:"class", deprecated:"false" },
-      { id:701, label:"com.google.android.gms.wearable.WearableListenerService", link:"reference/com/google/android/gms/wearable/WearableListenerService.html", type:"class", deprecated:"false" },
-      { id:702, label:"com.google.android.gms.wearable.WearableStatusCodes", link:"reference/com/google/android/gms/wearable/WearableStatusCodes.html", type:"class", deprecated:"false" }
+      { id:145, label:"com.google.android.gms.common.GoogleApiAvailability", link:"reference/com/google/android/gms/common/GoogleApiAvailability.html", type:"class", deprecated:"false" },
+      { id:146, label:"com.google.android.gms.common.GooglePlayServicesNotAvailableException", link:"reference/com/google/android/gms/common/GooglePlayServicesNotAvailableException.html", type:"class", deprecated:"false" },
+      { id:147, label:"com.google.android.gms.common.GooglePlayServicesRepairableException", link:"reference/com/google/android/gms/common/GooglePlayServicesRepairableException.html", type:"class", deprecated:"false" },
+      { id:148, label:"com.google.android.gms.common.GooglePlayServicesUtil", link:"reference/com/google/android/gms/common/GooglePlayServicesUtil.html", type:"class", deprecated:"false" },
+      { id:149, label:"com.google.android.gms.common.Scopes", link:"reference/com/google/android/gms/common/Scopes.html", type:"class", deprecated:"false" },
+      { id:150, label:"com.google.android.gms.common.SignInButton", link:"reference/com/google/android/gms/common/SignInButton.html", type:"class", deprecated:"false" },
+      { id:151, label:"com.google.android.gms.common.SupportErrorDialogFragment", link:"reference/com/google/android/gms/common/SupportErrorDialogFragment.html", type:"class", deprecated:"false" },
+      { id:152, label:"com.google.android.gms.common.UserRecoverableException", link:"reference/com/google/android/gms/common/UserRecoverableException.html", type:"class", deprecated:"false" },
+      { id:153, label:"com.google.android.gms.common.annotation", link:"reference/com/google/android/gms/common/annotation/package-summary.html", type:"package", deprecated:"false" },
+      { id:154, label:"com.google.android.gms.common.annotation.KeepName", link:"reference/com/google/android/gms/common/annotation/KeepName.html", type:"class", deprecated:"false" },
+      { id:155, label:"com.google.android.gms.common.api", link:"reference/com/google/android/gms/common/api/package-summary.html", type:"package", deprecated:"false" },
+      { id:156, label:"com.google.android.gms.common.api.Api", link:"reference/com/google/android/gms/common/api/Api.html", type:"class", deprecated:"false" },
+      { id:157, label:"com.google.android.gms.common.api.Api.ApiOptions", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.html", type:"class", deprecated:"false" },
+      { id:158, label:"com.google.android.gms.common.api.Api.ApiOptions.HasOptions", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.HasOptions.html", type:"class", deprecated:"false" },
+      { id:159, label:"com.google.android.gms.common.api.Api.ApiOptions.NoOptions", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.NoOptions.html", type:"class", deprecated:"false" },
+      { id:160, label:"com.google.android.gms.common.api.Api.ApiOptions.NotRequiredOptions", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.NotRequiredOptions.html", type:"class", deprecated:"false" },
+      { id:161, label:"com.google.android.gms.common.api.Api.ApiOptions.Optional", link:"reference/com/google/android/gms/common/api/Api.ApiOptions.Optional.html", type:"class", deprecated:"false" },
+      { id:162, label:"com.google.android.gms.common.api.Batch", link:"reference/com/google/android/gms/common/api/Batch.html", type:"class", deprecated:"false" },
+      { id:163, label:"com.google.android.gms.common.api.Batch.Builder", link:"reference/com/google/android/gms/common/api/Batch.Builder.html", type:"class", deprecated:"false" },
+      { id:164, label:"com.google.android.gms.common.api.BatchResult", link:"reference/com/google/android/gms/common/api/BatchResult.html", type:"class", deprecated:"false" },
+      { id:165, label:"com.google.android.gms.common.api.BatchResultToken", link:"reference/com/google/android/gms/common/api/BatchResultToken.html", type:"class", deprecated:"false" },
+      { id:166, label:"com.google.android.gms.common.api.CommonStatusCodes", link:"reference/com/google/android/gms/common/api/CommonStatusCodes.html", type:"class", deprecated:"false" },
+      { id:167, label:"com.google.android.gms.common.api.GoogleApiClient", link:"reference/com/google/android/gms/common/api/GoogleApiClient.html", type:"class", deprecated:"false" },
+      { id:168, label:"com.google.android.gms.common.api.GoogleApiClient.Builder", link:"reference/com/google/android/gms/common/api/GoogleApiClient.Builder.html", type:"class", deprecated:"false" },
+      { id:169, label:"com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks", link:"reference/com/google/android/gms/common/api/GoogleApiClient.ConnectionCallbacks.html", type:"class", deprecated:"false" },
+      { id:170, label:"com.google.android.gms.common.api.GoogleApiClient.OnConnectionFailedListener", link:"reference/com/google/android/gms/common/api/GoogleApiClient.OnConnectionFailedListener.html", type:"class", deprecated:"false" },
+      { id:171, label:"com.google.android.gms.common.api.GoogleApiClient.ServerAuthCodeCallbacks", link:"reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.html", type:"class", deprecated:"false" },
+      { id:172, label:"com.google.android.gms.common.api.GoogleApiClient.ServerAuthCodeCallbacks.CheckResult", link:"reference/com/google/android/gms/common/api/GoogleApiClient.ServerAuthCodeCallbacks.CheckResult.html", type:"class", deprecated:"false" },
+      { id:173, label:"com.google.android.gms.common.api.PendingResult", link:"reference/com/google/android/gms/common/api/PendingResult.html", type:"class", deprecated:"false" },
+      { id:174, label:"com.google.android.gms.common.api.PendingResults", link:"reference/com/google/android/gms/common/api/PendingResults.html", type:"class", deprecated:"false" },
+      { id:175, label:"com.google.android.gms.common.api.Releasable", link:"reference/com/google/android/gms/common/api/Releasable.html", type:"class", deprecated:"false" },
+      { id:176, label:"com.google.android.gms.common.api.Result", link:"reference/com/google/android/gms/common/api/Result.html", type:"class", deprecated:"false" },
+      { id:177, label:"com.google.android.gms.common.api.ResultCallback", link:"reference/com/google/android/gms/common/api/ResultCallback.html", type:"class", deprecated:"false" },
+      { id:178, label:"com.google.android.gms.common.api.Scope", link:"reference/com/google/android/gms/common/api/Scope.html", type:"class", deprecated:"false" },
+      { id:179, label:"com.google.android.gms.common.api.Status", link:"reference/com/google/android/gms/common/api/Status.html", type:"class", deprecated:"false" },
+      { id:180, label:"com.google.android.gms.common.data", link:"reference/com/google/android/gms/common/data/package-summary.html", type:"package", deprecated:"false" },
+      { id:181, label:"com.google.android.gms.common.data.AbstractDataBuffer", link:"reference/com/google/android/gms/common/data/AbstractDataBuffer.html", type:"class", deprecated:"false" },
+      { id:182, label:"com.google.android.gms.common.data.DataBuffer", link:"reference/com/google/android/gms/common/data/DataBuffer.html", type:"class", deprecated:"false" },
+      { id:183, label:"com.google.android.gms.common.data.DataBufferObserver", link:"reference/com/google/android/gms/common/data/DataBufferObserver.html", type:"class", deprecated:"false" },
+      { id:184, label:"com.google.android.gms.common.data.DataBufferObserver.Observable", link:"reference/com/google/android/gms/common/data/DataBufferObserver.Observable.html", type:"class", deprecated:"false" },
+      { id:185, label:"com.google.android.gms.common.data.DataBufferObserverSet", link:"reference/com/google/android/gms/common/data/DataBufferObserverSet.html", type:"class", deprecated:"false" },
+      { id:186, label:"com.google.android.gms.common.data.DataBufferUtils", link:"reference/com/google/android/gms/common/data/DataBufferUtils.html", type:"class", deprecated:"false" },
+      { id:187, label:"com.google.android.gms.common.data.Freezable", link:"reference/com/google/android/gms/common/data/Freezable.html", type:"class", deprecated:"false" },
+      { id:188, label:"com.google.android.gms.common.data.FreezableUtils", link:"reference/com/google/android/gms/common/data/FreezableUtils.html", type:"class", deprecated:"false" },
+      { id:189, label:"com.google.android.gms.common.images", link:"reference/com/google/android/gms/common/images/package-summary.html", type:"package", deprecated:"false" },
+      { id:190, label:"com.google.android.gms.common.images.ImageManager", link:"reference/com/google/android/gms/common/images/ImageManager.html", type:"class", deprecated:"false" },
+      { id:191, label:"com.google.android.gms.common.images.ImageManager.OnImageLoadedListener", link:"reference/com/google/android/gms/common/images/ImageManager.OnImageLoadedListener.html", type:"class", deprecated:"false" },
+      { id:192, label:"com.google.android.gms.common.images.WebImage", link:"reference/com/google/android/gms/common/images/WebImage.html", type:"class", deprecated:"false" },
+      { id:193, label:"com.google.android.gms.drive", link:"reference/com/google/android/gms/drive/package-summary.html", type:"package", deprecated:"false" },
+      { id:194, label:"com.google.android.gms.drive.CreateFileActivityBuilder", link:"reference/com/google/android/gms/drive/CreateFileActivityBuilder.html", type:"class", deprecated:"false" },
+      { id:195, label:"com.google.android.gms.drive.Drive", link:"reference/com/google/android/gms/drive/Drive.html", type:"class", deprecated:"false" },
+      { id:196, label:"com.google.android.gms.drive.DriveApi", link:"reference/com/google/android/gms/drive/DriveApi.html", type:"class", deprecated:"false" },
+      { id:197, label:"com.google.android.gms.drive.DriveApi.DriveContentsResult", link:"reference/com/google/android/gms/drive/DriveApi.DriveContentsResult.html", type:"class", deprecated:"false" },
+      { id:198, label:"com.google.android.gms.drive.DriveApi.DriveIdResult", link:"reference/com/google/android/gms/drive/DriveApi.DriveIdResult.html", type:"class", deprecated:"false" },
+      { id:199, label:"com.google.android.gms.drive.DriveApi.MetadataBufferResult", link:"reference/com/google/android/gms/drive/DriveApi.MetadataBufferResult.html", type:"class", deprecated:"false" },
+      { id:200, label:"com.google.android.gms.drive.DriveContents", link:"reference/com/google/android/gms/drive/DriveContents.html", type:"class", deprecated:"false" },
+      { id:201, label:"com.google.android.gms.drive.DriveFile", link:"reference/com/google/android/gms/drive/DriveFile.html", type:"class", deprecated:"false" },
+      { id:202, label:"com.google.android.gms.drive.DriveFile.DownloadProgressListener", link:"reference/com/google/android/gms/drive/DriveFile.DownloadProgressListener.html", type:"class", deprecated:"false" },
+      { id:203, label:"com.google.android.gms.drive.DriveFolder", link:"reference/com/google/android/gms/drive/DriveFolder.html", type:"class", deprecated:"false" },
+      { id:204, label:"com.google.android.gms.drive.DriveFolder.DriveFileResult", link:"reference/com/google/android/gms/drive/DriveFolder.DriveFileResult.html", type:"class", deprecated:"false" },
+      { id:205, label:"com.google.android.gms.drive.DriveFolder.DriveFolderResult", link:"reference/com/google/android/gms/drive/DriveFolder.DriveFolderResult.html", type:"class", deprecated:"false" },
+      { id:206, label:"com.google.android.gms.drive.DriveId", link:"reference/com/google/android/gms/drive/DriveId.html", type:"class", deprecated:"false" },
+      { id:207, label:"com.google.android.gms.drive.DrivePreferencesApi", link:"reference/com/google/android/gms/drive/DrivePreferencesApi.html", type:"class", deprecated:"false" },
+      { id:208, label:"com.google.android.gms.drive.DrivePreferencesApi.FileUploadPreferencesResult", link:"reference/com/google/android/gms/drive/DrivePreferencesApi.FileUploadPreferencesResult.html", type:"class", deprecated:"false" },
+      { id:209, label:"com.google.android.gms.drive.DriveResource", link:"reference/com/google/android/gms/drive/DriveResource.html", type:"class", deprecated:"false" },
+      { id:210, label:"com.google.android.gms.drive.DriveResource.MetadataResult", link:"reference/com/google/android/gms/drive/DriveResource.MetadataResult.html", type:"class", deprecated:"false" },
+      { id:211, label:"com.google.android.gms.drive.DriveStatusCodes", link:"reference/com/google/android/gms/drive/DriveStatusCodes.html", type:"class", deprecated:"false" },
+      { id:212, label:"com.google.android.gms.drive.ExecutionOptions", link:"reference/com/google/android/gms/drive/ExecutionOptions.html", type:"class", deprecated:"false" },
+      { id:213, label:"com.google.android.gms.drive.ExecutionOptions.Builder", link:"reference/com/google/android/gms/drive/ExecutionOptions.Builder.html", type:"class", deprecated:"false" },
+      { id:214, label:"com.google.android.gms.drive.FileUploadPreferences", link:"reference/com/google/android/gms/drive/FileUploadPreferences.html", type:"class", deprecated:"false" },
+      { id:215, label:"com.google.android.gms.drive.Metadata", link:"reference/com/google/android/gms/drive/Metadata.html", type:"class", deprecated:"false" },
+      { id:216, label:"com.google.android.gms.drive.MetadataBuffer", link:"reference/com/google/android/gms/drive/MetadataBuffer.html", type:"class", deprecated:"false" },
+      { id:217, label:"com.google.android.gms.drive.MetadataChangeSet", link:"reference/com/google/android/gms/drive/MetadataChangeSet.html", type:"class", deprecated:"false" },
+      { id:218, label:"com.google.android.gms.drive.MetadataChangeSet.Builder", link:"reference/com/google/android/gms/drive/MetadataChangeSet.Builder.html", type:"class", deprecated:"false" },
+      { id:219, label:"com.google.android.gms.drive.OpenFileActivityBuilder", link:"reference/com/google/android/gms/drive/OpenFileActivityBuilder.html", type:"class", deprecated:"false" },
+      { id:220, label:"com.google.android.gms.drive.events", link:"reference/com/google/android/gms/drive/events/package-summary.html", type:"package", deprecated:"false" },
+      { id:221, label:"com.google.android.gms.drive.events.ChangeEvent", link:"reference/com/google/android/gms/drive/events/ChangeEvent.html", type:"class", deprecated:"false" },
+      { id:222, label:"com.google.android.gms.drive.events.ChangeListener", link:"reference/com/google/android/gms/drive/events/ChangeListener.html", type:"class", deprecated:"false" },
+      { id:223, label:"com.google.android.gms.drive.events.CompletionEvent", link:"reference/com/google/android/gms/drive/events/CompletionEvent.html", type:"class", deprecated:"false" },
+      { id:224, label:"com.google.android.gms.drive.events.CompletionListener", link:"reference/com/google/android/gms/drive/events/CompletionListener.html", type:"class", deprecated:"false" },
+      { id:225, label:"com.google.android.gms.drive.events.DriveEvent", link:"reference/com/google/android/gms/drive/events/DriveEvent.html", type:"class", deprecated:"false" },
+      { id:226, label:"com.google.android.gms.drive.events.DriveEventService", link:"reference/com/google/android/gms/drive/events/DriveEventService.html", type:"class", deprecated:"false" },
+      { id:227, label:"com.google.android.gms.drive.events.ResourceEvent", link:"reference/com/google/android/gms/drive/events/ResourceEvent.html", type:"class", deprecated:"false" },
+      { id:228, label:"com.google.android.gms.drive.metadata", link:"reference/com/google/android/gms/drive/metadata/package-summary.html", type:"package", deprecated:"false" },
+      { id:229, label:"com.google.android.gms.drive.metadata.CustomPropertyKey", link:"reference/com/google/android/gms/drive/metadata/CustomPropertyKey.html", type:"class", deprecated:"false" },
+      { id:230, label:"com.google.android.gms.drive.metadata.MetadataField", link:"reference/com/google/android/gms/drive/metadata/MetadataField.html", type:"class", deprecated:"false" },
+      { id:231, label:"com.google.android.gms.drive.metadata.SearchableCollectionMetadataField", link:"reference/com/google/android/gms/drive/metadata/SearchableCollectionMetadataField.html", type:"class", deprecated:"false" },
+      { id:232, label:"com.google.android.gms.drive.metadata.SearchableMetadataField", link:"reference/com/google/android/gms/drive/metadata/SearchableMetadataField.html", type:"class", deprecated:"false" },
+      { id:233, label:"com.google.android.gms.drive.metadata.SearchableOrderedMetadataField", link:"reference/com/google/android/gms/drive/metadata/SearchableOrderedMetadataField.html", type:"class", deprecated:"false" },
+      { id:234, label:"com.google.android.gms.drive.metadata.SortableMetadataField", link:"reference/com/google/android/gms/drive/metadata/SortableMetadataField.html", type:"class", deprecated:"false" },
+      { id:235, label:"com.google.android.gms.drive.query", link:"reference/com/google/android/gms/drive/query/package-summary.html", type:"package", deprecated:"false" },
+      { id:236, label:"com.google.android.gms.drive.query.Filter", link:"reference/com/google/android/gms/drive/query/Filter.html", type:"class", deprecated:"false" },
+      { id:237, label:"com.google.android.gms.drive.query.Filters", link:"reference/com/google/android/gms/drive/query/Filters.html", type:"class", deprecated:"false" },
+      { id:238, label:"com.google.android.gms.drive.query.Query", link:"reference/com/google/android/gms/drive/query/Query.html", type:"class", deprecated:"false" },
+      { id:239, label:"com.google.android.gms.drive.query.Query.Builder", link:"reference/com/google/android/gms/drive/query/Query.Builder.html", type:"class", deprecated:"false" },
+      { id:240, label:"com.google.android.gms.drive.query.SearchableField", link:"reference/com/google/android/gms/drive/query/SearchableField.html", type:"class", deprecated:"false" },
+      { id:241, label:"com.google.android.gms.drive.query.SortOrder", link:"reference/com/google/android/gms/drive/query/SortOrder.html", type:"class", deprecated:"false" },
+      { id:242, label:"com.google.android.gms.drive.query.SortOrder.Builder", link:"reference/com/google/android/gms/drive/query/SortOrder.Builder.html", type:"class", deprecated:"false" },
+      { id:243, label:"com.google.android.gms.drive.query.SortableField", link:"reference/com/google/android/gms/drive/query/SortableField.html", type:"class", deprecated:"false" },
+      { id:244, label:"com.google.android.gms.drive.widget", link:"reference/com/google/android/gms/drive/widget/package-summary.html", type:"package", deprecated:"false" },
+      { id:245, label:"com.google.android.gms.drive.widget.DataBufferAdapter", link:"reference/com/google/android/gms/drive/widget/DataBufferAdapter.html", type:"class", deprecated:"false" },
+      { id:246, label:"com.google.android.gms.fitness", link:"reference/com/google/android/gms/fitness/package-summary.html", type:"package", deprecated:"false" },
+      { id:247, label:"com.google.android.gms.fitness.BleApi", link:"reference/com/google/android/gms/fitness/BleApi.html", type:"class", deprecated:"false" },
+      { id:248, label:"com.google.android.gms.fitness.ConfigApi", link:"reference/com/google/android/gms/fitness/ConfigApi.html", type:"class", deprecated:"false" },
+      { id:249, label:"com.google.android.gms.fitness.Fitness", link:"reference/com/google/android/gms/fitness/Fitness.html", type:"class", deprecated:"false" },
+      { id:250, label:"com.google.android.gms.fitness.FitnessActivities", link:"reference/com/google/android/gms/fitness/FitnessActivities.html", type:"class", deprecated:"false" },
+      { id:251, label:"com.google.android.gms.fitness.FitnessStatusCodes", link:"reference/com/google/android/gms/fitness/FitnessStatusCodes.html", type:"class", deprecated:"false" },
+      { id:252, label:"com.google.android.gms.fitness.HistoryApi", link:"reference/com/google/android/gms/fitness/HistoryApi.html", type:"class", deprecated:"false" },
+      { id:253, label:"com.google.android.gms.fitness.HistoryApi.ViewIntentBuilder", link:"reference/com/google/android/gms/fitness/HistoryApi.ViewIntentBuilder.html", type:"class", deprecated:"false" },
+      { id:254, label:"com.google.android.gms.fitness.RecordingApi", link:"reference/com/google/android/gms/fitness/RecordingApi.html", type:"class", deprecated:"false" },
+      { id:255, label:"com.google.android.gms.fitness.SensorsApi", link:"reference/com/google/android/gms/fitness/SensorsApi.html", type:"class", deprecated:"false" },
+      { id:256, label:"com.google.android.gms.fitness.SessionsApi", link:"reference/com/google/android/gms/fitness/SessionsApi.html", type:"class", deprecated:"false" },
+      { id:257, label:"com.google.android.gms.fitness.SessionsApi.ViewIntentBuilder", link:"reference/com/google/android/gms/fitness/SessionsApi.ViewIntentBuilder.html", type:"class", deprecated:"false" },
+      { id:258, label:"com.google.android.gms.fitness.data", link:"reference/com/google/android/gms/fitness/data/package-summary.html", type:"package", deprecated:"false" },
+      { id:259, label:"com.google.android.gms.fitness.data.BleDevice", link:"reference/com/google/android/gms/fitness/data/BleDevice.html", type:"class", deprecated:"false" },
+      { id:260, label:"com.google.android.gms.fitness.data.Bucket", link:"reference/com/google/android/gms/fitness/data/Bucket.html", type:"class", deprecated:"false" },
+      { id:261, label:"com.google.android.gms.fitness.data.DataPoint", link:"reference/com/google/android/gms/fitness/data/DataPoint.html", type:"class", deprecated:"false" },
+      { id:262, label:"com.google.android.gms.fitness.data.DataSet", link:"reference/com/google/android/gms/fitness/data/DataSet.html", type:"class", deprecated:"false" },
+      { id:263, label:"com.google.android.gms.fitness.data.DataSource", link:"reference/com/google/android/gms/fitness/data/DataSource.html", type:"class", deprecated:"false" },
+      { id:264, label:"com.google.android.gms.fitness.data.DataSource.Builder", link:"reference/com/google/android/gms/fitness/data/DataSource.Builder.html", type:"class", deprecated:"false" },
+      { id:265, label:"com.google.android.gms.fitness.data.DataType", link:"reference/com/google/android/gms/fitness/data/DataType.html", type:"class", deprecated:"false" },
+      { id:266, label:"com.google.android.gms.fitness.data.Device", link:"reference/com/google/android/gms/fitness/data/Device.html", type:"class", deprecated:"false" },
+      { id:267, label:"com.google.android.gms.fitness.data.Field", link:"reference/com/google/android/gms/fitness/data/Field.html", type:"class", deprecated:"false" },
+      { id:268, label:"com.google.android.gms.fitness.data.Session", link:"reference/com/google/android/gms/fitness/data/Session.html", type:"class", deprecated:"false" },
+      { id:269, label:"com.google.android.gms.fitness.data.Session.Builder", link:"reference/com/google/android/gms/fitness/data/Session.Builder.html", type:"class", deprecated:"false" },
+      { id:270, label:"com.google.android.gms.fitness.data.Subscription", link:"reference/com/google/android/gms/fitness/data/Subscription.html", type:"class", deprecated:"false" },
+      { id:271, label:"com.google.android.gms.fitness.data.Value", link:"reference/com/google/android/gms/fitness/data/Value.html", type:"class", deprecated:"false" },
+      { id:272, label:"com.google.android.gms.fitness.request", link:"reference/com/google/android/gms/fitness/request/package-summary.html", type:"package", deprecated:"false" },
+      { id:273, label:"com.google.android.gms.fitness.request.BleScanCallback", link:"reference/com/google/android/gms/fitness/request/BleScanCallback.html", type:"class", deprecated:"false" },
+      { id:274, label:"com.google.android.gms.fitness.request.DataDeleteRequest", link:"reference/com/google/android/gms/fitness/request/DataDeleteRequest.html", type:"class", deprecated:"false" },
+      { id:275, label:"com.google.android.gms.fitness.request.DataDeleteRequest.Builder", link:"reference/com/google/android/gms/fitness/request/DataDeleteRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:276, label:"com.google.android.gms.fitness.request.DataReadRequest", link:"reference/com/google/android/gms/fitness/request/DataReadRequest.html", type:"class", deprecated:"false" },
+      { id:277, label:"com.google.android.gms.fitness.request.DataReadRequest.Builder", link:"reference/com/google/android/gms/fitness/request/DataReadRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:278, label:"com.google.android.gms.fitness.request.DataSourcesRequest", link:"reference/com/google/android/gms/fitness/request/DataSourcesRequest.html", type:"class", deprecated:"false" },
+      { id:279, label:"com.google.android.gms.fitness.request.DataSourcesRequest.Builder", link:"reference/com/google/android/gms/fitness/request/DataSourcesRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:280, label:"com.google.android.gms.fitness.request.DataTypeCreateRequest", link:"reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.html", type:"class", deprecated:"false" },
+      { id:281, label:"com.google.android.gms.fitness.request.DataTypeCreateRequest.Builder", link:"reference/com/google/android/gms/fitness/request/DataTypeCreateRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:282, label:"com.google.android.gms.fitness.request.OnDataPointListener", link:"reference/com/google/android/gms/fitness/request/OnDataPointListener.html", type:"class", deprecated:"false" },
+      { id:283, label:"com.google.android.gms.fitness.request.SensorRequest", link:"reference/com/google/android/gms/fitness/request/SensorRequest.html", type:"class", deprecated:"false" },
+      { id:284, label:"com.google.android.gms.fitness.request.SensorRequest.Builder", link:"reference/com/google/android/gms/fitness/request/SensorRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:285, label:"com.google.android.gms.fitness.request.SessionInsertRequest", link:"reference/com/google/android/gms/fitness/request/SessionInsertRequest.html", type:"class", deprecated:"false" },
+      { id:286, label:"com.google.android.gms.fitness.request.SessionInsertRequest.Builder", link:"reference/com/google/android/gms/fitness/request/SessionInsertRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:287, label:"com.google.android.gms.fitness.request.SessionReadRequest", link:"reference/com/google/android/gms/fitness/request/SessionReadRequest.html", type:"class", deprecated:"false" },
+      { id:288, label:"com.google.android.gms.fitness.request.SessionReadRequest.Builder", link:"reference/com/google/android/gms/fitness/request/SessionReadRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:289, label:"com.google.android.gms.fitness.request.StartBleScanRequest", link:"reference/com/google/android/gms/fitness/request/StartBleScanRequest.html", type:"class", deprecated:"false" },
+      { id:290, label:"com.google.android.gms.fitness.request.StartBleScanRequest.Builder", link:"reference/com/google/android/gms/fitness/request/StartBleScanRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:291, label:"com.google.android.gms.fitness.result", link:"reference/com/google/android/gms/fitness/result/package-summary.html", type:"package", deprecated:"false" },
+      { id:292, label:"com.google.android.gms.fitness.result.BleDevicesResult", link:"reference/com/google/android/gms/fitness/result/BleDevicesResult.html", type:"class", deprecated:"false" },
+      { id:293, label:"com.google.android.gms.fitness.result.DailyTotalResult", link:"reference/com/google/android/gms/fitness/result/DailyTotalResult.html", type:"class", deprecated:"false" },
+      { id:294, label:"com.google.android.gms.fitness.result.DataReadResult", link:"reference/com/google/android/gms/fitness/result/DataReadResult.html", type:"class", deprecated:"false" },
+      { id:295, label:"com.google.android.gms.fitness.result.DataSourcesResult", link:"reference/com/google/android/gms/fitness/result/DataSourcesResult.html", type:"class", deprecated:"false" },
+      { id:296, label:"com.google.android.gms.fitness.result.DataTypeResult", link:"reference/com/google/android/gms/fitness/result/DataTypeResult.html", type:"class", deprecated:"false" },
+      { id:297, label:"com.google.android.gms.fitness.result.ListSubscriptionsResult", link:"reference/com/google/android/gms/fitness/result/ListSubscriptionsResult.html", type:"class", deprecated:"false" },
+      { id:298, label:"com.google.android.gms.fitness.result.SessionReadResult", link:"reference/com/google/android/gms/fitness/result/SessionReadResult.html", type:"class", deprecated:"false" },
+      { id:299, label:"com.google.android.gms.fitness.result.SessionStopResult", link:"reference/com/google/android/gms/fitness/result/SessionStopResult.html", type:"class", deprecated:"false" },
+      { id:300, label:"com.google.android.gms.fitness.service", link:"reference/com/google/android/gms/fitness/service/package-summary.html", type:"package", deprecated:"false" },
+      { id:301, label:"com.google.android.gms.fitness.service.FitnessSensorService", link:"reference/com/google/android/gms/fitness/service/FitnessSensorService.html", type:"class", deprecated:"false" },
+      { id:302, label:"com.google.android.gms.fitness.service.FitnessSensorServiceRequest", link:"reference/com/google/android/gms/fitness/service/FitnessSensorServiceRequest.html", type:"class", deprecated:"false" },
+      { id:303, label:"com.google.android.gms.fitness.service.SensorEventDispatcher", link:"reference/com/google/android/gms/fitness/service/SensorEventDispatcher.html", type:"class", deprecated:"false" },
+      { id:304, label:"com.google.android.gms.games", link:"reference/com/google/android/gms/games/package-summary.html", type:"package", deprecated:"false" },
+      { id:305, label:"com.google.android.gms.games.Game", link:"reference/com/google/android/gms/games/Game.html", type:"class", deprecated:"false" },
+      { id:306, label:"com.google.android.gms.games.GameBuffer", link:"reference/com/google/android/gms/games/GameBuffer.html", type:"class", deprecated:"false" },
+      { id:307, label:"com.google.android.gms.games.GameEntity", link:"reference/com/google/android/gms/games/GameEntity.html", type:"class", deprecated:"false" },
+      { id:308, label:"com.google.android.gms.games.Games", link:"reference/com/google/android/gms/games/Games.html", type:"class", deprecated:"false" },
+      { id:309, label:"com.google.android.gms.games.Games.GamesOptions", link:"reference/com/google/android/gms/games/Games.GamesOptions.html", type:"class", deprecated:"false" },
+      { id:310, label:"com.google.android.gms.games.Games.GamesOptions.Builder", link:"reference/com/google/android/gms/games/Games.GamesOptions.Builder.html", type:"class", deprecated:"false" },
+      { id:311, label:"com.google.android.gms.games.GamesActivityResultCodes", link:"reference/com/google/android/gms/games/GamesActivityResultCodes.html", type:"class", deprecated:"false" },
+      { id:312, label:"com.google.android.gms.games.GamesMetadata", link:"reference/com/google/android/gms/games/GamesMetadata.html", type:"class", deprecated:"false" },
+      { id:313, label:"com.google.android.gms.games.GamesMetadata.LoadGamesResult", link:"reference/com/google/android/gms/games/GamesMetadata.LoadGamesResult.html", type:"class", deprecated:"false" },
+      { id:314, label:"com.google.android.gms.games.GamesStatusCodes", link:"reference/com/google/android/gms/games/GamesStatusCodes.html", type:"class", deprecated:"false" },
+      { id:315, label:"com.google.android.gms.games.Notifications", link:"reference/com/google/android/gms/games/Notifications.html", type:"class", deprecated:"false" },
+      { id:316, label:"com.google.android.gms.games.PageDirection", link:"reference/com/google/android/gms/games/PageDirection.html", type:"class", deprecated:"false" },
+      { id:317, label:"com.google.android.gms.games.Player", link:"reference/com/google/android/gms/games/Player.html", type:"class", deprecated:"false" },
+      { id:318, label:"com.google.android.gms.games.PlayerBuffer", link:"reference/com/google/android/gms/games/PlayerBuffer.html", type:"class", deprecated:"false" },
+      { id:319, label:"com.google.android.gms.games.PlayerEntity", link:"reference/com/google/android/gms/games/PlayerEntity.html", type:"class", deprecated:"false" },
+      { id:320, label:"com.google.android.gms.games.PlayerLevel", link:"reference/com/google/android/gms/games/PlayerLevel.html", type:"class", deprecated:"false" },
+      { id:321, label:"com.google.android.gms.games.PlayerLevelInfo", link:"reference/com/google/android/gms/games/PlayerLevelInfo.html", type:"class", deprecated:"false" },
+      { id:322, label:"com.google.android.gms.games.Players", link:"reference/com/google/android/gms/games/Players.html", type:"class", deprecated:"false" },
+      { id:323, label:"com.google.android.gms.games.Players.LoadPlayersResult", link:"reference/com/google/android/gms/games/Players.LoadPlayersResult.html", type:"class", deprecated:"false" },
+      { id:324, label:"com.google.android.gms.games.Players.LoadProfileSettingsResult", link:"reference/com/google/android/gms/games/Players.LoadProfileSettingsResult.html", type:"class", deprecated:"false" },
+      { id:325, label:"com.google.android.gms.games.achievement", link:"reference/com/google/android/gms/games/achievement/package-summary.html", type:"package", deprecated:"false" },
+      { id:326, label:"com.google.android.gms.games.achievement.Achievement", link:"reference/com/google/android/gms/games/achievement/Achievement.html", type:"class", deprecated:"false" },
+      { id:327, label:"com.google.android.gms.games.achievement.AchievementBuffer", link:"reference/com/google/android/gms/games/achievement/AchievementBuffer.html", type:"class", deprecated:"false" },
+      { id:328, label:"com.google.android.gms.games.achievement.AchievementEntity", link:"reference/com/google/android/gms/games/achievement/AchievementEntity.html", type:"class", deprecated:"false" },
+      { id:329, label:"com.google.android.gms.games.achievement.Achievements", link:"reference/com/google/android/gms/games/achievement/Achievements.html", type:"class", deprecated:"false" },
+      { id:330, label:"com.google.android.gms.games.achievement.Achievements.LoadAchievementsResult", link:"reference/com/google/android/gms/games/achievement/Achievements.LoadAchievementsResult.html", type:"class", deprecated:"false" },
+      { id:331, label:"com.google.android.gms.games.achievement.Achievements.UpdateAchievementResult", link:"reference/com/google/android/gms/games/achievement/Achievements.UpdateAchievementResult.html", type:"class", deprecated:"false" },
+      { id:332, label:"com.google.android.gms.games.event", link:"reference/com/google/android/gms/games/event/package-summary.html", type:"package", deprecated:"false" },
+      { id:333, label:"com.google.android.gms.games.event.Event", link:"reference/com/google/android/gms/games/event/Event.html", type:"class", deprecated:"false" },
+      { id:334, label:"com.google.android.gms.games.event.EventBuffer", link:"reference/com/google/android/gms/games/event/EventBuffer.html", type:"class", deprecated:"false" },
+      { id:335, label:"com.google.android.gms.games.event.EventEntity", link:"reference/com/google/android/gms/games/event/EventEntity.html", type:"class", deprecated:"false" },
+      { id:336, label:"com.google.android.gms.games.event.Events", link:"reference/com/google/android/gms/games/event/Events.html", type:"class", deprecated:"false" },
+      { id:337, label:"com.google.android.gms.games.event.Events.LoadEventsResult", link:"reference/com/google/android/gms/games/event/Events.LoadEventsResult.html", type:"class", deprecated:"false" },
+      { id:338, label:"com.google.android.gms.games.leaderboard", link:"reference/com/google/android/gms/games/leaderboard/package-summary.html", type:"package", deprecated:"false" },
+      { id:339, label:"com.google.android.gms.games.leaderboard.Leaderboard", link:"reference/com/google/android/gms/games/leaderboard/Leaderboard.html", type:"class", deprecated:"false" },
+      { id:340, label:"com.google.android.gms.games.leaderboard.LeaderboardBuffer", link:"reference/com/google/android/gms/games/leaderboard/LeaderboardBuffer.html", type:"class", deprecated:"false" },
+      { id:341, label:"com.google.android.gms.games.leaderboard.LeaderboardScore", link:"reference/com/google/android/gms/games/leaderboard/LeaderboardScore.html", type:"class", deprecated:"false" },
+      { id:342, label:"com.google.android.gms.games.leaderboard.LeaderboardScoreBuffer", link:"reference/com/google/android/gms/games/leaderboard/LeaderboardScoreBuffer.html", type:"class", deprecated:"false" },
+      { id:343, label:"com.google.android.gms.games.leaderboard.LeaderboardVariant", link:"reference/com/google/android/gms/games/leaderboard/LeaderboardVariant.html", type:"class", deprecated:"false" },
+      { id:344, label:"com.google.android.gms.games.leaderboard.Leaderboards", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.html", type:"class", deprecated:"false" },
+      { id:345, label:"com.google.android.gms.games.leaderboard.Leaderboards.LeaderboardMetadataResult", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.LeaderboardMetadataResult.html", type:"class", deprecated:"false" },
+      { id:346, label:"com.google.android.gms.games.leaderboard.Leaderboards.LoadPlayerScoreResult", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadPlayerScoreResult.html", type:"class", deprecated:"false" },
+      { id:347, label:"com.google.android.gms.games.leaderboard.Leaderboards.LoadScoresResult", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.LoadScoresResult.html", type:"class", deprecated:"false" },
+      { id:348, label:"com.google.android.gms.games.leaderboard.Leaderboards.SubmitScoreResult", link:"reference/com/google/android/gms/games/leaderboard/Leaderboards.SubmitScoreResult.html", type:"class", deprecated:"false" },
+      { id:349, label:"com.google.android.gms.games.leaderboard.ScoreSubmissionData", link:"reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.html", type:"class", deprecated:"false" },
+      { id:350, label:"com.google.android.gms.games.leaderboard.ScoreSubmissionData.Result", link:"reference/com/google/android/gms/games/leaderboard/ScoreSubmissionData.Result.html", type:"class", deprecated:"false" },
+      { id:351, label:"com.google.android.gms.games.multiplayer", link:"reference/com/google/android/gms/games/multiplayer/package-summary.html", type:"package", deprecated:"false" },
+      { id:352, label:"com.google.android.gms.games.multiplayer.Invitation", link:"reference/com/google/android/gms/games/multiplayer/Invitation.html", type:"class", deprecated:"false" },
+      { id:353, label:"com.google.android.gms.games.multiplayer.InvitationBuffer", link:"reference/com/google/android/gms/games/multiplayer/InvitationBuffer.html", type:"class", deprecated:"false" },
+      { id:354, label:"com.google.android.gms.games.multiplayer.InvitationEntity", link:"reference/com/google/android/gms/games/multiplayer/InvitationEntity.html", type:"class", deprecated:"false" },
+      { id:355, label:"com.google.android.gms.games.multiplayer.Invitations", link:"reference/com/google/android/gms/games/multiplayer/Invitations.html", type:"class", deprecated:"false" },
+      { id:356, label:"com.google.android.gms.games.multiplayer.Invitations.LoadInvitationsResult", link:"reference/com/google/android/gms/games/multiplayer/Invitations.LoadInvitationsResult.html", type:"class", deprecated:"false" },
+      { id:357, label:"com.google.android.gms.games.multiplayer.Multiplayer", link:"reference/com/google/android/gms/games/multiplayer/Multiplayer.html", type:"class", deprecated:"false" },
+      { id:358, label:"com.google.android.gms.games.multiplayer.OnInvitationReceivedListener", link:"reference/com/google/android/gms/games/multiplayer/OnInvitationReceivedListener.html", type:"class", deprecated:"false" },
+      { id:359, label:"com.google.android.gms.games.multiplayer.Participant", link:"reference/com/google/android/gms/games/multiplayer/Participant.html", type:"class", deprecated:"false" },
+      { id:360, label:"com.google.android.gms.games.multiplayer.ParticipantBuffer", link:"reference/com/google/android/gms/games/multiplayer/ParticipantBuffer.html", type:"class", deprecated:"false" },
+      { id:361, label:"com.google.android.gms.games.multiplayer.ParticipantEntity", link:"reference/com/google/android/gms/games/multiplayer/ParticipantEntity.html", type:"class", deprecated:"false" },
+      { id:362, label:"com.google.android.gms.games.multiplayer.ParticipantResult", link:"reference/com/google/android/gms/games/multiplayer/ParticipantResult.html", type:"class", deprecated:"false" },
+      { id:363, label:"com.google.android.gms.games.multiplayer.ParticipantUtils", link:"reference/com/google/android/gms/games/multiplayer/ParticipantUtils.html", type:"class", deprecated:"false" },
+      { id:364, label:"com.google.android.gms.games.multiplayer.Participatable", link:"reference/com/google/android/gms/games/multiplayer/Participatable.html", type:"class", deprecated:"false" },
+      { id:365, label:"com.google.android.gms.games.multiplayer.realtime", link:"reference/com/google/android/gms/games/multiplayer/realtime/package-summary.html", type:"package", deprecated:"false" },
+      { id:366, label:"com.google.android.gms.games.multiplayer.realtime.RealTimeMessage", link:"reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessage.html", type:"class", deprecated:"false" },
+      { id:367, label:"com.google.android.gms.games.multiplayer.realtime.RealTimeMessageReceivedListener", link:"reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMessageReceivedListener.html", type:"class", deprecated:"false" },
+      { id:368, label:"com.google.android.gms.games.multiplayer.realtime.RealTimeMultiplayer", link:"reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.html", type:"class", deprecated:"false" },
+      { id:369, label:"com.google.android.gms.games.multiplayer.realtime.RealTimeMultiplayer.ReliableMessageSentCallback", link:"reference/com/google/android/gms/games/multiplayer/realtime/RealTimeMultiplayer.ReliableMessageSentCallback.html", type:"class", deprecated:"false" },
+      { id:370, label:"com.google.android.gms.games.multiplayer.realtime.Room", link:"reference/com/google/android/gms/games/multiplayer/realtime/Room.html", type:"class", deprecated:"false" },
+      { id:371, label:"com.google.android.gms.games.multiplayer.realtime.RoomConfig", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.html", type:"class", deprecated:"false" },
+      { id:372, label:"com.google.android.gms.games.multiplayer.realtime.RoomConfig.Builder", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomConfig.Builder.html", type:"class", deprecated:"false" },
+      { id:373, label:"com.google.android.gms.games.multiplayer.realtime.RoomEntity", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomEntity.html", type:"class", deprecated:"false" },
+      { id:374, label:"com.google.android.gms.games.multiplayer.realtime.RoomStatusUpdateListener", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomStatusUpdateListener.html", type:"class", deprecated:"false" },
+      { id:375, label:"com.google.android.gms.games.multiplayer.realtime.RoomUpdateListener", link:"reference/com/google/android/gms/games/multiplayer/realtime/RoomUpdateListener.html", type:"class", deprecated:"false" },
+      { id:376, label:"com.google.android.gms.games.multiplayer.turnbased", link:"reference/com/google/android/gms/games/multiplayer/turnbased/package-summary.html", type:"package", deprecated:"false" },
+      { id:377, label:"com.google.android.gms.games.multiplayer.turnbased.LoadMatchesResponse", link:"reference/com/google/android/gms/games/multiplayer/turnbased/LoadMatchesResponse.html", type:"class", deprecated:"false" },
+      { id:378, label:"com.google.android.gms.games.multiplayer.turnbased.OnTurnBasedMatchUpdateReceivedListener", link:"reference/com/google/android/gms/games/multiplayer/turnbased/OnTurnBasedMatchUpdateReceivedListener.html", type:"class", deprecated:"false" },
+      { id:379, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatch", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatch.html", type:"class", deprecated:"false" },
+      { id:380, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchBuffer", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchBuffer.html", type:"class", deprecated:"false" },
+      { id:381, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchConfig", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.html", type:"class", deprecated:"false" },
+      { id:382, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchConfig.Builder", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchConfig.Builder.html", type:"class", deprecated:"false" },
+      { id:383, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMatchEntity", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMatchEntity.html", type:"class", deprecated:"false" },
+      { id:384, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.html", type:"class", deprecated:"false" },
+      { id:385, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.CancelMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.CancelMatchResult.html", type:"class", deprecated:"false" },
+      { id:386, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.InitiateMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.InitiateMatchResult.html", type:"class", deprecated:"false" },
+      { id:387, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.LeaveMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LeaveMatchResult.html", type:"class", deprecated:"false" },
+      { id:388, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.LoadMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchResult.html", type:"class", deprecated:"false" },
+      { id:389, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.LoadMatchesResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.LoadMatchesResult.html", type:"class", deprecated:"false" },
+      { id:390, label:"com.google.android.gms.games.multiplayer.turnbased.TurnBasedMultiplayer.UpdateMatchResult", link:"reference/com/google/android/gms/games/multiplayer/turnbased/TurnBasedMultiplayer.UpdateMatchResult.html", type:"class", deprecated:"false" },
+      { id:391, label:"com.google.android.gms.games.quest", link:"reference/com/google/android/gms/games/quest/package-summary.html", type:"package", deprecated:"false" },
+      { id:392, label:"com.google.android.gms.games.quest.Milestone", link:"reference/com/google/android/gms/games/quest/Milestone.html", type:"class", deprecated:"false" },
+      { id:393, label:"com.google.android.gms.games.quest.MilestoneBuffer", link:"reference/com/google/android/gms/games/quest/MilestoneBuffer.html", type:"class", deprecated:"false" },
+      { id:394, label:"com.google.android.gms.games.quest.MilestoneEntity", link:"reference/com/google/android/gms/games/quest/MilestoneEntity.html", type:"class", deprecated:"false" },
+      { id:395, label:"com.google.android.gms.games.quest.Quest", link:"reference/com/google/android/gms/games/quest/Quest.html", type:"class", deprecated:"false" },
+      { id:396, label:"com.google.android.gms.games.quest.QuestBuffer", link:"reference/com/google/android/gms/games/quest/QuestBuffer.html", type:"class", deprecated:"false" },
+      { id:397, label:"com.google.android.gms.games.quest.QuestEntity", link:"reference/com/google/android/gms/games/quest/QuestEntity.html", type:"class", deprecated:"false" },
+      { id:398, label:"com.google.android.gms.games.quest.QuestUpdateListener", link:"reference/com/google/android/gms/games/quest/QuestUpdateListener.html", type:"class", deprecated:"false" },
+      { id:399, label:"com.google.android.gms.games.quest.Quests", link:"reference/com/google/android/gms/games/quest/Quests.html", type:"class", deprecated:"false" },
+      { id:400, label:"com.google.android.gms.games.quest.Quests.AcceptQuestResult", link:"reference/com/google/android/gms/games/quest/Quests.AcceptQuestResult.html", type:"class", deprecated:"false" },
+      { id:401, label:"com.google.android.gms.games.quest.Quests.ClaimMilestoneResult", link:"reference/com/google/android/gms/games/quest/Quests.ClaimMilestoneResult.html", type:"class", deprecated:"false" },
+      { id:402, label:"com.google.android.gms.games.quest.Quests.LoadQuestsResult", link:"reference/com/google/android/gms/games/quest/Quests.LoadQuestsResult.html", type:"class", deprecated:"false" },
+      { id:403, label:"com.google.android.gms.games.request", link:"reference/com/google/android/gms/games/request/package-summary.html", type:"package", deprecated:"false" },
+      { id:404, label:"com.google.android.gms.games.request.GameRequest", link:"reference/com/google/android/gms/games/request/GameRequest.html", type:"class", deprecated:"false" },
+      { id:405, label:"com.google.android.gms.games.request.GameRequestBuffer", link:"reference/com/google/android/gms/games/request/GameRequestBuffer.html", type:"class", deprecated:"false" },
+      { id:406, label:"com.google.android.gms.games.request.GameRequestEntity", link:"reference/com/google/android/gms/games/request/GameRequestEntity.html", type:"class", deprecated:"false" },
+      { id:407, label:"com.google.android.gms.games.request.OnRequestReceivedListener", link:"reference/com/google/android/gms/games/request/OnRequestReceivedListener.html", type:"class", deprecated:"false" },
+      { id:408, label:"com.google.android.gms.games.request.Requests", link:"reference/com/google/android/gms/games/request/Requests.html", type:"class", deprecated:"false" },
+      { id:409, label:"com.google.android.gms.games.request.Requests.LoadRequestsResult", link:"reference/com/google/android/gms/games/request/Requests.LoadRequestsResult.html", type:"class", deprecated:"false" },
+      { id:410, label:"com.google.android.gms.games.request.Requests.UpdateRequestsResult", link:"reference/com/google/android/gms/games/request/Requests.UpdateRequestsResult.html", type:"class", deprecated:"false" },
+      { id:411, label:"com.google.android.gms.games.snapshot", link:"reference/com/google/android/gms/games/snapshot/package-summary.html", type:"package", deprecated:"false" },
+      { id:412, label:"com.google.android.gms.games.snapshot.Snapshot", link:"reference/com/google/android/gms/games/snapshot/Snapshot.html", type:"class", deprecated:"false" },
+      { id:413, label:"com.google.android.gms.games.snapshot.SnapshotContents", link:"reference/com/google/android/gms/games/snapshot/SnapshotContents.html", type:"class", deprecated:"false" },
+      { id:414, label:"com.google.android.gms.games.snapshot.SnapshotEntity", link:"reference/com/google/android/gms/games/snapshot/SnapshotEntity.html", type:"class", deprecated:"false" },
+      { id:415, label:"com.google.android.gms.games.snapshot.SnapshotMetadata", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadata.html", type:"class", deprecated:"false" },
+      { id:416, label:"com.google.android.gms.games.snapshot.SnapshotMetadataBuffer", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadataBuffer.html", type:"class", deprecated:"false" },
+      { id:417, label:"com.google.android.gms.games.snapshot.SnapshotMetadataChange", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.html", type:"class", deprecated:"false" },
+      { id:418, label:"com.google.android.gms.games.snapshot.SnapshotMetadataChange.Builder", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadataChange.Builder.html", type:"class", deprecated:"false" },
+      { id:419, label:"com.google.android.gms.games.snapshot.SnapshotMetadataEntity", link:"reference/com/google/android/gms/games/snapshot/SnapshotMetadataEntity.html", type:"class", deprecated:"false" },
+      { id:420, label:"com.google.android.gms.games.snapshot.Snapshots", link:"reference/com/google/android/gms/games/snapshot/Snapshots.html", type:"class", deprecated:"false" },
+      { id:421, label:"com.google.android.gms.games.snapshot.Snapshots.CommitSnapshotResult", link:"reference/com/google/android/gms/games/snapshot/Snapshots.CommitSnapshotResult.html", type:"class", deprecated:"false" },
+      { id:422, label:"com.google.android.gms.games.snapshot.Snapshots.DeleteSnapshotResult", link:"reference/com/google/android/gms/games/snapshot/Snapshots.DeleteSnapshotResult.html", type:"class", deprecated:"false" },
+      { id:423, label:"com.google.android.gms.games.snapshot.Snapshots.LoadSnapshotsResult", link:"reference/com/google/android/gms/games/snapshot/Snapshots.LoadSnapshotsResult.html", type:"class", deprecated:"false" },
+      { id:424, label:"com.google.android.gms.games.snapshot.Snapshots.OpenSnapshotResult", link:"reference/com/google/android/gms/games/snapshot/Snapshots.OpenSnapshotResult.html", type:"class", deprecated:"false" },
+      { id:425, label:"com.google.android.gms.gcm", link:"reference/com/google/android/gms/gcm/package-summary.html", type:"package", deprecated:"false" },
+      { id:426, label:"com.google.android.gms.gcm.GoogleCloudMessaging", link:"reference/com/google/android/gms/gcm/GoogleCloudMessaging.html", type:"class", deprecated:"false" },
+      { id:427, label:"com.google.android.gms.identity.intents", link:"reference/com/google/android/gms/identity/intents/package-summary.html", type:"package", deprecated:"false" },
+      { id:428, label:"com.google.android.gms.identity.intents.Address", link:"reference/com/google/android/gms/identity/intents/Address.html", type:"class", deprecated:"false" },
+      { id:429, label:"com.google.android.gms.identity.intents.Address.AddressOptions", link:"reference/com/google/android/gms/identity/intents/Address.AddressOptions.html", type:"class", deprecated:"false" },
+      { id:430, label:"com.google.android.gms.identity.intents.AddressConstants", link:"reference/com/google/android/gms/identity/intents/AddressConstants.html", type:"class", deprecated:"false" },
+      { id:431, label:"com.google.android.gms.identity.intents.AddressConstants.ErrorCodes", link:"reference/com/google/android/gms/identity/intents/AddressConstants.ErrorCodes.html", type:"class", deprecated:"false" },
+      { id:432, label:"com.google.android.gms.identity.intents.AddressConstants.Extras", link:"reference/com/google/android/gms/identity/intents/AddressConstants.Extras.html", type:"class", deprecated:"false" },
+      { id:433, label:"com.google.android.gms.identity.intents.AddressConstants.ResultCodes", link:"reference/com/google/android/gms/identity/intents/AddressConstants.ResultCodes.html", type:"class", deprecated:"false" },
+      { id:434, label:"com.google.android.gms.identity.intents.AddressConstants.Themes", link:"reference/com/google/android/gms/identity/intents/AddressConstants.Themes.html", type:"class", deprecated:"false" },
+      { id:435, label:"com.google.android.gms.identity.intents.UserAddressRequest", link:"reference/com/google/android/gms/identity/intents/UserAddressRequest.html", type:"class", deprecated:"false" },
+      { id:436, label:"com.google.android.gms.identity.intents.UserAddressRequest.Builder", link:"reference/com/google/android/gms/identity/intents/UserAddressRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:437, label:"com.google.android.gms.identity.intents.model", link:"reference/com/google/android/gms/identity/intents/model/package-summary.html", type:"package", deprecated:"false" },
+      { id:438, label:"com.google.android.gms.identity.intents.model.CountrySpecification", link:"reference/com/google/android/gms/identity/intents/model/CountrySpecification.html", type:"class", deprecated:"false" },
+      { id:439, label:"com.google.android.gms.identity.intents.model.UserAddress", link:"reference/com/google/android/gms/identity/intents/model/UserAddress.html", type:"class", deprecated:"false" },
+      { id:440, label:"com.google.android.gms.location", link:"reference/com/google/android/gms/location/package-summary.html", type:"package", deprecated:"false" },
+      { id:441, label:"com.google.android.gms.location.ActivityRecognition", link:"reference/com/google/android/gms/location/ActivityRecognition.html", type:"class", deprecated:"false" },
+      { id:442, label:"com.google.android.gms.location.ActivityRecognitionApi", link:"reference/com/google/android/gms/location/ActivityRecognitionApi.html", type:"class", deprecated:"false" },
+      { id:443, label:"com.google.android.gms.location.ActivityRecognitionResult", link:"reference/com/google/android/gms/location/ActivityRecognitionResult.html", type:"class", deprecated:"false" },
+      { id:444, label:"com.google.android.gms.location.DetectedActivity", link:"reference/com/google/android/gms/location/DetectedActivity.html", type:"class", deprecated:"false" },
+      { id:445, label:"com.google.android.gms.location.FusedLocationProviderApi", link:"reference/com/google/android/gms/location/FusedLocationProviderApi.html", type:"class", deprecated:"false" },
+      { id:446, label:"com.google.android.gms.location.Geofence", link:"reference/com/google/android/gms/location/Geofence.html", type:"class", deprecated:"false" },
+      { id:447, label:"com.google.android.gms.location.Geofence.Builder", link:"reference/com/google/android/gms/location/Geofence.Builder.html", type:"class", deprecated:"false" },
+      { id:448, label:"com.google.android.gms.location.GeofenceStatusCodes", link:"reference/com/google/android/gms/location/GeofenceStatusCodes.html", type:"class", deprecated:"false" },
+      { id:449, label:"com.google.android.gms.location.GeofencingApi", link:"reference/com/google/android/gms/location/GeofencingApi.html", type:"class", deprecated:"false" },
+      { id:450, label:"com.google.android.gms.location.GeofencingEvent", link:"reference/com/google/android/gms/location/GeofencingEvent.html", type:"class", deprecated:"false" },
+      { id:451, label:"com.google.android.gms.location.GeofencingRequest", link:"reference/com/google/android/gms/location/GeofencingRequest.html", type:"class", deprecated:"false" },
+      { id:452, label:"com.google.android.gms.location.GeofencingRequest.Builder", link:"reference/com/google/android/gms/location/GeofencingRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:453, label:"com.google.android.gms.location.LocationAvailability", link:"reference/com/google/android/gms/location/LocationAvailability.html", type:"class", deprecated:"false" },
+      { id:454, label:"com.google.android.gms.location.LocationCallback", link:"reference/com/google/android/gms/location/LocationCallback.html", type:"class", deprecated:"false" },
+      { id:455, label:"com.google.android.gms.location.LocationListener", link:"reference/com/google/android/gms/location/LocationListener.html", type:"class", deprecated:"false" },
+      { id:456, label:"com.google.android.gms.location.LocationRequest", link:"reference/com/google/android/gms/location/LocationRequest.html", type:"class", deprecated:"false" },
+      { id:457, label:"com.google.android.gms.location.LocationResult", link:"reference/com/google/android/gms/location/LocationResult.html", type:"class", deprecated:"false" },
+      { id:458, label:"com.google.android.gms.location.LocationServices", link:"reference/com/google/android/gms/location/LocationServices.html", type:"class", deprecated:"false" },
+      { id:459, label:"com.google.android.gms.location.LocationSettingsRequest", link:"reference/com/google/android/gms/location/LocationSettingsRequest.html", type:"class", deprecated:"false" },
+      { id:460, label:"com.google.android.gms.location.LocationSettingsRequest.Builder", link:"reference/com/google/android/gms/location/LocationSettingsRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:461, label:"com.google.android.gms.location.LocationSettingsResult", link:"reference/com/google/android/gms/location/LocationSettingsResult.html", type:"class", deprecated:"false" },
+      { id:462, label:"com.google.android.gms.location.LocationSettingsStates", link:"reference/com/google/android/gms/location/LocationSettingsStates.html", type:"class", deprecated:"false" },
+      { id:463, label:"com.google.android.gms.location.LocationSettingsStatusCodes", link:"reference/com/google/android/gms/location/LocationSettingsStatusCodes.html", type:"class", deprecated:"false" },
+      { id:464, label:"com.google.android.gms.location.LocationStatusCodes", link:"reference/com/google/android/gms/location/LocationStatusCodes.html", type:"class", deprecated:"true" },
+      { id:465, label:"com.google.android.gms.location.SettingsApi", link:"reference/com/google/android/gms/location/SettingsApi.html", type:"class", deprecated:"false" },
+      { id:466, label:"com.google.android.gms.location.places", link:"reference/com/google/android/gms/location/places/package-summary.html", type:"package", deprecated:"false" },
+      { id:467, label:"com.google.android.gms.location.places.AddPlaceRequest", link:"reference/com/google/android/gms/location/places/AddPlaceRequest.html", type:"class", deprecated:"false" },
+      { id:468, label:"com.google.android.gms.location.places.AutocompleteFilter", link:"reference/com/google/android/gms/location/places/AutocompleteFilter.html", type:"class", deprecated:"false" },
+      { id:469, label:"com.google.android.gms.location.places.AutocompletePrediction", link:"reference/com/google/android/gms/location/places/AutocompletePrediction.html", type:"class", deprecated:"false" },
+      { id:470, label:"com.google.android.gms.location.places.AutocompletePrediction.Substring", link:"reference/com/google/android/gms/location/places/AutocompletePrediction.Substring.html", type:"class", deprecated:"false" },
+      { id:471, label:"com.google.android.gms.location.places.AutocompletePredictionBuffer", link:"reference/com/google/android/gms/location/places/AutocompletePredictionBuffer.html", type:"class", deprecated:"false" },
+      { id:472, label:"com.google.android.gms.location.places.GeoDataApi", link:"reference/com/google/android/gms/location/places/GeoDataApi.html", type:"class", deprecated:"false" },
+      { id:473, label:"com.google.android.gms.location.places.Place", link:"reference/com/google/android/gms/location/places/Place.html", type:"class", deprecated:"false" },
+      { id:474, label:"com.google.android.gms.location.places.PlaceBuffer", link:"reference/com/google/android/gms/location/places/PlaceBuffer.html", type:"class", deprecated:"false" },
+      { id:475, label:"com.google.android.gms.location.places.PlaceDetectionApi", link:"reference/com/google/android/gms/location/places/PlaceDetectionApi.html", type:"class", deprecated:"false" },
+      { id:476, label:"com.google.android.gms.location.places.PlaceFilter", link:"reference/com/google/android/gms/location/places/PlaceFilter.html", type:"class", deprecated:"false" },
+      { id:477, label:"com.google.android.gms.location.places.PlaceLikelihood", link:"reference/com/google/android/gms/location/places/PlaceLikelihood.html", type:"class", deprecated:"false" },
+      { id:478, label:"com.google.android.gms.location.places.PlaceLikelihoodBuffer", link:"reference/com/google/android/gms/location/places/PlaceLikelihoodBuffer.html", type:"class", deprecated:"false" },
+      { id:479, label:"com.google.android.gms.location.places.PlaceReport", link:"reference/com/google/android/gms/location/places/PlaceReport.html", type:"class", deprecated:"false" },
+      { id:480, label:"com.google.android.gms.location.places.PlaceTypes", link:"reference/com/google/android/gms/location/places/PlaceTypes.html", type:"class", deprecated:"false" },
+      { id:481, label:"com.google.android.gms.location.places.Places", link:"reference/com/google/android/gms/location/places/Places.html", type:"class", deprecated:"false" },
+      { id:482, label:"com.google.android.gms.location.places.PlacesOptions", link:"reference/com/google/android/gms/location/places/PlacesOptions.html", type:"class", deprecated:"false" },
+      { id:483, label:"com.google.android.gms.location.places.PlacesOptions.Builder", link:"reference/com/google/android/gms/location/places/PlacesOptions.Builder.html", type:"class", deprecated:"false" },
+      { id:484, label:"com.google.android.gms.location.places.PlacesStatusCodes", link:"reference/com/google/android/gms/location/places/PlacesStatusCodes.html", type:"class", deprecated:"false" },
+      { id:485, label:"com.google.android.gms.location.places.ui", link:"reference/com/google/android/gms/location/places/ui/package-summary.html", type:"package", deprecated:"false" },
+      { id:486, label:"com.google.android.gms.location.places.ui.PlacePicker", link:"reference/com/google/android/gms/location/places/ui/PlacePicker.html", type:"class", deprecated:"false" },
+      { id:487, label:"com.google.android.gms.location.places.ui.PlacePicker.IntentBuilder", link:"reference/com/google/android/gms/location/places/ui/PlacePicker.IntentBuilder.html", type:"class", deprecated:"false" },
+      { id:488, label:"com.google.android.gms.maps", link:"reference/com/google/android/gms/maps/package-summary.html", type:"package", deprecated:"false" },
+      { id:489, label:"com.google.android.gms.maps.CameraUpdate", link:"reference/com/google/android/gms/maps/CameraUpdate.html", type:"class", deprecated:"false" },
+      { id:490, label:"com.google.android.gms.maps.CameraUpdateFactory", link:"reference/com/google/android/gms/maps/CameraUpdateFactory.html", type:"class", deprecated:"false" },
+      { id:491, label:"com.google.android.gms.maps.GoogleMap", link:"reference/com/google/android/gms/maps/GoogleMap.html", type:"class", deprecated:"false" },
+      { id:492, label:"com.google.android.gms.maps.GoogleMap.CancelableCallback", link:"reference/com/google/android/gms/maps/GoogleMap.CancelableCallback.html", type:"class", deprecated:"false" },
+      { id:493, label:"com.google.android.gms.maps.GoogleMap.InfoWindowAdapter", link:"reference/com/google/android/gms/maps/GoogleMap.InfoWindowAdapter.html", type:"class", deprecated:"false" },
+      { id:494, label:"com.google.android.gms.maps.GoogleMap.OnCameraChangeListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnCameraChangeListener.html", type:"class", deprecated:"false" },
+      { id:495, label:"com.google.android.gms.maps.GoogleMap.OnIndoorStateChangeListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnIndoorStateChangeListener.html", type:"class", deprecated:"false" },
+      { id:496, label:"com.google.android.gms.maps.GoogleMap.OnInfoWindowClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnInfoWindowClickListener.html", type:"class", deprecated:"false" },
+      { id:497, label:"com.google.android.gms.maps.GoogleMap.OnMapClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html", type:"class", deprecated:"false" },
+      { id:498, label:"com.google.android.gms.maps.GoogleMap.OnMapLoadedCallback", link:"reference/com/google/android/gms/maps/GoogleMap.OnMapLoadedCallback.html", type:"class", deprecated:"false" },
+      { id:499, label:"com.google.android.gms.maps.GoogleMap.OnMapLongClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMapLongClickListener.html", type:"class", deprecated:"false" },
+      { id:500, label:"com.google.android.gms.maps.GoogleMap.OnMarkerClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMarkerClickListener.html", type:"class", deprecated:"false" },
+      { id:501, label:"com.google.android.gms.maps.GoogleMap.OnMarkerDragListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMarkerDragListener.html", type:"class", deprecated:"false" },
+      { id:502, label:"com.google.android.gms.maps.GoogleMap.OnMyLocationButtonClickListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMyLocationButtonClickListener.html", type:"class", deprecated:"false" },
+      { id:503, label:"com.google.android.gms.maps.GoogleMap.OnMyLocationChangeListener", link:"reference/com/google/android/gms/maps/GoogleMap.OnMyLocationChangeListener.html", type:"class", deprecated:"true" },
+      { id:504, label:"com.google.android.gms.maps.GoogleMap.SnapshotReadyCallback", link:"reference/com/google/android/gms/maps/GoogleMap.SnapshotReadyCallback.html", type:"class", deprecated:"false" },
+      { id:505, label:"com.google.android.gms.maps.GoogleMapOptions", link:"reference/com/google/android/gms/maps/GoogleMapOptions.html", type:"class", deprecated:"false" },
+      { id:506, label:"com.google.android.gms.maps.LocationSource", link:"reference/com/google/android/gms/maps/LocationSource.html", type:"class", deprecated:"false" },
+      { id:507, label:"com.google.android.gms.maps.LocationSource.OnLocationChangedListener", link:"reference/com/google/android/gms/maps/LocationSource.OnLocationChangedListener.html", type:"class", deprecated:"false" },
+      { id:508, label:"com.google.android.gms.maps.MapFragment", link:"reference/com/google/android/gms/maps/MapFragment.html", type:"class", deprecated:"false" },
+      { id:509, label:"com.google.android.gms.maps.MapView", link:"reference/com/google/android/gms/maps/MapView.html", type:"class", deprecated:"false" },
+      { id:510, label:"com.google.android.gms.maps.MapsInitializer", link:"reference/com/google/android/gms/maps/MapsInitializer.html", type:"class", deprecated:"false" },
+      { id:511, label:"com.google.android.gms.maps.OnMapReadyCallback", link:"reference/com/google/android/gms/maps/OnMapReadyCallback.html", type:"class", deprecated:"false" },
+      { id:512, label:"com.google.android.gms.maps.OnStreetViewPanoramaReadyCallback", link:"reference/com/google/android/gms/maps/OnStreetViewPanoramaReadyCallback.html", type:"class", deprecated:"false" },
+      { id:513, label:"com.google.android.gms.maps.Projection", link:"reference/com/google/android/gms/maps/Projection.html", type:"class", deprecated:"false" },
+      { id:514, label:"com.google.android.gms.maps.StreetViewPanorama", link:"reference/com/google/android/gms/maps/StreetViewPanorama.html", type:"class", deprecated:"false" },
+      { id:515, label:"com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener", link:"reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaCameraChangeListener.html", type:"class", deprecated:"false" },
+      { id:516, label:"com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaChangeListener", link:"reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaChangeListener.html", type:"class", deprecated:"false" },
+      { id:517, label:"com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaClickListener", link:"reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaClickListener.html", type:"class", deprecated:"false" },
+      { id:518, label:"com.google.android.gms.maps.StreetViewPanorama.OnStreetViewPanoramaLongClickListener", link:"reference/com/google/android/gms/maps/StreetViewPanorama.OnStreetViewPanoramaLongClickListener.html", type:"class", deprecated:"false" },
+      { id:519, label:"com.google.android.gms.maps.StreetViewPanoramaFragment", link:"reference/com/google/android/gms/maps/StreetViewPanoramaFragment.html", type:"class", deprecated:"false" },
+      { id:520, label:"com.google.android.gms.maps.StreetViewPanoramaOptions", link:"reference/com/google/android/gms/maps/StreetViewPanoramaOptions.html", type:"class", deprecated:"false" },
+      { id:521, label:"com.google.android.gms.maps.StreetViewPanoramaView", link:"reference/com/google/android/gms/maps/StreetViewPanoramaView.html", type:"class", deprecated:"false" },
+      { id:522, label:"com.google.android.gms.maps.SupportMapFragment", link:"reference/com/google/android/gms/maps/SupportMapFragment.html", type:"class", deprecated:"false" },
+      { id:523, label:"com.google.android.gms.maps.SupportStreetViewPanoramaFragment", link:"reference/com/google/android/gms/maps/SupportStreetViewPanoramaFragment.html", type:"class", deprecated:"false" },
+      { id:524, label:"com.google.android.gms.maps.UiSettings", link:"reference/com/google/android/gms/maps/UiSettings.html", type:"class", deprecated:"false" },
+      { id:525, label:"com.google.android.gms.maps.model", link:"reference/com/google/android/gms/maps/model/package-summary.html", type:"package", deprecated:"false" },
+      { id:526, label:"com.google.android.gms.maps.model.BitmapDescriptor", link:"reference/com/google/android/gms/maps/model/BitmapDescriptor.html", type:"class", deprecated:"false" },
+      { id:527, label:"com.google.android.gms.maps.model.BitmapDescriptorFactory", link:"reference/com/google/android/gms/maps/model/BitmapDescriptorFactory.html", type:"class", deprecated:"false" },
+      { id:528, label:"com.google.android.gms.maps.model.CameraPosition", link:"reference/com/google/android/gms/maps/model/CameraPosition.html", type:"class", deprecated:"false" },
+      { id:529, label:"com.google.android.gms.maps.model.CameraPosition.Builder", link:"reference/com/google/android/gms/maps/model/CameraPosition.Builder.html", type:"class", deprecated:"false" },
+      { id:530, label:"com.google.android.gms.maps.model.Circle", link:"reference/com/google/android/gms/maps/model/Circle.html", type:"class", deprecated:"false" },
+      { id:531, label:"com.google.android.gms.maps.model.CircleOptions", link:"reference/com/google/android/gms/maps/model/CircleOptions.html", type:"class", deprecated:"false" },
+      { id:532, label:"com.google.android.gms.maps.model.GroundOverlay", link:"reference/com/google/android/gms/maps/model/GroundOverlay.html", type:"class", deprecated:"false" },
+      { id:533, label:"com.google.android.gms.maps.model.GroundOverlayOptions", link:"reference/com/google/android/gms/maps/model/GroundOverlayOptions.html", type:"class", deprecated:"false" },
+      { id:534, label:"com.google.android.gms.maps.model.IndoorBuilding", link:"reference/com/google/android/gms/maps/model/IndoorBuilding.html", type:"class", deprecated:"false" },
+      { id:535, label:"com.google.android.gms.maps.model.IndoorLevel", link:"reference/com/google/android/gms/maps/model/IndoorLevel.html", type:"class", deprecated:"false" },
+      { id:536, label:"com.google.android.gms.maps.model.LatLng", link:"reference/com/google/android/gms/maps/model/LatLng.html", type:"class", deprecated:"false" },
+      { id:537, label:"com.google.android.gms.maps.model.LatLngBounds", link:"reference/com/google/android/gms/maps/model/LatLngBounds.html", type:"class", deprecated:"false" },
+      { id:538, label:"com.google.android.gms.maps.model.LatLngBounds.Builder", link:"reference/com/google/android/gms/maps/model/LatLngBounds.Builder.html", type:"class", deprecated:"false" },
+      { id:539, label:"com.google.android.gms.maps.model.Marker", link:"reference/com/google/android/gms/maps/model/Marker.html", type:"class", deprecated:"false" },
+      { id:540, label:"com.google.android.gms.maps.model.MarkerOptions", link:"reference/com/google/android/gms/maps/model/MarkerOptions.html", type:"class", deprecated:"false" },
+      { id:541, label:"com.google.android.gms.maps.model.Polygon", link:"reference/com/google/android/gms/maps/model/Polygon.html", type:"class", deprecated:"false" },
+      { id:542, label:"com.google.android.gms.maps.model.PolygonOptions", link:"reference/com/google/android/gms/maps/model/PolygonOptions.html", type:"class", deprecated:"false" },
+      { id:543, label:"com.google.android.gms.maps.model.Polyline", link:"reference/com/google/android/gms/maps/model/Polyline.html", type:"class", deprecated:"false" },
+      { id:544, label:"com.google.android.gms.maps.model.PolylineOptions", link:"reference/com/google/android/gms/maps/model/PolylineOptions.html", type:"class", deprecated:"false" },
+      { id:545, label:"com.google.android.gms.maps.model.RuntimeRemoteException", link:"reference/com/google/android/gms/maps/model/RuntimeRemoteException.html", type:"class", deprecated:"false" },
+      { id:546, label:"com.google.android.gms.maps.model.StreetViewPanoramaCamera", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.html", type:"class", deprecated:"false" },
+      { id:547, label:"com.google.android.gms.maps.model.StreetViewPanoramaCamera.Builder", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaCamera.Builder.html", type:"class", deprecated:"false" },
+      { id:548, label:"com.google.android.gms.maps.model.StreetViewPanoramaLink", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaLink.html", type:"class", deprecated:"false" },
+      { id:549, label:"com.google.android.gms.maps.model.StreetViewPanoramaLocation", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaLocation.html", type:"class", deprecated:"false" },
+      { id:550, label:"com.google.android.gms.maps.model.StreetViewPanoramaOrientation", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.html", type:"class", deprecated:"false" },
+      { id:551, label:"com.google.android.gms.maps.model.StreetViewPanoramaOrientation.Builder", link:"reference/com/google/android/gms/maps/model/StreetViewPanoramaOrientation.Builder.html", type:"class", deprecated:"false" },
+      { id:552, label:"com.google.android.gms.maps.model.Tile", link:"reference/com/google/android/gms/maps/model/Tile.html", type:"class", deprecated:"false" },
+      { id:553, label:"com.google.android.gms.maps.model.TileOverlay", link:"reference/com/google/android/gms/maps/model/TileOverlay.html", type:"class", deprecated:"false" },
+      { id:554, label:"com.google.android.gms.maps.model.TileOverlayOptions", link:"reference/com/google/android/gms/maps/model/TileOverlayOptions.html", type:"class", deprecated:"false" },
+      { id:555, label:"com.google.android.gms.maps.model.TileProvider", link:"reference/com/google/android/gms/maps/model/TileProvider.html", type:"class", deprecated:"false" },
+      { id:556, label:"com.google.android.gms.maps.model.UrlTileProvider", link:"reference/com/google/android/gms/maps/model/UrlTileProvider.html", type:"class", deprecated:"false" },
+      { id:557, label:"com.google.android.gms.maps.model.VisibleRegion", link:"reference/com/google/android/gms/maps/model/VisibleRegion.html", type:"class", deprecated:"false" },
+      { id:558, label:"com.google.android.gms.nearby", link:"reference/com/google/android/gms/nearby/package-summary.html", type:"package", deprecated:"false" },
+      { id:559, label:"com.google.android.gms.nearby.Nearby", link:"reference/com/google/android/gms/nearby/Nearby.html", type:"class", deprecated:"false" },
+      { id:560, label:"com.google.android.gms.nearby.connection", link:"reference/com/google/android/gms/nearby/connection/package-summary.html", type:"package", deprecated:"false" },
+      { id:561, label:"com.google.android.gms.nearby.connection.AppIdentifier", link:"reference/com/google/android/gms/nearby/connection/AppIdentifier.html", type:"class", deprecated:"false" },
+      { id:562, label:"com.google.android.gms.nearby.connection.AppMetadata", link:"reference/com/google/android/gms/nearby/connection/AppMetadata.html", type:"class", deprecated:"false" },
+      { id:563, label:"com.google.android.gms.nearby.connection.Connections", link:"reference/com/google/android/gms/nearby/connection/Connections.html", type:"class", deprecated:"false" },
+      { id:564, label:"com.google.android.gms.nearby.connection.Connections.ConnectionRequestListener", link:"reference/com/google/android/gms/nearby/connection/Connections.ConnectionRequestListener.html", type:"class", deprecated:"false" },
+      { id:565, label:"com.google.android.gms.nearby.connection.Connections.ConnectionResponseCallback", link:"reference/com/google/android/gms/nearby/connection/Connections.ConnectionResponseCallback.html", type:"class", deprecated:"false" },
+      { id:566, label:"com.google.android.gms.nearby.connection.Connections.EndpointDiscoveryListener", link:"reference/com/google/android/gms/nearby/connection/Connections.EndpointDiscoveryListener.html", type:"class", deprecated:"false" },
+      { id:567, label:"com.google.android.gms.nearby.connection.Connections.MessageListener", link:"reference/com/google/android/gms/nearby/connection/Connections.MessageListener.html", type:"class", deprecated:"false" },
+      { id:568, label:"com.google.android.gms.nearby.connection.Connections.StartAdvertisingResult", link:"reference/com/google/android/gms/nearby/connection/Connections.StartAdvertisingResult.html", type:"class", deprecated:"false" },
+      { id:569, label:"com.google.android.gms.nearby.connection.ConnectionsStatusCodes", link:"reference/com/google/android/gms/nearby/connection/ConnectionsStatusCodes.html", type:"class", deprecated:"false" },
+      { id:570, label:"com.google.android.gms.panorama", link:"reference/com/google/android/gms/panorama/package-summary.html", type:"package", deprecated:"false" },
+      { id:571, label:"com.google.android.gms.panorama.Panorama", link:"reference/com/google/android/gms/panorama/Panorama.html", type:"class", deprecated:"false" },
+      { id:572, label:"com.google.android.gms.panorama.PanoramaApi", link:"reference/com/google/android/gms/panorama/PanoramaApi.html", type:"class", deprecated:"false" },
+      { id:573, label:"com.google.android.gms.panorama.PanoramaApi.PanoramaResult", link:"reference/com/google/android/gms/panorama/PanoramaApi.PanoramaResult.html", type:"class", deprecated:"false" },
+      { id:574, label:"com.google.android.gms.plus", link:"reference/com/google/android/gms/plus/package-summary.html", type:"package", deprecated:"false" },
+      { id:575, label:"com.google.android.gms.plus.Account", link:"reference/com/google/android/gms/plus/Account.html", type:"class", deprecated:"false" },
+      { id:576, label:"com.google.android.gms.plus.Moments", link:"reference/com/google/android/gms/plus/Moments.html", type:"class", deprecated:"false" },
+      { id:577, label:"com.google.android.gms.plus.Moments.LoadMomentsResult", link:"reference/com/google/android/gms/plus/Moments.LoadMomentsResult.html", type:"class", deprecated:"false" },
+      { id:578, label:"com.google.android.gms.plus.People", link:"reference/com/google/android/gms/plus/People.html", type:"class", deprecated:"false" },
+      { id:579, label:"com.google.android.gms.plus.People.LoadPeopleResult", link:"reference/com/google/android/gms/plus/People.LoadPeopleResult.html", type:"class", deprecated:"false" },
+      { id:580, label:"com.google.android.gms.plus.People.OrderBy", link:"reference/com/google/android/gms/plus/People.OrderBy.html", type:"class", deprecated:"false" },
+      { id:581, label:"com.google.android.gms.plus.Plus", link:"reference/com/google/android/gms/plus/Plus.html", type:"class", deprecated:"false" },
+      { id:582, label:"com.google.android.gms.plus.Plus.PlusOptions", link:"reference/com/google/android/gms/plus/Plus.PlusOptions.html", type:"class", deprecated:"false" },
+      { id:583, label:"com.google.android.gms.plus.Plus.PlusOptions.Builder", link:"reference/com/google/android/gms/plus/Plus.PlusOptions.Builder.html", type:"class", deprecated:"false" },
+      { id:584, label:"com.google.android.gms.plus.PlusOneButton", link:"reference/com/google/android/gms/plus/PlusOneButton.html", type:"class", deprecated:"false" },
+      { id:585, label:"com.google.android.gms.plus.PlusOneButton.DefaultOnPlusOneClickListener", link:"reference/com/google/android/gms/plus/PlusOneButton.DefaultOnPlusOneClickListener.html", type:"class", deprecated:"false" },
+      { id:586, label:"com.google.android.gms.plus.PlusOneButton.OnPlusOneClickListener", link:"reference/com/google/android/gms/plus/PlusOneButton.OnPlusOneClickListener.html", type:"class", deprecated:"false" },
+      { id:587, label:"com.google.android.gms.plus.PlusOneDummyView", link:"reference/com/google/android/gms/plus/PlusOneDummyView.html", type:"class", deprecated:"false" },
+      { id:588, label:"com.google.android.gms.plus.PlusShare", link:"reference/com/google/android/gms/plus/PlusShare.html", type:"class", deprecated:"false" },
+      { id:589, label:"com.google.android.gms.plus.PlusShare.Builder", link:"reference/com/google/android/gms/plus/PlusShare.Builder.html", type:"class", deprecated:"false" },
+      { id:590, label:"com.google.android.gms.plus.model.moments", link:"reference/com/google/android/gms/plus/model/moments/package-summary.html", type:"package", deprecated:"false" },
+      { id:591, label:"com.google.android.gms.plus.model.moments.ItemScope", link:"reference/com/google/android/gms/plus/model/moments/ItemScope.html", type:"class", deprecated:"false" },
+      { id:592, label:"com.google.android.gms.plus.model.moments.ItemScope.Builder", link:"reference/com/google/android/gms/plus/model/moments/ItemScope.Builder.html", type:"class", deprecated:"false" },
+      { id:593, label:"com.google.android.gms.plus.model.moments.Moment", link:"reference/com/google/android/gms/plus/model/moments/Moment.html", type:"class", deprecated:"false" },
+      { id:594, label:"com.google.android.gms.plus.model.moments.Moment.Builder", link:"reference/com/google/android/gms/plus/model/moments/Moment.Builder.html", type:"class", deprecated:"false" },
+      { id:595, label:"com.google.android.gms.plus.model.moments.MomentBuffer", link:"reference/com/google/android/gms/plus/model/moments/MomentBuffer.html", type:"class", deprecated:"false" },
+      { id:596, label:"com.google.android.gms.plus.model.people", link:"reference/com/google/android/gms/plus/model/people/package-summary.html", type:"package", deprecated:"false" },
+      { id:597, label:"com.google.android.gms.plus.model.people.Person", link:"reference/com/google/android/gms/plus/model/people/Person.html", type:"class", deprecated:"false" },
+      { id:598, label:"com.google.android.gms.plus.model.people.Person.AgeRange", link:"reference/com/google/android/gms/plus/model/people/Person.AgeRange.html", type:"class", deprecated:"false" },
+      { id:599, label:"com.google.android.gms.plus.model.people.Person.Cover", link:"reference/com/google/android/gms/plus/model/people/Person.Cover.html", type:"class", deprecated:"false" },
+      { id:600, label:"com.google.android.gms.plus.model.people.Person.Cover.CoverInfo", link:"reference/com/google/android/gms/plus/model/people/Person.Cover.CoverInfo.html", type:"class", deprecated:"false" },
+      { id:601, label:"com.google.android.gms.plus.model.people.Person.Cover.CoverPhoto", link:"reference/com/google/android/gms/plus/model/people/Person.Cover.CoverPhoto.html", type:"class", deprecated:"false" },
+      { id:602, label:"com.google.android.gms.plus.model.people.Person.Cover.Layout", link:"reference/com/google/android/gms/plus/model/people/Person.Cover.Layout.html", type:"class", deprecated:"false" },
+      { id:603, label:"com.google.android.gms.plus.model.people.Person.Gender", link:"reference/com/google/android/gms/plus/model/people/Person.Gender.html", type:"class", deprecated:"false" },
+      { id:604, label:"com.google.android.gms.plus.model.people.Person.Image", link:"reference/com/google/android/gms/plus/model/people/Person.Image.html", type:"class", deprecated:"false" },
+      { id:605, label:"com.google.android.gms.plus.model.people.Person.Name", link:"reference/com/google/android/gms/plus/model/people/Person.Name.html", type:"class", deprecated:"false" },
+      { id:606, label:"com.google.android.gms.plus.model.people.Person.ObjectType", link:"reference/com/google/android/gms/plus/model/people/Person.ObjectType.html", type:"class", deprecated:"false" },
+      { id:607, label:"com.google.android.gms.plus.model.people.Person.Organizations", link:"reference/com/google/android/gms/plus/model/people/Person.Organizations.html", type:"class", deprecated:"false" },
+      { id:608, label:"com.google.android.gms.plus.model.people.Person.Organizations.Type", link:"reference/com/google/android/gms/plus/model/people/Person.Organizations.Type.html", type:"class", deprecated:"false" },
+      { id:609, label:"com.google.android.gms.plus.model.people.Person.PlacesLived", link:"reference/com/google/android/gms/plus/model/people/Person.PlacesLived.html", type:"class", deprecated:"false" },
+      { id:610, label:"com.google.android.gms.plus.model.people.Person.RelationshipStatus", link:"reference/com/google/android/gms/plus/model/people/Person.RelationshipStatus.html", type:"class", deprecated:"false" },
+      { id:611, label:"com.google.android.gms.plus.model.people.Person.Urls", link:"reference/com/google/android/gms/plus/model/people/Person.Urls.html", type:"class", deprecated:"false" },
+      { id:612, label:"com.google.android.gms.plus.model.people.Person.Urls.Type", link:"reference/com/google/android/gms/plus/model/people/Person.Urls.Type.html", type:"class", deprecated:"false" },
+      { id:613, label:"com.google.android.gms.plus.model.people.PersonBuffer", link:"reference/com/google/android/gms/plus/model/people/PersonBuffer.html", type:"class", deprecated:"false" },
+      { id:614, label:"com.google.android.gms.safetynet", link:"reference/com/google/android/gms/safetynet/package-summary.html", type:"package", deprecated:"false" },
+      { id:615, label:"com.google.android.gms.safetynet.SafetyNet", link:"reference/com/google/android/gms/safetynet/SafetyNet.html", type:"class", deprecated:"false" },
+      { id:616, label:"com.google.android.gms.safetynet.SafetyNetApi", link:"reference/com/google/android/gms/safetynet/SafetyNetApi.html", type:"class", deprecated:"false" },
+      { id:617, label:"com.google.android.gms.safetynet.SafetyNetApi.AttestationResult", link:"reference/com/google/android/gms/safetynet/SafetyNetApi.AttestationResult.html", type:"class", deprecated:"false" },
+      { id:618, label:"com.google.android.gms.search", link:"reference/com/google/android/gms/search/package-summary.html", type:"package", deprecated:"false" },
+      { id:619, label:"com.google.android.gms.search.GoogleNowAuthState", link:"reference/com/google/android/gms/search/GoogleNowAuthState.html", type:"class", deprecated:"false" },
+      { id:620, label:"com.google.android.gms.search.SearchAuth", link:"reference/com/google/android/gms/search/SearchAuth.html", type:"class", deprecated:"false" },
+      { id:621, label:"com.google.android.gms.search.SearchAuth.StatusCodes", link:"reference/com/google/android/gms/search/SearchAuth.StatusCodes.html", type:"class", deprecated:"false" },
+      { id:622, label:"com.google.android.gms.search.SearchAuthApi", link:"reference/com/google/android/gms/search/SearchAuthApi.html", type:"class", deprecated:"false" },
+      { id:623, label:"com.google.android.gms.search.SearchAuthApi.GoogleNowAuthResult", link:"reference/com/google/android/gms/search/SearchAuthApi.GoogleNowAuthResult.html", type:"class", deprecated:"false" },
+      { id:624, label:"com.google.android.gms.security", link:"reference/com/google/android/gms/security/package-summary.html", type:"package", deprecated:"false" },
+      { id:625, label:"com.google.android.gms.security.ProviderInstaller", link:"reference/com/google/android/gms/security/ProviderInstaller.html", type:"class", deprecated:"false" },
+      { id:626, label:"com.google.android.gms.security.ProviderInstaller.ProviderInstallListener", link:"reference/com/google/android/gms/security/ProviderInstaller.ProviderInstallListener.html", type:"class", deprecated:"false" },
+      { id:627, label:"com.google.android.gms.tagmanager", link:"reference/com/google/android/gms/tagmanager/package-summary.html", type:"package", deprecated:"false" },
+      { id:628, label:"com.google.android.gms.tagmanager.Container", link:"reference/com/google/android/gms/tagmanager/Container.html", type:"class", deprecated:"false" },
+      { id:629, label:"com.google.android.gms.tagmanager.Container.FunctionCallMacroCallback", link:"reference/com/google/android/gms/tagmanager/Container.FunctionCallMacroCallback.html", type:"class", deprecated:"false" },
+      { id:630, label:"com.google.android.gms.tagmanager.Container.FunctionCallTagCallback", link:"reference/com/google/android/gms/tagmanager/Container.FunctionCallTagCallback.html", type:"class", deprecated:"false" },
+      { id:631, label:"com.google.android.gms.tagmanager.ContainerHolder", link:"reference/com/google/android/gms/tagmanager/ContainerHolder.html", type:"class", deprecated:"false" },
+      { id:632, label:"com.google.android.gms.tagmanager.ContainerHolder.ContainerAvailableListener", link:"reference/com/google/android/gms/tagmanager/ContainerHolder.ContainerAvailableListener.html", type:"class", deprecated:"false" },
+      { id:633, label:"com.google.android.gms.tagmanager.DataLayer", link:"reference/com/google/android/gms/tagmanager/DataLayer.html", type:"class", deprecated:"false" },
+      { id:634, label:"com.google.android.gms.tagmanager.InstallReferrerReceiver", link:"reference/com/google/android/gms/tagmanager/InstallReferrerReceiver.html", type:"class", deprecated:"false" },
+      { id:635, label:"com.google.android.gms.tagmanager.InstallReferrerService", link:"reference/com/google/android/gms/tagmanager/InstallReferrerService.html", type:"class", deprecated:"false" },
+      { id:636, label:"com.google.android.gms.tagmanager.PreviewActivity", link:"reference/com/google/android/gms/tagmanager/PreviewActivity.html", type:"class", deprecated:"false" },
+      { id:637, label:"com.google.android.gms.tagmanager.TagManager", link:"reference/com/google/android/gms/tagmanager/TagManager.html", type:"class", deprecated:"false" },
+      { id:638, label:"com.google.android.gms.wallet", link:"reference/com/google/android/gms/wallet/package-summary.html", type:"package", deprecated:"false" },
+      { id:639, label:"com.google.android.gms.wallet.Address", link:"reference/com/google/android/gms/wallet/Address.html", type:"class", deprecated:"true" },
+      { id:640, label:"com.google.android.gms.wallet.Cart", link:"reference/com/google/android/gms/wallet/Cart.html", type:"class", deprecated:"false" },
+      { id:641, label:"com.google.android.gms.wallet.Cart.Builder", link:"reference/com/google/android/gms/wallet/Cart.Builder.html", type:"class", deprecated:"false" },
+      { id:642, label:"com.google.android.gms.wallet.CountrySpecification", link:"reference/com/google/android/gms/wallet/CountrySpecification.html", type:"class", deprecated:"true" },
+      { id:643, label:"com.google.android.gms.wallet.EnableWalletOptimizationReceiver", link:"reference/com/google/android/gms/wallet/EnableWalletOptimizationReceiver.html", type:"class", deprecated:"false" },
+      { id:644, label:"com.google.android.gms.wallet.FullWallet", link:"reference/com/google/android/gms/wallet/FullWallet.html", type:"class", deprecated:"false" },
+      { id:645, label:"com.google.android.gms.wallet.FullWalletRequest", link:"reference/com/google/android/gms/wallet/FullWalletRequest.html", type:"class", deprecated:"false" },
+      { id:646, label:"com.google.android.gms.wallet.FullWalletRequest.Builder", link:"reference/com/google/android/gms/wallet/FullWalletRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:647, label:"com.google.android.gms.wallet.GiftCardWalletObject", link:"reference/com/google/android/gms/wallet/GiftCardWalletObject.html", type:"class", deprecated:"false" },
+      { id:648, label:"com.google.android.gms.wallet.InstrumentInfo", link:"reference/com/google/android/gms/wallet/InstrumentInfo.html", type:"class", deprecated:"false" },
+      { id:649, label:"com.google.android.gms.wallet.LineItem", link:"reference/com/google/android/gms/wallet/LineItem.html", type:"class", deprecated:"false" },
+      { id:650, label:"com.google.android.gms.wallet.LineItem.Builder", link:"reference/com/google/android/gms/wallet/LineItem.Builder.html", type:"class", deprecated:"false" },
+      { id:651, label:"com.google.android.gms.wallet.LineItem.Role", link:"reference/com/google/android/gms/wallet/LineItem.Role.html", type:"class", deprecated:"false" },
+      { id:652, label:"com.google.android.gms.wallet.LoyaltyWalletObject", link:"reference/com/google/android/gms/wallet/LoyaltyWalletObject.html", type:"class", deprecated:"false" },
+      { id:653, label:"com.google.android.gms.wallet.MaskedWallet", link:"reference/com/google/android/gms/wallet/MaskedWallet.html", type:"class", deprecated:"false" },
+      { id:654, label:"com.google.android.gms.wallet.MaskedWallet.Builder", link:"reference/com/google/android/gms/wallet/MaskedWallet.Builder.html", type:"class", deprecated:"false" },
+      { id:655, label:"com.google.android.gms.wallet.MaskedWalletRequest", link:"reference/com/google/android/gms/wallet/MaskedWalletRequest.html", type:"class", deprecated:"false" },
+      { id:656, label:"com.google.android.gms.wallet.MaskedWalletRequest.Builder", link:"reference/com/google/android/gms/wallet/MaskedWalletRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:657, label:"com.google.android.gms.wallet.NotifyTransactionStatusRequest", link:"reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.html", type:"class", deprecated:"false" },
+      { id:658, label:"com.google.android.gms.wallet.NotifyTransactionStatusRequest.Builder", link:"reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Builder.html", type:"class", deprecated:"false" },
+      { id:659, label:"com.google.android.gms.wallet.NotifyTransactionStatusRequest.Status", link:"reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.html", type:"class", deprecated:"false" },
+      { id:660, label:"com.google.android.gms.wallet.NotifyTransactionStatusRequest.Status.Error", link:"reference/com/google/android/gms/wallet/NotifyTransactionStatusRequest.Status.Error.html", type:"class", deprecated:"false" },
+      { id:661, label:"com.google.android.gms.wallet.OfferWalletObject", link:"reference/com/google/android/gms/wallet/OfferWalletObject.html", type:"class", deprecated:"false" },
+      { id:662, label:"com.google.android.gms.wallet.PaymentInstrumentType", link:"reference/com/google/android/gms/wallet/PaymentInstrumentType.html", type:"class", deprecated:"false" },
+      { id:663, label:"com.google.android.gms.wallet.Payments", link:"reference/com/google/android/gms/wallet/Payments.html", type:"class", deprecated:"false" },
+      { id:664, label:"com.google.android.gms.wallet.ProxyCard", link:"reference/com/google/android/gms/wallet/ProxyCard.html", type:"class", deprecated:"false" },
+      { id:665, label:"com.google.android.gms.wallet.Wallet", link:"reference/com/google/android/gms/wallet/Wallet.html", type:"class", deprecated:"false" },
+      { id:666, label:"com.google.android.gms.wallet.Wallet.WalletOptions", link:"reference/com/google/android/gms/wallet/Wallet.WalletOptions.html", type:"class", deprecated:"false" },
+      { id:667, label:"com.google.android.gms.wallet.Wallet.WalletOptions.Builder", link:"reference/com/google/android/gms/wallet/Wallet.WalletOptions.Builder.html", type:"class", deprecated:"false" },
+      { id:668, label:"com.google.android.gms.wallet.WalletConstants", link:"reference/com/google/android/gms/wallet/WalletConstants.html", type:"class", deprecated:"false" },
+      { id:669, label:"com.google.android.gms.wallet.fragment", link:"reference/com/google/android/gms/wallet/fragment/package-summary.html", type:"package", deprecated:"false" },
+      { id:670, label:"com.google.android.gms.wallet.fragment.BuyButtonAppearance", link:"reference/com/google/android/gms/wallet/fragment/BuyButtonAppearance.html", type:"class", deprecated:"false" },
+      { id:671, label:"com.google.android.gms.wallet.fragment.BuyButtonText", link:"reference/com/google/android/gms/wallet/fragment/BuyButtonText.html", type:"class", deprecated:"false" },
+      { id:672, label:"com.google.android.gms.wallet.fragment.Dimension", link:"reference/com/google/android/gms/wallet/fragment/Dimension.html", type:"class", deprecated:"false" },
+      { id:673, label:"com.google.android.gms.wallet.fragment.SupportWalletFragment", link:"reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.html", type:"class", deprecated:"false" },
+      { id:674, label:"com.google.android.gms.wallet.fragment.SupportWalletFragment.OnStateChangedListener", link:"reference/com/google/android/gms/wallet/fragment/SupportWalletFragment.OnStateChangedListener.html", type:"class", deprecated:"false" },
+      { id:675, label:"com.google.android.gms.wallet.fragment.WalletFragment", link:"reference/com/google/android/gms/wallet/fragment/WalletFragment.html", type:"class", deprecated:"false" },
+      { id:676, label:"com.google.android.gms.wallet.fragment.WalletFragment.OnStateChangedListener", link:"reference/com/google/android/gms/wallet/fragment/WalletFragment.OnStateChangedListener.html", type:"class", deprecated:"false" },
+      { id:677, label:"com.google.android.gms.wallet.fragment.WalletFragmentInitParams", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.html", type:"class", deprecated:"false" },
+      { id:678, label:"com.google.android.gms.wallet.fragment.WalletFragmentInitParams.Builder", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentInitParams.Builder.html", type:"class", deprecated:"false" },
+      { id:679, label:"com.google.android.gms.wallet.fragment.WalletFragmentMode", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentMode.html", type:"class", deprecated:"false" },
+      { id:680, label:"com.google.android.gms.wallet.fragment.WalletFragmentOptions", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.html", type:"class", deprecated:"false" },
+      { id:681, label:"com.google.android.gms.wallet.fragment.WalletFragmentOptions.Builder", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentOptions.Builder.html", type:"class", deprecated:"false" },
+      { id:682, label:"com.google.android.gms.wallet.fragment.WalletFragmentState", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentState.html", type:"class", deprecated:"false" },
+      { id:683, label:"com.google.android.gms.wallet.fragment.WalletFragmentStyle", link:"reference/com/google/android/gms/wallet/fragment/WalletFragmentStyle.html", type:"class", deprecated:"false" },
+      { id:684, label:"com.google.android.gms.wallet.fragment.WalletLogoImageType", link:"reference/com/google/android/gms/wallet/fragment/WalletLogoImageType.html", type:"class", deprecated:"false" },
+      { id:685, label:"com.google.android.gms.wearable", link:"reference/com/google/android/gms/wearable/package-summary.html", type:"package", deprecated:"false" },
+      { id:686, label:"com.google.android.gms.wearable.Asset", link:"reference/com/google/android/gms/wearable/Asset.html", type:"class", deprecated:"false" },
+      { id:687, label:"com.google.android.gms.wearable.CapabilityApi", link:"reference/com/google/android/gms/wearable/CapabilityApi.html", type:"class", deprecated:"false" },
+      { id:688, label:"com.google.android.gms.wearable.CapabilityApi.AddLocalCapabilityResult", link:"reference/com/google/android/gms/wearable/CapabilityApi.AddLocalCapabilityResult.html", type:"class", deprecated:"false" },
+      { id:689, label:"com.google.android.gms.wearable.CapabilityApi.CapabilityListener", link:"reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html", type:"class", deprecated:"false" },
+      { id:690, label:"com.google.android.gms.wearable.CapabilityApi.GetAllCapabilitiesResult", link:"reference/com/google/android/gms/wearable/CapabilityApi.GetAllCapabilitiesResult.html", type:"class", deprecated:"false" },
+      { id:691, label:"com.google.android.gms.wearable.CapabilityApi.GetCapabilityResult", link:"reference/com/google/android/gms/wearable/CapabilityApi.GetCapabilityResult.html", type:"class", deprecated:"false" },
+      { id:692, label:"com.google.android.gms.wearable.CapabilityApi.RemoveLocalCapabilityResult", link:"reference/com/google/android/gms/wearable/CapabilityApi.RemoveLocalCapabilityResult.html", type:"class", deprecated:"false" },
+      { id:693, label:"com.google.android.gms.wearable.CapabilityInfo", link:"reference/com/google/android/gms/wearable/CapabilityInfo.html", type:"class", deprecated:"false" },
+      { id:694, label:"com.google.android.gms.wearable.Channel", link:"reference/com/google/android/gms/wearable/Channel.html", type:"class", deprecated:"false" },
+      { id:695, label:"com.google.android.gms.wearable.Channel.GetInputStreamResult", link:"reference/com/google/android/gms/wearable/Channel.GetInputStreamResult.html", type:"class", deprecated:"false" },
+      { id:696, label:"com.google.android.gms.wearable.Channel.GetOutputStreamResult", link:"reference/com/google/android/gms/wearable/Channel.GetOutputStreamResult.html", type:"class", deprecated:"false" },
+      { id:697, label:"com.google.android.gms.wearable.ChannelApi", link:"reference/com/google/android/gms/wearable/ChannelApi.html", type:"class", deprecated:"false" },
+      { id:698, label:"com.google.android.gms.wearable.ChannelApi.ChannelListener", link:"reference/com/google/android/gms/wearable/ChannelApi.ChannelListener.html", type:"class", deprecated:"false" },
+      { id:699, label:"com.google.android.gms.wearable.ChannelApi.CloseReason", link:"reference/com/google/android/gms/wearable/ChannelApi.CloseReason.html", type:"class", deprecated:"false" },
+      { id:700, label:"com.google.android.gms.wearable.ChannelApi.OpenChannelResult", link:"reference/com/google/android/gms/wearable/ChannelApi.OpenChannelResult.html", type:"class", deprecated:"false" },
+      { id:701, label:"com.google.android.gms.wearable.ChannelIOException", link:"reference/com/google/android/gms/wearable/ChannelIOException.html", type:"class", deprecated:"false" },
+      { id:702, label:"com.google.android.gms.wearable.DataApi", link:"reference/com/google/android/gms/wearable/DataApi.html", type:"class", deprecated:"false" },
+      { id:703, label:"com.google.android.gms.wearable.DataApi.DataItemResult", link:"reference/com/google/android/gms/wearable/DataApi.DataItemResult.html", type:"class", deprecated:"false" },
+      { id:704, label:"com.google.android.gms.wearable.DataApi.DataListener", link:"reference/com/google/android/gms/wearable/DataApi.DataListener.html", type:"class", deprecated:"false" },
+      { id:705, label:"com.google.android.gms.wearable.DataApi.DeleteDataItemsResult", link:"reference/com/google/android/gms/wearable/DataApi.DeleteDataItemsResult.html", type:"class", deprecated:"false" },
+      { id:706, label:"com.google.android.gms.wearable.DataApi.GetFdForAssetResult", link:"reference/com/google/android/gms/wearable/DataApi.GetFdForAssetResult.html", type:"class", deprecated:"false" },
+      { id:707, label:"com.google.android.gms.wearable.DataEvent", link:"reference/com/google/android/gms/wearable/DataEvent.html", type:"class", deprecated:"false" },
+      { id:708, label:"com.google.android.gms.wearable.DataEventBuffer", link:"reference/com/google/android/gms/wearable/DataEventBuffer.html", type:"class", deprecated:"false" },
+      { id:709, label:"com.google.android.gms.wearable.DataItem", link:"reference/com/google/android/gms/wearable/DataItem.html", type:"class", deprecated:"false" },
+      { id:710, label:"com.google.android.gms.wearable.DataItemAsset", link:"reference/com/google/android/gms/wearable/DataItemAsset.html", type:"class", deprecated:"false" },
+      { id:711, label:"com.google.android.gms.wearable.DataItemBuffer", link:"reference/com/google/android/gms/wearable/DataItemBuffer.html", type:"class", deprecated:"false" },
+      { id:712, label:"com.google.android.gms.wearable.DataMap", link:"reference/com/google/android/gms/wearable/DataMap.html", type:"class", deprecated:"false" },
+      { id:713, label:"com.google.android.gms.wearable.DataMapItem", link:"reference/com/google/android/gms/wearable/DataMapItem.html", type:"class", deprecated:"false" },
+      { id:714, label:"com.google.android.gms.wearable.MessageApi", link:"reference/com/google/android/gms/wearable/MessageApi.html", type:"class", deprecated:"false" },
+      { id:715, label:"com.google.android.gms.wearable.MessageApi.MessageListener", link:"reference/com/google/android/gms/wearable/MessageApi.MessageListener.html", type:"class", deprecated:"false" },
+      { id:716, label:"com.google.android.gms.wearable.MessageApi.SendMessageResult", link:"reference/com/google/android/gms/wearable/MessageApi.SendMessageResult.html", type:"class", deprecated:"false" },
+      { id:717, label:"com.google.android.gms.wearable.MessageEvent", link:"reference/com/google/android/gms/wearable/MessageEvent.html", type:"class", deprecated:"false" },
+      { id:718, label:"com.google.android.gms.wearable.Node", link:"reference/com/google/android/gms/wearable/Node.html", type:"class", deprecated:"false" },
+      { id:719, label:"com.google.android.gms.wearable.NodeApi", link:"reference/com/google/android/gms/wearable/NodeApi.html", type:"class", deprecated:"false" },
+      { id:720, label:"com.google.android.gms.wearable.NodeApi.GetConnectedNodesResult", link:"reference/com/google/android/gms/wearable/NodeApi.GetConnectedNodesResult.html", type:"class", deprecated:"false" },
+      { id:721, label:"com.google.android.gms.wearable.NodeApi.GetLocalNodeResult", link:"reference/com/google/android/gms/wearable/NodeApi.GetLocalNodeResult.html", type:"class", deprecated:"false" },
+      { id:722, label:"com.google.android.gms.wearable.NodeApi.NodeListener", link:"reference/com/google/android/gms/wearable/NodeApi.NodeListener.html", type:"class", deprecated:"false" },
+      { id:723, label:"com.google.android.gms.wearable.PutDataMapRequest", link:"reference/com/google/android/gms/wearable/PutDataMapRequest.html", type:"class", deprecated:"false" },
+      { id:724, label:"com.google.android.gms.wearable.PutDataRequest", link:"reference/com/google/android/gms/wearable/PutDataRequest.html", type:"class", deprecated:"false" },
+      { id:725, label:"com.google.android.gms.wearable.Wearable", link:"reference/com/google/android/gms/wearable/Wearable.html", type:"class", deprecated:"false" },
+      { id:726, label:"com.google.android.gms.wearable.Wearable.WearableOptions", link:"reference/com/google/android/gms/wearable/Wearable.WearableOptions.html", type:"class", deprecated:"false" },
+      { id:727, label:"com.google.android.gms.wearable.Wearable.WearableOptions.Builder", link:"reference/com/google/android/gms/wearable/Wearable.WearableOptions.Builder.html", type:"class", deprecated:"false" },
+      { id:728, label:"com.google.android.gms.wearable.WearableListenerService", link:"reference/com/google/android/gms/wearable/WearableListenerService.html", type:"class", deprecated:"false" },
+      { id:729, label:"com.google.android.gms.wearable.WearableStatusCodes", link:"reference/com/google/android/gms/wearable/WearableStatusCodes.html", type:"class", deprecated:"false" }
 
     ];
diff --git a/docs/html/tools/support-library/features.jd b/docs/html/tools/support-library/features.jd
index 0f0a0c0..ee1ed72 100644
--- a/docs/html/tools/support-library/features.jd
+++ b/docs/html/tools/support-library/features.jd
@@ -205,9 +205,12 @@
       information on using the Action Bar, see the
       <a href="{@docRoot}guide/topics/ui/actionbar.html">Action Bar</a> developer guide.
   </li>
-  <li>{@link android.support.v7.app.ActionBarActivity} - Adds an application activity class that
-      must be used as a base class for activities that uses the Support Library action bar
-      implementation.
+  <li>{@link android.support.v7.app.AppCompatActivity} - Adds an application activity class that can
+       be used as a base class for activities that use the Support Library action bar
+       implementation.
+  </li>
+  <li>{@link android.support.v7.app.AppCompatDialog} - Adds a dialog class that can be used as a base
+      class for AppCompat themed dialogs.
   </li>
   <li>{@link android.support.v7.widget.ShareActionProvider} - Adds support for a standardized
     sharing action (such as email or posting to social applications) that can be included in an
diff --git a/docs/html/tools/support-library/index.jd b/docs/html/tools/support-library/index.jd
index 56a3954..1aef0c1 100644
--- a/docs/html/tools/support-library/index.jd
+++ b/docs/html/tools/support-library/index.jd
@@ -62,6 +62,211 @@
 <div class="toggle-content opened">
   <p id="rev21"><a href="#" onclick="return toggleContent(this)">
     <img src="{@docRoot}assets/images/triangle-opened.png" class="toggle-content-img" alt=""
+/>Android Support Library, revision 22.1.0</a> <em>(April 2015)</em>
+  </p>
+  <div class="toggle-content-toggleme">
+    <dl>
+      <dt>Changes for <a href="features.html#v4">v4 support library:</a></dt>
+      <dd>
+        <ul>
+
+          <li>Added the {@link android.support.v4.graphics.ColorUtils ColorUtils} class
+            to provide a set of color-related utility methods.
+          </li>
+          <li>Added the {@link android.support.v4.graphics.drawable.DrawableCompat#unwrap unwrap()} and
+            {@link android.support.v4.graphics.drawable.DrawableCompat#wrap wrap()} methods to the
+            {@link android.support.v4.graphics.drawable.DrawableCompat} class , allowing you to use
+            {@link android.support.v4.graphics.drawable.DrawableCompat#setTint setTint()},
+            {@link android.support.v4.graphics.drawable.DrawableCompat#setTintList setTintList()},
+            and {@link android.support.v4.graphics.drawable.DrawableCompat#setTintMode setTintMode()}
+            on all API level 4 or higher devices.
+          </li>
+          <li>Added the {@link android.support.v4.os.TraceCompat} class to
+            write trace events to the system trace buffer, which can then be collected and
+            visualized using the <a href="{@docRoot}tools/help/systrace.html">Systrace</a> tool.
+          </li>
+          <li>Added the {@link android.support.v4.util.CircularIntArray} class
+            to create circular integer array data structures.
+          </li>
+          <li>Added the {@link android.support.v4.util.CircularArray#clear clear()},
+            {@link android.support.v4.util.CircularArray#removeFromStart removeFromStart()},
+            and {@link android.support.v4.util.CircularArray#removeFromEnd removeFromEnd()}
+            methods to the {@link android.support.v4.util.CircularArray} class. Also, changed the
+            existing methods in this class to be non-final.
+          </li>
+          <li>Added the {@link android.support.v4.view.InputDeviceCompat}
+            as a helper class to access data in the
+            {@link android.support.v4.view.InputDeviceCompat} class.
+          </li>
+          <li>Added the {@link android.support.v4.view.LayoutInflaterCompat}
+            class as a helper class to access data in the
+            {@link android.support.v4.view.LayoutInflaterCompat} class
+            and added the {@link android.support.v4.view.LayoutInflaterFactory} interface.
+          </li>
+          <li>Added classes, methods, and interfaces to support nested scrolling.
+             <ul>
+               <li>Added the {@link android.support.v4.view.NestedScrollingChildHelper}
+               and {@link android.support.v4.view.NestedScrollingParentHelper}
+               helper classes for implementing nested scrolling parent and child views.</li>
+               <li>Added the {@link android.support.v4.view.NestedScrollingChild}
+               interface to be implemented by {@link android.view.View} subclasses.</li>
+               <li>Added the {@link android.support.v4.view.NestedScrollingParent}
+               and {@link android.support.v4.view.ScrollingView} interfaces to support
+               scrolling operations and provide scroll related APIs.</li>
+               <li>Added the
+                {@link android.support.v4.view.ViewGroupCompat#getNestedScrollAxes
+                getNestedScrollAxes()} method to the {@link android.support.v4.view.ViewGroupCompat}
+                class.</li>
+               <li>Added methods to the {@link android.support.v4.view.ViewParentCompat} class to
+                support nested scrolling.
+               </li>
+               <li>Added the {@link android.support.v4.widget.NestedScrollView}
+                 class to support nested scrolling parent and child on both new and old versions of
+                 Android.
+               </li>
+              </ul>
+          </li>
+          <li>Added methods and constants to the {@link android.support.v4.view.MotionEventCompat}
+            class for getting axis values and event source.
+         </li>
+         <li>Updated the {@link android.support.v4.view.accessibility.AccessibilityNodeInfoCompat}
+          class to add methods for errors, content invalidation and labels.
+         </li>
+         <li>Added the following interpolation classses for animation:
+           {@link android.support.v4.view.animation.FastOutLinearInInterpolator},
+           {@link android.support.v4.view.animation.FastOutSlowInInterpolator},
+           {@link android.support.v4.view.animation.LinearOutSlowInInterpolator},
+           {@link android.support.v4.view.animation.LinearOutSlowInInterpolator}, and
+           {@link android.support.v4.view.animation.PathInterpolatorCompat}.
+         </li>
+         <li>Added the {@link android.support.v4.widget.Space} class to create gaps between
+           components in general purpose layouts. This class is deprecated in the gridlayout library.
+         </li>
+         <li>Added the {@link android.support.v4.widget.TextViewCompat} class for accessing
+           features in a {@link android.widget.TextView}.
+         </li>
+         <li>Added a displacement parameter to the
+           {@link android.support.v4.widget.EdgeEffectCompat#onPull onPull()} method in the
+           {@link android.support.v4.widget.EdgeEffectCompat} class.
+         </li>
+
+       </ul>
+      </dd>
+
+
+  <dt>Changes for <a href="features.html#v7-appcompat">v7 appcompat library</a>:</dt>
+      <dd>
+        <ul>
+          <li>Added tint support to appcompat widgets, including
+            {@link android.support.v7.widget.AppCompatAutoCompleteTextView},
+            {@link android.support.v7.widget.AppCompatButton},
+            {@link android.support.v7.widget.AppCompatCheckBox},
+            {@link android.support.v7.widget.AppCompatCheckedTextView},
+            {@link android.support.v7.widget.AppCompatEditText},
+            {@link android.support.v7.widget.AppCompatMultiAutoCompleteTextView},
+            {@link android.support.v7.widget.AppCompatRadioButton},
+            {@link android.support.v7.widget.AppCompatRatingBar},
+            {@link android.support.v7.widget.AppCompatSpinner}, and
+            {@link android.support.v7.widget.AppCompatTextView}.
+          </li>
+          <li>Updated the {@link android.support.v7.app.AppCompatActivity} as the base
+            class for activities that use the support library action bar features. This class
+            replaces the deprecated {@link android.support.v7.app.ActionBarActivity}.
+          </li>
+          <li>Added the
+            {@link android.support.v7.app.AppCompatCallback} interface
+            to be implemented for AppCompat to be able to perform callbacks.
+          </li>
+            <li>Added the
+            {@link android.support.v7.app.AppCompatDelegate} abstract class
+            as a delegate you can use to extend AppCompat's support to any activity.
+          </li>
+          <li>Added the
+            {@link android.support.v7.app.AppCompatDialog} class
+            as the base class for AppCompat themed dialogs.
+          </li>
+          <li>Added the spinner style
+            {@link android.support.v7.app.AlertDialog} and
+            {@link android.support.v7.app.AlertDialog.Builder} classes to provide an AppCompat
+            themed {@link android.app.AlertDialog}.
+          </li>
+          <li>Added the {@link android.support.v7.graphics.Palette.Builder} class
+            for generating {@link android.support.v7.graphics.Palette} instances.
+            <ul>
+              <li>Added the
+                {@link android.support.v7.graphics.Palette#from}
+                method to the {@link android.support.v7.graphics.Palette} class to
+                start generating a Palette with the returned
+                {@link android.support.v7.graphics.Palette.Builder} instance.
+              </li>
+              <li>Deprecated the {@link android.support.v7.graphics.Palette#generate generate()} and
+                {@link android.support.v7.graphics.Palette#generateAsync generateAsync()} methods.
+              </li>
+             </ul>
+           </li>
+
+           <li>Added the
+             {@link android.support.v7.widget.GridLayout.Spec#getAbsoluteAlignment
+             getAbsoluteAlignment()} method to the {@link android.support.v7.widget.GridLayout.Spec}
+             class.
+           </li>
+           <li>Deprecated use of <code>app:theme</code> for styling
+             {@link android.support.v7.widget.Toolbar}. You can now use
+             <code>android:theme</code> for toolbars on all API level 7 and higher devices and
+             <code>android:theme</code> support for all widgets on API level 11 and higher devices.
+           </li>
+        </ul>
+      </dd>
+
+
+      <dt>Changes for <a href="features.html#v17-leanback">v17 leanback library</a>:</dt>
+      <dd>
+        <ul>
+          <li> Added {@link android.support.v17.leanback.app.GuidedStepFragment},
+            {@link android.support.v17.leanback.widget.GuidanceStylist} and
+            {@link android.support.v17.leanback.widget.GuidedActionsStylist} to support
+            creating multi-step decision flows.
+          </li>
+        </ul>
+      </dd>
+
+
+      <dt>Changes for <a href="features.html#v7-recyclerview">v7 recyclerview library</a>:</dt>
+      <dd>
+        <ul>
+           <li>Added {@link android.support.v7.util.SortedList} classes to display items in
+             a list order and provide notification of changes to the list.
+           </li>
+           <li>Added the {@link android.support.v7.widget.util.SortedListAdapterCallback} class
+             that can bind a sorted list to a
+             {@link android.support.v7.widget.RecyclerView.Adapter} class.
+           </li>
+        </ul>
+      </dd>
+
+
+      <dt>Changes for v8 renderscript library:</dt>
+      <dd>
+        <ul>
+          <li>Added the {@link android.support.v8.renderscript.ScriptIntrinsicHistogram} class for
+            use as a histogram filter.</li>
+          <li>Added the {@link android.support.v8.renderscript.ScriptIntrinsicResize} class for
+            performing a resize of a 2D allocation.
+          </li>
+        </ul>
+      </dd>
+
+    </dl>
+
+
+  </div>
+</div> <!-- end of collapsible section -->
+
+
+
+<div class="toggle-content closed">
+  <p id="rev21"><a href="#" onclick="return toggleContent(this)">
+    <img src="{@docRoot}assets/images/triangle-closed.png" class="toggle-content-img" alt=""
 />Android Support Library, revision 22</a> <em>(March 2015)</em>
   </p>
   <div class="toggle-content-toggleme">
@@ -159,6 +364,10 @@
         </ul>
       </dd>
 
+  </div>
+</div>
+
+
 
 
 <div class="toggle-content closed">
@@ -1113,4 +1322,3 @@
       <p>Initial release with the v4 library.</p>
   </div>
 </div>
-
diff --git a/docs/html/training/enterprise/app-restrictions.jd b/docs/html/training/enterprise/app-restrictions.jd
index fc5dfcc..dd2c2c0 100644
--- a/docs/html/training/enterprise/app-restrictions.jd
+++ b/docs/html/training/enterprise/app-restrictions.jd
@@ -316,8 +316,18 @@
   {@link android.content.Intent#ACTION_APPLICATION_RESTRICTIONS_CHANGED
   ACTION_APPLICATION_RESTRICTIONS_CHANGED} intent. Your app has to listen for
   this intent so you can change the app's behavior when the restriction settings
-  change. The following code shows how to dynamically register a broadcast
-  receiver for this intent:
+  change.</p>
+
+<p class="note">
+  <strong>Note:</strong> The {@link
+  android.content.Intent#ACTION_APPLICATION_RESTRICTIONS_CHANGED
+  ACTION_APPLICATION_RESTRICTIONS_CHANGED} intent is sent only to listeners
+  that are dynamically registered, <em>not</em> to listeners that are declared
+  in the app manifest.
+</p>
+<p>
+  The following code shows how to dynamically register a broadcast receiver for
+  this intent:
 </p>
 
 <pre>IntentFilter restrictionsFilter =
diff --git a/docs/html/training/tv/start/start.jd b/docs/html/training/tv/start/start.jd
index 2766e90..0f5871f 100644
--- a/docs/html/training/tv/start/start.jd
+++ b/docs/html/training/tv/start/start.jd
@@ -1,4 +1,4 @@
-page.title=Get Started with TV Apps
+page.title=Getting Started with TV Apps
 page.tags="leanback","recyclerview","launcher"
 
 trainingnavtop=true
@@ -10,6 +10,7 @@
 <div id="tb">
   <h2>This lesson teaches you how to</h2>
   <ol>
+    <li><a href="#media">Determine Media Format Support</a></li>
     <li><a href="#dev-project">Setup a TV Project</a></li>
     <li><a href="#tv-libraries">Add TV Support Libraries</a></li>
     <li><a href="#build-it">Build TV Apps</a></li>
@@ -42,6 +43,18 @@
   minimum required changes to enable an app to run on TV devices.
 </p>
 
+<h2 id="media">Determine Media Format Support</h2>
+
+<p>See the following documentation for information about the codecs, protocols, and formats
+supported by Android TV.</p>
+
+<ul>
+  <li><a href="{@docRoot}guide/appendix/media-formats.html">Supported Media Formats</a></li>
+  <li><a class="external-link" href="https://source.android.com/devices/drm.html">DRM</a></li>
+  <li><code><a href="{@docRoot}reference/android/drm/package-summary.html">android.drm</a></code></li>
+  <li><a href="{@docRoot}guide/topics/media/exoplayer.html">ExoPlayer</a></li>
+  <li>{@link android.media.MediaPlayer android.media.MediaPlayer}</li>
+</ul>
 
 <h2 id="dev-project">Set up a TV Project</h2>
 
@@ -284,9 +297,15 @@
     TV devices.
   </li>
   <li>
-    <a href="{@docRoot}training/tv/games/index.html">Games for TV</a> - TV devices are a great
+    <a href="{@docRoot}training/tv/games/index.html">Building TV Games</a> - TV devices are a great
     platform for games. See this topic for information on building great game experiences for TV.
   </li>
+    <li>
+    <a href="{@docRoot}training/tv/tif/index.html">Building Live TV Apps</a> - Present your video
+    content in a linear, "broadcast TV" style with channels and programs that your users can access
+    through a program guide as well as the channel up/down buttons.
+  </li>
+
 </ul>
 
 
diff --git a/docs/html/training/wearables/data-layer/index.jd b/docs/html/training/wearables/data-layer/index.jd
index b49ea4d..df7c216 100644
--- a/docs/html/training/wearables/data-layer/index.jd
+++ b/docs/html/training/wearables/data-layer/index.jd
@@ -91,6 +91,17 @@
 channel.
 </p>
 
+<p>Android Wear supports multiple wearables connected to a handheld device. For example, when the
+user saves a note on a handheld, it automatically appears on both of the user's Wear devices. To
+synchronize data between devices, Google’s servers host a cloud node in the network of devices. The
+system synchronizes data to directly connected devices, the cloud node, and to wearable devices
+connected to the cloud node via Wi-Fi.</p>
+
+<img src="{@docRoot}wear/images/wear_cloud_node.png" alt="" width="330" height="375"/>
+<p class="img-caption"><strong>Figure 1.</strong> A sample network of nodes with
+handheld and wearable devices.</p>
+
+
 <h2>Lessons</h2>
   <dl>
     <dt><a href="{@docRoot}training/wearables/data-layer/accessing.html">Accessing the Wearable Data Layer</a></dt>
diff --git a/docs/html/training/wearables/data-layer/messages.jd b/docs/html/training/wearables/data-layer/messages.jd
index 0ca55ba..0826e6b 100644
--- a/docs/html/training/wearables/data-layer/messages.jd
+++ b/docs/html/training/wearables/data-layer/messages.jd
@@ -26,42 +26,191 @@
 Messages are a one-way communication mechanism that's good for remote procedure calls (RPC),
 such as sending a message to the wearable to start an activity.</p>
 
-<h2 id="SendMessage">Send a Message</h2>
+<p>Multiple wearable devices can be connected to a user’s handheld device. Each connected device in
+the network is considered a <em>node</em>. With multiple connected devices, you must consider which
+nodes receive the messages. For example, In a voice transcription app that receives voice data on
+the wearable device, you should send the message to a node with the processing power and battery
+capacity to handle the request, such as a handheld device.</p>
 
-<p>The following example shows how to send a message that indicates to the other
-side of the connection to start an activity.
-This call is synchronous and blocks processing until the message is received or until the request
-times out:</p>
-
-<p class="note"><b>Note:</b> Read more about asynchronous and synchronous calls
-to Google Play services and when to use each in
-<a href="{@docRoot}google/auth/api-client.html#Communicating">Communicate with Google Play Services</a>.
+<p class="note"><strong>Note:</strong>
+With versions of Google Play services prior to 7.3.0, only one wearable device could be connected to
+a handheld device at a time. You may need to update your existing code to take the multiple
+connected nodes feature into consideration. If you don’t implement the changes, your messages may
+not get delivered to intended devices.
 </p>
 
+<h2 id="SendMessage">Send a Message</h2>
+
+<p>A wearable app can provide functionality for users such as voice
+transcription. Users can speak into their wearable device's microphone, and have a transcription
+saved to a note. Since a wearable device typically does not have the processing power and battery
+capacity required to handle the voice transcription activity, the app should offload this work to a
+more capable, connected device.</p>
+
+<p>The following sections show you how to advertise device nodes that can process activity
+requests, discover the nodes capable of fulfilling a requested need, and send messages to those
+nodes.
+</p>
+
+<h3 id="AdvertiseCapabilities">Advertise capabilities</h3>
+
+<p>To launch an activity on a handheld device from a wearable device, use the
+<a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.html"><code>MessageApi</code></a>
+class to send the request. Since multiple wearables can be connected to the handheld device, the
+wearable app needs to determine that a connected node is capable of launching the activity. In your
+handheld app, advertise that the node it runs on provides specific capabilities.</p>
+
+<p>To advertise the capabilities of your handheld app:</p>
+
+<ol>
+  <li>Create an XML configuration file in the <code>res/values/</code> directory of your project and
+  name it <code>wear.xml</code>.
+  </li>
+  <li>Add a resource named <code>android_wear_capabilities</code> to <code>wear.xml</code>.
+  </li>
+  <li>Define capabilities that the device provides.
+  </li>
+</ol>
+
+<p class="note"><strong>Note:</strong>
+Capabilities are custom strings that you define and must be unique within your app.
+</p>
+
+<p>The following example shows how to add a capability named <code>voice_transcription</code> to
+<code>wear.xml</code>:</p>
+
 <pre>
-GoogleApiClient mGoogleApiClient;
-public static final String START_ACTIVITY_PATH = "/start/MainActivity";
+&lt;resources>
+    &lt;string-array name="android_wear_capabilities">
+        &lt;item>voice_transcription&lt;/item>
+    &lt;/string-array>
+&lt;/resources>
+</pre>
+
+<h3 id="RetrieveCapabilities">Retrieve the nodes with the required capabilities</h3>
+
+<p>Initially, you can detect the capable nodes by calling the <a
+href="{@docRoot}reference/com/google/android/gms/wearable/CapabilityApi.html#getCapability(com.google.android.gms.common.api.GoogleApiClient, java.lang.String, int)"><code>CapabilityApi.getCapability()</code></a>
+method.
+The following example shows how to manually retrieve the results of reachable nodes with the
+<code>voice_transcription</code> capability:</p>
+
+<pre>
+private static final String
+        VOICE_TRANSCRIPTION_CAPABILITY_NAME = "voice_transcription";
+
+private GoogleApiClient mGoogleApiClient;
+
 ...
 
-private void sendStartActivityMessage(String nodeId) {
-    Wearable.MessageApi.sendMessage(
-      mGoogleApiClient, nodeId, START_ACTIVITY_PATH, new byte[0]).setResultCallback(
-          new ResultCallback&lt;SendMessageResult>() {
-              &#64;Override
-              public void onResult(SendMessageResult sendMessageResult) {
-                  if (!sendMessageResult.getStatus().isSuccess()) {
-                      Log.e(TAG, "Failed to send message with status code: "
-                              + sendMessageResult.getStatus().getStatusCode());
-                  }
-              }
-          }
-      );
+private void setupVoiceTranscription() {
+    CapabilityApi.GetCapabilityResult result =
+            Wearable.CapabilityApi.getCapability(
+                    mGoogleApiClient, VOICE_TRANSCRIPTION_CAPABILITY_NAME,
+                    CapabilityApi.FILTER_REACHABLE).await();
+
+    updateTranscriptionCapability(result.getCapability());
 }
 </pre>
 
-<p>
-Here's a simple way to get a list of connected nodes that you can potentially
-send messages to:</p>
+<p>To detect capable nodes as they connect to the wearable device, register a <a
+href="{@docRoot}reference/com/google/android/gms/wearable/CapabilityApi.CapabilityListener.html"><code>CapabilityApi.CapabilityListener()</code></a>
+instance to your <a href="{@docRoot}reference/com/google/android/gms/common/api/GoogleApiClient.html"><code>GoogleApiClient</code></a>.
+The following example shows how to register the listener and retrieve the results of reachable nodes
+with the <code>voice_transcription</code> capability:</p>
+
+<pre>
+private void setupVoiceTranscription() {
+    ...
+
+    CapabilityApi.CapabilityListener capabilityListener =
+            new CapabilityApi.CapabilityListener() {
+                &#64;Override
+                public void onCapabilityChanged(CapabilityInfo capabilityInfo) {
+                    updateTranscriptionCapability(capabilityInfo);
+                }
+            };
+
+    Wearable.CapabilityApi.addCapabilityListener(
+            mGoogleApiClient,
+            capabilityListener,
+            VOICE_TRANSCRIPTION_CAPABILITY_NAME);
+}
+</pre>
+
+<p>After detecting the capable nodes, determine where to send the message. You should pick a node
+that is in close proximity to your wearable device to
+minimize message routing through multiple nodes. A nearby node is defined as one that is directly
+connected to the device. To determine if a node is nearby, call the <a
+href="{@docRoot}reference/com/google/android/gms/wearable/Node.html#isNearby()"><code>Node.isNearby()</code></a>
+method.</p>
+
+<p>The following example shows how you might determine the best node to use:</p>
+
+<pre>
+private String transcriptionNodeId = null;
+
+private void updateTranscriptionCapability(CapabilityInfo capabilityInfo) {
+    Set&lt;Node> connectedNodes = capabilityInfo.getNodes();
+
+    transcriptionNodeId = pickBestNodeId(connectedNodes);
+}
+
+private String pickBestNodeId(Set&lt;Node> nodes) {
+    String bestNodeId = null;
+    // Find a nearby node or pick one arbitrarily
+    for (Node node : nodes) {
+        if (node.isNearby()) {
+            return node.getId();
+         }
+         bestNodeId = node.getId();
+    }
+    return bestNodeId;
+}
+</pre>
+
+<h3 id="DeliverMessage">Deliver the message</h3>
+
+<p>Once you’ve identified the best node to use, send the message using the
+<a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.html"><code>MessageApi</code></a>
+class.</p>
+
+<p>The following example shows how to send a message to the transcription-capable node from a
+wearable device. Verify that the node is available before you attempt to send the message. This call
+is synchronous and blocks processing until the message is received or until the request times out.
+</p>
+
+<pre>
+
+public static final String VOICE_TRANSCRIPTION_MESSAGE_PATH = "/voice_transcription";
+
+private void requestTranscription(byte[] voiceData) {
+    if (transcriptionNodeId != null) {
+        Wearable.MessageApi.sendMessage(googleApiClient, transcriptionNodeId,
+            VOICE_TRANSCRIPTION_MESSAGE_PATH, voiceData).setResultCallback(
+                  new ResultCallback<SendMessageResult>() {
+                      &#64;Override
+                      public void onResult(SendMessageResult sendMessageResult) {
+                          if (!sendMessageResult.getStatus().isSuccess()) {
+                              // Failed to send message
+                          }
+                      }
+                  }
+            );
+    } else {
+        // Unable to retrieve node with transcription capability
+    }
+}
+</pre>
+
+<p class="note"><strong>Note:</strong> To learn more about asynchronous and synchronous calls
+to Google Play services and when to use each, see
+<a href="{@docRoot}google/auth/api-client.html#Communicating">Communicate with Google Play
+Services</a>.
+</p>
+
+<p>You can also broadcast messages to all connected nodes. To retrieve all of the
+connected nodes that you can send messages to, implement the following code:</p>
 
 <pre>
 private Collection&lt;String&gt; getNodes() {
@@ -78,22 +227,24 @@
 <h2 id="ReceiveMessage">Receive a Message</h2>
 
 <p>
-To be notified of received messages, you implement the
+To be notified of received messages, implement the
 <a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.MessageListener.html">
-<code>MessageListener</code></a> interface to provide a listener for message events. Then you register your
-listener with the
+<code>MessageListener</code></a> interface to provide a listener for message events. Then,
+register the listener with the
 <a href="{@docRoot}reference/com/google/android/gms/wearable/MessageApi.html#addListener(com.google.android.gms.common.api.GoogleApiClient, com.google.android.gms.wearable.MessageApi.MessageListener)">
-<code>MessageApi.addListener()</code></a> method. This example shows how you might implement the listener
-to check the <code>START_ACTIVITY_PATH</code> that the previous example used to send the message.
-If this condition is <code>true</code>, a specific activity is started.
+<code>MessageApi.addListener()</code></a> method. This example shows how you might implement the
+listener to check the <code>VOICE_TRANSCRIPTION_MESSAGE_PATH</code>. If this condition is
+<code>true</code>, start an activity to process the voice
+data.
 </p>
 
 <pre>
 &#64;Override
 public void onMessageReceived(MessageEvent messageEvent) {
-    if (messageEvent.getPath().equals(START_ACTIVITY_PATH)) {
+    if (messageEvent.getPath().equals(VOICE_TRANSCRIPTION_MESSAGE_PATH)) {
         Intent startIntent = new Intent(this, MainActivity.class);
         startIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        startIntent.putExtra("VOICE_DATA", messageEvent.getData());
         startActivity(startIntent);
     }
 }
diff --git a/docs/html/wear/images/wear_cloud_node.png b/docs/html/wear/images/wear_cloud_node.png
new file mode 100644
index 0000000..602e247
--- /dev/null
+++ b/docs/html/wear/images/wear_cloud_node.png
Binary files differ
diff --git a/docs/image_sources/training/wear/wear_cloud_node.graffle b/docs/image_sources/training/wear/wear_cloud_node.graffle
new file mode 100644
index 0000000..8a3e4b5
--- /dev/null
+++ b/docs/image_sources/training/wear/wear_cloud_node.graffle
@@ -0,0 +1,4333 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+	<key>ApplicationVersion</key>
+	<array>
+		<string>com.omnigroup.OmniGraffle6</string>
+		<string>156.11.0.206384</string>
+	</array>
+	<key>CreationDate</key>
+	<string>2015-04-10 16:36:28 +0000</string>
+	<key>Creator</key>
+	<string>Luan Nguyen</string>
+	<key>FileType</key>
+	<string>flat</string>
+	<key>GraphDocumentVersion</key>
+	<integer>11</integer>
+	<key>GuidesLocked</key>
+	<string>NO</string>
+	<key>GuidesVisible</key>
+	<string>YES</string>
+	<key>ImageCounter</key>
+	<integer>3</integer>
+	<key>LinksVisible</key>
+	<string>NO</string>
+	<key>MagnetsVisible</key>
+	<string>NO</string>
+	<key>MasterSheets</key>
+	<array/>
+	<key>ModificationDate</key>
+	<string>2015-04-15 20:46:45 +0000</string>
+	<key>Modifier</key>
+	<string>Luan Nguyen</string>
+	<key>NotesVisible</key>
+	<string>NO</string>
+	<key>OriginVisible</key>
+	<string>NO</string>
+	<key>PageBreaks</key>
+	<string>NO</string>
+	<key>PrintInfo</key>
+	<dict>
+		<key>NSBottomMargin</key>
+		<array>
+			<string>float</string>
+			<string>40</string>
+		</array>
+		<key>NSLeftMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSPaperSize</key>
+		<array>
+			<string>size</string>
+			<string>{612, 792}</string>
+		</array>
+		<key>NSRightMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+		<key>NSTopMargin</key>
+		<array>
+			<string>float</string>
+			<string>18</string>
+		</array>
+	</dict>
+	<key>ReadOnly</key>
+	<string>NO</string>
+	<key>Sheets</key>
+	<array>
+		<dict>
+			<key>ActiveLayerIndex</key>
+			<integer>0</integer>
+			<key>AutoAdjust</key>
+			<false/>
+			<key>BackgroundGraphic</key>
+			<dict>
+				<key>Bounds</key>
+				<string>{{0, 0}, {330, 375}}</string>
+				<key>Class</key>
+				<string>SolidGraphic</string>
+				<key>ID</key>
+				<integer>2</integer>
+				<key>Style</key>
+				<dict>
+					<key>stroke</key>
+					<dict>
+						<key>Draws</key>
+						<string>NO</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>BaseZoom</key>
+			<integer>0</integer>
+			<key>CanvasOrigin</key>
+			<string>{0, 0}</string>
+			<key>CanvasSize</key>
+			<string>{330, 375}</string>
+			<key>ColumnAlign</key>
+			<integer>1</integer>
+			<key>ColumnSpacing</key>
+			<real>36</real>
+			<key>DisplayScale</key>
+			<string>1.0 pt = 1.0 px</string>
+			<key>GraphicsList</key>
+			<array>
+				<dict>
+					<key>Bounds</key>
+					<string>{{66.75, 134.93730967886808}, {109.5, 28.169700000000034}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>1976</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>Line</key>
+					<dict>
+						<key>ID</key>
+						<integer>1893</integer>
+						<key>Position</key>
+						<real>0.61324973965300955</real>
+						<key>RotationType</key>
+						<integer>0</integer>
+					</dict>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.49144199999999999, 0.26006299999999999}</string>
+						<string>{0.50711799999999996, -0.22408600000000001}</string>
+						<string>{0.50711799999999996, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27977999999999997, -0.47847800000000001}</string>
+						<string>{0.29393799999999998, 0.54304399999999997}</string>
+						<string>{-0.28623199999999999, 0.55380399999999996}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.938075</string>
+								<key>g</key>
+								<string>0.938269</string>
+								<key>r</key>
+								<string>0.938154</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0.328823</string>
+								<key>g</key>
+								<string>0.328823</string>
+								<key>r</key>
+								<string>0.328823</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>1.5349206924438477</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.472997</string>
+								<key>g</key>
+								<string>0.473094</string>
+								<key>r</key>
+								<string>0.473036</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>2</real>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Mobile data/Wi-Fi}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{234, 92.968750000000014}, {49, 28.169700000000034}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>1975</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.49144199999999999, 0.26006299999999999}</string>
+						<string>{0.50711799999999996, -0.22408600000000001}</string>
+						<string>{0.50711799999999996, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27977999999999997, -0.47847800000000001}</string>
+						<string>{0.29393799999999998, 0.54304399999999997}</string>
+						<string>{-0.28623199999999999, 0.55380399999999996}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.938075</string>
+								<key>g</key>
+								<string>0.938269</string>
+								<key>r</key>
+								<string>0.938154</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0.328823</string>
+								<key>g</key>
+								<string>0.328823</string>
+								<key>r</key>
+								<string>0.328823</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>1.5349206924438477</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.472997</string>
+								<key>g</key>
+								<string>0.473094</string>
+								<key>r</key>
+								<string>0.473036</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>2</real>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Wi-Fi}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{85.5, 252.41406223966777}, {72, 28.169700000000034}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>155</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>Line</key>
+					<dict>
+						<key>ID</key>
+						<integer>1895</integer>
+						<key>Position</key>
+						<real>0.48590017216177767</real>
+						<key>RotationType</key>
+						<integer>0</integer>
+					</dict>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.49144199999999999, 0.26006299999999999}</string>
+						<string>{0.50711799999999996, -0.22408600000000001}</string>
+						<string>{0.50711799999999996, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27977999999999997, -0.47847800000000001}</string>
+						<string>{0.29393799999999998, 0.54304399999999997}</string>
+						<string>{-0.28623199999999999, 0.55380399999999996}</string>
+					</array>
+					<key>Shape</key>
+					<string>Rectangle</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.938075</string>
+								<key>g</key>
+								<string>0.938269</string>
+								<key>r</key>
+								<string>0.938154</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0.328823</string>
+								<key>g</key>
+								<string>0.328823</string>
+								<key>r</key>
+								<string>0.328823</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>1.5349206924438477</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.472997</string>
+								<key>g</key>
+								<string>0.473094</string>
+								<key>r</key>
+								<string>0.473036</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>2</real>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Bluetooth}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{42.947532278010186, 15.40233227120396}, {169.1049769052272, 11.625478289816014}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>a</key>
+									<string>0.65</string>
+									<key>b</key>
+									<string>0</string>
+									<key>g</key>
+									<string>0</string>
+									<key>r</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Roboto-Condensed</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>1972</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+							<key>Text</key>
+							<dict>
+								<key>Pad</key>
+								<integer>2</integer>
+								<key>RTFD</key>
+								<data>
+								BAtzdHJlYW10
+								eXBlZIHoA4QB
+								QISEhBJOU0F0
+								dHJpYnV0ZWRT
+								dHJpbmcAhIQI
+								TlNPYmplY3QA
+								hZKEhIQITlNT
+								dHJpbmcBlIQB
+								Kw5Hb29nbGUg
+								U2VydmVyc4aE
+								AmlJAQ6ShISE
+								DE5TRGljdGlv
+								bmFyeQCUhAFp
+								A5KElpYHTlND
+								b2xvcoaShISE
+								B05TQ29sb3IA
+								lIQBYwOEAmZm
+								AINmZiY/hpKE
+								lpYQTlNQYXJh
+								Z3JhcGhTdHls
+								ZYaShISEEE5T
+								UGFyYWdyYXBo
+								U3R5bGUAlIQE
+								Q0NAUwIAhISE
+								B05TQXJyYXkA
+								lJkMkoSEhAlO
+								U1RleHRUYWIA
+								lIQCQ2YAHIaS
+								hKKhADiGkoSi
+								oQBUhpKEoqEA
+								cIaShKKhAIGM
+								AIaShKKhAIGo
+								AIaShKKhAIHE
+								AIaShKKhAIHg
+								AIaShKKhAIH8
+								AIaShKKhAIEY
+								AYaShKKhAIE0
+								AYaShKKhAIFQ
+								AYaGAIaShJaW
+								Bk5TRm9udIaS
+								hISEBk5TRm9u
+								dB6UmRyEBVsy
+								OGNdBgAAABQA
+								AAD//kgAZQBs
+								AHYAZQB0AGkA
+								YwBhAIQBZgyb
+								AJsBmwCbAIaG
+								hg==
+								</data>
+								<key>Text</key>
+								<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;\red0\green0\blue0;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural\qc
+
+\f0\fs24 \cf2 Google Servers}</string>
+								<key>alpha</key>
+								<array>
+									<array>
+										<integer>0</integer>
+										<integer>14</integer>
+										<real>0.64999997615814209</real>
+									</array>
+								</array>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{27.500000000000043, 31.027813195885251}, {199.99999999999991, 96.972186804114742}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>a</key>
+									<string>0.65</string>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Roboto-BoldCondensed</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>1973</integer>
+							<key>Magnets</key>
+							<array>
+								<string>{0, 1}</string>
+								<string>{0, -1}</string>
+								<string>{1, 0}</string>
+								<string>{-1, 0}</string>
+							</array>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>b</key>
+										<string>0.578326</string>
+										<key>g</key>
+										<string>0.578615</string>
+										<key>r</key>
+										<string>0.578453</string>
+									</dict>
+									<key>CornerRadius</key>
+									<real>5</real>
+									<key>Pattern</key>
+									<integer>1</integer>
+								</dict>
+							</dict>
+							<key>Text</key>
+							<dict>
+								<key>VerticalPad</key>
+								<integer>10</integer>
+							</dict>
+							<key>TextPlacement</key>
+							<integer>0</integer>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>1971</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>LineGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>w</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>12</real>
+					</dict>
+					<key>Head</key>
+					<dict>
+						<key>ID</key>
+						<integer>251</integer>
+					</dict>
+					<key>ID</key>
+					<integer>1895</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>OrthogonalBarAutomatic</key>
+					<true/>
+					<key>OrthogonalBarPoint</key>
+					<string>{293, 271.5}</string>
+					<key>OrthogonalBarPosition</key>
+					<real>-1</real>
+					<key>Points</key>
+					<array>
+						<string>{121.5, 232}</string>
+						<string>{121.5, 303}</string>
+					</array>
+					<key>Style</key>
+					<dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.7</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>4</real>
+							<key>HeadArrow</key>
+							<string>FilledArrow</string>
+							<key>Legacy</key>
+							<true/>
+							<key>LineType</key>
+							<integer>2</integer>
+							<key>TailArrow</key>
+							<string>FilledArrow</string>
+						</dict>
+					</dict>
+					<key>Tail</key>
+					<dict>
+						<key>ID</key>
+						<integer>250</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>LineGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>w</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>12</real>
+					</dict>
+					<key>Head</key>
+					<dict>
+						<key>ID</key>
+						<integer>252</integer>
+					</dict>
+					<key>ID</key>
+					<integer>198</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>OrthogonalBarAutomatic</key>
+					<true/>
+					<key>OrthogonalBarPoint</key>
+					<string>{0, 0}</string>
+					<key>OrthogonalBarPosition</key>
+					<real>-1</real>
+					<key>Points</key>
+					<array>
+						<string>{180.49999999999997, 71.915149999999997}</string>
+						<string>{257.5, 104.58485}</string>
+						<string>{257.5, 181.83030000000002}</string>
+					</array>
+					<key>Style</key>
+					<dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.7</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>4</real>
+							<key>HeadArrow</key>
+							<string>FilledArrow</string>
+							<key>Legacy</key>
+							<true/>
+							<key>LineType</key>
+							<integer>2</integer>
+							<key>TailArrow</key>
+							<string>FilledArrow</string>
+						</dict>
+					</dict>
+					<key>Tail</key>
+					<dict>
+						<key>ID</key>
+						<integer>158</integer>
+						<key>Info</key>
+						<integer>7</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>LineGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>w</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>12</real>
+					</dict>
+					<key>Head</key>
+					<dict>
+						<key>ID</key>
+						<integer>250</integer>
+					</dict>
+					<key>ID</key>
+					<integer>1893</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>OrthogonalBarAutomatic</key>
+					<true/>
+					<key>OrthogonalBarPoint</key>
+					<string>{293, 271.5}</string>
+					<key>OrthogonalBarPosition</key>
+					<real>-1</real>
+					<key>Points</key>
+					<array>
+						<string>{121.5, 97}</string>
+						<string>{121.5, 181.83029999999999}</string>
+					</array>
+					<key>Style</key>
+					<dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.7</string>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>4</real>
+							<key>HeadArrow</key>
+							<string>FilledArrow</string>
+							<key>Legacy</key>
+							<true/>
+							<key>LineType</key>
+							<integer>2</integer>
+							<key>TailArrow</key>
+							<string>FilledArrow</string>
+						</dict>
+					</dict>
+					<key>Tail</key>
+					<dict>
+						<key>ID</key>
+						<integer>158</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{212.5, 181.83029999999999}, {90, 50.169699999999999}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>252</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.49144199999999999, 0.26006299999999999}</string>
+						<string>{0.50711799999999996, -0.22408600000000001}</string>
+						<string>{0.50711799999999996, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27977999999999997, -0.47847800000000001}</string>
+						<string>{0.29393799999999998, 0.54304399999999997}</string>
+						<string>{-0.28623199999999999, 0.55380399999999996}</string>
+					</array>
+					<key>Shape</key>
+					<string>RoundRect</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0.8</string>
+								<key>r</key>
+								<string>0.6</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0.328823</string>
+								<key>g</key>
+								<string>0.328823</string>
+								<key>r</key>
+								<string>0.328823</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>1.5349206924438477</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0.6</string>
+								<key>r</key>
+								<string>0.4</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Watch 2}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{76.5, 303}, {90, 50.169699999999999}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>251</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.49144199999999999, 0.26006299999999999}</string>
+						<string>{0.50711799999999996, -0.22408600000000001}</string>
+						<string>{0.50711799999999996, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27977999999999997, -0.47847800000000001}</string>
+						<string>{0.29393799999999998, 0.54304399999999997}</string>
+						<string>{-0.28623199999999999, 0.55380399999999996}</string>
+					</array>
+					<key>Shape</key>
+					<string>RoundRect</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0.8</string>
+								<key>r</key>
+								<string>0.6</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0.328823</string>
+								<key>g</key>
+								<string>0.328823</string>
+								<key>r</key>
+								<string>0.328823</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>1.5349206924438477</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0.6</string>
+								<key>r</key>
+								<string>0.4</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Watch 1}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{62.5, 181.83029999999999}, {118, 50.169699999999999}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>10</real>
+					</dict>
+					<key>ID</key>
+					<integer>250</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.49144199999999999, 0.26006299999999999}</string>
+						<string>{0.50711799999999996, -0.22408600000000001}</string>
+						<string>{0.50711799999999996, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27977999999999997, -0.47847800000000001}</string>
+						<string>{0.29393799999999998, 0.54304399999999997}</string>
+						<string>{-0.28623199999999999, 0.55380399999999996}</string>
+					</array>
+					<key>Shape</key>
+					<string>RoundRect</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0.8</string>
+								<key>r</key>
+								<string>0.6</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0.328823</string>
+								<key>g</key>
+								<string>0.328823</string>
+								<key>r</key>
+								<string>0.328823</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>1.5349206924438477</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0</string>
+								<key>g</key>
+								<string>0.6</string>
+								<key>r</key>
+								<string>0.4</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Phone}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Bounds</key>
+					<string>{{62.5, 46.830299999999994}, {118, 50.169699999999999}}</string>
+					<key>Class</key>
+					<string>ShapedGraphic</string>
+					<key>FontInfo</key>
+					<dict>
+						<key>Color</key>
+						<dict>
+							<key>b</key>
+							<string>0</string>
+							<key>g</key>
+							<string>0</string>
+							<key>r</key>
+							<string>0</string>
+						</dict>
+						<key>Font</key>
+						<string>Roboto-BoldCondensed</string>
+						<key>Size</key>
+						<real>12</real>
+					</dict>
+					<key>ID</key>
+					<integer>158</integer>
+					<key>Layer</key>
+					<integer>0</integer>
+					<key>Magnets</key>
+					<array>
+						<string>{1, 1}</string>
+						<string>{1, -1}</string>
+						<string>{-1, -1}</string>
+						<string>{-1, 1}</string>
+						<string>{0, 1}</string>
+						<string>{0, -1}</string>
+						<string>{1, 0}</string>
+						<string>{-1, 0}</string>
+						<string>{-0.5, -0.233518}</string>
+						<string>{-0.49144199999999999, 0.26006299999999999}</string>
+						<string>{0.50711799999999996, -0.22408600000000001}</string>
+						<string>{0.50711799999999996, 0.267179}</string>
+						<string>{-0.27431, -0.474028}</string>
+						<string>{0.27977999999999997, -0.47847800000000001}</string>
+						<string>{0.29393799999999998, 0.54304399999999997}</string>
+						<string>{-0.28623199999999999, 0.55380399999999996}</string>
+					</array>
+					<key>Shape</key>
+					<string>RoundRect</string>
+					<key>Style</key>
+					<dict>
+						<key>fill</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.898039</string>
+								<key>g</key>
+								<string>0.709804</string>
+								<key>r</key>
+								<string>0.2</string>
+							</dict>
+						</dict>
+						<key>shadow</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>a</key>
+								<string>0.35</string>
+								<key>b</key>
+								<string>0.328823</string>
+								<key>g</key>
+								<string>0.328823</string>
+								<key>r</key>
+								<string>0.328823</string>
+							</dict>
+							<key>Fuzziness</key>
+							<real>1.5349206924438477</real>
+							<key>ShadowVector</key>
+							<string>{0, 1}</string>
+						</dict>
+						<key>stroke</key>
+						<dict>
+							<key>Color</key>
+							<dict>
+								<key>b</key>
+								<string>0.8</string>
+								<key>g</key>
+								<string>0.6</string>
+								<key>r</key>
+								<string>0</string>
+							</dict>
+							<key>CornerRadius</key>
+							<real>3</real>
+							<key>Draws</key>
+							<string>NO</string>
+						</dict>
+					</dict>
+					<key>Text</key>
+					<dict>
+						<key>Text</key>
+						<string>{\rtf1\ansi\ansicpg1252\cocoartf1265\cocoasubrtf210
+{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Cloud Node}</string>
+						<key>VerticalPad</key>
+						<integer>0</integer>
+					</dict>
+				</dict>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{890, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>45</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{810, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>46</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{730, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>47</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{650, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>48</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{570, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>49</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{490, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>50</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{410, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>51</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{330, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>52</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{250, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>53</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{170, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>54</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{90, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>55</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{10, 0}, {60, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>56</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>44</integer>
+					<key>Layer</key>
+					<integer>1</integer>
+				</dict>
+			</array>
+			<key>GridInfo</key>
+			<dict>
+				<key>GridSpacing</key>
+				<real>1</real>
+				<key>MajorGridColor</key>
+				<dict>
+					<key>a</key>
+					<string>0.15</string>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>MajorGridSpacing</key>
+				<integer>10</integer>
+				<key>ShowsGrid</key>
+				<string>YES</string>
+				<key>SnapsToGrid</key>
+				<string>YES</string>
+			</dict>
+			<key>HPages</key>
+			<integer>1</integer>
+			<key>KeepToScale</key>
+			<false/>
+			<key>Layers</key>
+			<array>
+				<dict>
+					<key>Lock</key>
+					<string>NO</string>
+					<key>Name</key>
+					<string>Layer 1</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+				<dict>
+					<key>Lock</key>
+					<string>YES</string>
+					<key>Name</key>
+					<string>12 Column Grid</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>NO</string>
+				</dict>
+			</array>
+			<key>LayoutInfo</key>
+			<dict>
+				<key>Animate</key>
+				<string>NO</string>
+				<key>circoMinDist</key>
+				<real>18</real>
+				<key>circoSeparation</key>
+				<real>0.0</real>
+				<key>layoutEngine</key>
+				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
+				<key>neatoSeparation</key>
+				<real>0.0</real>
+				<key>twopiSeparation</key>
+				<real>0.0</real>
+			</dict>
+			<key>Orientation</key>
+			<integer>2</integer>
+			<key>PrintOnePage</key>
+			<false/>
+			<key>RowAlign</key>
+			<integer>1</integer>
+			<key>RowSpacing</key>
+			<real>24</real>
+			<key>SheetTitle</key>
+			<string>12 Columns</string>
+			<key>UniqueID</key>
+			<integer>1</integer>
+			<key>VPages</key>
+			<integer>1</integer>
+			<key>VerticalGuides</key>
+			<array>
+				<real>10</real>
+				<real>70</real>
+				<real>90</real>
+				<real>149</real>
+				<real>170</real>
+				<real>230</real>
+				<real>250</real>
+				<real>310</real>
+				<real>330</real>
+				<real>390</real>
+				<real>410</real>
+				<real>470</real>
+				<real>490</real>
+				<real>550</real>
+				<real>570</real>
+				<real>630</real>
+				<real>650</real>
+				<real>710</real>
+				<real>730</real>
+				<real>790</real>
+				<real>810</real>
+				<real>870</real>
+				<real>890</real>
+				<real>950</real>
+			</array>
+		</dict>
+		<dict>
+			<key>ActiveLayerIndex</key>
+			<integer>0</integer>
+			<key>AutoAdjust</key>
+			<false/>
+			<key>BackgroundGraphic</key>
+			<dict>
+				<key>Bounds</key>
+				<string>{{0, 0}, {960, 1172}}</string>
+				<key>Class</key>
+				<string>SolidGraphic</string>
+				<key>ID</key>
+				<integer>2</integer>
+				<key>Style</key>
+				<dict>
+					<key>stroke</key>
+					<dict>
+						<key>Draws</key>
+						<string>NO</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>BaseZoom</key>
+			<integer>0</integer>
+			<key>CanvasOrigin</key>
+			<string>{0, 0}</string>
+			<key>CanvasSize</key>
+			<string>{960, 1172}</string>
+			<key>ColumnAlign</key>
+			<integer>1</integer>
+			<key>ColumnSpacing</key>
+			<real>20</real>
+			<key>DisplayScale</key>
+			<string>1.0 pt = 1.0 px</string>
+			<key>GraphicsList</key>
+			<array>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{910, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>165</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{850, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>166</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{790, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>167</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{730, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>168</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{670, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>169</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{610, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>170</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{550, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>171</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{490, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>172</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{430, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>173</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{370, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>174</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{310, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>175</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{250, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>176</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{190, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>177</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{130, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>178</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{70, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>179</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{10, 0}, {40, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>180</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>164</integer>
+					<key>Layer</key>
+					<integer>1</integer>
+				</dict>
+			</array>
+			<key>GridInfo</key>
+			<dict>
+				<key>GridSpacing</key>
+				<real>1</real>
+				<key>MajorGridColor</key>
+				<dict>
+					<key>a</key>
+					<string>0.15</string>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>MajorGridSpacing</key>
+				<integer>10</integer>
+				<key>ShowsGrid</key>
+				<string>YES</string>
+				<key>SnapsToGrid</key>
+				<string>YES</string>
+			</dict>
+			<key>HPages</key>
+			<integer>2</integer>
+			<key>KeepToScale</key>
+			<false/>
+			<key>Layers</key>
+			<array>
+				<dict>
+					<key>Lock</key>
+					<string>NO</string>
+					<key>Name</key>
+					<string>Layer 1</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+				<dict>
+					<key>Lock</key>
+					<string>YES</string>
+					<key>Name</key>
+					<string>16 Column Grid</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+			</array>
+			<key>LayoutInfo</key>
+			<dict>
+				<key>Animate</key>
+				<string>NO</string>
+				<key>circoMinDist</key>
+				<real>18</real>
+				<key>circoSeparation</key>
+				<real>0.0</real>
+				<key>layoutEngine</key>
+				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
+				<key>neatoSeparation</key>
+				<real>0.0</real>
+				<key>twopiSeparation</key>
+				<real>0.0</real>
+			</dict>
+			<key>Orientation</key>
+			<integer>2</integer>
+			<key>PrintOnePage</key>
+			<false/>
+			<key>RowAlign</key>
+			<integer>1</integer>
+			<key>RowSpacing</key>
+			<real>24</real>
+			<key>SheetTitle</key>
+			<string>16 Columns</string>
+			<key>UniqueID</key>
+			<integer>2</integer>
+			<key>VPages</key>
+			<integer>2</integer>
+			<key>VerticalGuides</key>
+			<array>
+				<real>10</real>
+				<real>50</real>
+				<real>70</real>
+				<real>110</real>
+				<real>130</real>
+				<real>170</real>
+				<real>190</real>
+				<real>230</real>
+				<real>250</real>
+				<real>290</real>
+				<real>310</real>
+				<real>350</real>
+				<real>370</real>
+				<real>410</real>
+				<real>430</real>
+				<real>470</real>
+				<real>490</real>
+				<real>530</real>
+				<real>550</real>
+				<real>590</real>
+				<real>610</real>
+				<real>650</real>
+				<real>670</real>
+				<real>710</real>
+				<real>730</real>
+				<real>770</real>
+				<real>790</real>
+				<real>830</real>
+				<real>850</real>
+				<real>890</real>
+				<real>910</real>
+				<real>950</real>
+			</array>
+		</dict>
+		<dict>
+			<key>ActiveLayerIndex</key>
+			<integer>0</integer>
+			<key>AutoAdjust</key>
+			<false/>
+			<key>BackgroundGraphic</key>
+			<dict>
+				<key>Bounds</key>
+				<string>{{0, 0}, {960, 1172}}</string>
+				<key>Class</key>
+				<string>SolidGraphic</string>
+				<key>ID</key>
+				<integer>2</integer>
+				<key>Style</key>
+				<dict>
+					<key>stroke</key>
+					<dict>
+						<key>Draws</key>
+						<string>NO</string>
+					</dict>
+				</dict>
+			</dict>
+			<key>BaseZoom</key>
+			<integer>0</integer>
+			<key>CanvasOrigin</key>
+			<string>{0, 0}</string>
+			<key>CanvasSize</key>
+			<string>{960, 1172}</string>
+			<key>ColumnAlign</key>
+			<integer>1</integer>
+			<key>ColumnSpacing</key>
+			<real>10</real>
+			<key>DisplayScale</key>
+			<string>1.0 pt = 1.0 px</string>
+			<key>GraphicsList</key>
+			<array>
+				<dict>
+					<key>Class</key>
+					<string>Group</string>
+					<key>Graphics</key>
+					<array>
+						<dict>
+							<key>Bounds</key>
+							<string>{{925, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>193</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{885, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>194</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{845, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>195</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{805, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>196</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{765, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>197</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{725, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>198</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{685, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>199</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{645, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>200</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{605, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>201</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{565, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>202</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{525, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>203</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{485, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>204</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{445, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>205</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{405, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>206</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{365, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>207</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{325, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>208</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{285, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>209</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{245, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>210</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{205, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>211</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{165, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>212</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{125, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>213</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{85, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>214</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{45, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>215</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+						<dict>
+							<key>Bounds</key>
+							<string>{{5, 0}, {30, 1172}}</string>
+							<key>Class</key>
+							<string>ShapedGraphic</string>
+							<key>FontInfo</key>
+							<dict>
+								<key>Color</key>
+								<dict>
+									<key>w</key>
+									<string>0</string>
+								</dict>
+								<key>Font</key>
+								<string>Helvetica</string>
+								<key>Size</key>
+								<real>12</real>
+							</dict>
+							<key>ID</key>
+							<integer>216</integer>
+							<key>Shape</key>
+							<string>Rectangle</string>
+							<key>Style</key>
+							<dict>
+								<key>fill</key>
+								<dict>
+									<key>Color</key>
+									<dict>
+										<key>a</key>
+										<string>0.1</string>
+										<key>b</key>
+										<string>1</string>
+										<key>g</key>
+										<string>0</string>
+										<key>r</key>
+										<string>1</string>
+									</dict>
+								</dict>
+								<key>shadow</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+								<key>stroke</key>
+								<dict>
+									<key>Draws</key>
+									<string>NO</string>
+								</dict>
+							</dict>
+						</dict>
+					</array>
+					<key>ID</key>
+					<integer>192</integer>
+					<key>Layer</key>
+					<integer>1</integer>
+				</dict>
+			</array>
+			<key>GridInfo</key>
+			<dict>
+				<key>GridSpacing</key>
+				<real>1</real>
+				<key>MajorGridColor</key>
+				<dict>
+					<key>a</key>
+					<string>0.15</string>
+					<key>b</key>
+					<string>0</string>
+					<key>g</key>
+					<string>0</string>
+					<key>r</key>
+					<string>0</string>
+				</dict>
+				<key>MajorGridSpacing</key>
+				<integer>5</integer>
+				<key>ShowsGrid</key>
+				<string>YES</string>
+				<key>SnapsToGrid</key>
+				<string>YES</string>
+			</dict>
+			<key>HPages</key>
+			<integer>2</integer>
+			<key>KeepToScale</key>
+			<false/>
+			<key>Layers</key>
+			<array>
+				<dict>
+					<key>Lock</key>
+					<string>NO</string>
+					<key>Name</key>
+					<string>Layer 1</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+				<dict>
+					<key>Lock</key>
+					<string>YES</string>
+					<key>Name</key>
+					<string>24 Column Grid</string>
+					<key>Print</key>
+					<string>YES</string>
+					<key>View</key>
+					<string>YES</string>
+				</dict>
+			</array>
+			<key>LayoutInfo</key>
+			<dict>
+				<key>Animate</key>
+				<string>NO</string>
+				<key>circoMinDist</key>
+				<real>18</real>
+				<key>circoSeparation</key>
+				<real>0.0</real>
+				<key>layoutEngine</key>
+				<string>dot</string>
+				<key>neatoLineLength</key>
+				<real>0.20000000298023224</real>
+				<key>neatoSeparation</key>
+				<real>0.0</real>
+				<key>twopiSeparation</key>
+				<real>0.0</real>
+			</dict>
+			<key>Orientation</key>
+			<integer>2</integer>
+			<key>PrintOnePage</key>
+			<false/>
+			<key>RowAlign</key>
+			<integer>1</integer>
+			<key>RowSpacing</key>
+			<real>24</real>
+			<key>SheetTitle</key>
+			<string>24 Columns</string>
+			<key>UniqueID</key>
+			<integer>3</integer>
+			<key>VPages</key>
+			<integer>2</integer>
+			<key>VerticalGuides</key>
+			<array>
+				<real>5</real>
+				<real>35</real>
+				<real>45</real>
+				<real>75</real>
+				<real>85</real>
+				<real>115</real>
+				<real>125</real>
+				<real>155</real>
+				<real>165</real>
+				<real>195</real>
+				<real>205</real>
+				<real>235</real>
+				<real>245</real>
+				<real>275</real>
+				<real>285</real>
+				<real>315</real>
+				<real>325</real>
+				<real>355</real>
+				<real>365</real>
+				<real>395</real>
+				<real>405</real>
+				<real>435</real>
+				<real>445</real>
+				<real>475</real>
+				<real>485</real>
+				<real>515</real>
+				<real>525</real>
+				<real>555</real>
+				<real>565</real>
+				<real>595</real>
+				<real>605</real>
+				<real>635</real>
+				<real>645</real>
+				<real>675</real>
+				<real>685</real>
+				<real>715</real>
+				<real>725</real>
+				<real>755</real>
+				<real>765</real>
+				<real>795</real>
+				<real>805</real>
+				<real>835</real>
+				<real>845</real>
+				<real>875</real>
+				<real>885</real>
+				<real>915</real>
+				<real>925</real>
+				<real>955</real>
+			</array>
+		</dict>
+	</array>
+	<key>SmartAlignmentGuidesActive</key>
+	<string>YES</string>
+	<key>SmartDistanceGuidesActive</key>
+	<string>YES</string>
+	<key>UseEntirePage</key>
+	<false/>
+	<key>WindowInfo</key>
+	<dict>
+		<key>BottomSlabHeight</key>
+		<real>471</real>
+		<key>CurrentSheet</key>
+		<integer>0</integer>
+		<key>Expanded_Canvases</key>
+		<array/>
+		<key>ShowInfo</key>
+		<true/>
+		<key>ShowRuler</key>
+		<true/>
+		<key>Sidebar</key>
+		<true/>
+		<key>SidebarWidth</key>
+		<integer>230</integer>
+		<key>VisibleRegion</key>
+		<string>{{0, 0}, {893, 674}}</string>
+		<key>Zoom</key>
+		<real>1</real>
+		<key>ZoomValues</key>
+		<array>
+			<array>
+				<string>12 Columns</string>
+				<real>1</real>
+				<real>1</real>
+			</array>
+		</array>
+	</dict>
+</dict>
+</plist>
diff --git a/graphics/java/android/graphics/Canvas.java b/graphics/java/android/graphics/Canvas.java
index 48afcbf..2acb8ba 100644
--- a/graphics/java/android/graphics/Canvas.java
+++ b/graphics/java/android/graphics/Canvas.java
@@ -81,10 +81,6 @@
      */
     protected int mScreenDensity = Bitmap.DENSITY_NONE;
 
-    // Used by native code
-    @SuppressWarnings("UnusedDeclaration")
-    private int mSurfaceFormat;
-
     /**
      * Flag for drawTextRun indicating left-to-right run direction.
      * @hide
@@ -137,7 +133,7 @@
     public Canvas() {
         if (!isHardwareAccelerated()) {
             // 0 means no native bitmap
-            mNativeCanvasWrapper = initRaster(0);
+            mNativeCanvasWrapper = initRaster(null);
             mFinalizer = new CanvasFinalizer(mNativeCanvasWrapper);
         } else {
             mFinalizer = null;
@@ -158,7 +154,7 @@
             throw new IllegalStateException("Immutable bitmap passed to Canvas constructor");
         }
         throwIfCannotDraw(bitmap);
-        mNativeCanvasWrapper = initRaster(bitmap.getSkBitmap());
+        mNativeCanvasWrapper = initRaster(bitmap);
         mFinalizer = new CanvasFinalizer(mNativeCanvasWrapper);
         mBitmap = bitmap;
         mDensity = bitmap.mDensity;
@@ -215,7 +211,7 @@
         }
 
         if (bitmap == null) {
-            native_setBitmap(mNativeCanvasWrapper, 0, false);
+            native_setBitmap(mNativeCanvasWrapper, null);
             mDensity = Bitmap.DENSITY_NONE;
         } else {
             if (!bitmap.isMutable()) {
@@ -223,7 +219,7 @@
             }
             throwIfCannotDraw(bitmap);
 
-            native_setBitmap(mNativeCanvasWrapper, bitmap.getSkBitmap(), true);
+            native_setBitmap(mNativeCanvasWrapper, bitmap);
             mDensity = bitmap.mDensity;
         }
 
@@ -231,13 +227,6 @@
     }
 
     /**
-     * setBitmap() variant for native callers with a raw bitmap handle.
-     */
-    private void setNativeBitmap(long bitmapHandle) {
-        native_setBitmap(mNativeCanvasWrapper, bitmapHandle, false);
-    }
-
-    /**
      * Set the viewport dimensions if this canvas is GL based. If it is not,
      * this method is ignored and no exception is thrown.
      *
@@ -1976,10 +1965,9 @@
      */
     public static native void freeTextLayoutCaches();
 
-    private static native long initRaster(long nativeBitmapOrZero);
+    private static native long initRaster(Bitmap bitmap);
     private static native void native_setBitmap(long canvasHandle,
-                                                long bitmapHandle,
-                                                boolean copyState);
+                                                Bitmap bitmap);
     private static native boolean native_isOpaque(long canvasHandle);
     private static native int native_getWidth(long canvasHandle);
     private static native int native_getHeight(long canvasHandle);
diff --git a/graphics/java/android/graphics/ImageFormat.java b/graphics/java/android/graphics/ImageFormat.java
index c63c8ba..d6f8cca 100644
--- a/graphics/java/android/graphics/ImageFormat.java
+++ b/graphics/java/android/graphics/ImageFormat.java
@@ -181,7 +181,7 @@
     public static final int JPEG = 0x100;
 
     /**
-     * <p>Multi-plane Android YUV format</p>
+     * <p>Multi-plane Android YUV 420 format</p>
      *
      * <p>This format is a generic YCbCr format, capable of describing any 4:2:0
      * chroma-subsampled planar or semiplanar buffer (but not fully interleaved),
@@ -219,6 +219,135 @@
     public static final int YUV_420_888 = 0x23;
 
     /**
+     * <p>Multi-plane Android YUV 422 format</p>
+     *
+     * <p>This format is a generic YCbCr format, capable of describing any 4:2:2
+     * chroma-subsampled (planar, semiplanar or interleaved) format,
+     * with 8 bits per color sample.</p>
+     *
+     * <p>Images in this format are always represented by three separate buffers
+     * of data, one for each color plane. Additional information always
+     * accompanies the buffers, describing the row stride and the pixel stride
+     * for each plane.</p>
+     *
+     * <p>The order of planes in the array returned by
+     * {@link android.media.Image#getPlanes() Image#getPlanes()} is guaranteed such that
+     * plane #0 is always Y, plane #1 is always U (Cb), and plane #2 is always V (Cr).</p>
+     *
+     * <p>In contrast to the {@link #YUV_420_888} format, the Y-plane may have a pixel
+     * stride greater than 1 in
+     * {@link android.media.Image.Plane#getPixelStride() yPlane.getPixelStride()}.</p>
+     *
+     * <p>The U/V planes are guaranteed to have the same row stride and pixel stride
+     * (in particular,
+     * {@link android.media.Image.Plane#getRowStride() uPlane.getRowStride()}
+     * == {@link android.media.Image.Plane#getRowStride() vPlane.getRowStride()} and
+     * {@link android.media.Image.Plane#getPixelStride() uPlane.getPixelStride()}
+     * == {@link android.media.Image.Plane#getPixelStride() vPlane.getPixelStride()};
+     * ).</p>
+     *
+     * <p>For example, the {@link android.media.Image} object can provide data
+     * in this format from a {@link android.media.MediaCodec}
+     * through {@link android.media.MediaCodec#getOutputImage} object.</p>
+     *
+     * @see android.media.Image
+     * @see android.media.MediaCodec
+     */
+    public static final int YUV_422_888 = 0x27;
+
+    /**
+     * <p>Multi-plane Android YUV 444 format</p>
+     *
+     * <p>This format is a generic YCbCr format, capable of describing any 4:4:4
+     * (planar, semiplanar or interleaved) format,
+     * with 8 bits per color sample.</p>
+     *
+     * <p>Images in this format are always represented by three separate buffers
+     * of data, one for each color plane. Additional information always
+     * accompanies the buffers, describing the row stride and the pixel stride
+     * for each plane.</p>
+     *
+     * <p>The order of planes in the array returned by
+     * {@link android.media.Image#getPlanes() Image#getPlanes()} is guaranteed such that
+     * plane #0 is always Y, plane #1 is always U (Cb), and plane #2 is always V (Cr).</p>
+     *
+     * <p>In contrast to the {@link #YUV_420_888} format, the Y-plane may have a pixel
+     * stride greater than 1 in
+     * {@link android.media.Image.Plane#getPixelStride() yPlane.getPixelStride()}.</p>
+     *
+     * <p>The U/V planes are guaranteed to have the same row stride and pixel stride
+     * (in particular,
+     * {@link android.media.Image.Plane#getRowStride() uPlane.getRowStride()}
+     * == {@link android.media.Image.Plane#getRowStride() vPlane.getRowStride()} and
+     * {@link android.media.Image.Plane#getPixelStride() uPlane.getPixelStride()}
+     * == {@link android.media.Image.Plane#getPixelStride() vPlane.getPixelStride()};
+     * ).</p>
+     *
+     * <p>For example, the {@link android.media.Image} object can provide data
+     * in this format from a {@link android.media.MediaCodec}
+     * through {@link android.media.MediaCodec#getOutputImage} object.</p>
+     *
+     * @see android.media.Image
+     * @see android.media.MediaCodec
+     */
+    public static final int YUV_444_888 = 0x28;
+
+    /**
+     * <p>Multi-plane Android RGB format</p>
+     *
+     * <p>This format is a generic RGB format, capable of describing most RGB formats,
+     * with 8 bits per color sample.</p>
+     *
+     * <p>Images in this format are always represented by three separate buffers
+     * of data, one for each color plane. Additional information always
+     * accompanies the buffers, describing the row stride and the pixel stride
+     * for each plane.</p>
+     *
+     * <p>The order of planes in the array returned by
+     * {@link android.media.Image#getPlanes() Image#getPlanes()} is guaranteed such that
+     * plane #0 is always R (red), plane #1 is always G (green), and plane #2 is always B
+     * (blue).</p>
+     *
+     * <p>All three planes are guaranteed to have the same row strides and pixel strides.</p>
+     *
+     * <p>For example, the {@link android.media.Image} object can provide data
+     * in this format from a {@link android.media.MediaCodec}
+     * through {@link android.media.MediaCodec#getOutputImage} object.</p>
+     *
+     * @see android.media.Image
+     * @see android.media.MediaCodec
+     */
+    public static final int FLEX_RGB_888 = 0x29;
+
+    /**
+     * <p>Multi-plane Android RGBA format</p>
+     *
+     * <p>This format is a generic RGBA format, capable of describing most RGBA formats,
+     * with 8 bits per color sample.</p>
+     *
+     * <p>Images in this format are always represented by four separate buffers
+     * of data, one for each color plane. Additional information always
+     * accompanies the buffers, describing the row stride and the pixel stride
+     * for each plane.</p>
+     *
+     * <p>The order of planes in the array returned by
+     * {@link android.media.Image#getPlanes() Image#getPlanes()} is guaranteed such that
+     * plane #0 is always R (red), plane #1 is always G (green), plane #2 is always B (blue),
+     * and plane #3 is always A (alpha). This format may represent pre-multiplied or
+     * non-premultiplied alpha.</p>
+     *
+     * <p>All four planes are guaranteed to have the same row strides and pixel strides.</p>
+     *
+     * <p>For example, the {@link android.media.Image} object can provide data
+     * in this format from a {@link android.media.MediaCodec}
+     * through {@link android.media.MediaCodec#getOutputImage} object.</p>
+     *
+     * @see android.media.Image
+     * @see android.media.MediaCodec
+     */
+    public static final int FLEX_RGBA_8888 = 0x2A;
+
+    /**
      * <p>General raw camera sensor image format, usually representing a
      * single-channel Bayer-mosaic image. Each pixel color sample is stored with
      * 16 bits of precision.</p>
@@ -543,6 +672,14 @@
                 return 12;
             case YUV_420_888:
                 return 12;
+            case YUV_422_888:
+                return 16;
+            case YUV_444_888:
+                return 24;
+            case FLEX_RGB_888:
+                return 24;
+            case FLEX_RGBA_8888:
+                return 32;
             case RAW_SENSOR:
                 return 16;
             case RAW10:
@@ -574,6 +711,10 @@
             case JPEG:
             case NV21:
             case YUV_420_888:
+            case YUV_422_888:
+            case YUV_444_888:
+            case FLEX_RGB_888:
+            case FLEX_RGBA_8888:
             case RAW_SENSOR:
             case RAW10:
             case RAW12:
diff --git a/graphics/java/android/graphics/Rect.java b/graphics/java/android/graphics/Rect.java
index a9a8f37..f036b19 100644
--- a/graphics/java/android/graphics/Rect.java
+++ b/graphics/java/android/graphics/Rect.java
@@ -16,6 +16,7 @@
 
 package android.graphics;
 
+import android.annotation.CheckResult;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -389,6 +390,7 @@
      *              (and this rectangle is then set to that intersection) else
      *              return false and do not change this rectangle.
      */
+    @CheckResult
     public boolean intersect(int left, int top, int right, int bottom) {
         if (this.left < right && left < this.right && this.top < bottom && top < this.bottom) {
             if (this.left < left) this.left = left;
@@ -411,6 +413,7 @@
      *              (and this rectangle is then set to that intersection) else
      *              return false and do not change this rectangle.
      */
+    @CheckResult
     public boolean intersect(Rect r) {
         return intersect(r.left, r.top, r.right, r.bottom);
     }
@@ -427,6 +430,7 @@
      *              this rectangle to that intersection. If they do not, return
      *              false and do not change this rectangle.
      */
+    @CheckResult
     public boolean setIntersect(Rect a, Rect b) {
         if (a.left < b.right && b.left < a.right && a.top < b.bottom && b.top < a.bottom) {
             left = Math.max(a.left, b.left);
diff --git a/graphics/java/android/graphics/drawable/LayerDrawable.java b/graphics/java/android/graphics/drawable/LayerDrawable.java
index 8468d9e..3bbbc71 100644
--- a/graphics/java/android/graphics/drawable/LayerDrawable.java
+++ b/graphics/java/android/graphics/drawable/LayerDrawable.java
@@ -86,7 +86,6 @@
 
     LayerState mLayerState;
 
-    private int mOpacityOverride = PixelFormat.UNKNOWN;
     private int[] mPaddingL;
     private int[] mPaddingT;
     private int[] mPaddingR;
@@ -177,12 +176,39 @@
         // Extract the theme attributes, if any.
         state.mThemeAttrs = a.extractThemeAttrs();
 
-        mOpacityOverride = a.getInt(R.styleable.LayerDrawable_opacity, mOpacityOverride);
-
-        state.mAutoMirrored = a.getBoolean(R.styleable.LayerDrawable_autoMirrored,
-                state.mAutoMirrored);
-        state.mPaddingMode = a.getInteger(R.styleable.LayerDrawable_paddingMode,
-                state.mPaddingMode);
+        final int N = a.getIndexCount();
+        for (int i = 0; i < N; i++) {
+            int attr = a.getIndex(i);
+            switch (attr) {
+                case R.styleable.LayerDrawable_opacity:
+                    state.mOpacityOverride = a.getInt(attr, state.mOpacityOverride);
+                    break;
+                case R.styleable.LayerDrawable_paddingTop:
+                    state.mPaddingTop = a.getDimensionPixelOffset(attr, state.mPaddingTop);
+                    break;
+                case R.styleable.LayerDrawable_paddingBottom:
+                    state.mPaddingBottom = a.getDimensionPixelOffset(attr, state.mPaddingBottom);
+                    break;
+                case R.styleable.LayerDrawable_paddingLeft:
+                    state.mPaddingLeft = a.getDimensionPixelOffset(attr, state.mPaddingLeft);
+                    break;
+                case R.styleable.LayerDrawable_paddingRight:
+                    state.mPaddingRight = a.getDimensionPixelOffset(attr, state.mPaddingRight);
+                    break;
+                case R.styleable.LayerDrawable_paddingStart:
+                    state.mPaddingStart = a.getDimensionPixelOffset(attr, state.mPaddingStart);
+                    break;
+                case R.styleable.LayerDrawable_paddingEnd:
+                    state.mPaddingEnd = a.getDimensionPixelOffset(attr, state.mPaddingEnd);
+                    break;
+                case R.styleable.LayerDrawable_autoMirrored:
+                    state.mAutoMirrored = a.getBoolean(attr, state.mAutoMirrored);
+                    break;
+                case R.styleable.LayerDrawable_paddingMode:
+                    state.mPaddingMode = a.getInteger(attr, state.mPaddingMode);
+                    break;
+            }
+        }
     }
 
     /**
@@ -895,15 +921,210 @@
 
     @Override
     public boolean getPadding(Rect padding) {
-        if (mLayerState.mPaddingMode == PADDING_MODE_NEST) {
+        final LayerState layerState = mLayerState;
+        if (layerState.mPaddingMode == PADDING_MODE_NEST) {
             computeNestedPadding(padding);
         } else {
             computeStackedPadding(padding);
         }
 
+        // If padding was explicitly specified (e.g. not -1) then override the
+        // computed padding in that dimension.
+        if (layerState.mPaddingTop >= 0) {
+            padding.top = layerState.mPaddingTop;
+        }
+
+        if (layerState.mPaddingBottom >= 0) {
+            padding.bottom = layerState.mPaddingBottom;
+        }
+
+        final int paddingRtlLeft;
+        final int paddingRtlRight;
+        if (getLayoutDirection() == LayoutDirection.RTL) {
+            paddingRtlLeft = layerState.mPaddingEnd;
+            paddingRtlRight = layerState.mPaddingStart;
+        } else {
+            paddingRtlLeft = layerState.mPaddingStart;
+            paddingRtlRight = layerState.mPaddingEnd;
+        }
+
+        final int paddingLeft =  paddingRtlLeft >= 0 ? paddingRtlLeft : layerState.mPaddingLeft;
+        if (paddingLeft >= 0) {
+            padding.left = paddingLeft;
+        }
+
+        final int paddingRight =  paddingRtlRight >= 0 ? paddingRtlRight : layerState.mPaddingRight;
+        if (paddingRight >= 0) {
+            padding.right = paddingRight;
+        }
+
         return padding.left != 0 || padding.top != 0 || padding.right != 0 || padding.bottom != 0;
     }
 
+    /**
+     * Sets the absolute padding.
+     * <p>
+     * If padding in a dimension is specified as {@code -1}, the resolved
+     * padding will use the value computed according to the padding mode (see
+     * {@link #setPaddingMode(int)}).
+     * <p>
+     * Calling this method clears any relative padding values previously set
+     * using {@link #setPaddingRelative(int, int, int, int)}.
+     *
+     * @param left the left padding in pixels, or -1 to use computed padding
+     * @param top the top padding in pixels, or -1 to use computed padding
+     * @param right the right padding in pixels, or -1 to use computed padding
+     * @param bottom the bottom padding in pixels, or -1 to use computed
+     *               padding
+     * @attr ref android.R.styleable#LayerDrawable_paddingLeft
+     * @attr ref android.R.styleable#LayerDrawable_paddingTop
+     * @attr ref android.R.styleable#LayerDrawable_paddingRight
+     * @attr ref android.R.styleable#LayerDrawable_paddingBottom
+     * @see #setPaddingRelative(int, int, int, int)
+     */
+    public void setPadding(int left, int top, int right, int bottom) {
+        final LayerState layerState = mLayerState;
+        layerState.mPaddingLeft = left;
+        layerState.mPaddingTop = top;
+        layerState.mPaddingRight = right;
+        layerState.mPaddingBottom = bottom;
+
+        // Clear relative padding values.
+        layerState.mPaddingStart = -1;
+        layerState.mPaddingEnd = -1;
+    }
+
+    /**
+     * Sets the relative padding.
+     * <p>
+     * If padding in a dimension is specified as {@code -1}, the resolved
+     * padding will use the value computed according to the padding mode (see
+     * {@link #setPaddingMode(int)}).
+     * <p>
+     * Calling this method clears any absolute padding values previously set
+     * using {@link #setPadding(int, int, int, int)}.
+     *
+     * @param start the start padding in pixels, or -1 to use computed padding
+     * @param top the top padding in pixels, or -1 to use computed padding
+     * @param end the end padding in pixels, or -1 to use computed padding
+     * @param bottom the bottom padding in pixels, or -1 to use computed
+     *               padding
+     * @attr ref android.R.styleable#LayerDrawable_paddingStart
+     * @attr ref android.R.styleable#LayerDrawable_paddingTop
+     * @attr ref android.R.styleable#LayerDrawable_paddingEnd
+     * @attr ref android.R.styleable#LayerDrawable_paddingBottom
+     * @see #setPadding(int, int, int, int)
+     */
+    public void setPaddingRelative(int start, int top, int end, int bottom) {
+        final LayerState layerState = mLayerState;
+        layerState.mPaddingStart = start;
+        layerState.mPaddingTop = top;
+        layerState.mPaddingEnd = end;
+        layerState.mPaddingBottom = bottom;
+
+        // Clear absolute padding values.
+        layerState.mPaddingLeft = -1;
+        layerState.mPaddingRight = -1;
+    }
+
+    /**
+     * Returns the left padding in pixels.
+     * <p>
+     * A return value of {@code -1} means there is no explicit padding set for
+     * this dimension. As a result, the value for this dimension returned by
+     * {@link #getPadding(Rect)} will be computed from the child layers
+     * according to the padding mode (see {@link #getPaddingMode()}.
+     *
+     * @return the left padding in pixels, or -1 if not explicitly specified
+     * @see #setPadding(int, int, int, int)
+     * @see #getPadding(Rect)
+     */
+    public int getLeftPadding() {
+        return mLayerState.mPaddingLeft;
+    }
+
+    /**
+     * Returns the right padding in pixels.
+     * <p>
+     * A return value of {@code -1} means there is no explicit padding set for
+     * this dimension. As a result, the value for this dimension returned by
+     * {@link #getPadding(Rect)} will be computed from the child layers
+     * according to the padding mode (see {@link #getPaddingMode()}.
+     *
+     * @return the right padding in pixels, or -1 if not explicitly specified
+     * @see #setPadding(int, int, int, int)
+     * @see #getPadding(Rect)
+     */
+    public int getRightPadding() {
+        return mLayerState.mPaddingRight;
+    }
+
+    /**
+     * Returns the start padding in pixels.
+     * <p>
+     * A return value of {@code -1} means there is no explicit padding set for
+     * this dimension. As a result, the value for this dimension returned by
+     * {@link #getPadding(Rect)} will be computed from the child layers
+     * according to the padding mode (see {@link #getPaddingMode()}.
+     *
+     * @return the start padding in pixels, or -1 if not explicitly specified
+     * @see #setPaddingRelative(int, int, int, int)
+     * @see #getPadding(Rect)
+     */
+    public int getStartPadding() {
+        return mLayerState.mPaddingStart;
+    }
+
+    /**
+     * Returns the end padding in pixels.
+     * <p>
+     * A return value of {@code -1} means there is no explicit padding set for
+     * this dimension. As a result, the value for this dimension returned by
+     * {@link #getPadding(Rect)} will be computed from the child layers
+     * according to the padding mode (see {@link #getPaddingMode()}.
+     *
+     * @return the end padding in pixels, or -1 if not explicitly specified
+     * @see #setPaddingRelative(int, int, int, int)
+     * @see #getPadding(Rect)
+     */
+    public int getEndPadding() {
+        return mLayerState.mPaddingEnd;
+    }
+
+    /**
+     * Returns the top padding in pixels.
+     * <p>
+     * A return value of {@code -1} means there is no explicit padding set for
+     * this dimension. As a result, the value for this dimension returned by
+     * {@link #getPadding(Rect)} will be computed from the child layers
+     * according to the padding mode (see {@link #getPaddingMode()}.
+     *
+     * @return the top padding in pixels, or -1 if not explicitly specified
+     * @see #setPadding(int, int, int, int)
+     * @see #setPaddingRelative(int, int, int, int)
+     * @see #getPadding(Rect)
+     */
+    public int getTopPadding() {
+        return mLayerState.mPaddingTop;
+    }
+
+    /**
+     * Returns the bottom padding in pixels.
+     * <p>
+     * A return value of {@code -1} means there is no explicit padding set for
+     * this dimension. As a result, the value for this dimension returned by
+     * {@link #getPadding(Rect)} will be computed from the child layers
+     * according to the padding mode (see {@link #getPaddingMode()}.
+     *
+     * @return the bottom padding in pixels, or -1 if not explicitly specified
+     * @see #setPadding(int, int, int, int)
+     * @see #setPaddingRelative(int, int, int, int)
+     * @see #getPadding(Rect)
+     */
+    public int getBottomPadding() {
+        return mLayerState.mPaddingBottom;
+    }
+
     private void computeNestedPadding(Rect padding) {
         padding.left = 0;
         padding.top = 0;
@@ -1109,8 +1330,8 @@
     }
 
     /**
-     * Sets the opacity of this drawable directly, instead of collecting the
-     * states from the layers
+     * Sets the opacity of this drawable directly instead of collecting the
+     * states from the layers.
      *
      * @param opacity The opacity to use, or {@link PixelFormat#UNKNOWN
      *            PixelFormat.UNKNOWN} for the default behavior
@@ -1120,13 +1341,13 @@
      * @see PixelFormat#OPAQUE
      */
     public void setOpacity(int opacity) {
-        mOpacityOverride = opacity;
+        mLayerState.mOpacityOverride = opacity;
     }
 
     @Override
     public int getOpacity() {
-        if (mOpacityOverride != PixelFormat.UNKNOWN) {
-            return mOpacityOverride;
+        if (mLayerState.mOpacityOverride != PixelFormat.UNKNOWN) {
+            return mLayerState.mOpacityOverride;
         }
         return mLayerState.getOpacity();
     }
@@ -1265,12 +1486,12 @@
      * dimension, defaults to START or TOP. Otherwise, defaults to FILL to
      * preserve legacy behavior.
      *
-     * @param gravity
-     * @param width
-     * @param height
-     * @return
+     * @param gravity layer gravity
+     * @param width width of the layer if set, -1 otherwise
+     * @param height height of the layer if set, -1 otherwise
+     * @return the default gravity for the layer
      */
-    private int resolveGravity(int gravity, int width, int height) {
+    private static int resolveGravity(int gravity, int width, int height) {
         if (!Gravity.isHorizontal(gravity)) {
             if (width < 0) {
                 gravity |= Gravity.FILL_HORIZONTAL;
@@ -1504,6 +1725,14 @@
         ChildDrawable[] mChildren;
         int[] mThemeAttrs;
 
+        int mPaddingTop = -1;
+        int mPaddingBottom = -1;
+        int mPaddingLeft = -1;
+        int mPaddingRight = -1;
+        int mPaddingStart = -1;
+        int mPaddingEnd = -1;
+        int mOpacityOverride = PixelFormat.UNKNOWN;
+
         int mChangingConfigurations;
         int mChildrenChangingConfigurations;
 
@@ -1540,6 +1769,13 @@
                 mAutoMirrored = orig.mAutoMirrored;
                 mPaddingMode = orig.mPaddingMode;
                 mThemeAttrs = orig.mThemeAttrs;
+                mPaddingTop = orig.mPaddingTop;
+                mPaddingBottom = orig.mPaddingBottom;
+                mPaddingLeft = orig.mPaddingLeft;
+                mPaddingRight = orig.mPaddingRight;
+                mPaddingStart = orig.mPaddingStart;
+                mPaddingEnd = orig.mPaddingEnd;
+                mOpacityOverride = orig.mOpacityOverride;
             } else {
                 mNum = 0;
                 mChildren = null;
diff --git a/graphics/java/android/graphics/drawable/RippleDrawable.java b/graphics/java/android/graphics/drawable/RippleDrawable.java
index 6731a17..f67dcb3 100644
--- a/graphics/java/android/graphics/drawable/RippleDrawable.java
+++ b/graphics/java/android/graphics/drawable/RippleDrawable.java
@@ -323,7 +323,21 @@
      */
     @Override
     public boolean isProjected() {
-        return getNumberOfLayers() == 0;
+        // If the maximum radius is contained entirely within the bounds, we
+        // don't need to project this ripple.
+        final int radius = mState.mMaxRadius;
+        final Rect bounds = getBounds();
+        if (radius != RADIUS_AUTO && radius <= bounds.width() / 2
+                && radius <= bounds.height() / 2) {
+            return false;
+        }
+
+        // Otherwise, if the layer is bounded then we don't need to project.
+        return !isBounded();
+    }
+
+    private boolean isBounded() {
+        return getNumberOfLayers() > 0;
     }
 
     @Override
@@ -545,7 +559,7 @@
                 y = mHotspotBounds.exactCenterY();
             }
 
-            final boolean isBounded = !isProjected();
+            final boolean isBounded = isBounded();
             mRipple = new RippleForeground(this, mHotspotBounds, x, y, isBounded);
         }
 
@@ -866,7 +880,7 @@
 
     @Override
     public Rect getDirtyBounds() {
-        if (isProjected()) {
+        if (!isBounded()) {
             final Rect drawingBounds = mDrawingBounds;
             final Rect dirtyBounds = mDirtyBounds;
             dirtyBounds.set(drawingBounds);
diff --git a/keystore/java/android/security/KeyStoreCipherSpi.java b/keystore/java/android/security/KeyStoreCipherSpi.java
index 37e00b2..1f8d8ec 100644
--- a/keystore/java/android/security/KeyStoreCipherSpi.java
+++ b/keystore/java/android/security/KeyStoreCipherSpi.java
@@ -152,29 +152,58 @@
 
     @Override
     protected void engineInit(int opmode, Key key, SecureRandom random) throws InvalidKeyException {
-        init(opmode, key, random);
-        initAlgorithmSpecificParameters();
-        ensureKeystoreOperationInitialized();
+        resetAll();
+
+        boolean success = false;
+        try {
+            init(opmode, key, random);
+            initAlgorithmSpecificParameters();
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
     }
 
     @Override
     protected void engineInit(int opmode, Key key, AlgorithmParameters params, SecureRandom random)
             throws InvalidKeyException, InvalidAlgorithmParameterException {
-        init(opmode, key, random);
-        initAlgorithmSpecificParameters(params);
-        ensureKeystoreOperationInitialized();
+        resetAll();
+
+        boolean success = false;
+        try {
+            init(opmode, key, random);
+            initAlgorithmSpecificParameters(params);
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
     }
 
     @Override
     protected void engineInit(int opmode, Key key, AlgorithmParameterSpec params,
             SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException {
-        init(opmode, key, random);
-        initAlgorithmSpecificParameters(params);
-        ensureKeystoreOperationInitialized();
+        resetAll();
+
+        boolean success = false;
+        try {
+            init(opmode, key, random);
+            initAlgorithmSpecificParameters(params);
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
     }
 
     private void init(int opmode, Key key, SecureRandom random) throws InvalidKeyException {
-        resetAll();
         if (!(key instanceof KeyStoreSecretKey)) {
             throw new InvalidKeyException(
                     "Unsupported key: " + ((key != null) ? key.getClass().getName() : "null"));
diff --git a/keystore/java/android/security/KeyStoreHmacSpi.java b/keystore/java/android/security/KeyStoreHmacSpi.java
index a19bbda..f8b6fef 100644
--- a/keystore/java/android/security/KeyStoreHmacSpi.java
+++ b/keystore/java/android/security/KeyStoreHmacSpi.java
@@ -69,9 +69,10 @@
     private final int mKeymasterDigest;
     private final int mMacSizeBytes;
 
-    private String mKeyAliasInKeyStore;
+    // Fields below are populated by engineInit and should be preserved after engineDoFinal.
+    private KeyStoreSecretKey mKey;
 
-    // The fields below are reset by the engineReset operation.
+    // Fields below are reset when engineDoFinal succeeds.
     private KeyStoreCryptoOperationChunkedStreamer mChunkedStreamer;
     private IBinder mOperationToken;
     private Long mOperationHandle;
@@ -89,28 +90,39 @@
     @Override
     protected void engineInit(Key key, AlgorithmParameterSpec params) throws InvalidKeyException,
             InvalidAlgorithmParameterException {
+        resetAll();
+
+        boolean success = false;
+        try {
+            init(key, params);
+            ensureKeystoreOperationInitialized();
+            success = true;
+        } finally {
+            if (!success) {
+                resetAll();
+            }
+        }
+    }
+
+    private void init(Key key, AlgorithmParameterSpec params) throws InvalidKeyException,
+        InvalidAlgorithmParameterException {
         if (key == null) {
             throw new InvalidKeyException("key == null");
         } else if (!(key instanceof KeyStoreSecretKey)) {
             throw new InvalidKeyException(
                     "Only Android KeyStore secret keys supported. Key: " + key);
         }
+        mKey = (KeyStoreSecretKey) key;
 
         if (params != null) {
             throw new InvalidAlgorithmParameterException(
                     "Unsupported algorithm parameters: " + params);
         }
 
-        mKeyAliasInKeyStore = ((KeyStoreSecretKey) key).getAlias();
-        if (mKeyAliasInKeyStore == null) {
-            throw new InvalidKeyException("Key's KeyStore alias not known");
-        }
-        engineReset();
-        ensureKeystoreOperationInitialized();
     }
 
-    @Override
-    protected void engineReset() {
+    private void resetAll() {
+        mKey = null;
         IBinder operationToken = mOperationToken;
         if (operationToken != null) {
             mOperationToken = null;
@@ -120,11 +132,26 @@
         mChunkedStreamer = null;
     }
 
+    private void resetWhilePreservingInitState() {
+        IBinder operationToken = mOperationToken;
+        if (operationToken != null) {
+            mOperationToken = null;
+            mKeyStore.abort(operationToken);
+        }
+        mOperationHandle = null;
+        mChunkedStreamer = null;
+    }
+
+    @Override
+    protected void engineReset() {
+        resetWhilePreservingInitState();
+    }
+
     private void ensureKeystoreOperationInitialized() {
         if (mChunkedStreamer != null) {
             return;
         }
-        if (mKeyAliasInKeyStore == null) {
+        if (mKey == null) {
             throw new IllegalStateException("Not initialized");
         }
 
@@ -132,7 +159,8 @@
         keymasterArgs.addInt(KeymasterDefs.KM_TAG_ALGORITHM, KeymasterDefs.KM_ALGORITHM_HMAC);
         keymasterArgs.addInt(KeymasterDefs.KM_TAG_DIGEST, mKeymasterDigest);
 
-        OperationResult opResult = mKeyStore.begin(mKeyAliasInKeyStore,
+        OperationResult opResult = mKeyStore.begin(
+                mKey.getAlias(),
                 KeymasterDefs.KM_PURPOSE_SIGN,
                 true,
                 keymasterArgs,
@@ -184,7 +212,7 @@
             throw KeyStore.getCryptoOperationException(e);
         }
 
-        engineReset();
+        resetWhilePreservingInitState();
         return result;
     }
 
diff --git a/libs/hwui/Android.common.mk b/libs/hwui/Android.common.mk
index 5fca8ec..836f868 100644
--- a/libs/hwui/Android.common.mk
+++ b/libs/hwui/Android.common.mk
@@ -24,6 +24,7 @@
     thread/TaskManager.cpp \
     utils/Blur.cpp \
     utils/GLUtils.cpp \
+    utils/LinearAllocator.cpp \
     utils/SortedListImpl.cpp \
     AmbientShadow.cpp \
     AnimationContext.cpp \
diff --git a/libs/hwui/Canvas.h b/libs/hwui/Canvas.h
index 7ad0683..aa24673 100644
--- a/libs/hwui/Canvas.h
+++ b/libs/hwui/Canvas.h
@@ -29,7 +29,7 @@
 public:
     virtual ~Canvas() {};
 
-    static Canvas* create_canvas(SkBitmap* bitmap);
+    static Canvas* create_canvas(const SkBitmap& bitmap);
 
     /**
      *  Create a new Canvas object which delegates to an SkCanvas.
@@ -52,7 +52,7 @@
      */
     virtual SkCanvas* asSkCanvas() = 0;
 
-    virtual void setBitmap(SkBitmap* bitmap, bool copyState) = 0;
+    virtual void setBitmap(const SkBitmap& bitmap) = 0;
 
     virtual bool isOpaque() = 0;
     virtual int width() = 0;
@@ -87,7 +87,8 @@
     virtual bool quickRejectRect(float left, float top, float right, float bottom) const = 0;
     virtual bool quickRejectPath(const SkPath& path) const = 0;
 
-    virtual bool clipRect(float left, float top, float right, float bottom, SkRegion::Op op) = 0;
+    virtual bool clipRect(float left, float top, float right, float bottom,
+            SkRegion::Op op = SkRegion::kIntersect_Op) = 0;
     virtual bool clipPath(const SkPath* path, SkRegion::Op op) = 0;
     virtual bool clipRegion(const SkRegion* region, SkRegion::Op op) = 0;
 
diff --git a/libs/hwui/DeferredDisplayList.h b/libs/hwui/DeferredDisplayList.h
index c92ab91..f535afb 100644
--- a/libs/hwui/DeferredDisplayList.h
+++ b/libs/hwui/DeferredDisplayList.h
@@ -127,7 +127,7 @@
     }
 
     void tryRecycleState(DeferredDisplayState* state) {
-        mAllocator.rewindIfLastAlloc(state, sizeof(DeferredDisplayState));
+        mAllocator.rewindIfLastAlloc(state);
     }
 
     /**
diff --git a/libs/hwui/DisplayListCanvas.h b/libs/hwui/DisplayListCanvas.h
index a9ac57d..2b0b6b2 100644
--- a/libs/hwui/DisplayListCanvas.h
+++ b/libs/hwui/DisplayListCanvas.h
@@ -136,7 +136,7 @@
 // ----------------------------------------------------------------------------
     virtual SkCanvas* asSkCanvas() override;
 
-    virtual void setBitmap(SkBitmap* bitmap, bool copyState) override {
+    virtual void setBitmap(const SkBitmap& bitmap) override {
         LOG_ALWAYS_FATAL("DisplayListCanvas is not backed by a bitmap.");
     }
 
diff --git a/libs/hwui/SkiaCanvas.cpp b/libs/hwui/SkiaCanvas.cpp
index 8b11757..a323065 100644
--- a/libs/hwui/SkiaCanvas.cpp
+++ b/libs/hwui/SkiaCanvas.cpp
@@ -31,7 +31,7 @@
 // Holds an SkCanvas reference plus additional native data.
 class SkiaCanvas : public Canvas {
 public:
-    explicit SkiaCanvas(SkBitmap* bitmap);
+    explicit SkiaCanvas(const SkBitmap& bitmap);
 
     /**
      *  Create a new SkiaCanvas.
@@ -49,7 +49,7 @@
         return mCanvas.get();
     }
 
-    virtual void setBitmap(SkBitmap* bitmap, bool copyState) override;
+    virtual void setBitmap(const SkBitmap& bitmap) override;
 
     virtual bool isOpaque() override;
     virtual int width() override;
@@ -145,19 +145,7 @@
     SkAutoTDelete<SkDeque> mSaveStack; // lazily allocated, tracks partial saves.
 };
 
-// Construct an SkCanvas from the bitmap.
-static SkCanvas* createCanvas(SkBitmap* bitmap) {
-    if (bitmap) {
-        return SkNEW_ARGS(SkCanvas, (*bitmap));
-    }
-
-    // Create an empty bitmap device to prevent callers from crashing
-    // if they attempt to draw into this canvas.
-    SkBitmap emptyBitmap;
-    return new SkCanvas(emptyBitmap);
-}
-
-Canvas* Canvas::create_canvas(SkBitmap* bitmap) {
+Canvas* Canvas::create_canvas(const SkBitmap& bitmap) {
     return new SkiaCanvas(bitmap);
 }
 
@@ -165,8 +153,8 @@
     return new SkiaCanvas(skiaCanvas);
 }
 
-SkiaCanvas::SkiaCanvas(SkBitmap* bitmap) {
-    mCanvas.reset(createCanvas(bitmap));
+SkiaCanvas::SkiaCanvas(const SkBitmap& bitmap) {
+    mCanvas.reset(new SkCanvas(bitmap));
 }
 
 // ----------------------------------------------------------------------------
@@ -191,11 +179,11 @@
     SkCanvas* m_dstCanvas;
 };
 
-void SkiaCanvas::setBitmap(SkBitmap* bitmap, bool copyState) {
-    SkCanvas* newCanvas = createCanvas(bitmap);
+void SkiaCanvas::setBitmap(const SkBitmap& bitmap) {
+    SkCanvas* newCanvas = new SkCanvas(bitmap);
     SkASSERT(newCanvas);
 
-    if (copyState) {
+    if (!bitmap.isNull()) {
         // Copy the canvas matrix & clip state.
         newCanvas->setMatrix(mCanvas->getTotalMatrix());
         if (NULL != mCanvas->getDevice() && NULL != newCanvas->getDevice()) {
diff --git a/libs/hwui/tests/Android.mk b/libs/hwui/tests/Android.mk
index 51898d2..b6f0baf 100644
--- a/libs/hwui/tests/Android.mk
+++ b/libs/hwui/tests/Android.mk
@@ -34,16 +34,3 @@
 	tests/main.cpp
 
 include $(BUILD_EXECUTABLE)
-
-include $(CLEAR_VARS)
-
-LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.common.mk
-LOCAL_MODULE := hwui_unit_tests
-LOCAL_MODULE_TAGS := tests
-
-include $(LOCAL_PATH)/Android.common.mk
-
-LOCAL_SRC_FILES += \
-	tests/ClipAreaTests.cpp \
-
-include $(BUILD_NATIVE_TEST)
diff --git a/libs/hwui/unit_tests/Android.mk b/libs/hwui/unit_tests/Android.mk
new file mode 100644
index 0000000..51601b0
--- /dev/null
+++ b/libs/hwui/unit_tests/Android.mk
@@ -0,0 +1,34 @@
+#
+# Copyright (C) 2014 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.
+# 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.
+#
+
+local_target_dir := $(TARGET_OUT_DATA)/local/tmp
+LOCAL_PATH:= $(call my-dir)/..
+
+include $(CLEAR_VARS)
+
+LOCAL_ADDITIONAL_DEPENDENCIES := $(LOCAL_PATH)/Android.common.mk
+LOCAL_MODULE := hwui_unit_tests
+LOCAL_MODULE_TAGS := tests
+
+include $(LOCAL_PATH)/Android.common.mk
+
+LOCAL_SRC_FILES += \
+    unit_tests/ClipAreaTests.cpp \
+    unit_tests/LinearAllocatorTests.cpp \
+    unit_tests/main.cpp
+
+
+include $(BUILD_NATIVE_TEST)
diff --git a/libs/hwui/tests/ClipAreaTests.cpp b/libs/hwui/unit_tests/ClipAreaTests.cpp
similarity index 100%
rename from libs/hwui/tests/ClipAreaTests.cpp
rename to libs/hwui/unit_tests/ClipAreaTests.cpp
diff --git a/libs/hwui/unit_tests/LinearAllocatorTests.cpp b/libs/hwui/unit_tests/LinearAllocatorTests.cpp
new file mode 100644
index 0000000..b3959d1
--- /dev/null
+++ b/libs/hwui/unit_tests/LinearAllocatorTests.cpp
@@ -0,0 +1,108 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+
+#include <gtest/gtest.h>
+#include <utils/LinearAllocator.h>
+
+using namespace android;
+using namespace android::uirenderer;
+
+struct SimplePair {
+    int one = 1;
+    int two = 2;
+};
+
+class SignalingDtor {
+public:
+    SignalingDtor() {
+        mDestroyed = nullptr;
+    }
+    SignalingDtor(bool* destroyedSignal) {
+        mDestroyed = destroyedSignal;
+        *mDestroyed = false;
+    }
+    virtual ~SignalingDtor() {
+        if (mDestroyed) {
+            *mDestroyed = true;
+        }
+    }
+    void setSignal(bool* destroyedSignal) {
+        mDestroyed = destroyedSignal;
+    }
+private:
+    bool* mDestroyed;
+};
+
+TEST(LinearAllocator, alloc) {
+    LinearAllocator la;
+    EXPECT_EQ(0u, la.usedSize());
+    la.alloc(64);
+    // There's some internal tracking as well as padding
+    // so the usedSize isn't strictly defined
+    EXPECT_LE(64u, la.usedSize());
+    EXPECT_GT(80u, la.usedSize());
+    auto pair = la.alloc<SimplePair>();
+    EXPECT_LE(64u + sizeof(SimplePair), la.usedSize());
+    EXPECT_GT(80u + sizeof(SimplePair), la.usedSize());
+    EXPECT_EQ(1, pair->one);
+    EXPECT_EQ(2, pair->two);
+}
+
+TEST(LinearAllocator, dtor) {
+    bool destroyed[10];
+    {
+        LinearAllocator la;
+        for (int i = 0; i < 5; i++) {
+            la.alloc<SignalingDtor>()->setSignal(destroyed + i);
+            la.alloc<SimplePair>();
+        }
+        la.alloc(100);
+        for (int i = 0; i < 5; i++) {
+            auto sd = new (la) SignalingDtor(destroyed + 5 + i);
+            la.autoDestroy(sd);
+            new (la) SimplePair();
+        }
+        la.alloc(100);
+        for (int i = 0; i < 10; i++) {
+            EXPECT_FALSE(destroyed[i]);
+        }
+    }
+    for (int i = 0; i < 10; i++) {
+        EXPECT_TRUE(destroyed[i]);
+    }
+}
+
+TEST(LinearAllocator, rewind) {
+    bool destroyed;
+    {
+        LinearAllocator la;
+        auto addr = la.alloc(100);
+        EXPECT_LE(100u, la.usedSize());
+        la.rewindIfLastAlloc(addr, 100);
+        EXPECT_GT(16u, la.usedSize());
+        size_t emptySize = la.usedSize();
+        auto sigdtor = la.alloc<SignalingDtor>();
+        sigdtor->setSignal(&destroyed);
+        EXPECT_FALSE(destroyed);
+        EXPECT_LE(emptySize, la.usedSize());
+        la.rewindIfLastAlloc(sigdtor);
+        EXPECT_TRUE(destroyed);
+        EXPECT_EQ(emptySize, la.usedSize());
+        destroyed = false;
+    }
+    // Checking for a double-destroy case
+    EXPECT_EQ(destroyed, false);
+}
diff --git a/libs/hwui/unit_tests/how_to_run.txt b/libs/hwui/unit_tests/how_to_run.txt
new file mode 100755
index 0000000..a2d6a34
--- /dev/null
+++ b/libs/hwui/unit_tests/how_to_run.txt
@@ -0,0 +1,4 @@
+mmm -j8 $ANDROID_BUILD_TOP/frameworks/base/libs/hwui/unit_tests &&
+adb push $ANDROID_PRODUCT_OUT/data/nativetest/hwui_unit_tests/hwui_unit_tests \
+    /data/nativetest/hwui_unit_tests/hwui_unit_tests &&
+adb shell /data/nativetest/hwui_unit_tests/hwui_unit_tests
diff --git a/libs/hwui/unit_tests/main.cpp b/libs/hwui/unit_tests/main.cpp
new file mode 100644
index 0000000..c9b9636
--- /dev/null
+++ b/libs/hwui/unit_tests/main.cpp
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+
+#include <gtest/gtest.h>
+
+int main(int argc, char **argv) {
+    ::testing::InitGoogleTest(&argc, argv);
+    return RUN_ALL_TESTS();
+}
diff --git a/libs/hwui/utils/LinearAllocator.cpp b/libs/hwui/utils/LinearAllocator.cpp
new file mode 100644
index 0000000..59b12cf
--- /dev/null
+++ b/libs/hwui/utils/LinearAllocator.cpp
@@ -0,0 +1,272 @@
+/*
+ * Copyright 2012, The Android Open Source Project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#define LOG_NDEBUG 1
+
+#include "utils/LinearAllocator.h"
+
+#include <stdlib.h>
+#include <utils/Log.h>
+
+
+// The ideal size of a page allocation (these need to be multiples of 8)
+#define INITIAL_PAGE_SIZE ((size_t)4096) // 4kb
+#define MAX_PAGE_SIZE ((size_t)131072) // 128kb
+
+// The maximum amount of wasted space we can have per page
+// Allocations exceeding this will have their own dedicated page
+// If this is too low, we will malloc too much
+// Too high, and we may waste too much space
+// Must be smaller than INITIAL_PAGE_SIZE
+#define MAX_WASTE_SIZE ((size_t)1024)
+
+#if ALIGN_DOUBLE
+#define ALIGN_SZ (sizeof(double))
+#else
+#define ALIGN_SZ (sizeof(int))
+#endif
+
+#define ALIGN(x) ((x + ALIGN_SZ - 1 ) & ~(ALIGN_SZ - 1))
+#define ALIGN_PTR(p) ((void*)(ALIGN((size_t)p)))
+
+#if LOG_NDEBUG
+#define ADD_ALLOCATION(size)
+#define RM_ALLOCATION(size)
+#else
+#include <utils/Thread.h>
+#include <utils/Timers.h>
+static size_t s_totalAllocations = 0;
+static nsecs_t s_nextLog = 0;
+static android::Mutex s_mutex;
+
+static void _logUsageLocked() {
+    nsecs_t now = systemTime(SYSTEM_TIME_MONOTONIC);
+    if (now > s_nextLog) {
+        s_nextLog = now + milliseconds_to_nanoseconds(10);
+        ALOGV("Total memory usage: %zu kb", s_totalAllocations / 1024);
+    }
+}
+
+static void _addAllocation(size_t size) {
+    android::AutoMutex lock(s_mutex);
+    s_totalAllocations += size;
+    _logUsageLocked();
+}
+
+#define ADD_ALLOCATION(size) _addAllocation(size);
+#define RM_ALLOCATION(size) _addAllocation(-size);
+#endif
+
+#define min(x,y) (((x) < (y)) ? (x) : (y))
+
+void* operator new(std::size_t size, android::uirenderer::LinearAllocator& la) {
+    return la.alloc(size);
+}
+
+namespace android {
+namespace uirenderer {
+
+class LinearAllocator::Page {
+public:
+    Page* next() { return mNextPage; }
+    void setNext(Page* next) { mNextPage = next; }
+
+    Page()
+        : mNextPage(0)
+    {}
+
+    void* operator new(size_t /*size*/, void* buf) { return buf; }
+
+    void* start() {
+        return (void*) (((size_t)this) + sizeof(Page));
+    }
+
+    void* end(int pageSize) {
+        return (void*) (((size_t)start()) + pageSize);
+    }
+
+private:
+    Page(const Page& /*other*/) {}
+    Page* mNextPage;
+};
+
+LinearAllocator::LinearAllocator()
+    : mPageSize(INITIAL_PAGE_SIZE)
+    , mMaxAllocSize(MAX_WASTE_SIZE)
+    , mNext(0)
+    , mCurrentPage(0)
+    , mPages(0)
+    , mTotalAllocated(0)
+    , mWastedSpace(0)
+    , mPageCount(0)
+    , mDedicatedPageCount(0) {}
+
+LinearAllocator::~LinearAllocator(void) {
+    while (mDtorList) {
+        auto node = mDtorList;
+        mDtorList = node->next;
+        node->dtor(node->addr);
+    }
+    Page* p = mPages;
+    while (p) {
+        Page* next = p->next();
+        p->~Page();
+        free(p);
+        RM_ALLOCATION(mPageSize);
+        p = next;
+    }
+}
+
+void* LinearAllocator::start(Page* p) {
+    return ALIGN_PTR(((size_t*)p) + sizeof(Page));
+}
+
+void* LinearAllocator::end(Page* p) {
+    return ((char*)p) + mPageSize;
+}
+
+bool LinearAllocator::fitsInCurrentPage(size_t size) {
+    return mNext && ((char*)mNext + size) <= end(mCurrentPage);
+}
+
+void LinearAllocator::ensureNext(size_t size) {
+    if (fitsInCurrentPage(size)) return;
+
+    if (mCurrentPage && mPageSize < MAX_PAGE_SIZE) {
+        mPageSize = min(MAX_PAGE_SIZE, mPageSize * 2);
+        mPageSize = ALIGN(mPageSize);
+    }
+    mWastedSpace += mPageSize;
+    Page* p = newPage(mPageSize);
+    if (mCurrentPage) {
+        mCurrentPage->setNext(p);
+    }
+    mCurrentPage = p;
+    if (!mPages) {
+        mPages = mCurrentPage;
+    }
+    mNext = start(mCurrentPage);
+}
+
+void* LinearAllocator::alloc(size_t size) {
+    size = ALIGN(size);
+    if (size > mMaxAllocSize && !fitsInCurrentPage(size)) {
+        ALOGV("Exceeded max size %zu > %zu", size, mMaxAllocSize);
+        // Allocation is too large, create a dedicated page for the allocation
+        Page* page = newPage(size);
+        mDedicatedPageCount++;
+        page->setNext(mPages);
+        mPages = page;
+        if (!mCurrentPage)
+            mCurrentPage = mPages;
+        return start(page);
+    }
+    ensureNext(size);
+    void* ptr = mNext;
+    mNext = ((char*)mNext) + size;
+    mWastedSpace -= size;
+    return ptr;
+}
+
+void LinearAllocator::addToDestructionList(Destructor dtor, void* addr) {
+    static_assert(std::is_standard_layout<DestructorNode>::value,
+                  "DestructorNode must have standard layout");
+    static_assert(std::is_trivially_destructible<DestructorNode>::value,
+                  "DestructorNode must be trivially destructable");
+    auto node = new (*this) DestructorNode();
+    node->dtor = dtor;
+    node->addr = addr;
+    node->next = mDtorList;
+    mDtorList = node;
+}
+
+void LinearAllocator::runDestructorFor(void* addr) {
+    auto node = mDtorList;
+    DestructorNode* previous = nullptr;
+    while (node) {
+        if (node->addr == addr) {
+            if (previous) {
+                previous->next = node->next;
+            } else {
+                mDtorList = node->next;
+            }
+            node->dtor(node->addr);
+            rewindIfLastAlloc(node, sizeof(DestructorNode));
+            break;
+        }
+        previous = node;
+        node = node->next;
+    }
+}
+
+void LinearAllocator::rewindIfLastAlloc(void* ptr, size_t allocSize) {
+    // First run the destructor as running the destructor will
+    // also rewind for the DestructorNode allocation which will
+    // have been allocated after this void* if it has a destructor
+    runDestructorFor(ptr);
+    // Don't bother rewinding across pages
+    allocSize = ALIGN(allocSize);
+    if (ptr >= start(mCurrentPage) && ptr < end(mCurrentPage)
+            && ptr == ((char*)mNext - allocSize)) {
+        mWastedSpace += allocSize;
+        mNext = ptr;
+    }
+}
+
+LinearAllocator::Page* LinearAllocator::newPage(size_t pageSize) {
+    pageSize = ALIGN(pageSize + sizeof(LinearAllocator::Page));
+    ADD_ALLOCATION(pageSize);
+    mTotalAllocated += pageSize;
+    mPageCount++;
+    void* buf = malloc(pageSize);
+    return new (buf) Page();
+}
+
+static const char* toSize(size_t value, float& result) {
+    if (value < 2000) {
+        result = value;
+        return "B";
+    }
+    if (value < 2000000) {
+        result = value / 1024.0f;
+        return "KB";
+    }
+    result = value / 1048576.0f;
+    return "MB";
+}
+
+void LinearAllocator::dumpMemoryStats(const char* prefix) {
+    float prettySize;
+    const char* prettySuffix;
+    prettySuffix = toSize(mTotalAllocated, prettySize);
+    ALOGD("%sTotal allocated: %.2f%s", prefix, prettySize, prettySuffix);
+    prettySuffix = toSize(mWastedSpace, prettySize);
+    ALOGD("%sWasted space: %.2f%s (%.1f%%)", prefix, prettySize, prettySuffix,
+          (float) mWastedSpace / (float) mTotalAllocated * 100.0f);
+    ALOGD("%sPages %zu (dedicated %zu)", prefix, mPageCount, mDedicatedPageCount);
+}
+
+}; // namespace uirenderer
+}; // namespace android
diff --git a/libs/hwui/utils/LinearAllocator.h b/libs/hwui/utils/LinearAllocator.h
new file mode 100644
index 0000000..d90dd82
--- /dev/null
+++ b/libs/hwui/utils/LinearAllocator.h
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2012, The Android Open Source Project
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *  * Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ *  * Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#ifndef ANDROID_LINEARALLOCATOR_H
+#define ANDROID_LINEARALLOCATOR_H
+
+#include <stddef.h>
+#include <type_traits>
+
+namespace android {
+namespace uirenderer {
+
+/**
+ * A memory manager that internally allocates multi-kbyte buffers for placing objects in. It avoids
+ * the overhead of malloc when many objects are allocated. It is most useful when creating many
+ * small objects with a similar lifetime, and doesn't add significant overhead for large
+ * allocations.
+ */
+class LinearAllocator {
+public:
+    LinearAllocator();
+    ~LinearAllocator();
+
+    /**
+     * Reserves and returns a region of memory of at least size 'size', aligning as needed.
+     * Typically this is used in an object's overridden new() method or as a replacement for malloc.
+     *
+     * The lifetime of the returned buffers is tied to that of the LinearAllocator. If calling
+     * delete() on an object stored in a buffer is needed, it should be overridden to use
+     * rewindIfLastAlloc()
+     */
+    void* alloc(size_t size);
+
+    /**
+     * Allocates an instance of the template type with the default constructor
+     * and adds it to the automatic destruction list.
+     */
+    template<class T>
+    T* alloc() {
+        T* ret = new (*this) T;
+        autoDestroy(ret);
+        return ret;
+    }
+
+    /**
+     * Adds the pointer to the tracking list to have its destructor called
+     * when the LinearAllocator is destroyed.
+     */
+    template<class T>
+    void autoDestroy(T* addr) {
+        if (!std::is_trivially_destructible<T>::value) {
+            auto dtor = [](void* addr) { ((T*)addr)->~T(); };
+            addToDestructionList(dtor, addr);
+        }
+    }
+
+    /**
+     * Attempt to deallocate the given buffer, with the LinearAllocator attempting to rewind its
+     * state if possible.
+     */
+    void rewindIfLastAlloc(void* ptr, size_t allocSize);
+
+    /**
+     * Same as rewindIfLastAlloc(void*, size_t)
+     */
+    template<class T>
+    void rewindIfLastAlloc(T* ptr) {
+        rewindIfLastAlloc((void*)ptr, sizeof(T));
+    }
+
+    /**
+     * Dump memory usage statistics to the log (allocated and wasted space)
+     */
+    void dumpMemoryStats(const char* prefix = "");
+
+    /**
+     * The number of bytes used for buffers allocated in the LinearAllocator (does not count space
+     * wasted)
+     */
+    size_t usedSize() const { return mTotalAllocated - mWastedSpace; }
+
+private:
+    LinearAllocator(const LinearAllocator& other);
+
+    class Page;
+    typedef void (*Destructor)(void* addr);
+    struct DestructorNode {
+        Destructor dtor;
+        void* addr;
+        DestructorNode* next = nullptr;
+    };
+
+    void addToDestructionList(Destructor, void* addr);
+    void runDestructorFor(void* addr);
+    Page* newPage(size_t pageSize);
+    bool fitsInCurrentPage(size_t size);
+    void ensureNext(size_t size);
+    void* start(Page *p);
+    void* end(Page* p);
+
+    size_t mPageSize;
+    size_t mMaxAllocSize;
+    void* mNext;
+    Page* mCurrentPage;
+    Page* mPages;
+    DestructorNode* mDtorList = nullptr;
+
+    // Memory usage tracking
+    size_t mTotalAllocated;
+    size_t mWastedSpace;
+    size_t mPageCount;
+    size_t mDedicatedPageCount;
+};
+
+}; // namespace uirenderer
+}; // namespace android
+
+void* operator new(std::size_t size, android::uirenderer::LinearAllocator& la);
+
+#endif // ANDROID_LINEARALLOCATOR_H
diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java
index 3e771f4..201a796 100644
--- a/media/java/android/media/AudioRecord.java
+++ b/media/java/android/media/AudioRecord.java
@@ -20,6 +20,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.lang.ref.WeakReference;
 import java.nio.ByteBuffer;
+import java.util.Collection;
 import java.util.Iterator;
 
 import android.annotation.IntDef;
@@ -32,6 +33,7 @@
 import android.os.Message;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.util.ArrayMap;
 import android.util.Log;
 
 /**
@@ -57,7 +59,7 @@
     /** Minimum value for sample rate */
     private static final int SAMPLE_RATE_HZ_MIN = 4000;
     /** Maximum value for sample rate */
-    private static final int SAMPLE_RATE_HZ_MAX = 96000;
+    private static final int SAMPLE_RATE_HZ_MAX = 192000;
 
     /**
      *  indicates AudioRecord state is not successfully initialized.
@@ -113,6 +115,11 @@
      */
     private static final int NATIVE_EVENT_NEW_POS = 3;
 
+    /**
+     * Event id denotes when the routing changes.
+     */
+    private final static int NATIVE_EVENT_ROUTING_CHANGE = 1000;
+
     private final static String TAG = "android.media.AudioRecord";
 
     /** @hide */
@@ -166,10 +173,14 @@
      */
     private int mChannelCount;
     /**
-     * The audio channel mask
+     * The audio channel position mask
      */
     private int mChannelMask;
     /**
+     * The audio channel index mask
+     */
+    private int mChannelIndexMask;
+    /**
      * The encoding of the audio samples.
      * @see AudioFormat#ENCODING_PCM_8BIT
      * @see AudioFormat#ENCODING_PCM_16BIT
@@ -344,14 +355,19 @@
 
         audioParamCheck(attributes.getCapturePreset(), rate, encoding);
 
-        int channelMask = AudioFormat.CHANNEL_IN_DEFAULT;
         if ((format.getPropertySetMask()
-                & AudioFormat.AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK) != 0)
-        {
-            channelMask = format.getChannelMask();
+                & AudioFormat.AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK) != 0) {
+            mChannelIndexMask = format.getChannelIndexMask();
+            mChannelCount = format.getChannelCount();
         }
-        mChannelCount = AudioFormat.channelCountFromInChannelMask(channelMask);
-        mChannelMask = getChannelMaskFromLegacyConfig(channelMask, false);
+        if ((format.getPropertySetMask()
+                & AudioFormat.AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_MASK) != 0) {
+            mChannelMask = getChannelMaskFromLegacyConfig(format.getChannelMask(), false);
+            mChannelCount = format.getChannelCount();
+        } else if (mChannelIndexMask == 0) {
+            mChannelMask = getChannelMaskFromLegacyConfig(AudioFormat.CHANNEL_IN_DEFAULT, false);
+            mChannelCount =  AudioFormat.channelCountFromInChannelMask(mChannelMask);
+        }
 
         audioBuffSizeCheck(bufferSizeInBytes);
 
@@ -360,7 +376,8 @@
         //TODO: update native initialization when information about hardware init failure
         //      due to capture device already open is available.
         int initResult = native_setup( new WeakReference<AudioRecord>(this),
-                mAudioAttributes, mSampleRate, mChannelMask, mAudioFormat, mNativeBufferSizeInBytes,
+                mAudioAttributes, mSampleRate, mChannelMask, mChannelIndexMask,
+                mAudioFormat, mNativeBufferSizeInBytes,
                 session);
         if (initResult != SUCCESS) {
             loge("Error code "+initResult+" when initializing native AudioRecord object.");
@@ -673,7 +690,7 @@
     }
 
     /**
-     * Returns the configured audio data format. See {@link AudioFormat#ENCODING_PCM_8BIT},
+     * Returns the configured audio data encoding. See {@link AudioFormat#ENCODING_PCM_8BIT},
      * {@link AudioFormat#ENCODING_PCM_16BIT}, and {@link AudioFormat#ENCODING_PCM_FLOAT}.
      */
     public int getAudioFormat() {
@@ -681,15 +698,37 @@
     }
 
     /**
-     * Returns the configured channel configuration.
-     * See {@link AudioFormat#CHANNEL_IN_MONO}
+     * Returns the configured channel position mask.
+     * <p> See {@link AudioFormat#CHANNEL_IN_MONO}
      * and {@link AudioFormat#CHANNEL_IN_STEREO}.
+     * This method may return {@link AudioFormat#CHANNEL_INVALID} if
+     * a channel index mask is used.
+     * Consider {@link #getFormat()} instead, to obtain an {@link AudioFormat},
+     * which contains both the channel position mask and the channel index mask.
      */
     public int getChannelConfiguration() {
         return mChannelMask;
     }
 
     /**
+     * Returns the configured <code>AudioRecord</code> format.
+     * @return an {@link AudioFormat} containing the
+     * <code>AudioRecord</code> parameters at the time of configuration.
+     */
+    public @NonNull AudioFormat getFormat() {
+        AudioFormat.Builder builder = new AudioFormat.Builder()
+            .setSampleRate(mSampleRate)
+            .setEncoding(mAudioFormat);
+        if (mChannelMask != AudioFormat.CHANNEL_INVALID) {
+            builder.setChannelMask(mChannelMask);
+        }
+        if (mChannelIndexMask != AudioFormat.CHANNEL_INVALID  /* 0 */) {
+            builder.setChannelIndexMask(mChannelIndexMask);
+        }
+        return builder.build();
+    }
+
+    /**
      * Returns the configured number of channels.
      */
     public int getChannelCount() {
@@ -1117,7 +1156,7 @@
      * Sets the listener the AudioRecord notifies when a previously set marker is reached or
      * for each periodic record head position update.
      * Use this method to receive AudioRecord events in the Handler associated with another
-     * thread than the one in which you created the AudioTrack instance.
+     * thread than the one in which you created the AudioRecord instance.
      * @param listener
      * @param handler the Handler that will receive the event notification messages.
      */
@@ -1158,6 +1197,115 @@
     }
 
 
+    //--------------------------------------------------------------------------
+    // (Re)Routing Info
+    //--------------------
+    /**
+     * Returns an {@link AudioDeviceInfo} identifying the current routing of this AudioRecord.
+     */
+    public AudioDeviceInfo getRoutedDevice() {
+        return null;
+    }
+
+    /**
+     * The message sent to apps when the routing of this AudioRecord changes if they provide
+     * a {#link Handler} object to addOnAudioRecordRoutingListener().
+     */
+    private ArrayMap<OnAudioRecordRoutingListener, NativeRoutingEventHandlerDelegate>
+        mRoutingChangeListeners =
+            new ArrayMap<OnAudioRecordRoutingListener, NativeRoutingEventHandlerDelegate>();
+
+    /**
+     * Adds an {@link OnAudioRecordRoutingListener} to receive notifications of routing changes
+     * on this AudioRecord.
+     */
+    public void addOnAudioRecordRoutingListener(OnAudioRecordRoutingListener listener,
+            android.os.Handler handler) {
+        if (listener != null && !mRoutingChangeListeners.containsKey(listener)) {
+            synchronized (mRoutingChangeListeners) {
+                mRoutingChangeListeners.put(
+                    listener, new NativeRoutingEventHandlerDelegate(this, listener, handler));
+            }
+        }
+    }
+
+    /**
+     * Removes an {@link OnAudioRecordRoutingListener} which has been previously added
+     * to receive notifications of changes to the set of connected audio devices.
+     */
+    public void removeOnAudioRecordRoutingListener(OnAudioRecordRoutingListener listener) {
+        synchronized (mRoutingChangeListeners) {
+            if (mRoutingChangeListeners.containsKey(listener)) {
+                mRoutingChangeListeners.remove(listener);
+            }
+        }
+    }
+
+    /**
+     * Helper class to handle the forwarding of native events to the appropriate listener
+     * (potentially) handled in a different thread
+     */
+    private class NativeRoutingEventHandlerDelegate {
+        private final Handler mHandler;
+
+        NativeRoutingEventHandlerDelegate(final AudioRecord record,
+                                   final OnAudioRecordRoutingListener listener,
+                                   Handler handler) {
+            // find the looper for our new event handler
+            Looper looper;
+            if (handler != null) {
+                looper = handler.getLooper();
+            } else {
+                // no given handler, use the looper the AudioRecord was created in
+                looper = mInitializationLooper;
+            }
+
+            // construct the event handler with this looper
+            if (looper != null) {
+                // implement the event handler delegate
+                mHandler = new Handler(looper) {
+                    @Override
+                    public void handleMessage(Message msg) {
+                        if (record == null) {
+                            return;
+                        }
+                        switch(msg.what) {
+                        case NATIVE_EVENT_ROUTING_CHANGE:
+                            if (listener != null) {
+                                listener.onAudioRecordRouting(record);
+                            }
+                            break;
+                        default:
+                            loge("Unknown native event type: " + msg.what);
+                            break;
+                        }
+                    }
+                };
+            } else {
+                mHandler = null;
+            }
+        }
+
+        Handler getHandler() {
+            return mHandler;
+        }
+    }
+    /**
+     * Sends device list change notification to all listeners.
+     */
+    private void broadcastRoutingChange() {
+        Collection<NativeRoutingEventHandlerDelegate> values;
+        synchronized (mRoutingChangeListeners) {
+            values = mRoutingChangeListeners.values();
+        }
+        for(NativeRoutingEventHandlerDelegate delegate : values) {
+            Handler handler = delegate.getHandler();
+            if (handler != null) {
+                handler.sendEmptyMessage(NATIVE_EVENT_ROUTING_CHANGE);
+            }
+        }
+    }
+
     /**
      * Sets the period at which the listener is called, if set with
      * {@link #setRecordPositionUpdateListener(OnRecordPositionUpdateListener)} or
@@ -1174,6 +1322,39 @@
     }
 
 
+    //--------------------------------------------------------------------------
+    // Explicit Routing
+    //--------------------
+    private AudioDeviceInfo mPreferredDevice = null;
+
+    /**
+     * Specifies an audio device (via an {@link AudioDeviceInfo} object) to route
+     * the input to this AudioRecord.
+     * @param deviceInfo The {@link AudioDeviceInfo} specifying the audio source.
+     *  If deviceInfo is null, default routing is restored.
+     * @return true if successful, false if the specified {@link AudioDeviceInfo} is non-null and
+     * does not correspond to a valid audio input device.
+     */
+    public boolean setPreferredInputDevice(AudioDeviceInfo deviceInfo) {
+        // Do some validation....
+        if (deviceInfo != null && !deviceInfo.isSource()) {
+            return false;
+        }
+
+        mPreferredDevice = deviceInfo;
+        int preferredDeviceId = mPreferredDevice != null ? deviceInfo.getId() : 0;
+
+        return native_setInputDevice(preferredDeviceId);
+    }
+
+    /**
+     * Returns the selected input specified by {@link #setPreferredInputDevice}. Note that this
+     * is not guarenteed to correspond to the actual device being used for recording.
+     */
+    public AudioDeviceInfo getPreferredInputDevice() {
+        return mPreferredDevice;
+    }
+
     //---------------------------------------------------------
     // Interface definitions
     //--------------------
@@ -1269,7 +1450,7 @@
 
     private native final int native_setup(Object audiorecord_this,
             Object /*AudioAttributes*/ attributes,
-            int sampleRate, int channelMask, int audioFormat,
+            int sampleRate, int channelMask, int channelIndexMask, int audioFormat,
             int buffSizeInBytes, int[] sessionId);
 
     // TODO remove: implementation calls directly into implementation of native_release()
@@ -1304,6 +1485,8 @@
     static private native final int native_get_min_buff_size(
             int sampleRateInHz, int channelCount, int audioFormat);
 
+    private native final boolean native_setInputDevice(int deviceId);
+
 
     //---------------------------------------------------------
     // Utility methods
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index ded9d31..3577357 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -23,6 +23,7 @@
 import java.nio.ByteBuffer;
 import java.nio.ByteOrder;
 import java.nio.NioUtils;
+import java.util.Collection;
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -37,6 +38,7 @@
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.util.ArrayMap;
 import android.util.Log;
 
 import com.android.internal.app.IAppOpsService;
@@ -94,7 +96,7 @@
     /** Minimum value for sample rate */
     private static final int SAMPLE_RATE_HZ_MIN = 4000;
     /** Maximum value for sample rate */
-    private static final int SAMPLE_RATE_HZ_MAX = 96000;
+    private static final int SAMPLE_RATE_HZ_MAX = 192000;
 
     /** Maximum value for AudioTrack channel count */
     private static final int CHANNEL_COUNT_MAX = 8;
@@ -176,6 +178,12 @@
      */
     private static final int NATIVE_EVENT_NEW_POS = 4;
 
+    /**
+     * Event id denotes when the routing changes.
+     */
+    private final static int NATIVE_EVENT_ROUTING_CHANGE = 1000;
+
+
     private final static String TAG = "android.media.AudioTrack";
 
 
@@ -224,7 +232,7 @@
     /**
      * Handler for events coming from the native code.
      */
-    private NativeEventHandlerDelegate mEventHandlerDelegate;
+    private NativePositionEventHandlerDelegate mEventHandlerDelegate;
     /**
      * Looper associated with the thread that creates the AudioTrack instance.
      */
@@ -946,15 +954,32 @@
     }
 
     /**
-     * Returns the current playback rate in Hz.
+     * Returns the current playback sample rate rate in Hz.
      */
     public int getPlaybackRate() {
         return native_get_playback_rate();
     }
 
     /**
-     * Returns the configured audio data format. See {@link AudioFormat#ENCODING_PCM_16BIT}
-     * and {@link AudioFormat#ENCODING_PCM_8BIT}.
+     * Returns the current playback settings.
+     * See {@link #setPlaybackSettings(PlaybackSettings)} to set playback settings
+     * @return current {@link PlaybackSettings}.
+     * @throws IllegalStateException if track is not initialized.
+     */
+    public @NonNull PlaybackSettings getPlaybackSettings() {
+        float[] floatArray = new float[2];
+        int[] intArray = new int[2];
+        native_get_playback_settings(floatArray, intArray);
+        return new PlaybackSettings()
+                .setSpeed(floatArray[0])
+                .setPitch(floatArray[1])
+                .setAudioFallbackMode(intArray[0])
+                .setAudioStretchMode(intArray[1]);
+    }
+
+    /**
+     * Returns the configured audio data encoding. See {@link AudioFormat#ENCODING_PCM_8BIT},
+     * {@link AudioFormat#ENCODING_PCM_16BIT}, and {@link AudioFormat#ENCODING_PCM_FLOAT}.
      */
     public int getAudioFormat() {
         return mAudioFormat;
@@ -973,14 +998,36 @@
 
     /**
      * Returns the configured channel position mask.
-     * For example, refer to {@link AudioFormat#CHANNEL_OUT_MONO},
+     * <p> For example, refer to {@link AudioFormat#CHANNEL_OUT_MONO},
      * {@link AudioFormat#CHANNEL_OUT_STEREO}, {@link AudioFormat#CHANNEL_OUT_5POINT1}.
+     * This method may return {@link AudioFormat#CHANNEL_INVALID} if
+     * a channel index mask is used. Consider
+     * {@link #getFormat()} instead, to obtain an {@link AudioFormat},
+     * which contains both the channel position mask and the channel index mask.
      */
     public int getChannelConfiguration() {
         return mChannelConfiguration;
     }
 
     /**
+     * Returns the configured <code>AudioTrack</code> format.
+     * @return an {@link AudioFormat} containing the
+     * <code>AudioTrack</code> parameters at the time of configuration.
+     */
+    public @NonNull AudioFormat getFormat() {
+        AudioFormat.Builder builder = new AudioFormat.Builder()
+            .setSampleRate(mSampleRate)
+            .setEncoding(mAudioFormat);
+        if (mChannelConfiguration != AudioFormat.CHANNEL_INVALID) {
+            builder.setChannelMask(mChannelConfiguration);
+        }
+        if (mChannelIndexMask != AudioFormat.CHANNEL_INVALID /* 0 */) {
+            builder.setChannelIndexMask(mChannelIndexMask);
+        }
+        return builder.build();
+    }
+
+    /**
      * Returns the configured number of channels.
      */
     public int getChannelCount() {
@@ -1226,7 +1273,7 @@
     public void setPlaybackPositionUpdateListener(OnPlaybackPositionUpdateListener listener,
                                                     Handler handler) {
         if (listener != null) {
-            mEventHandlerDelegate = new NativeEventHandlerDelegate(this, listener, handler);
+            mEventHandlerDelegate = new NativePositionEventHandlerDelegate(this, listener, handler);
         } else {
             mEventHandlerDelegate = null;
         }
@@ -1307,6 +1354,7 @@
      * playback to last twice as long, but will also result in a pitch shift down by one octave.
      * The valid sample rate range is from 1 Hz to twice the value returned by
      * {@link #getNativeOutputSampleRate(int)}.
+     * Use {@link #setPlaybackSettings(PlaybackSettings)} for speed control.
      * @param sampleRateInHz the sample rate expressed in Hz
      * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE},
      *    {@link #ERROR_INVALID_OPERATION}
@@ -1323,6 +1371,42 @@
 
 
     /**
+     * Sets the playback settings.
+     * This method returns failure if it cannot apply the playback settings.
+     * One possible cause is that the parameters for speed or pitch are out of range.
+     * Another possible cause is that the <code>AudioTrack</code> is streaming
+     * (see {@link #MODE_STREAM}) and the
+     * buffer size is too small. For speeds greater than 1.0f, the <code>AudioTrack</code> buffer
+     * on configuration must be larger than the speed multiplied by the minimum size
+     * {@link #getMinBufferSize(int, int, int)}) to allow proper playback.
+     * @param settings see {@link PlaybackSettings}. In particular,
+     * speed, pitch, and audio mode should be set.
+     * @throws IllegalArgumentException if the settings are invalid or not accepted.
+     * @throws IllegalStateException if track is not initialized.
+     */
+    public void setPlaybackSettings(@NonNull PlaybackSettings settings) {
+        if (settings == null) {
+            throw new IllegalArgumentException("settings is null");
+        }
+        float[] floatArray;
+        int[] intArray;
+        try {
+            floatArray = new float[] {
+                    settings.getSpeed(),
+                    settings.getPitch(),
+            };
+            intArray = new int[] {
+                    settings.getAudioFallbackMode(),
+                    settings.getAudioStretchMode(),
+            };
+        } catch (IllegalStateException e) {
+            throw new IllegalArgumentException(e);
+        }
+        native_set_playback_settings(floatArray, intArray);
+    }
+
+
+    /**
      * Sets the position of the notification marker.  At most one marker can be active.
      * @param markerInFrames marker position in wrapping frame units similar to
      * {@link #getPlaybackHeadPosition}, or zero to disable the marker.
@@ -1364,7 +1448,8 @@
      * the position values have different meanings.
      * <br>
      * If looping is currently enabled and the new position is greater than or equal to the
-     * loop end marker, the behavior varies by API level: for API level 22 and above,
+     * loop end marker, the behavior varies by API level:
+     * as of {@link android.os.Build.VERSION_CODES#MNC},
      * the looping is first disabled and then the position is set.
      * For earlier API levels, the behavior is unspecified.
      * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE},
@@ -1401,7 +1486,7 @@
      * {@link #ERROR_BAD_VALUE} is returned.
      * The loop range is the interval [startInFrames, endInFrames).
      * <br>
-     * For API level 22 and above, the position is left unchanged,
+     * As of {@link android.os.Build.VERSION_CODES#MNC}, the position is left unchanged,
      * unless it is greater than or equal to the loop end marker, in which case
      * it is forced to the loop start marker.
      * For earlier API levels, the effect on position is unspecified.
@@ -1948,12 +2033,12 @@
      * The track must be stopped or paused, and
      * the track's creation mode must be {@link #MODE_STATIC}.
      * <p>
-     * For API level 22 and above, also resets the value returned by
+     * As of {@link android.os.Build.VERSION_CODES#MNC}, also resets the value returned by
      * {@link #getPlaybackHeadPosition()} to zero.
      * For earlier API levels, the reset behavior is unspecified.
      * <p>
-     * {@link #setPlaybackHeadPosition(int)} to zero
-     * is recommended instead when the reset of {@link #getPlaybackHeadPosition} is not needed.
+     * Use {@link #setPlaybackHeadPosition(int)} with a zero position
+     * if the reset of <code>getPlaybackHeadPosition()</code> is not needed.
      * @return error code or success, see {@link #SUCCESS}, {@link #ERROR_BAD_VALUE},
      *  {@link #ERROR_INVALID_OPERATION}
      */
@@ -2028,33 +2113,93 @@
     private AudioDeviceInfo mPreferredDevice = null;
 
     /**
-     * Specifies an audio device (via and {@link AudioDeviceInfo} object) to route
+     * Specifies an audio device (via an {@link AudioDeviceInfo} object) to route
      * the output from this AudioTrack.
-     * @param deviceSpec The {@link AudioDeviceInfo} specifying the physical audio device.
-     *  If deviceSpec is null, default routing is restored.
+     * @param deviceInfo The {@link AudioDeviceInfo} specifying the audio sink.
+     *  If deviceInfo is null, default routing is restored.
      * @return true if succesful, false if the specified {@link AudioDeviceInfo} is non-null and
      * does not correspond to a valid audio output device.
      */
-    public boolean setPreferredOutputDevice(AudioDeviceInfo deviceSpec) {
+    public boolean setPreferredOutputDevice(AudioDeviceInfo deviceInfo) {
         // Do some validation....
-        if (deviceSpec != null && !deviceSpec.isSink()) {
+        if (deviceInfo != null && !deviceInfo.isSink()) {
             return false;
         }
 
-        mPreferredDevice = deviceSpec;
-        int routingDeviceId = mPreferredDevice != null ? deviceSpec.getId() : 0;
+        mPreferredDevice = deviceInfo;
+        int preferredDeviceId = mPreferredDevice != null ? deviceInfo.getId() : 0;
 
-        return native_setOutputDevice(routingDeviceId);
+        return native_setOutputDevice(preferredDeviceId);
     }
 
     /**
      * Returns the selected output specified by {@link #setPreferredOutputDevice}. Note that this
-     * is not guarenteed to correspond to the actual device being used for playback.
+     * is not guaranteed to correspond to the actual device being used for playback.
      */
     public AudioDeviceInfo getPreferredOutputDevice() {
         return mPreferredDevice;
     }
 
+    //--------------------------------------------------------------------------
+    // (Re)Routing Info
+    //--------------------
+    /**
+     * Returns an {@link AudioDeviceInfo} identifying the current routing of this AudioTrack.
+     */
+    public AudioDeviceInfo getRoutedDevice() {
+        return null;
+    }
+
+    /**
+     * The message sent to apps when the routing of this AudioTrack changes if they provide
+     * a {#link Handler} object to addOnAudioTrackRoutingListener().
+     */
+    private ArrayMap<OnAudioTrackRoutingListener, NativeRoutingEventHandlerDelegate>
+        mRoutingChangeListeners =
+            new ArrayMap<OnAudioTrackRoutingListener, NativeRoutingEventHandlerDelegate>();
+
+    /**
+     * Adds an {@link OnAudioTrackRoutingListener} to receive notifications of routing changes
+     * on this AudioTrack.
+     */
+    public void addOnAudioTrackRoutingListener(OnAudioTrackRoutingListener listener,
+            android.os.Handler handler) {
+        if (listener != null && !mRoutingChangeListeners.containsKey(listener)) {
+            synchronized (mRoutingChangeListeners) {
+                mRoutingChangeListeners.put(
+                    listener, new NativeRoutingEventHandlerDelegate(this, listener, handler));
+            }
+        }
+    }
+
+    /**
+     * Removes an {@link OnAudioTrackRoutingListener} which has been previously added
+     * to receive notifications of changes to the set of connected audio devices.
+     */
+    public void removeOnAudioTrackRoutingListener(OnAudioTrackRoutingListener listener) {
+        synchronized (mRoutingChangeListeners) {
+            if (mRoutingChangeListeners.containsKey(listener)) {
+                mRoutingChangeListeners.remove(listener);
+            }
+        }
+    }
+
+    /**
+     * Sends device list change notification to all listeners.
+     */
+    private void broadcastRoutingChange() {
+        Collection<NativeRoutingEventHandlerDelegate> values;
+        synchronized (mRoutingChangeListeners) {
+            values = mRoutingChangeListeners.values();
+        }
+        for(NativeRoutingEventHandlerDelegate delegate : values) {
+            Handler handler = delegate.getHandler();
+            if (handler != null) {
+                handler.sendEmptyMessage(NATIVE_EVENT_ROUTING_CHANGE);
+            }
+        }
+    }
+
     //---------------------------------------------------------
     // Interface definitions
     //--------------------
@@ -2083,10 +2228,10 @@
      * Helper class to handle the forwarding of native events to the appropriate listener
      * (potentially) handled in a different thread
      */
-    private class NativeEventHandlerDelegate {
+    private class NativePositionEventHandlerDelegate {
         private final Handler mHandler;
 
-        NativeEventHandlerDelegate(final AudioTrack track,
+        NativePositionEventHandlerDelegate(final AudioTrack track,
                                    final OnPlaybackPositionUpdateListener listener,
                                    Handler handler) {
             // find the looper for our new event handler
@@ -2134,6 +2279,55 @@
         }
     }
 
+    /**
+     * Helper class to handle the forwarding of native events to the appropriate listener
+     * (potentially) handled in a different thread
+     */
+    private class NativeRoutingEventHandlerDelegate {
+        private final Handler mHandler;
+
+        NativeRoutingEventHandlerDelegate(final AudioTrack track,
+                                   final OnAudioTrackRoutingListener listener,
+                                   Handler handler) {
+            // find the looper for our new event handler
+            Looper looper;
+            if (handler != null) {
+                looper = handler.getLooper();
+            } else {
+                // no given handler, use the looper the AudioTrack was created in
+                looper = mInitializationLooper;
+            }
+
+            // construct the event handler with this looper
+            if (looper != null) {
+                // implement the event handler delegate
+                mHandler = new Handler(looper) {
+                    @Override
+                    public void handleMessage(Message msg) {
+                        if (track == null) {
+                            return;
+                        }
+                        switch(msg.what) {
+                        case NATIVE_EVENT_ROUTING_CHANGE:
+                            if (listener != null) {
+                                listener.onAudioTrackRouting(track);
+                            }
+                            break;
+                        default:
+                            loge("Unknown native event type: " + msg.what);
+                            break;
+                        }
+                    }
+                };
+            } else {
+                mHandler = null;
+            }
+        }
+
+        Handler getHandler() {
+            return mHandler;
+        }
+    }
 
     //---------------------------------------------------------
     // Java methods called from the native side
@@ -2147,7 +2341,7 @@
             return;
         }
 
-        NativeEventHandlerDelegate delegate = track.mEventHandlerDelegate;
+        NativePositionEventHandlerDelegate delegate = track.mEventHandlerDelegate;
         if (delegate != null) {
             Handler handler = delegate.getHandler();
             if (handler != null) {
@@ -2207,6 +2401,15 @@
     private native final int native_set_playback_rate(int sampleRateInHz);
     private native final int native_get_playback_rate();
 
+    // floatArray must be a non-null array of length >= 2
+    // [0] is speed
+    // [1] is pitch
+    // intArray must be a non-null array of length >= 2
+    // [0] is audio fallback mode
+    // [1] is audio stretch mode
+    private native final void native_set_playback_settings(float[] floatArray, int[] intArray);
+    private native final void native_get_playback_settings(float[] floatArray, int[] intArray);
+
     private native final int native_set_marker_pos(int marker);
     private native final int native_get_marker_pos();
 
diff --git a/media/java/android/media/Image.java b/media/java/android/media/Image.java
index 9ae468a..75901fd 100644
--- a/media/java/android/media/Image.java
+++ b/media/java/android/media/Image.java
@@ -86,6 +86,38 @@
      *     Each plane has its own row stride and pixel stride.</td>
      * </tr>
      * <tr>
+     *   <td>{@link android.graphics.ImageFormat#YUV_422_888 YUV_422_888}</td>
+     *   <td>3</td>
+     *   <td>A luminance plane followed by the Cb and Cr chroma planes.
+     *     The chroma planes have half the width and the full height of the luminance
+     *     plane (4:2:2 subsampling). Each pixel sample in each plane has 8 bits.
+     *     Each plane has its own row stride and pixel stride.</td>
+     * </tr>
+     * <tr>
+     *   <td>{@link android.graphics.ImageFormat#YUV_444_888 YUV_444_888}</td>
+     *   <td>3</td>
+     *   <td>A luminance plane followed by the Cb and Cr chroma planes.
+     *     The chroma planes have the same width and height as that of the luminance
+     *     plane (4:4:4 subsampling). Each pixel sample in each plane has 8 bits.
+     *     Each plane has its own row stride and pixel stride.</td>
+     * </tr>
+     * <tr>
+     *   <td>{@link android.graphics.ImageFormat#FLEX_RGB_888 FLEX_RGB_888}</td>
+     *   <td>3</td>
+     *   <td>A R (red) plane followed by the G (green) and B (blue) planes.
+     *     All planes have the same widths and heights.
+     *     Each pixel sample in each plane has 8 bits.
+     *     Each plane has its own row stride and pixel stride.</td>
+     * </tr>
+     * <tr>
+     *   <td>{@link android.graphics.ImageFormat#FLEX_RGBA_8888 FLEX_RGBA_8888}</td>
+     *   <td>4</td>
+     *   <td>A R (red) plane followed by the G (green), B (blue), and
+     *     A (alpha) planes. All planes have the same widths and heights.
+     *     Each pixel sample in each plane has 8 bits.
+     *     Each plane has its own row stride and pixel stride.</td>
+     * </tr>
+     * <tr>
      *   <td>{@link android.graphics.ImageFormat#RAW_SENSOR RAW_SENSOR}</td>
      *   <td>1</td>
      *   <td>A single plane of raw sensor image data, with 16 bits per color
diff --git a/media/java/android/media/ImageReader.java b/media/java/android/media/ImageReader.java
index 3d8f9a0..e54525d 100644
--- a/media/java/android/media/ImageReader.java
+++ b/media/java/android/media/ImageReader.java
@@ -130,7 +130,7 @@
      * </p>
      * <p>
      * Opaque ImageReaders are more efficient to use when application access to
-     * image data is not necessary, comparing to ImageReaders using a non-opaque
+     * image data is not necessary, compared to ImageReaders using a non-opaque
      * format such as {@link ImageFormat#YUV_420_888 YUV_420_888}.
      * </p>
      *
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index b0cd3e4..1f00c7b 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -300,6 +300,14 @@
          */
         @BufferFlag
         public int flags;
+
+        /** @hide */
+        @NonNull
+        public BufferInfo dup() {
+            BufferInfo copy = new BufferInfo();
+            copy.set(offset, size, presentationTimeUs, flags);
+            return copy;
+        }
     };
 
     // The follow flag constants MUST stay in sync with their equivalents
@@ -343,11 +351,25 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface BufferFlag {}
 
+    private static class FrameRenderedInfo {
+        public long mPresentationTimeUs;
+        public long mNanoTime;
+        public FrameRenderedInfo(long presentationTimeUs, long nanoTime) {
+            mPresentationTimeUs = presentationTimeUs;
+            mNanoTime = nanoTime;
+        }
+    }
+
     private EventHandler mEventHandler;
+    private EventHandler mOnFrameRenderedHandler;
+    private EventHandler mCallbackHandler;
     private Callback mCallback;
+    private OnFrameRenderedListener mOnFrameRenderedListener;
+    private Object mListenerLock = new Object();
 
     private static final int EVENT_CALLBACK = 1;
     private static final int EVENT_SET_CALLBACK = 2;
+    private static final int EVENT_FRAME_RENDERED = 3;
 
     private static final int CB_INPUT_AVAILABLE = 1;
     private static final int CB_OUTPUT_AVAILABLE = 2;
@@ -375,6 +397,15 @@
                     mCallback = (MediaCodec.Callback) msg.obj;
                     break;
                 }
+                case EVENT_FRAME_RENDERED:
+                    synchronized (mListenerLock) {
+                        FrameRenderedInfo info = (FrameRenderedInfo)msg.obj;
+                        if (mOnFrameRenderedListener != null) {
+                            mOnFrameRenderedListener.onFrameRendered(
+                                    mCodec, info.mPresentationTimeUs, info.mNanoTime);
+                        }
+                        break;
+                    }
                 default:
                 {
                     break;
@@ -431,6 +462,8 @@
         }
     }
 
+    private boolean mHasSurface = false;
+
     /**
      * Instantiate a decoder supporting input data of the given mime type.
      *
@@ -501,6 +534,9 @@
         } else {
             mEventHandler = null;
         }
+        mCallbackHandler = mEventHandler;
+        mOnFrameRenderedHandler = mEventHandler;
+
         mBufferLock = new Object();
 
         native_setup(name, nameIsType, encoder);
@@ -607,9 +643,66 @@
             }
         }
 
+        mHasSurface = surface != null;
+
         native_configure(keys, values, surface, crypto, flags);
     }
 
+    /**
+     *  Dynamically sets the output surface of a codec.
+     *  <p>
+     *  This can only be used if the codec was configured with an output surface.  The
+     *  new output surface should have a compatible usage type to the original output surface.
+     *  E.g. codecs may not support switching from a SurfaceTexture (GPU readable) output
+     *  to ImageReader (software readable) output.
+     *  @param surface the output surface to use. It must not be {@code null}.
+     *  @throws IllegalStateException if the codec does not support setting the output
+     *            surface in the current state.
+     *  @throws IllegalArgumentException if the new surface is not of a suitable type for the codec.
+     */
+    public void setSurface(@NonNull Surface surface) {
+        if (!mHasSurface) {
+            throw new IllegalStateException("codec was not configured for an output surface");
+        }
+
+        // TODO implement this
+        throw new IllegalArgumentException("codec does not support this surface");
+    }
+
+    /**
+     * Create a persistent input surface that can be used with codecs that normally have an input
+     * surface, such as video encoders. A persistent input can be reused by subsequent
+     * {@link MediaCodec} or {@link MediaRecorder} instances, but can only be used by at
+     * most one codec or recorder instance concurrently.
+     * <p>
+     * The application is responsible for calling release() on the Surface when done.
+     *
+     * @return an input surface that can be used with {@link #usePersistentInputSurface}.
+     */
+    @NonNull
+    public static Surface createPersistentInputSurface() {
+        // TODO implement this
+        return new PersistentSurface();
+    }
+
+    static class PersistentSurface extends Surface {
+        PersistentSurface() {}
+    };
+
+    /**
+     * Configures the codec (e.g. encoder) to use a persistent input surface in place of input
+     * buffers.  This may only be called after {@link #configure} and before {@link #start}, in
+     * lieu of {@link #createInputSurface}.
+     * @param surface a persistent input surface created by {@link #createPersistentInputSurface}
+     * @throws IllegalStateException if not in the Configured state or does not require an input
+     *           surface.
+     * @throws IllegalArgumentException if the surface was not created by
+     *           {@link #createPersistentInputSurface}.
+     */
+    public void usePersistentInputSurface(@NonNull Surface surface) {
+        throw new IllegalArgumentException("not implemented");
+    }
+
     private native final void native_setCallback(@Nullable Callback cb);
 
     private native final void native_configure(
@@ -662,9 +755,14 @@
         native_stop();
         freeAllTrackedBuffers();
 
-        if (mEventHandler != null) {
-            mEventHandler.removeMessages(EVENT_CALLBACK);
-            mEventHandler.removeMessages(EVENT_SET_CALLBACK);
+        synchronized (mListenerLock) {
+            if (mCallbackHandler != null) {
+                mCallbackHandler.removeMessages(EVENT_SET_CALLBACK);
+                mCallbackHandler.removeMessages(EVENT_CALLBACK);
+            }
+            if (mOnFrameRenderedHandler != null) {
+                mOnFrameRenderedHandler.removeMessages(EVENT_FRAME_RENDERED);
+            }
         }
     }
 
@@ -1124,6 +1222,9 @@
                 cacheBuffers(false /* input */);
             } else if (res >= 0) {
                 validateOutputByteBuffer(mCachedOutputBuffers, res, info);
+                if (mHasSurface) {
+                    mDequeuedOutputInfos.put(res, info.dup());
+                }
             }
         }
         return res;
@@ -1150,13 +1251,34 @@
      * @throws MediaCodec.CodecException upon codec error.
      */
     public final void releaseOutputBuffer(int index, boolean render) {
+        BufferInfo info = null;
         synchronized(mBufferLock) {
             invalidateByteBuffer(mCachedOutputBuffers, index);
             mDequeuedOutputBuffers.remove(index);
+            if (mHasSurface) {
+                info = mDequeuedOutputInfos.remove(index);
+            }
         }
+        // TODO
+        // until codec and libgui supports callback, assume frame is rendered within 50 ms
+        postRenderedCallback(render, info, 50 /* delayMs */);
         releaseOutputBuffer(index, render, false /* updatePTS */, 0 /* dummy */);
     }
 
+    private void postRenderedCallback(boolean render, @Nullable BufferInfo info, long delayMs) {
+        if (render && info != null) {
+            synchronized (mListenerLock) {
+                 if (mOnFrameRenderedListener != null) {
+                     FrameRenderedInfo obj = new FrameRenderedInfo(
+                            info.presentationTimeUs, System.nanoTime() + delayMs * 1000000);
+                     Message msg = mOnFrameRenderedHandler.obtainMessage(
+                            EVENT_FRAME_RENDERED, obj);
+                     mOnFrameRenderedHandler.sendMessageDelayed(msg, delayMs);
+                 }
+            }
+        }
+    }
+
     /**
      * If you are done with a buffer, use this call to update its surface timestamp
      * and return it to the codec to render it on the output surface. If you
@@ -1207,10 +1329,20 @@
      * @throws MediaCodec.CodecException upon codec error.
      */
     public final void releaseOutputBuffer(int index, long renderTimestampNs) {
+        BufferInfo info = null;
         synchronized(mBufferLock) {
             invalidateByteBuffer(mCachedOutputBuffers, index);
             mDequeuedOutputBuffers.remove(index);
+            if (mHasSurface) {
+                info = mDequeuedOutputInfos.remove(index);
+            }
         }
+        // TODO
+        // until codec and libgui supports callback, assume frame is rendered at the
+        // render time or 16 ms from now, whichever is later.
+        postRenderedCallback(
+                true /* render */, info,
+                Math.max(renderTimestampNs - System.nanoTime(), 16666666) / 1000000);
         releaseOutputBuffer(
                 index, true /* render */, true /* updatePTS */, renderTimestampNs);
     }
@@ -1350,6 +1482,8 @@
     private ByteBuffer[] mCachedOutputBuffers;
     private final BufferMap mDequeuedInputBuffers = new BufferMap();
     private final BufferMap mDequeuedOutputBuffers = new BufferMap();
+    private final Map<Integer, BufferInfo> mDequeuedOutputInfos =
+        new HashMap<Integer, BufferInfo>();
     final private Object mBufferLock;
 
     private final void invalidateByteBuffer(
@@ -1715,21 +1849,121 @@
      * @param cb The callback that will run.  Use {@code null} to clear a previously
      *           set callback (before {@link #configure configure} is called and run
      *           in synchronous mode).
+     * @param handler Callbacks will happen on the handler's thread. If {@code null},
+     *           callbacks are done on the default thread (the caller's thread or the
+     *           main thread.)
      */
-    public void setCallback(@Nullable /* MediaCodec. */ Callback cb) {
-        if (mEventHandler != null) {
-            // set java callback on handler
-            Message msg = mEventHandler.obtainMessage(EVENT_SET_CALLBACK, 0, 0, cb);
-            mEventHandler.sendMessage(msg);
+    public void setCallback(@Nullable /* MediaCodec. */ Callback cb, @Nullable Handler handler) {
+        if (cb != null) {
+            synchronized (mListenerLock) {
+                EventHandler newHandler = getEventHandlerOn(handler, mCallbackHandler);
+                // NOTE: there are no callbacks on the handler at this time, but check anyways
+                // even if we were to extend this to be callable dynamically, it must
+                // be called when codec is flushed, so no messages are pending.
+                if (newHandler != mCallbackHandler) {
+                    mCallbackHandler.removeMessages(EVENT_SET_CALLBACK);
+                    mCallbackHandler.removeMessages(EVENT_CALLBACK);
+                    mCallbackHandler = newHandler;
+                }
+            }
+        } else if (mCallbackHandler != null) {
+            mCallbackHandler.removeMessages(EVENT_SET_CALLBACK);
+            mCallbackHandler.removeMessages(EVENT_CALLBACK);
+        }
+
+        if (mCallbackHandler != null) {
+            // set java callback on main handler
+            Message msg = mCallbackHandler.obtainMessage(EVENT_SET_CALLBACK, 0, 0, cb);
+            mCallbackHandler.sendMessage(msg);
 
             // set native handler here, don't post to handler because
-            // it may cause the callback to be delayed and set in a wrong state,
-            // and MediaCodec is already doing it on looper.
+            // it may cause the callback to be delayed and set in a wrong state.
+            // Note that native codec may start sending events to the callback
+            // handler after this returns.
             native_setCallback(cb);
         }
     }
 
     /**
+     * Sets an asynchronous callback for actionable MediaCodec events on the default
+     * looper.
+     * <p>
+     * Same as {@link #setCallback(Callback, Handler)} with handler set to null.
+     * @param cb The callback that will run.  Use {@code null} to clear a previously
+     *           set callback (before {@link #configure configure} is called and run
+     *           in synchronous mode).
+     * @see #setCallback(Callback, Handler)
+     */
+    public void setCallback(@Nullable /* MediaCodec. */ Callback cb) {
+        setCallback(cb, null /* handler */);
+    }
+
+    /**
+     * Listener to be called when an output frame has rendered on the output surface
+     *
+     * @see MediaCodec#setOnFrameRenderedListener
+     */
+    public interface OnFrameRenderedListener {
+
+        /**
+         * Called when an output frame has rendered on the output surface.
+         *
+         * @param codec the MediaCodec instance
+         * @param presentationTimeUs the presentation time (media time) of the frame rendered.
+         *          This is usually the same as specified in {@link #queueInputBuffer}; however,
+         *          some codecs may alter the media time by applying some time-based transformation,
+         *          such as frame rate conversion. In that case, presentation time corresponds
+         *          to the actual output frame rendered.
+         * @param nanoTime The system time when the frame was rendered.
+         *
+         * @see System#nanoTime
+         */
+        public void onFrameRendered(
+                @NonNull MediaCodec codec, long presentationTimeUs, long nanoTime);
+    }
+
+    /**
+     * Register a callback to be invoked when an output frame is rendered on the output surface.
+     * <p>
+     * This method can be called in any codec state, but will only have an effect in the
+     * Executing state for codecs that render buffers to the output surface.
+     *
+     * @param listener the callback that will be run
+     * @param handler the callback will be run on the handler's thread. If {@code null},
+     *           the callback will be run on the default thread, which is the looper
+     *           from which the codec was created, or a new thread if there was none.
+     */
+    public void setOnFrameRenderedListener(
+            @Nullable OnFrameRenderedListener listener, @Nullable Handler handler) {
+        synchronized (mListenerLock) {
+            mOnFrameRenderedListener = listener;
+            if (listener != null) {
+                EventHandler newHandler = getEventHandlerOn(handler, mOnFrameRenderedHandler);
+                if (newHandler != mOnFrameRenderedHandler) {
+                    mOnFrameRenderedHandler.removeMessages(EVENT_FRAME_RENDERED);
+                }
+                mOnFrameRenderedHandler = newHandler;
+            } else if (mOnFrameRenderedHandler != null) {
+                mOnFrameRenderedHandler.removeMessages(EVENT_FRAME_RENDERED);
+            }
+        }
+    }
+
+    private EventHandler getEventHandlerOn(
+            @Nullable Handler handler, @NonNull EventHandler lastHandler) {
+        if (handler == null) {
+            return mEventHandler;
+        } else {
+            Looper looper = handler.getLooper();
+            if (lastHandler.getLooper() == looper) {
+                return lastHandler;
+            } else {
+                return new EventHandler(this, looper);
+            }
+        }
+    }
+
+    /**
      * MediaCodec callback interface. Used to notify the user asynchronously
      * of various MediaCodec events.
      */
@@ -1772,9 +2006,17 @@
 
     private void postEventFromNative(
             int what, int arg1, int arg2, @Nullable Object obj) {
-        if (mEventHandler != null) {
-            Message msg = mEventHandler.obtainMessage(what, arg1, arg2, obj);
-            mEventHandler.sendMessage(msg);
+        synchronized (mListenerLock) {
+            EventHandler handler = mEventHandler;
+            if (what == EVENT_CALLBACK) {
+                handler = mCallbackHandler;
+            } else if (what == EVENT_FRAME_RENDERED) {
+                handler = mOnFrameRenderedHandler;
+            }
+            if (handler != null) {
+                Message msg = handler.obtainMessage(what, arg1, arg2, obj);
+                handler.sendMessage(msg);
+            }
         }
     }
 
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index b497001..974c9af 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -160,21 +160,21 @@
         public CodecProfileLevel[] profileLevels;  // NOTE this array is modifiable by user
 
         // from OMX_COLOR_FORMATTYPE
-        /** @deprecated Use {@link #COLOR_Format24bitRGB888}. */
+        /** @deprecated Use {@link #COLOR_Format24bitBGR888}. */
         public static final int COLOR_FormatMonochrome              = 1;
-        /** @deprecated Use {@link #COLOR_Format24bitRGB888}. */
+        /** @deprecated Use {@link #COLOR_Format24bitBGR888}. */
         public static final int COLOR_Format8bitRGB332              = 2;
-        /** @deprecated Use {@link #COLOR_Format24bitRGB888}. */
+        /** @deprecated Use {@link #COLOR_Format24bitBGR888}. */
         public static final int COLOR_Format12bitRGB444             = 3;
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
+        /** @deprecated Use {@link #COLOR_Format32bitABGR8888}. */
         public static final int COLOR_Format16bitARGB4444           = 4;
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
+        /** @deprecated Use {@link #COLOR_Format32bitABGR8888}. */
         public static final int COLOR_Format16bitARGB1555           = 5;
 
         /**
          * 16 bits per pixel RGB color format, with 5-bit red & blue and 6-bit green component.
          * <p>
-         * Using LSB 16-bit byte ordering, colors stored as Red 15:11, Green 10:5, Blue 4:0.
+         * Using 16-bit little-endian representation, colors stored as Red 15:11, Green 10:5, Blue 4:0.
          * <pre>
          *            byte                   byte
          *  <--------- i --------> | <------ i + 1 ------>
@@ -184,64 +184,50 @@
          *  0           4  5     7   0     2  3           7
          * bit
          * </pre>
+         *
+         * This format corresponds to {@link android.graphics.PixelFormat#RGB_565} and
+         * {@link android.graphics.ImageFormat#RGB_565}.
          */
         public static final int COLOR_Format16bitRGB565             = 6;
         /** @deprecated Use {@link #COLOR_Format16bitRGB565}. */
         public static final int COLOR_Format16bitBGR565             = 7;
-        /** @deprecated Use {@link #COLOR_Format24bitRGB888}. */
+        /** @deprecated Use {@link #COLOR_Format24bitBGR888}. */
         public static final int COLOR_Format18bitRGB666             = 8;
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
+        /** @deprecated Use {@link #COLOR_Format32bitABGR8888}. */
         public static final int COLOR_Format18bitARGB1665           = 9;
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
+        /** @deprecated Use {@link #COLOR_Format32bitABGR8888}. */
         public static final int COLOR_Format19bitARGB1666           = 10;
 
+        /** @deprecated Use {@link #COLOR_Format24bitBGR888} or {@link #COLOR_FormatRGBFlexible}. */
+        public static final int COLOR_Format24bitRGB888             = 11;
+
         /**
          * 24 bits per pixel RGB color format, with 8-bit red, green & blue components.
          * <p>
-         * Using LSB 24-bit byte ordering, colors stored as Red 23:16, Green 15:8, Blue 7:0.
+         * Using 24-bit little-endian representation, colors stored as Red 7:0, Green 15:8, Blue 23:16.
          * <pre>
          *         byte              byte             byte
          *  <------ i -----> | <---- i+1 ----> | <---- i+2 ----->
          * +-----------------+-----------------+-----------------+
-         * |       BLUE      |      GREEN      |       RED       |
+         * |       RED       |      GREEN      |       BLUE      |
          * +-----------------+-----------------+-----------------+
          * </pre>
+         *
+         * This format corresponds to {@link android.graphics.PixelFormat#RGB_888}, and can also be
+         * represented as a flexible format by {@link #COLOR_FormatRGBFlexible}.
          */
-        public static final int COLOR_Format24bitRGB888             = 11;
-        /** @deprecated Use {@link #COLOR_Format24bitRGB888}. */
         public static final int COLOR_Format24bitBGR888             = 12;
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
+        /** @deprecated Use {@link #COLOR_Format32bitABGR8888}. */
         public static final int COLOR_Format24bitARGB1887           = 13;
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
+        /** @deprecated Use {@link #COLOR_Format32bitABGR8888}. */
         public static final int COLOR_Format25bitARGB1888           = 14;
 
         /**
-         * 32 bits per pixel ARGB color format, with 8-bit alpha, red, green & blue components.
-         * <p>
-         * Using LSB 32-bit byte ordering, colors stored as Alpha 31:24, Red 23:16, Green 15:8,
-         * Blue 7:0.
-         * <pre>
-         *         byte              byte             byte              byte
-         *  <------ i -----> | <---- i+1 ----> | <---- i+2 ----> | <---- i+3 ----->
-         * +-----------------+-----------------+-----------------+-----------------+
-         * |       BLUE      |      GREEN      |       RED       |      ALPHA      |
-         * +-----------------+-----------------+-----------------+-----------------+
-         * </pre>
+         * @deprecated Use {@link #COLOR_Format32bitABGR8888} Or {@link #COLOR_FormatRGBAFlexible}.
          */
         public static final int COLOR_Format32bitBGRA8888           = 15;
-
         /**
-         * 32 bits per pixel ARGB color format, with 8-bit alpha, red, green & blue components.
-         * <p>
-         * Using LSB 32-bit byte ordering, colors stored as Alpha 31:24, Red 7:0, Green 15:8,
-         * Blue 23:16.
-         * <pre>
-         *         byte              byte             byte              byte
-         *  <------ i -----> | <---- i+1 ----> | <---- i+2 ----> | <---- i+3 ----->
-         * +-----------------+-----------------+-----------------+-----------------+
-         * |       RED       |      GREEN      |       BLUE      |      ALPHA      |
-         * +-----------------+-----------------+-----------------+-----------------+
-         * </pre>
+         * @deprecated Use {@link #COLOR_Format32bitABGR8888} Or {@link #COLOR_FormatRGBAFlexible}.
          */
         public static final int COLOR_Format32bitARGB8888           = 16;
         /** @deprecated Use {@link #COLOR_FormatYUV420Flexible}. */
@@ -271,10 +257,24 @@
         /** @deprecated Use {@link #COLOR_FormatYUV422Flexible}. */
         public static final int COLOR_FormatCrYCbY                  = 28;
 
+        /** @deprecated Use {@link #COLOR_FormatYUV444Flexible}. */
         public static final int COLOR_FormatYUV444Interleaved       = 29;
 
+        /**
+         * SMIA 8-bit Bayer format.
+         * Each byte represents the top 8-bits of a 10-bit signal.
+         */
         public static final int COLOR_FormatRawBayer8bit            = 30;
+        /**
+         * SMIA 10-bit Bayer format.
+         */
         public static final int COLOR_FormatRawBayer10bit           = 31;
+
+        /**
+         * SMIA 8-bit compressed Bayer format.
+         * Each byte represents a sample from the 10-bit signal that is compressed into 8-bits
+         * using DPCM/PCM compression, as defined by the SMIA Functional Specification.
+         */
         public static final int COLOR_FormatRawBayer8bitcompressed  = 32;
 
         /** @deprecated Use {@link #COLOR_FormatL8}. */
@@ -286,6 +286,7 @@
          * 8 bits per pixel Y color format.
          * <p>
          * Each byte contains a single pixel.
+         * This format corresponds to {@link android.graphics.PixelFormat#L_8}.
          */
         public static final int COLOR_FormatL8                      = 35;
 
@@ -303,7 +304,7 @@
          * </pre>
          */
         public static final int COLOR_FormatL16                     = 36;
-        /** @deprecated Use {@link #COLOR_FormatL32}. */
+        /** @deprecated Use {@link #COLOR_FormatL16}. */
         public static final int COLOR_FormatL24                     = 37;
 
         /**
@@ -318,6 +319,8 @@
          *  0               7 0               7 0               7 0               7
          * bit
          * </pre>
+         *
+         * @deprecated Use {@link #COLOR_FormatL16}.
          */
         public static final int COLOR_FormatL32                     = 38;
 
@@ -326,12 +329,12 @@
         /** @deprecated Use {@link #COLOR_FormatYUV422Flexible}. */
         public static final int COLOR_FormatYUV422PackedSemiPlanar  = 40;
 
-        /** @deprecated Use {@link #COLOR_Format24bitRGB888}. */
+        /** @deprecated Use {@link #COLOR_Format24bitBGR888}. */
         public static final int COLOR_Format18BitBGR666             = 41;
 
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
+        /** @deprecated Use {@link #COLOR_Format32bitABGR8888}. */
         public static final int COLOR_Format24BitARGB6666           = 42;
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
+        /** @deprecated Use {@link #COLOR_Format32bitABGR8888}. */
         public static final int COLOR_Format24BitABGR6666           = 43;
 
         /** @deprecated Use {@link #COLOR_FormatYUV420Flexible}. */
@@ -340,8 +343,22 @@
         // In OMX this is called OMX_COLOR_FormatAndroidOpaque.
         public static final int COLOR_FormatSurface                   = 0x7F000789;
 
-        /** @deprecated Use {@link #COLOR_Format32bitARGB8888}. */
-        public static final int COLOR_Format32BitRGBA8888             = 0x7F00A000;
+        /**
+         * 32 bits per pixel RGBA color format, with 8-bit red, green, blue, and alpha components.
+         * <p>
+         * Using 32-bit little-endian representation, colors stored as Red 7:0, Green 15:8,
+         * Blue 23:16, and Alpha 31:24.
+         * <pre>
+         *         byte              byte             byte              byte
+         *  <------ i -----> | <---- i+1 ----> | <---- i+2 ----> | <---- i+3 ----->
+         * +-----------------+-----------------+-----------------+-----------------+
+         * |       RED       |      GREEN      |       BLUE      |      ALPHA      |
+         * +-----------------+-----------------+-----------------+-----------------+
+         * </pre>
+         *
+         * This corresponds to {@link android.graphics.PixelFormat#RGBA_8888}.
+         */
+        public static final int COLOR_Format32bitABGR8888             = 0x7F00A000;
 
         /**
          * Flexible 12 bits per pixel, subsampled YUV color format with 8-bit chroma and luma
@@ -349,24 +366,67 @@
          * <p>
          * Chroma planes are subsampled by 2 both horizontally and vertically.
          * Use this format with {@link Image}.
+         * This format corresponds to {@link android.graphics.ImageFormat#YUV_420_888},
+         * and can represent the {@link #COLOR_FormatYUV411Planar},
+         * {@link #COLOR_FormatYUV411PackedPlanar}, {@link #COLOR_FormatYUV420Planar},
+         * {@link #COLOR_FormatYUV420PackedPlanar}, {@link #COLOR_FormatYUV420SemiPlanar}
+         * and {@link #COLOR_FormatYUV420PackedSemiPlanar} formats.
          *
          * @see Image#getFormat
          */
-        // This corresponds to YUV_420_888 format
         public static final int COLOR_FormatYUV420Flexible            = 0x7F420888;
 
         /**
          * Flexible 16 bits per pixel, subsampled YUV color format with 8-bit chroma and luma
          * components.
          * <p>
-         * Chroma planes are horizontally subsampled by 2.
-         * Use this format with {@link Image}.
+         * Chroma planes are horizontally subsampled by 2. Use this format with {@link Image}.
+         * This format corresponds to {@link android.graphics.ImageFormat#YUV_422_888},
+         * and can represent the {@link #COLOR_FormatYCbYCr}, {@link #COLOR_FormatYCrYCb},
+         * {@link #COLOR_FormatCbYCrY}, {@link #COLOR_FormatCrYCbY},
+         * {@link #COLOR_FormatYUV422Planar}, {@link #COLOR_FormatYUV422PackedPlanar},
+         * {@link #COLOR_FormatYUV422SemiPlanar} and {@link #COLOR_FormatYUV422PackedSemiPlanar}
+         * formats.
          *
          * @see Image#getFormat
          */
-        // This corresponds to YUV_422_888 format
         public static final int COLOR_FormatYUV422Flexible            = 0x7F422888;
 
+        /**
+         * Flexible 24 bits per pixel YUV color format with 8-bit chroma and luma
+         * components.
+         * <p>
+         * Chroma planes are not subsampled. Use this format with {@link Image}.
+         * This format corresponds to {@link android.graphics.ImageFormat#YUV_444_888},
+         * and can represent the {@link #COLOR_FormatYUV444Interleaved} format.
+         * @see Image#getFormat
+         */
+        public static final int COLOR_FormatYUV444Flexible            = 0x7F444888;
+
+        /**
+         * Flexible 24 bits per pixel RGB color format with 8-bit red, green and blue
+         * components.
+         * <p>
+         * Use this format with {@link Image}. This format corresponds to
+         * {@link android.graphics.ImageFormat#FLEX_RGB_888}, and can represent
+         * {@link #COLOR_Format24bitBGR888} and {@link #COLOR_Format24bitRGB888} formats.
+         * @see Image#getFormat.
+         */
+        public static final int COLOR_FormatRGBFlexible               = 0x7F36B888;
+
+        /**
+         * Flexible 32 bits per pixel RGBA color format with 8-bit red, green, blue, and alpha
+         * components.
+         * <p>
+         * Use this format with {@link Image}. This format corresponds to
+         * {@link android.graphics.ImageFormat#FLEX_RGBA_8888}, and can represent
+         * {@link #COLOR_Format32bitBGRA8888}, {@link #COLOR_Format32bitABGR8888} and
+         * {@link #COLOR_Format32bitARGB8888} formats.
+         *
+         * @see Image#getFormat
+         */
+        public static final int COLOR_FormatRGBAFlexible              = 0x7F36A888;
+
         /** @deprecated Use {@link #COLOR_FormatYUV420Flexible}. */
         public static final int COLOR_QCOM_FormatYUV420SemiPlanar     = 0x7fa30c00;
 
@@ -1136,6 +1196,27 @@
         }
 
         /**
+         * Returns the range of achievable video frame rates for a video size.
+         * May return {@code null}, if the codec did not publish any measurement
+         * data.
+         * <p>
+         * This is a performance estimate, based on full-speed decoding
+         * and encoding measurements of common video sizes supported by the codec.
+         *
+         * @param width the width of the video
+         * @param height the height of the video
+         *
+         * @throws IllegalArgumentException if the video size is not supported.
+         */
+        public Range<Double> getAchievableFrameRatesFor(int width, int height) {
+            if (!supports(width, height, null)) {
+                throw new IllegalArgumentException("unsupported size");
+            }
+            // TODO: get this data from the codec
+            return null;
+        }
+
+        /**
          * Returns whether a given video size ({@code width} and
          * {@code height}) and {@code frameRate} combination is supported.
          */
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index 726622f..0e67daa 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -232,11 +232,22 @@
     public static final String KEY_TEMPORAL_LAYERING = "ts-schema";
 
     /**
-     * @hide
+     * A key describing the stride of the video bytebuffer layout.
+     * Stride (or row increment) is the difference between the index of a pixel
+     * and that of the pixel directly underneath. For YUV 420 formats, the
+     * stride corresponds to the Y plane; the stride of the U and V planes can
+     * be calculated based on the color format.
+     * The associated value is an integer, representing number of bytes.
      */
     public static final String KEY_STRIDE = "stride";
+
     /**
-     * @hide
+     * A key describing the plane height of a multi-planar (YUV) video bytebuffer layout.
+     * Slice height (or plane height) is the number of rows that must be skipped to get
+     * from the top of the Y plane to the top of the U plane in the bytebuffer. In essence
+     * the offset of the U plane is sliceHeight * stride. The height of the U/V planes
+     * can be calculated based on the color format.
+     * The associated value is an integer, representing number of rows.
      */
     public static final String KEY_SLICE_HEIGHT = "slice-height";
 
@@ -456,14 +467,38 @@
 
     /**
      * A key describing the desired profile to be used by an encoder.
+     * The associated value is an integer.
      * Constants are declared in {@link MediaCodecInfo.CodecProfileLevel}.
-     * This key is only supported for codecs that specify a profile.
+     * This key is used as a hint, and is only supported for codecs
+     * that specify a profile.
      *
      * @see MediaCodecInfo.CodecCapabilities#profileLevels
      */
     public static final String KEY_PROFILE = "profile";
 
     /**
+     * A key describing the desired profile to be used by an encoder.
+     * The associated value is an integer.
+     * Constants are declared in {@link MediaCodecInfo.CodecProfileLevel}.
+     * This key is used as a further hint when specifying a desired profile,
+     * and is only supported for codecs that specify a level.
+     * <p>
+     * This key is ignored if the {@link #KEY_PROFILE profile} is not specified.
+     *
+     * @see MediaCodecInfo.CodecCapabilities#profileLevels
+     */
+    public static final String KEY_LEVEL = "level";
+
+    /**
+     * A key describing the desired clockwise rotation on an output surface.
+     * This key is only used when the codec is configured using an output surface.
+     * The associated value is an integer, representing degrees.
+     *
+     * @see MediaCodecInfo.CodecCapabilities#profileLevels
+     */
+    public static final String KEY_ROTATION = "rotation-degrees";
+
+    /**
      * A key describing the desired bitrate mode to be used by an encoder.
      * Constants are declared in {@link MediaCodecInfo.CodecCapabilities}.
      *
diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java
index 541d871..d6bf421 100644
--- a/media/java/android/media/MediaHTTPConnection.java
+++ b/media/java/android/media/MediaHTTPConnection.java
@@ -43,6 +43,9 @@
     private static final String TAG = "MediaHTTPConnection";
     private static final boolean VERBOSE = false;
 
+    // connection timeout - 30 sec
+    private static final int CONNECT_TIMEOUT_MS = 30 * 1000;
+
     private long mCurrentOffset = -1;
     private URL mURL = null;
     private Map<String, String> mHeaders = null;
@@ -182,6 +185,7 @@
                 } else {
                     mConnection = (HttpURLConnection)url.openConnection();
                 }
+                mConnection.setConnectTimeout(CONNECT_TIMEOUT_MS);
 
                 // handle redirects ourselves if we do not allow cross-domain redirect
                 mConnection.setInstanceFollowRedirects(mAllowCrossDomainRedirect);
@@ -341,7 +345,7 @@
         } catch (UnknownServiceException e) {
             Log.w(TAG, "readAt " + offset + " / " + size + " => " + e);
             return MEDIA_ERROR_UNSUPPORTED;
-        }catch (IOException e) {
+        } catch (IOException e) {
             if (VERBOSE) {
                 Log.d(TAG, "readAt " + offset + " / " + size + " => -1");
             }
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index 210d08f..a33fa59 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -17,6 +17,8 @@
 package android.media;
 
 import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.app.ActivityThread;
 import android.app.AppOpsManager;
 import android.content.ContentResolver;
@@ -44,10 +46,12 @@
 import android.media.AudioManager;
 import android.media.MediaFormat;
 import android.media.MediaTimeProvider;
+import android.media.PlaybackSettings;
 import android.media.SubtitleController;
 import android.media.SubtitleController.Anchor;
 import android.media.SubtitleData;
 import android.media.SubtitleTrack.RenderingWidget;
+import android.media.SyncSettings;
 
 import com.android.internal.app.IAppOpsService;
 
@@ -471,16 +475,21 @@
  *     <td>{} </p></td>
  *     <td>This method can be called in any state and calling it does not change
  *         the object state. </p></td></tr>
- * <tr><td>setScreenOnWhilePlaying</></td>
- *     <td>any </p></td>
- *     <td>{} </p></td>
- *     <td>This method can be called in any state and calling it does not change
- *         the object state.  </p></td></tr>
  * <tr><td>setPlaybackRate</p></td>
  *     <td>any </p></td>
  *     <td>{} </p></td>
  *     <td>This method can be called in any state and calling it does not change
  *         the object state. </p></td></tr>
+ * <tr><td>setPlaybackSettings</p></td>
+ *     <td>any </p></td>
+ *     <td>{} </p></td>
+ *     <td>This method can be called in any state and calling it does not change
+ *         the object state. </p></td></tr>
+ * <tr><td>setScreenOnWhilePlaying</></td>
+ *     <td>any </p></td>
+ *     <td>{} </p></td>
+ *     <td>This method can be called in any state and calling it does not change
+ *         the object state.  </p></td></tr>
  * <tr><td>setVolume </p></td>
  *     <td>{Idle, Initialized, Stopped, Prepared, Started, Paused,
  *          PlaybackCompleted}</p></td>
@@ -1342,6 +1351,8 @@
     public native boolean isPlaying();
 
     /**
+     * Change playback speed of audio by resampling the audio.
+     * <p>
      * Specifies resampling as audio mode for variable rate playback, i.e.,
      * resample the waveform based on the requested playback rate to get
      * a new waveform, and play back the new waveform at the original sampling
@@ -1349,33 +1360,44 @@
      * When rate is larger than 1.0, pitch becomes higher.
      * When rate is smaller than 1.0, pitch becomes lower.
      */
-    public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 0;
+    public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 2;
 
     /**
+     * Change playback speed of audio without changing its pitch.
+     * <p>
      * Specifies time stretching as audio mode for variable rate playback.
      * Time stretching changes the duration of the audio samples without
      * affecting its pitch.
-     * FIXME: implement time strectching.
-     * @hide
+     * <p>
+     * This mode is only supported for a limited range of playback speed factors,
+     * e.g. between 1/2x and 2x.
      */
     public static final int PLAYBACK_RATE_AUDIO_MODE_STRETCH = 1;
 
+    /**
+     * Change playback speed of audio without changing its pitch, and
+     * possibly mute audio if time stretching is not supported for the playback
+     * speed.
+     * <p>
+     * Try to keep audio pitch when changing the playback rate, but allow the
+     * system to determine how to change audio playback if the rate is out
+     * of range.
+     */
+    public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0;
+
     /** @hide */
     @IntDef(
         value = {
+            PLAYBACK_RATE_AUDIO_MODE_DEFAULT,
+            PLAYBACK_RATE_AUDIO_MODE_STRETCH,
             PLAYBACK_RATE_AUDIO_MODE_RESAMPLE,
-            PLAYBACK_RATE_AUDIO_MODE_STRETCH })
+    })
     @Retention(RetentionPolicy.SOURCE)
     public @interface PlaybackRateAudioMode {}
 
     /**
      * Sets playback rate and audio mode.
      *
-     * <p> The supported audio modes are:
-     * <ul>
-     * <li> {@link #PLAYBACK_RATE_AUDIO_MODE_RESAMPLE}
-     * </ul>
-     *
      * @param rate the ratio between desired playback rate and normal one.
      * @param audioMode audio playback mode. Must be one of the supported
      * audio modes.
@@ -1385,14 +1407,68 @@
      * @throws IllegalArgumentException if audioMode is not supported.
      */
     public void setPlaybackRate(float rate, @PlaybackRateAudioMode int audioMode) {
-        if (!isAudioPlaybackModeSupported(audioMode)) {
+        PlaybackSettings settings = new PlaybackSettings();
+        settings.allowDefaults();
+        switch (audioMode) {
+        case PLAYBACK_RATE_AUDIO_MODE_DEFAULT:
+            settings.setSpeed(rate).setPitch(1.0f);
+            break;
+        case PLAYBACK_RATE_AUDIO_MODE_STRETCH:
+            settings.setSpeed(rate).setPitch(1.0f)
+                    .setAudioFallbackMode(settings.AUDIO_FALLBACK_MODE_FAIL);
+            break;
+        case PLAYBACK_RATE_AUDIO_MODE_RESAMPLE:
+            settings.setSpeed(rate).setPitch(rate);
+            break;
+        default:
             final String msg = "Audio playback mode " + audioMode + " is not supported";
             throw new IllegalArgumentException(msg);
         }
-        _setPlaybackRate(rate);
+        setPlaybackSettings(settings);
     }
 
-    private native void _setPlaybackRate(float rate) throws IllegalStateException;
+    /**
+     * Sets playback rate using {@link PlaybackSettings}.
+     *
+     * @param settings the playback settings.
+     *
+     * @throws IllegalStateException if the internal player engine has not been
+     * initialized.
+     * @throws IllegalArgumentException if settings is not supported.
+     */
+    public native void setPlaybackSettings(@NonNull PlaybackSettings settings);
+
+    /**
+     * Gets the playback settings, containing the current playback rate.
+     *
+     * @return the playback settings.
+     * @throws IllegalStateException if the internal player engine has not been
+     * initialized.
+     */
+    @NonNull
+    public native PlaybackSettings getPlaybackSettings();
+
+    /**
+     * Sets A/V sync mode.
+     *
+     * @param settings the A/V sync settings to apply
+     *
+     * @throws IllegalStateException if the internal player engine has not been
+     * initialized.
+     * @throws IllegalArgumentException if settings are not supported.
+     */
+    public native void setSyncSettings(@NonNull SyncSettings settings);
+
+    /**
+     * Gets the A/V sync mode.
+     *
+     * @return the A/V sync settings
+     *
+     * @throws IllegalStateException if the internal player engine has not been
+     * initialized.
+     */
+    @NonNull
+    public native SyncSettings getSyncSettings();
 
     /**
      * Seeks to specified time position.
@@ -1404,6 +1480,39 @@
     public native void seekTo(int msec) throws IllegalStateException;
 
     /**
+     * Get current playback position.
+     * <p>
+     * The MediaTimestamp represents how the media time correlates to the system time in
+     * a linear fashion. It contains the media time and system timestamp of an anchor frame
+     * ({@link MediaTimestamp#mediaTimeUs} and {@link MediaTimestamp#nanoTime})
+     * and the speed of the media clock ({@link MediaTimestamp#clockRate}).
+     * <p>
+     * During regular playback, the media time moves fairly constantly (though the
+     * anchor frame may be rebased to a current system time, the linear correlation stays
+     * steady). Therefore, this method does not need to be called often.
+     * <p>
+     * To help users to get current playback position, this method always returns the timestamp of
+     * just-rendered frame, i.e., {@link System#nanoTime} and its corresponding media time. They
+     * can be used as current playback position.
+     *
+     * @return a MediaTimestamp object if a timestamp is available, or {@code null} if no timestamp
+     *         is available, e.g. because the media player has not been initialized.
+     */
+    @Nullable
+    public MediaTimestamp getTimestamp()
+    {
+        try {
+            // TODO: get the timestamp from native side
+            return new MediaTimestamp(
+                    getCurrentPosition() * 1000L,
+                    System.nanoTime(),
+                    isPlaying() ? getPlaybackSettings().getSpeed() : 0.f);
+        } catch (IllegalStateException e) {
+            return null;
+        }
+    }
+
+    /**
      * Gets the current playback position.
      *
      * @return the current position in milliseconds
@@ -3219,14 +3328,6 @@
                 mode == VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING);
     }
 
-    /*
-     * Test whether a given audio playback mode is supported.
-     * TODO query supported AudioPlaybackMode from player.
-     */
-    private boolean isAudioPlaybackModeSupported(int mode) {
-        return (mode == PLAYBACK_RATE_AUDIO_MODE_RESAMPLE);
-    }
-
     /** @hide */
     static class TimeProvider implements MediaPlayer.OnSeekCompleteListener,
             MediaTimeProvider {
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index 876aebc..78fd9f0 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -140,6 +140,24 @@
     public native Surface getSurface();
 
     /**
+     * Configures the recorder to use a persistent surface when using SURFACE video source.
+     * <p> May only be called after {@link #prepare} in lieu of {@link #getSurface}.
+     * Frames rendered to the Surface before {@link #start} will be discarded.</p>
+
+     * @param surface a persistent input surface created by
+     *           {@link MediaCodec#createPersistentInputSurface}
+     * @throws IllegalStateException if it is called before {@link #prepare}, after
+     * {@link #stop}, or is called when VideoSource is not set to SURFACE.
+     * @throws IllegalArgumentException if the surface was not created by
+     *           {@link MediaCodec#createPersistentInputSurface}.
+     * @see MediaCodec#createPersistentInputSurface
+     * @see MediaRecorder.VideoSource
+     */
+    public void usePersistentSurface(Surface surface) {
+        throw new IllegalArgumentException("not implemented");
+    }
+
+    /**
      * Sets a Surface to show a preview of recorded media (video). Calls this
      * before prepare() to make sure that the desirable preview display is
      * set. If {@link #setCamera(Camera)} is used and the surface has been
diff --git a/media/java/android/media/MediaSync.java b/media/java/android/media/MediaSync.java
index 74a2fb2..3b4f8e5 100644
--- a/media/java/android/media/MediaSync.java
+++ b/media/java/android/media/MediaSync.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.media.AudioTrack;
+import android.media.PlaybackSettings;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -28,6 +29,7 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.nio.ByteBuffer;
+import java.util.concurrent.TimeUnit;
 import java.util.LinkedList;
 import java.util.List;
 
@@ -38,13 +40,13 @@
  * <p>MediaSync is generally used like this:
  * <pre>
  * MediaSync sync = new MediaSync();
- * sync.configureSurface(surface);
+ * sync.setSurface(surface);
  * Surface inputSurface = sync.createInputSurface();
  * ...
  * // MediaCodec videoDecoder = ...;
  * videoDecoder.configure(format, inputSurface, ...);
  * ...
- * sync.configureAudioTrack(audioTrack);
+ * sync.setAudioTrack(audioTrack);
  * sync.setCallback(new MediaSync.Callback() {
  *     {@literal @Override}
  *     public void onReturnAudioBuffer(MediaSync sync, ByteBuffer audioBuffer, int bufferIndex) {
@@ -94,8 +96,8 @@
  *
  * </pre>
  *
- * The client needs to configure corresponding sink (i.e., Surface and AudioTrack) based on
- * the stream type it will play.
+ * The client needs to configure corresponding sink by setting the Surface and/or AudioTrack
+ * based on the stream type it will play.
  * <p>
  * For video, the client needs to call {@link #createInputSurface} to obtain a surface on
  * which it will render video frames.
@@ -233,29 +235,33 @@
     }
 
     /**
-     * Configures the output surface for MediaSync.
+     * Sets the output surface for MediaSync.
+     * <p>
+     * Currently, this is only supported in the Initialized state.
      *
      * @param surface Specify a surface on which to render the video data.
-     * @throws IllegalArgumentException if the surface has been released, or is invalid.
+     * @throws IllegalArgumentException if the surface has been released, is invalid,
      *     or can not be connected.
-     * @throws IllegalStateException if not in the Initialized state, or another surface
-     *     has already been configured.
+     * @throws IllegalStateException if setting the surface is not supported, e.g.
+     *     not in the Initialized state, or another surface has already been configured.
      */
-    public void configureSurface(@Nullable Surface surface) {
+    public void setSurface(@Nullable Surface surface) {
         native_configureSurface(surface);
     }
 
     private native final void native_configureSurface(@Nullable Surface surface);
 
     /**
-     * Configures the audio track for MediaSync.
+     * Sets the audio track for MediaSync.
+     * <p>
+     * Currently, this is only supported in the Initialized state.
      *
      * @param audioTrack Specify an AudioTrack through which to render the audio data.
      * @throws IllegalArgumentException if the audioTrack has been released, or is invalid.
-     * @throws IllegalStateException if not in the Initialized state, or another audio track
-     *     has already been configured.
+     * @throws IllegalStateException if setting the audio track is not supported, e.g.
+     *     not in the Initialized state, or another audio track has already been configured.
      */
-    public void configureAudioTrack(@Nullable AudioTrack audioTrack) {
+    public void setAudioTrack(@Nullable AudioTrack audioTrack) {
         // AudioTrack has sanity check for configured sample rate.
         int nativeSampleRateInHz = (audioTrack == null ? 0 : audioTrack.getSampleRate());
 
@@ -271,7 +277,7 @@
 
     /**
      * Requests a Surface to use as the input. This may only be called after
-     * {@link #configureSurface}.
+     * {@link #setSurface}.
      * <p>
      * The application is responsible for calling release() on the Surface when
      * done.
@@ -282,60 +288,58 @@
     public native final Surface createInputSurface();
 
     /**
-     * Specifies resampling as audio mode for variable rate playback, i.e.,
-     * resample the waveform based on the requested playback rate to get
+     * Resample audio data when changing playback speed.
+     * <p>
+     * Resample the waveform based on the requested playback rate to get
      * a new waveform, and play back the new waveform at the original sampling
      * frequency.
-     * When rate is larger than 1.0, pitch becomes higher.
-     * When rate is smaller than 1.0, pitch becomes lower.
+     * <p><ul>
+     * <li>When rate is larger than 1.0, pitch becomes higher.
+     * <li>When rate is smaller than 1.0, pitch becomes lower.
+     * </ul>
      */
-    public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 0;
+    public static final int PLAYBACK_RATE_AUDIO_MODE_RESAMPLE = 2;
 
     /**
-     * Specifies time stretching as audio mode for variable rate playback.
+     * Time stretch audio when changing playback speed.
+     * <p>
      * Time stretching changes the duration of the audio samples without
-     * affecting its pitch.
-     * FIXME: implement time strectching.
-     * @hide
+     * affecting their pitch. This is only supported for a limited range
+     * of playback speeds, e.g. from 1/2x to 2x. If the rate is adjusted
+     * beyond this limit, the rate change will fail.
      */
     public static final int PLAYBACK_RATE_AUDIO_MODE_STRETCH = 1;
 
+    /**
+     * Time stretch audio when changing playback speed, and may mute if
+     * stretching is no longer supported.
+     * <p>
+     * Time stretching changes the duration of the audio samples without
+     * affecting their pitch. This is only supported for a limited range
+     * of playback speeds, e.g. from 1/2x to 2x. When it is no longer
+     * supported, the audio may be muted.  Using this mode will not fail
+     * for non-negative playback rates.
+     */
+    public static final int PLAYBACK_RATE_AUDIO_MODE_DEFAULT = 0;
+
     /** @hide */
     @IntDef(
         value = {
+            PLAYBACK_RATE_AUDIO_MODE_DEFAULT,
+            PLAYBACK_RATE_AUDIO_MODE_STRETCH,
             PLAYBACK_RATE_AUDIO_MODE_RESAMPLE,
-            PLAYBACK_RATE_AUDIO_MODE_STRETCH })
+        })
     @Retention(RetentionPolicy.SOURCE)
     public @interface PlaybackRateAudioMode {}
 
     /**
-     * Sets playback rate. It does same as {@link #setPlaybackRate(float, int)},
-     * except that it always uses {@link #PLAYBACK_RATE_AUDIO_MODE_STRETCH} for audioMode.
-     *
-     * @param rate the ratio between desired playback rate and normal one. 1.0 means normal
-     *     playback speed. 0.0 means stop or pause. Value larger than 1.0 means faster playback,
-     *     while value between 0.0 and 1.0 for slower playback.
-     *
-     * @throws IllegalStateException if the internal sync engine or the audio track has not
-     *     been initialized.
-     * TODO: unhide when PLAYBACK_RATE_AUDIO_MODE_STRETCH is supported.
-     * @hide
-     */
-    public void setPlaybackRate(float rate) {
-        setPlaybackRate(rate, PLAYBACK_RATE_AUDIO_MODE_STRETCH);
-    }
-
-    /**
      * Sets playback rate and audio mode.
      *
-     * <p> The supported audio modes are:
-     * <ul>
-     * <li> {@link #PLAYBACK_RATE_AUDIO_MODE_RESAMPLE}
-     * </ul>
-     *
      * @param rate the ratio between desired playback rate and normal one. 1.0 means normal
-     *     playback speed. 0.0 means stop or pause. Value larger than 1.0 means faster playback,
-     *     while value between 0.0 and 1.0 for slower playback.
+     *     playback speed. 0.0 means pause. Value larger than 1.0 means faster playback,
+     *     while value between 0.0 and 1.0 for slower playback. <b>Note:</b> the normal rate
+     *     does not change as a result of this call. To restore the original rate at any time,
+     *     use 1.0.
      * @param audioMode audio playback mode. Must be one of the supported
      *     audio modes.
      *
@@ -344,79 +348,175 @@
      * @throws IllegalArgumentException if audioMode is not supported.
      */
     public void setPlaybackRate(float rate, @PlaybackRateAudioMode int audioMode) {
-        if (!isAudioPlaybackModeSupported(audioMode)) {
-            final String msg = "Audio playback mode " + audioMode + " is not supported";
-            throw new IllegalArgumentException(msg);
-        }
-
-        int status = AudioTrack.SUCCESS;
-        if (mAudioTrack != null) {
-            int nativeSampleRateInHz = mAudioTrack.getSampleRate();
-            int playbackSampleRate = (int)(rate * nativeSampleRateInHz + 0.5);
-            rate = playbackSampleRate / (float)nativeSampleRateInHz;
-
-            try {
-                if (rate == 0.0) {
-                    mAudioTrack.pause();
-                } else {
-                    status = mAudioTrack.setPlaybackRate(playbackSampleRate);
-                    mAudioTrack.play();
-                }
-            } catch (IllegalStateException e) {
-                throw e;
+        PlaybackSettings rateSettings = new PlaybackSettings();
+        rateSettings.allowDefaults();
+        switch (audioMode) {
+            case PLAYBACK_RATE_AUDIO_MODE_DEFAULT:
+                rateSettings.setSpeed(rate).setPitch(1.0f);
+                break;
+            case PLAYBACK_RATE_AUDIO_MODE_STRETCH:
+                rateSettings.setSpeed(rate).setPitch(1.0f)
+                        .setAudioFallbackMode(rateSettings.AUDIO_FALLBACK_MODE_FAIL);
+                break;
+            case PLAYBACK_RATE_AUDIO_MODE_RESAMPLE:
+                rateSettings.setSpeed(rate).setPitch(rate);
+                break;
+            default:
+            {
+                final String msg = "Audio playback mode " + audioMode + " is not supported";
+                throw new IllegalArgumentException(msg);
             }
         }
+        setPlaybackSettings(rateSettings);
+    }
 
-        if (status != AudioTrack.SUCCESS) {
-            throw new IllegalArgumentException("Fail to set playback rate in audio track");
-        }
+    /**
+     * Sets playback rate using {@link PlaybackSettings}.
+     * <p>
+     * When using MediaSync with {@link AudioTrack}, set playback settings using this
+     * call instead of calling it directly on the track, so that the sync is aware of
+     * the settings change.
+     * <p>
+     * This call also works if there is no audio track.
+     *
+     * @param settings the playback settings to use. {@link PlaybackSettings#getSpeed
+     *     Speed} is the ratio between desired playback rate and normal one. 1.0 means
+     *     normal playback speed. 0.0 means pause. Value larger than 1.0 means faster playback,
+     *     while value between 0.0 and 1.0 for slower playback. <b>Note:</b> the normal rate
+     *     does not change as a result of this call. To restore the original rate at any time,
+     *     use speed of 1.0.
+     *
+     * @throws IllegalStateException if the internal sync engine or the audio track has not
+     *     been initialized.
+     * @throws IllegalArgumentException if the settings are not supported.
+     */
+    public void setPlaybackSettings(@NonNull PlaybackSettings settings) {
+        float rate;
+        try {
+            rate = settings.getSpeed();
 
-        synchronized(mAudioLock) {
-            mPlaybackRate = rate;
+            // rate is specified
+            if (mAudioTrack != null) {
+                try {
+                    if (rate == 0.0) {
+                        mAudioTrack.pause();
+                    } else {
+                        mAudioTrack.setPlaybackSettings(settings);
+                        mAudioTrack.play();
+                    }
+                } catch (IllegalStateException e) {
+                    throw e;
+                }
+            }
+
+            synchronized(mAudioLock) {
+                mPlaybackRate = rate;
+            }
+            if (mPlaybackRate != 0.0 && mAudioThread != null) {
+                postRenderAudio(0);
+            }
+            native_setPlaybackRate(mPlaybackRate);
+        } catch (IllegalStateException e) {
+            // rate is not specified; still, propagate settings to audio track
+            if (mAudioTrack != null) {
+                mAudioTrack.setPlaybackSettings(settings);
+            }
         }
-        if (mPlaybackRate != 0.0 && mAudioThread != null) {
-            postRenderAudio(0);
+    }
+
+    /**
+     * Gets the playback rate using {@link PlaybackSettings}.
+     *
+     * @return the playback rate being used.
+     *
+     * @throws IllegalStateException if the internal sync engine or the audio track has not
+     *     been initialized.
+     */
+    @NonNull
+    public PlaybackSettings getPlaybackSettings() {
+        if (mAudioTrack != null) {
+            return mAudioTrack.getPlaybackSettings();
+        } else {
+            PlaybackSettings settings = new PlaybackSettings();
+            settings.allowDefaults();
+            settings.setSpeed(mPlaybackRate);
+            return settings;
         }
-        native_setPlaybackRate(mPlaybackRate);
     }
 
     private native final void native_setPlaybackRate(float rate);
 
-    /*
-     * Test whether a given audio playback mode is supported.
-     * TODO query supported AudioPlaybackMode from audio track.
+    /**
+     * Sets A/V sync mode.
+     *
+     * @param settings the A/V sync settings to apply
+     *
+     * @throws IllegalStateException if the internal player engine has not been
+     * initialized.
+     * @throws IllegalArgumentException if settings are not supported.
      */
-    private boolean isAudioPlaybackModeSupported(int mode) {
-        return (mode == PLAYBACK_RATE_AUDIO_MODE_RESAMPLE);
+    public native void setSyncSettings(@NonNull SyncSettings settings);
+
+    /**
+     * Gets the A/V sync mode.
+     *
+     * @return the A/V sync settings
+     *
+     * @throws IllegalStateException if the internal player engine has not been
+     * initialized.
+     */
+    @NonNull
+    public native SyncSettings getSyncSettings();
+
+    /**
+     * Flushes all buffers from the sync object.
+     * <p>
+     * No callbacks are received for the flushed buffers.
+     *
+     * @throws IllegalStateException if the internal player engine has not been
+     * initialized.
+     */
+    public void flush() {
+        synchronized(mAudioLock) {
+            mAudioBuffers.clear();
+            mCallbackHandler.removeCallbacksAndMessages(null);
+        }
+        // TODO implement this for surface buffers.
     }
 
    /**
     * Get current playback position.
     * <p>
-    * The MediaTimestamp represents a clock ticking during media playback. It's represented
-    * by an anchor frame ({@link MediaTimestamp#mediaTimeUs} and {@link MediaTimestamp#nanoTime})
-    * and clock speed ({@link MediaTimestamp#clockRate}). For continous playback with
-    * constant speed, its anchor frame doesn't change that often. Thereafter, it's recommended
-    * to not call this method often.
+    * The MediaTimestamp represents how the media time correlates to the system time in
+    * a linear fashion. It contains the media time and system timestamp of an anchor frame
+    * ({@link MediaTimestamp#mediaTimeUs} and {@link MediaTimestamp#nanoTime})
+    * and the speed of the media clock ({@link MediaTimestamp#clockRate}).
+    * <p>
+    * During regular playback, the media time moves fairly constantly (though the
+    * anchor frame may be rebased to a current system time, the linear correlation stays
+    * steady). Therefore, this method does not need to be called often.
     * <p>
     * To help users to get current playback position, this method always returns the timestamp of
     * just-rendered frame, i.e., {@link System#nanoTime} and its corresponding media time. They
     * can be used as current playback position.
     *
-    * @param timestamp a reference to a non-null MediaTimestamp instance allocated
-    *         and owned by caller.
-    * @return true if a timestamp is available, or false if no timestamp is available.
-    *         If a timestamp if available, the MediaTimestamp instance is filled in with
-    *         playback rate, together with the current media timestamp and the system nanoTime
-    *         corresponding to the measured media timestamp.
-    *         In the case that no timestamp is available, any supplied instance is left unaltered.
+    * @return a MediaTimestamp object if a timestamp is available, or {@code null} if no timestamp
+    *         is available, e.g. because the media sync has not been initialized.
     */
-    public boolean getTimestamp(@NonNull MediaTimestamp timestamp)
+    @Nullable
+    public MediaTimestamp getTimestamp()
     {
-        if (timestamp == null) {
-            throw new IllegalArgumentException();
+        try {
+            // TODO: create the timestamp in native
+            MediaTimestamp timestamp = new MediaTimestamp();
+            if (native_getTimestamp(timestamp)) {
+                return timestamp;
+            } else {
+                return null;
+            }
+        } catch (IllegalStateException e) {
+            return null;
         }
-        return native_getTimestamp(timestamp);
     }
 
     private native final boolean native_getTimestamp(@NonNull MediaTimestamp timestamp);
@@ -487,8 +587,9 @@
 
                         audioBuffer.mSizeInBytes -= sizeWritten;
                     }
-                    // TODO: wait time depends on fullness of audio track.
-                    postRenderAudio(10);
+                    long pendingTimeMs = TimeUnit.MICROSECONDS.toMillis(
+                            native_getPlayTimeForPendingAudioFrames());
+                    postRenderAudio(pendingTimeMs / 2);
                 }
             }
         }, delayMillis);
@@ -497,6 +598,8 @@
     private native final void native_updateQueuedAudioData(
             int sizeInBytes, long presentationTimeUs);
 
+    private native final long native_getPlayTimeForPendingAudioFrames();
+
     private final void postReturnByteBuffer(@NonNull final AudioBuffer audioBuffer) {
         synchronized(mCallbackLock) {
             if (mCallbackHandler != null) {
diff --git a/media/java/android/media/MediaTimestamp.java b/media/java/android/media/MediaTimestamp.java
index 4b7e827..d3d5618 100644
--- a/media/java/android/media/MediaTimestamp.java
+++ b/media/java/android/media/MediaTimestamp.java
@@ -17,36 +17,55 @@
 package android.media;
 
 /**
- * Structure that groups clock rate of the stream playback, together with the media timestamp
+ * An immutable object that represents the linear correlation between the media time
+ * and the system time. It contains the media clock rate, together with the media timestamp
  * of an anchor frame and the system time when that frame was presented or is committed
  * to be presented.
- * The "present" means that audio/video produced on device is detectable by an external
+ * <p>
+ * The phrase "present" means that audio/video produced on device is detectable by an external
  * observer off device.
  * The time is based on the implementation's best effort, using whatever knowledge
  * is available to the system, but cannot account for any delay unknown to the implementation.
- * The anchor frame could be any frame, including just-rendered frame, dependent on how
- * it's selected. When the anchor frame is the just-rendered one, the media time stands for
- * current position of the playback.
+ * The anchor frame could be any frame, including a just-rendered frame, or even a theoretical
+ * or in-between frame, based on the source of the MediaTimestamp.
+ * When the anchor frame is a just-rendered one, the media time stands for
+ * current position of the playback or recording.
  *
  * @see MediaSync#getTimestamp
+ * @see MediaPlayer#getTimestamp
  */
 public final class MediaTimestamp
 {
     /**
-     * Media timestamp in microseconds.
+     * Media time in microseconds.
      */
-    public long mediaTimeUs;
+    public final long mediaTimeUs;
 
     /**
-     * The {@link java.lang.System#nanoTime} corresponding to the media timestamp.
+     * The {@link java.lang.System#nanoTime system time} corresponding to the media time
+     * in nanoseconds.
      */
-    public long nanoTime;
+    public final long nanoTime;
 
     /**
-     * Media clock rate.
-     * It is 1.0 if media clock is in sync with the system clock;
+     * The rate of the media clock in relation to the system time.
+     * It is 1.0 if media clock advances in sync with the system clock;
      * greater than 1.0 if media clock is faster than the system clock;
      * less than 1.0 if media clock is slower than the system clock.
      */
-    public float clockRate;
+    public final float clockRate;
+
+    /** @hide */
+    MediaTimestamp(long mediaUs, long systemNs, float rate) {
+        mediaTimeUs = mediaUs;
+        nanoTime = systemNs;
+        clockRate = rate;
+    }
+
+    /** @hide */
+    MediaTimestamp() {
+        mediaTimeUs = 0;
+        nanoTime = 0;
+        clockRate = 1.0f;
+    }
 }
diff --git a/media/java/android/media/OnAudioRecordRoutingListener.java b/media/java/android/media/OnAudioRecordRoutingListener.java
new file mode 100644
index 0000000..8ff41c5
--- /dev/null
+++ b/media/java/android/media/OnAudioRecordRoutingListener.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+
+package android.media;
+
+/**
+ * OnAudioDeviceConnectionListener defines the interface for notification listeners in the
+ * {@link AudioDevicesManager}
+ */
+public interface OnAudioRecordRoutingListener {
+    /**
+     * Called when the routing of an AudioRecord changes from either and explicit or
+     * policy rerouting.
+     */
+    public void onAudioRecordRouting(AudioRecord audioRecord);
+}
diff --git a/media/java/android/media/OnAudioTrackRoutingListener.java b/media/java/android/media/OnAudioTrackRoutingListener.java
new file mode 100644
index 0000000..18c72ef
--- /dev/null
+++ b/media/java/android/media/OnAudioTrackRoutingListener.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 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.
+ * 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.
+ */
+
+package android.media;
+
+/**
+ * OnAudioDeviceConnectionListener defines the interface for notification listeners in the
+ * {@link AudioDevicesManager}
+ */
+public interface OnAudioTrackRoutingListener {
+    /**
+     * Called when the routing of an AudioTrack changes from either and explicit or
+     * policy rerouting.
+     */
+    public void onAudioTrackRouting(AudioTrack audioTrack);
+}
diff --git a/media/java/android/media/PlaybackSettings.java b/media/java/android/media/PlaybackSettings.java
new file mode 100644
index 0000000..ceb6bb1
--- /dev/null
+++ b/media/java/android/media/PlaybackSettings.java
@@ -0,0 +1,206 @@
+/*
+ * 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.
+ * 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.
+ */
+
+package android.media;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import android.annotation.IntDef;
+
+/**
+ * Structure for common playback settings.
+ *
+ * Used by {@link AudioTrack} {@link AudioTrack#getPlaybackSettings()} and
+ * {@link AudioTrack#setPlaybackSettings(PlaybackSettings)}
+ * to control playback behavior.
+ * <p> <strong>audio fallback mode:</strong>
+ * select out-of-range parameter handling.
+ * <ul>
+ * <li> {@link PlaybackSettings#AUDIO_FALLBACK_MODE_DEFAULT}:
+ *   System will determine best handling. </li>
+ * <li> {@link PlaybackSettings#AUDIO_FALLBACK_MODE_MUTE}:
+ *   Play silence for settings normally out of range.</li>
+ * <li> {@link PlaybackSettings#AUDIO_FALLBACK_MODE_FAIL}:
+ *   Return {@link java.lang.IllegalArgumentException} from
+ *   <code>AudioTrack.setPlaybackSettings(PlaybackSettings)</code>.</li>
+ * </ul>
+ * <p> <strong>audio stretch mode:</strong> select
+ * timestretch handling.
+ * <ul>
+ * <li> {@link PlaybackSettings#AUDIO_STRETCH_MODE_DEFAULT}:
+ *   System will determine best selection. </li>
+ * <li> {@link PlaybackSettings#AUDIO_STRETCH_MODE_VOICE}:
+ *   Content is primarily voice.</li>
+ * </ul>
+ * <p> <strong>pitch:</strong> increases or decreases the tonal frequency of the audio content.
+ * It is expressed as a multiplicative factor, where normal pitch is 1.0f.
+ * <p> <strong>speed:</strong> increases or decreases the time to
+ * play back a set of audio or video frames.
+ * It is expressed as a multiplicative factor, where normal speed is 1.0f.
+ * <p> Different combinations of speed and pitch may be used for audio playback;
+ * some common ones:
+ * <ul>
+ * <li> <em>Pitch equals 1.0f.</em> Speed change will be done with pitch preserved,
+ * often called <em>timestretching</em>.</li>
+ * <li> <em>Pitch equals speed.</em> Speed change will be done by <em>resampling</em>,
+ * similar to {@link AudioTrack#setPlaybackRate(int)}.</li>
+ * </ul>
+ */
+public final class PlaybackSettings {
+    /** @hide */
+    @IntDef(
+        value = {
+                AUDIO_FALLBACK_MODE_DEFAULT,
+                AUDIO_FALLBACK_MODE_MUTE,
+                AUDIO_FALLBACK_MODE_FAIL,
+        }
+    )
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface AudioFallbackMode {}
+    public static final int AUDIO_FALLBACK_MODE_DEFAULT = 0;
+    public static final int AUDIO_FALLBACK_MODE_MUTE = 1;
+    public static final int AUDIO_FALLBACK_MODE_FAIL = 2;
+
+    /** @hide */
+    @IntDef(
+        value = {
+                AUDIO_STRETCH_MODE_DEFAULT,
+                AUDIO_STRETCH_MODE_VOICE,
+        }
+    )
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface AudioStretchMode {}
+    public static final int AUDIO_STRETCH_MODE_DEFAULT = 0;
+    public static final int AUDIO_STRETCH_MODE_VOICE = 1;
+
+    // flags to indicate which settings are actually set
+    private static final int SET_SPEED               = 1 << 0;
+    private static final int SET_PITCH               = 1 << 1;
+    private static final int SET_AUDIO_FALLBACK_MODE = 1 << 2;
+    private static final int SET_AUDIO_STRETCH_MODE  = 1 << 3;
+    private int mSet = 0;
+
+    // settings
+    private int mAudioFallbackMode = AUDIO_FALLBACK_MODE_DEFAULT;
+    private int mAudioStretchMode = AUDIO_STRETCH_MODE_DEFAULT;
+    private float mPitch = 1.0f;
+    private float mSpeed = 1.0f;
+
+    /**
+     * Allows defaults to be returned for properties not set.
+     * Otherwise a {@link java.lang.IllegalArgumentException} exception
+     * is raised when getting those properties
+     * which have defaults but have never been set.
+     * @return this <code>PlaybackSettings</code> instance.
+     */
+    public PlaybackSettings allowDefaults() {
+        mSet |= SET_AUDIO_FALLBACK_MODE | SET_AUDIO_STRETCH_MODE | SET_PITCH | SET_SPEED;
+        return this;
+    }
+
+    /**
+     * Sets the audio fallback mode.
+     * @param audioFallbackMode
+     * @return this <code>PlaybackSettings</code> instance.
+     */
+    public PlaybackSettings setAudioFallbackMode(@AudioFallbackMode int audioFallbackMode) {
+        mAudioFallbackMode = audioFallbackMode;
+        mSet |= SET_AUDIO_FALLBACK_MODE;
+        return this;
+    }
+
+    /**
+     * Retrieves the audio fallback mode.
+     * @return audio fallback mode
+     * @throws IllegalStateException if the audio fallback mode is not set.
+     */
+    public @AudioFallbackMode int getAudioFallbackMode() {
+        if ((mSet & SET_AUDIO_FALLBACK_MODE) == 0) {
+            throw new IllegalStateException("audio fallback mode not set");
+        }
+        return mAudioFallbackMode;
+    }
+
+    /**
+     * Sets the audio stretch mode.
+     * @param audioStretchMode
+     * @return this <code>PlaybackSettings</code> instance.
+     */
+    public PlaybackSettings setAudioStretchMode(@AudioStretchMode int audioStretchMode) {
+        mAudioStretchMode = audioStretchMode;
+        mSet |= SET_AUDIO_STRETCH_MODE;
+        return this;
+    }
+
+    /**
+     * Retrieves the audio stretch mode.
+     * @return audio stretch mode
+     * @throws IllegalStateException if the audio stretch mode is not set.
+     */
+    public @AudioStretchMode int getAudioStretchMode() {
+        if ((mSet & SET_AUDIO_STRETCH_MODE) == 0) {
+            throw new IllegalStateException("audio stretch mode not set");
+        }
+        return mAudioStretchMode;
+    }
+
+    /**
+     * Sets the pitch factor.
+     * @param pitch
+     * @return this <code>PlaybackSettings</code> instance.
+     */
+    public PlaybackSettings setPitch(float pitch) {
+        mPitch = pitch;
+        mSet |= SET_PITCH;
+        return this;
+    }
+
+    /**
+     * Retrieves the pitch factor.
+     * @return pitch
+     * @throws IllegalStateException if pitch is not set.
+     */
+    public float getPitch() {
+        if ((mSet & SET_PITCH) == 0) {
+            throw new IllegalStateException("pitch not set");
+        }
+        return mPitch;
+    }
+
+    /**
+     * Sets the speed factor.
+     * @param speed
+     * @return this <code>PlaybackSettings</code> instance.
+     */
+    public PlaybackSettings setSpeed(float speed) {
+        mSpeed = speed;
+        mSet |= SET_SPEED;
+        return this;
+    }
+
+    /**
+     * Retrieves the speed factor.
+     * @return speed
+     * @throws IllegalStateException if speed is not set.
+     */
+    public float getSpeed() {
+        if ((mSet & SET_SPEED) == 0) {
+            throw new IllegalStateException("speed not set");
+        }
+        return mSpeed;
+    }
+}
diff --git a/media/java/android/media/SyncSettings.java b/media/java/android/media/SyncSettings.java
new file mode 100644
index 0000000..9740147
--- /dev/null
+++ b/media/java/android/media/SyncSettings.java
@@ -0,0 +1,282 @@
+/*
+ * 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.
+ * 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.
+ */
+
+package android.media;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+import android.annotation.IntDef;
+
+/**
+ * Structure for common A/V sync settings.
+ *
+ * Used by {@link MediaSync} {link MediaSync#getSyncSettings()} and
+ * {link MediaSync#setSyncSettings(SyncSettings)}
+ * to control A/V sync behavior.
+ * <p> <strong>audio adjust mode:</strong>
+ * select handling of audio track when changing playback speed due to sync.
+ * <ul>
+ * <li> {@link SyncSettings#AUDIO_ADJUST_MODE_DEFAULT}:
+ *   System will determine best handling. </li>
+ * <li> {@link SyncSettings#AUDIO_ADJUST_MODE_STRETCH}:
+ *   Change the speed of audio playback without altering its pitch.</li>
+ * <li> {@link SyncSettings#AUDIO_ADJUST_MODE_RESAMPLE}:
+ *   Change the speed of audio playback by resampling the audio.</li>
+ * </ul>
+ * <p> <strong>sync source:</strong> select
+ * clock source for sync.
+ * <ul>
+ * <li> {@link SyncSettings#SYNC_SOURCE_DEFAULT}:
+ *   System will determine best selection.</li>
+ * <li> {@link SyncSettings#SYNC_SOURCE_SYSTEM_CLOCK}:
+ *   Use system clock for sync source.</li>
+ * <li> {@link SyncSettings#SYNC_SOURCE_AUDIO}:
+ *   Use audio track for sync source.</li>
+ * <li> {@link SyncSettings#SYNC_SOURCE_VSYNC}:
+ *   Syncronize media to vsync.</li>
+ * </ul>
+ * <p> <strong>tolerance:</strong> specifies the amount of allowed playback rate
+ * change to keep media in sync with the sync source. The handling of this depends
+ * on the sync source.
+ * <p> <strong>frameRate:</strong> initial hint for video frame rate. Used when
+ * sync source is vsync.
+ */
+public final class SyncSettings {
+    /** @hide */
+    @IntDef(
+        value = {
+                SYNC_SOURCE_DEFAULT,
+                SYNC_SOURCE_SYSTEM_CLOCK,
+                SYNC_SOURCE_AUDIO,
+                SYNC_SOURCE_VSYNC,
+        }
+    )
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface SyncSource {}
+
+    /**
+     * Use the default sync source (default). If media has video, the sync renders to a
+     * surface that directly renders to a display, and tolerance is non zero (e.g. not
+     * less than 0.001) vsync source is used for clock source.  Otherwise, if media has
+     * audio, audio track is used. Finally, if media has no audio, system clock is used.
+     */
+    public static final int SYNC_SOURCE_DEFAULT = 0;
+
+    /**
+     * Use system monotonic clock for sync source.
+     *
+     * @see System#nanoTime
+     */
+    public static final int SYNC_SOURCE_SYSTEM_CLOCK = 1;
+
+    /**
+     * Use audio track for sync source. This requires audio data and an audio track.
+     *
+     * @see AudioTrack#getTimeStamp
+     */
+    public static final int SYNC_SOURCE_AUDIO = 2;
+
+    /**
+     * Use vsync as the sync source. This requires video data and an output surface that
+     * directly renders to the display, e.g. {@link android.view.SurfaceView}
+     * <p>
+     * This mode allows smoother playback experience by adjusting the playback speed
+     * to match the vsync rate, e.g. playing 30fps content on a 59.94Hz display.
+     * When using this mode, the tolerance should be set to greater than 0 (e.g. at least
+     * 1/1000), so that the playback speed can actually be adjusted.
+     * <p>
+     * This mode can also be used to play 25fps content on a 60Hz display using
+     * a 2:3 pulldown (basically playing the content at 24fps), which results on
+     * better playback experience on most devices. In this case the tolerance should be
+     * at least (1/24).
+     *
+     * @see android.view.Choreographer.FrameCallback#doFrame
+     * @see android.view.Display#getAppVsyncOffsetNanos
+     */
+    public static final int SYNC_SOURCE_VSYNC = 3;
+
+    /** @hide */
+    @IntDef(
+        value = {
+                AUDIO_ADJUST_MODE_DEFAULT,
+                AUDIO_ADJUST_MODE_STRETCH,
+                AUDIO_ADJUST_MODE_RESAMPLE,
+        }
+    )
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface AudioAdjustMode {}
+
+    /**
+     * System will determine best handling of audio for playback rate
+     * adjustments.
+     * <p>
+     * Used by default. This will make audio play faster or slower as required
+     * by the sync source without changing its pitch; however, system may fall
+     * back to some other method (e.g. change the pitch, or mute the audio) if
+     * time stretching is no longer supported for the playback rate.
+     */
+    public static final int AUDIO_ADJUST_MODE_DEFAULT = 0;
+
+    /**
+     * Time stretch audio when playback rate must be adjusted.
+     * <p>
+     * This will make audio play faster or slower as required by the sync source
+     * without changing its pitch, as long as it is supported for the playback
+     * rate.
+     *
+     * @see MediaSync#PLAYBACK_RATE_AUDIO_MODE_STRETCH
+     * @see MediaPlayer#PLAYBACK_RATE_AUDIO_MODE_STRETCH
+     */
+    public static final int AUDIO_ADJUST_MODE_STRETCH = 1;
+
+    /**
+     * Resample audio when playback rate must be adjusted.
+     * <p>
+     * This will make audio play faster or slower as required by the sync source
+     * by changing its pitch (making it lower to play slower, and higher to play
+     * faster.)
+     *
+     * @see MediaSync#PLAYBACK_RATE_AUDIO_MODE_RESAMPLE
+     * @see MediaPlayer#PLAYBACK_RATE_AUDIO_MODE_RESAMPLE
+     */
+    public static final int AUDIO_ADJUST_MODE_RESAMPLE = 2;
+
+    // flags to indicate which settings are actually set
+    private static final int SET_SYNC_SOURCE         = 1 << 0;
+    private static final int SET_AUDIO_ADJUST_MODE   = 1 << 1;
+    private static final int SET_TOLERANCE           = 1 << 2;
+    private static final int SET_FRAME_RATE          = 1 << 3;
+    private int mSet = 0;
+
+    // settings
+    private int mAudioAdjustMode = AUDIO_ADJUST_MODE_STRETCH;
+    private int mSyncSource = SYNC_SOURCE_DEFAULT;
+    private float mTolerance = 0.f;
+    private float mFrameRate = 0.f;
+
+    /**
+     * Allows defaults to be returned for properties not set.
+     * Otherwise a {@link java.lang.IllegalArgumentException} exception
+     * is raised when getting those properties
+     * which have defaults but have never been set.
+     * @return this <code>SyncSettings</code> instance.
+     */
+    public SyncSettings allowDefaults() {
+        mSet |= SET_SYNC_SOURCE | SET_AUDIO_ADJUST_MODE | SET_TOLERANCE;
+        return this;
+    }
+
+    /**
+     * Sets the audio adjust mode.
+     * @param audioAdjustMode
+     * @return this <code>SyncSettings</code> instance.
+     */
+    public SyncSettings setAudioAdjustMode(@AudioAdjustMode int audioAdjustMode) {
+        mAudioAdjustMode = audioAdjustMode;
+        mSet |= SET_AUDIO_ADJUST_MODE;
+        return this;
+    }
+
+    /**
+     * Retrieves the audio adjust mode.
+     * @return audio adjust mode
+     * @throws IllegalStateException if the audio adjust mode is not set.
+     */
+    public @AudioAdjustMode int getAudioAdjustMode() {
+        if ((mSet & SET_AUDIO_ADJUST_MODE) == 0) {
+            throw new IllegalStateException("audio adjust mode not set");
+        }
+        return mAudioAdjustMode;
+    }
+
+    /**
+     * Sets the sync source.
+     * @param syncSource
+     * @return this <code>SyncSettings</code> instance.
+     */
+    public SyncSettings setSyncSource(@SyncSource int syncSource) {
+        mSyncSource = syncSource;
+        mSet |= SET_SYNC_SOURCE;
+        return this;
+    }
+
+    /**
+     * Retrieves the sync source.
+     * @return sync source
+     * @throws IllegalStateException if the sync source is not set.
+     */
+    public @SyncSource int getSyncSource() {
+        if ((mSet & SET_SYNC_SOURCE) == 0) {
+            throw new IllegalStateException("sync source not set");
+        }
+        return mSyncSource;
+    }
+
+    /**
+     * Sets the tolerance. The default tolerance is 0.
+     * @param tolerance A non-negative number representing
+     *     the maximum deviation of the playback rate from the playback rate
+     *     set. ({@code abs(actual_rate - set_rate) / set_rate})
+     * @return this <code>SyncSettings</code> instance.
+     */
+    public SyncSettings setTolerance(float tolerance) {
+        mTolerance = tolerance;
+        mSet |= SET_TOLERANCE;
+        return this;
+    }
+
+    /**
+     * Retrieves the tolerance factor.
+     * @return tolerance factor. A non-negative number representing
+     *     the maximum deviation of the playback rate from the playback rate
+     *     set. ({@code abs(actual_rate - set_rate) / set_rate})
+     * @throws IllegalStateException if tolerance is not set.
+     */
+    public float getTolerance() {
+        if ((mSet & SET_TOLERANCE) == 0) {
+            throw new IllegalStateException("tolerance not set");
+        }
+        return mTolerance;
+    }
+
+    /**
+     * Sets the video frame rate hint to be used. By default the frame rate is unspecified.
+     * @param frameRate A non-negative number used as an initial hint on
+     *     the video frame rate to be used when using vsync as the sync source.
+     * @return this <code>SyncSettings</code> instance.
+     */
+    public SyncSettings setFrameRate(float frameRate) {
+        mFrameRate = frameRate;
+        mSet |= SET_FRAME_RATE;
+        return this;
+    }
+
+    /**
+     * Retrieves the video frame rate hint.
+     * @return frame rate factor. A non-negative number representing
+     *     the maximum deviation of the playback rate from the playback rate
+     *     set. ({@code abs(actual_rate - set_rate) / set_rate})
+     * @throws IllegalStateException if frame rate is not set.
+     */
+    public float getFrameRate() {
+        if ((mSet & SET_FRAME_RATE) == 0) {
+            throw new IllegalStateException("frame rate not set");
+        }
+        return mFrameRate;
+    }
+
+}
diff --git a/media/java/android/media/tv/TvContentRating.java b/media/java/android/media/tv/TvContentRating.java
index c539290..754facd 100644
--- a/media/java/android/media/tv/TvContentRating.java
+++ b/media/java/android/media/tv/TvContentRating.java
@@ -32,11 +32,11 @@
  * To create a {@code TvContentRating} object, use the
  * {@link #createRating TvContentRating.createRating} method with valid rating system string
  * constants.
- * <p>
- * It is possible for an application to define its own content rating system by supplying a content
- * rating system definition XML resource (see example below) and declaring a broadcast receiver that
- * filters {@link TvInputManager#ACTION_QUERY_CONTENT_RATING_SYSTEMS} in its manifest.
- * </p>
+ *
+ * <p>It is possible for an application to define its own content rating system by supplying a
+ * content rating system definition XML resource (see example below) and declaring a broadcast
+ * receiver that filters {@link TvInputManager#ACTION_QUERY_CONTENT_RATING_SYSTEMS} in its manifest.
+ *
  * <h3> Example: Rating system definition for the TV Parental Guidelines</h3>
  * The following XML example shows how the TV Parental Guidelines in the United States can be
  * defined:
@@ -120,15 +120,16 @@
  *             <rating android:name="US_TV_MA" />
  *         </rating-order>
  *     </rating-system-definition>
- * </rating-system-definitions>}</pre></p>
+ * </rating-system-definitions>}</pre>
  *
  * <h3>System defined rating strings</h3>
  * The following strings are defined by the system to provide a standard way to create
  * {@code TvContentRating} objects.
+ *
  * <p>For example, to create an object that represents TV-PG rating with suggestive dialogue and
  * coarse language from the TV Parental Guidelines in the United States, one can use the following
  * code snippet:
- * </p>
+ *
  * <pre>
  * TvContentRating rating = TvContentRating.createRating(
  *         "com.android.tv",
@@ -823,10 +824,9 @@
     /**
      * Returns {@code true} if this rating has the same main rating as the specified rating and when
      * this rating's sub-ratings contain the other's.
-     * <p>
-     * For example, a {@code TvContentRating} object that represents TV-PG with S(Sexual content)
-     * and V(Violence) contains TV-PG, TV-PG/S, TV-PG/V and itself.
-     * </p>
+     *
+     * <p>For example, a {@code TvContentRating} object that represents TV-PG with
+     * S(Sexual content) and V(Violence) contains TV-PG, TV-PG/S, TV-PG/V and itself.
      *
      * @param rating The {@link TvContentRating} to check.
      * @return {@code true} if this object contains {@code rating}, {@code false} otherwise.
diff --git a/media/java/android/media/tv/TvContract.java b/media/java/android/media/tv/TvContract.java
index 8c61129..f5a6f2b 100644
--- a/media/java/android/media/tv/TvContract.java
+++ b/media/java/android/media/tv/TvContract.java
@@ -16,6 +16,7 @@
 
 package android.media.tv;
 
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.content.ComponentName;
 import android.content.ContentResolver;
@@ -30,15 +31,13 @@
 import java.util.Map;
 
 /**
- * <p>
  * The contract between the TV provider and applications. Contains definitions for the supported
  * URIs and columns.
- * </p>
  * <h3>Overview</h3>
- * <p>
- * TvContract defines a basic database of TV content metadata such as channel and program
+ *
+ * <p>TvContract defines a basic database of TV content metadata such as channel and program
  * information. The information is stored in {@link Channels} and {@link Programs} tables.
- * </p>
+ *
  * <ul>
  *     <li>A row in the {@link Channels} table represents information about a TV channel. The data
  *         format can vary greatly from standard to standard or according to service provider, thus
@@ -156,7 +155,7 @@
      * @param inputId The ID of the TV input to build a channels URI for. If {@code null}, builds a
      *            URI for all the TV inputs.
      */
-    public static final Uri buildChannelsUriForInput(String inputId) {
+    public static final Uri buildChannelsUriForInput(@Nullable String inputId) {
         return buildChannelsUriForInput(inputId, false);
     }
 
@@ -171,7 +170,8 @@
      * @hide
      */
     @SystemApi
-    public static final Uri buildChannelsUriForInput(String inputId, boolean browsableOnly) {
+    public static final Uri buildChannelsUriForInput(@Nullable String inputId,
+            boolean browsableOnly) {
         Uri.Builder builder = Channels.CONTENT_URI.buildUpon();
         if (inputId != null) {
             builder.appendQueryParameter(PARAM_INPUT, inputId);
@@ -193,8 +193,8 @@
      * @hide
      */
     @SystemApi
-    public static final Uri buildChannelsUriForInput(String inputId, String genre,
-            boolean browsableOnly) {
+    public static final Uri buildChannelsUriForInput(@Nullable String inputId,
+            @Nullable String genre, boolean browsableOnly) {
         if (genre == null) {
             return buildChannelsUriForInput(inputId, browsableOnly);
         }
@@ -333,13 +333,12 @@
     public interface BaseTvColumns extends BaseColumns {
         /**
          * The name of the package that owns a row in each table.
-         * <p>
-         * The TV provider fills it in with the name of the package that provides the initial data
+         *
+         * <p>The TV provider fills it in with the name of the package that provides the initial data
          * of that row. If the package is later uninstalled, the rows it owns are automatically
          * removed from the tables.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_PACKAGE_NAME = "package_name";
     }
@@ -509,181 +508,171 @@
          *         is not defined for the given video format.
          * @see #COLUMN_VIDEO_FORMAT
          */
+        @Nullable
         public static final String getVideoResolution(String videoFormat) {
             return VIDEO_FORMAT_TO_RESOLUTION_MAP.get(videoFormat);
         }
 
         /**
          * The ID of the TV input service that provides this TV channel.
-         * <p>
-         * Use {@link #buildInputId} to build the ID.
-         * </p><p>
-         * This is a required field.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Use {@link #buildInputId} to build the ID.
+         *
+         * <p>This is a required field.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_INPUT_ID = "input_id";
 
         /**
          * The predefined type of this TV channel.
-         * <p>
-         * This is primarily used to indicate which broadcast standard (e.g. ATSC, DVB or ISDB) the
-         * current channel conforms to. The value should match to one of the followings:
+         *
+         * <p>This is primarily used to indicate which broadcast standard (e.g. ATSC, DVB or ISDB)
+         * the current channel conforms to. The value should match to one of the followings:
          * {@link #TYPE_OTHER}, {@link #TYPE_DVB_T}, {@link #TYPE_DVB_T2}, {@link #TYPE_DVB_S},
          * {@link #TYPE_DVB_S2}, {@link #TYPE_DVB_C}, {@link #TYPE_DVB_C2}, {@link #TYPE_DVB_H},
          * {@link #TYPE_DVB_SH}, {@link #TYPE_ATSC_T}, {@link #TYPE_ATSC_C},
          * {@link #TYPE_ATSC_M_H}, {@link #TYPE_ISDB_T}, {@link #TYPE_ISDB_TB},
          * {@link #TYPE_ISDB_S}, {@link #TYPE_ISDB_C}, {@link #TYPE_1SEG}, {@link #TYPE_DTMB},
          * {@link #TYPE_CMMB}, {@link #TYPE_T_DMB}, {@link #TYPE_S_DMB}
-         * </p><p>
-         * This is a required field.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>This is a required field.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_TYPE = "type";
 
         /**
          * The predefined service type of this TV channel.
-         * <p>
-         * This is primarily used to indicate whether the current channel is a regular TV channel or
-         * a radio-like channel. Use the same coding for {@code service_type} in the underlying
+         *
+         * <p>This is primarily used to indicate whether the current channel is a regular TV channel
+         * or a radio-like channel. Use the same coding for {@code service_type} in the underlying
          * broadcast standard if it is defined there (e.g. ATSC A/53, ETSI EN 300 468 and ARIB
          * STD-B10). Otherwise use one of the followings: {@link #SERVICE_TYPE_OTHER},
          * {@link #SERVICE_TYPE_AUDIO_VIDEO}, {@link #SERVICE_TYPE_AUDIO}
-         * </p><p>
-         * This is a required field.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>This is a required field.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_SERVICE_TYPE = "service_type";
 
         /**
          * The original network ID of this TV channel.
-         * <p>
-         * This is used to identify the originating delivery system, if applicable. Use the same
+         *
+         * <p>This is used to identify the originating delivery system, if applicable. Use the same
          * coding for {@code original_network_id} in the underlying broadcast standard if it is
          * defined there (e.g. ETSI EN 300 468/TR 101 211 and ARIB STD-B10). If channels cannot be
          * globally identified by 2-tuple {{@link #COLUMN_TRANSPORT_STREAM_ID},
          * {@link #COLUMN_SERVICE_ID}}, one must carefully assign a value to this field to form a
          * unique 3-tuple identification {{@link #COLUMN_ORIGINAL_NETWORK_ID},
          * {@link #COLUMN_TRANSPORT_STREAM_ID}, {@link #COLUMN_SERVICE_ID}} for its channels.
-         * </p><p>
-         * This is a required field if the channel cannot be uniquely identified by a 2-tuple
+         *
+         * <p>This is a required field if the channel cannot be uniquely identified by a 2-tuple
          * {{@link #COLUMN_TRANSPORT_STREAM_ID}, {@link #COLUMN_SERVICE_ID}}.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_ORIGINAL_NETWORK_ID = "original_network_id";
 
         /**
          * The transport stream ID of this channel.
-         * <p>
-         * This is used to identify the Transport Stream that contains the current channel from any
-         * other multiplex within a network, if applicable. Use the same coding for
+         *
+         * <p>This is used to identify the Transport Stream that contains the current channel from
+         * any other multiplex within a network, if applicable. Use the same coding for
          * {@code transport_stream_id} defined in ISO/IEC 13818-1 if the channel is transmitted via
          * the MPEG Transport Stream as is the case for many digital broadcast standards.
-         * </p><p>
-         * This is a required field if the current channel is transmitted via the MPEG Transport
+         *
+         * <p>This is a required field if the current channel is transmitted via the MPEG Transport
          * Stream.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_TRANSPORT_STREAM_ID = "transport_stream_id";
 
         /**
          * The service ID of this channel.
-         * <p>
-         * This is used to identify the current service (roughly equivalent to channel) from any
+         *
+         * <p>This is used to identify the current service (roughly equivalent to channel) from any
          * other service within the Transport Stream, if applicable. Use the same coding for
          * {@code service_id} in the underlying broadcast standard if it is defined there (e.g. ETSI
          * EN 300 468 and ARIB STD-B10) or {@code program_number} (which usually has the same value
          * as {@code service_id}) in ISO/IEC 13818-1 if the channel is transmitted via the MPEG
          * Transport Stream.
-         * </p><p>
-         * This is a required field if the current channel is transmitted via the MPEG Transport
+         *
+         * <p>This is a required field if the current channel is transmitted via the MPEG Transport
          * Stream.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_SERVICE_ID = "service_id";
 
         /**
          * The channel number that is displayed to the user.
-         * <p>
-         * The format can vary depending on broadcast standard and product specification.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>The format can vary depending on broadcast standard and product specification.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_DISPLAY_NUMBER = "display_number";
 
         /**
          * The channel name that is displayed to the user.
-         * <p>
-         * A call sign is a good candidate to use for this purpose but any name that helps the user
-         * recognize the current channel will be enough. Can also be empty depending on broadcast
-         * standard.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>A call sign is a good candidate to use for this purpose but any name that helps the
+         * user recognize the current channel will be enough. Can also be empty depending on
+         * broadcast standard.
+         *
+         * <p> Type: TEXT
          */
         public static final String COLUMN_DISPLAY_NAME = "display_name";
 
         /**
          * The network affiliation for this TV channel.
-         * <p>
-         * This is used to identify a channel that is commonly called by its network affiliation
+         *
+         * <p>This is used to identify a channel that is commonly called by its network affiliation
          * instead of the display name. Examples include ABC for the channel KGO-HD, FOX for the
          * channel KTVU-HD and NBC for the channel KNTV-HD. Can be empty if not applicable.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_NETWORK_AFFILIATION = "network_affiliation";
 
         /**
          * The description of this TV channel.
-         * <p>
-         * Can be empty initially.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Can be empty initially.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_DESCRIPTION = "description";
 
         /**
          * The typical video format for programs from this TV channel.
-         * <p>
-         * This is primarily used to filter out channels based on video format by applications. The
-         * value should match one of the followings: {@link #VIDEO_FORMAT_240P},
+         *
+         * <p>This is primarily used to filter out channels based on video format by applications.
+         * The value should match one of the followings: {@link #VIDEO_FORMAT_240P},
          * {@link #VIDEO_FORMAT_360P}, {@link #VIDEO_FORMAT_480I}, {@link #VIDEO_FORMAT_480P},
          * {@link #VIDEO_FORMAT_576I}, {@link #VIDEO_FORMAT_576P}, {@link #VIDEO_FORMAT_720P},
          * {@link #VIDEO_FORMAT_1080I}, {@link #VIDEO_FORMAT_1080P}, {@link #VIDEO_FORMAT_2160P},
          * {@link #VIDEO_FORMAT_4320P}. Note that the actual video resolution of each program from a
          * given channel can vary thus one should use {@link Programs#COLUMN_VIDEO_WIDTH} and
          * {@link Programs#COLUMN_VIDEO_HEIGHT} to get more accurate video resolution.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
+         *
          * @see #getVideoResolution
          */
         public static final String COLUMN_VIDEO_FORMAT = "video_format";
 
         /**
          * The flag indicating whether this TV channel is browsable or not.
-         * <p>
-         * A value of 1 indicates the channel is included in the channel list that applications use
-         * to browse channels, a value of 0 indicates the channel is not included in the list. If
-         * not specified, this value is set to 0 (not browsable) by default.
-         * </p><p>
-         * Type: INTEGER (boolean)
-         * </p>
+         *
+         * <p>A value of 1 indicates the channel is included in the channel list that applications
+         * use to browse channels, a value of 0 indicates the channel is not included in the list.
+         * If not specified, this value is set to 0 (not browsable) by default.
+         *
+         * <p>Type: INTEGER (boolean)
          * @hide
          */
         @SystemApi
@@ -691,31 +680,29 @@
 
         /**
          * The flag indicating whether this TV channel is searchable or not.
-         * <p>
-         * In some regions, it is not allowed to surface search results for a given channel without
-         * broadcaster's consent. This is used to impose such restriction. Channels marked with
-         * "not searchable" cannot be used by other services except for the system service that
+         *
+         * <p>In some regions, it is not allowed to surface search results for a given channel
+         * without broadcaster's consent. This is used to impose such restriction. Channels marked
+         * with "not searchable" cannot be used by other services except for the system service that
          * shows the TV content. A value of 1 indicates the channel is searchable and can be
          * included in search results, a value of 0 indicates the channel and its TV programs are
          * hidden from search. If not specified, this value is set to 1 (searchable) by default.
-         * </p><p>
-         * Type: INTEGER (boolean)
-         * </p>
+         *
+         * <p>Type: INTEGER (boolean)
          */
         public static final String COLUMN_SEARCHABLE = "searchable";
 
         /**
          * The flag indicating whether this TV channel is locked or not.
-         * <p>
-         * This is primarily used for alternative parental control to prevent unauthorized users
+         *
+         * <p>This is primarily used for alternative parental control to prevent unauthorized users
          * from watching the current channel regardless of the content rating. A value of 1
          * indicates the channel is locked and the user is required to enter passcode to unlock it
          * in order to watch the current program from the channel, a value of 0 indicates the
          * channel is not locked thus the user is not prompted to enter passcode If not specified,
          * this value is set to 0 (not locked) by default.
-         * </p><p>
-         * Type: INTEGER (boolean)
-         * </p>
+         *
+         * <p>Type: INTEGER (boolean)
          * @hide
          */
         @SystemApi
@@ -723,69 +710,63 @@
 
         /**
          * Internal data used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: BLOB
-         * </p>
+         *
+         * <p>Type: BLOB
          */
         public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
 
         /**
          * Internal integer flag used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
 
         /**
          * Internal integer flag used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
 
         /**
          * Internal integer flag used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
 
         /**
          * Internal integer flag used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
 
         /**
          * The version number of this row entry used by TV input services.
-         * <p>
-         * This is best used by sync adapters to identify the rows to update. The number can be
+         *
+         * <p>This is best used by sync adapters to identify the rows to update. The number can be
          * defined by individual TV input services. One may assign the same value as
          * {@code version_number} that appears in ETSI EN 300 468 or ATSC A/65, if the data are
          * coming from a TV broadcast.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_VERSION_NUMBER = "version_number";
 
@@ -793,18 +774,18 @@
 
         /**
          * A sub-directory of a single TV channel that represents its primary logo.
-         * <p>
-         * To access this directory, append {@link Channels.Logo#CONTENT_DIRECTORY} to the raw
+         *
+         * <p>To access this directory, append {@link Channels.Logo#CONTENT_DIRECTORY} to the raw
          * channel URI.  The resulting URI represents an image file, and should be interacted
          * using ContentResolver.openAssetFileDescriptor.
-         * </p><p>
-         * Note that this sub-directory also supports opening the logo as an asset file in write
+         *
+         * <p>Note that this sub-directory also supports opening the logo as an asset file in write
          * mode.  Callers can create or replace the primary logo associated with this channel by
          * opening the asset file and writing the full-size photo contents into it. (Make sure there
          * is no padding around the logo image.) When the file is closed, the image will be parsed,
          * sized down if necessary, and stored.
-         * </p><p>
-         * Usage example:
+         *
+         * <p>Usage example:
          * <pre>
          * public void writeChannelLogo(long channelId, byte[] logo) {
          *     Uri channelLogoUri = TvContract.buildChannelLogoUri(channelId);
@@ -820,7 +801,6 @@
          *     }
          * }
          * </pre>
-         * </p>
          */
         public static final class Logo {
 
@@ -835,10 +815,9 @@
 
     /**
      * Column definitions for the TV programs table.
-     * <p>
-     * By default, the query results will be sorted by {@link Programs#COLUMN_START_TIME_UTC_MILLIS}
-     * in ascending order.
-     * </p>
+     *
+     * <p>By default, the query results will be sorted by
+     * {@link Programs#COLUMN_START_TIME_UTC_MILLIS} in ascending order.
      */
     public static final class Programs implements BaseTvColumns {
 
@@ -854,166 +833,153 @@
 
         /**
          * The ID of the TV channel that provides this TV program.
-         * <p>
-         * This is a part of the channel URI and matches to {@link BaseColumns#_ID}.
-         * </p><p>
-         * Type: INTEGER (long)
-         * </p>
+         *
+         * <p>This is a part of the channel URI and matches to {@link BaseColumns#_ID}.
+         *
+         * <p>Type: INTEGER (long)
          */
         public static final String COLUMN_CHANNEL_ID = "channel_id";
 
         /**
          * The title of this TV program.
-         * <p>
-         * If this program is an episodic TV show, it is recommended that the title is the series
+         *
+         * <p>If this program is an episodic TV show, it is recommended that the title is the series
          * title and its related fields ({@link #COLUMN_SEASON_NUMBER},
          * {@link #COLUMN_EPISODE_NUMBER}, and {@link #COLUMN_EPISODE_TITLE}) are filled in.
-         * </p><p>
-         * Type: TEXT
-         * </p>
-         **/
+         *
+         * <p>Type: TEXT
+         */
         public static final String COLUMN_TITLE = "title";
 
         /**
          * The season number of this TV program for episodic TV shows.
-         * <p>
-         * Can be empty.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
-         **/
+         *
+         * <p>Can be empty.
+         *
+         * <p>Type: INTEGER
+         */
         public static final String COLUMN_SEASON_NUMBER = "season_number";
 
         /**
          * The episode number of this TV program for episodic TV shows.
-         * <p>
-         * Can be empty.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
-         **/
+         *
+         * <p>Can be empty.
+         *
+         * <p>Type: INTEGER
+         */
         public static final String COLUMN_EPISODE_NUMBER = "episode_number";
 
         /**
          * The episode title of this TV program for episodic TV shows.
-         * <p>
-         * Can be empty.
-         * </p><p>
-         * Type: TEXT
-         * </p>
-         **/
+         *
+         * <p>Can be empty.
+         *
+         * <p>Type: TEXT
+         */
         public static final String COLUMN_EPISODE_TITLE = "episode_title";
 
         /**
          * The start time of this TV program, in milliseconds since the epoch.
-         * <p>
-         * The value should be equal to or larger than {@link #COLUMN_END_TIME_UTC_MILLIS} of the
+         *
+         * <p>The value should be equal to or larger than {@link #COLUMN_END_TIME_UTC_MILLIS} of the
          * previous program in the same channel.
-         * </p><p>
-         * Type: INTEGER (long)
-         * </p>
+         *
+         * <p>Type: INTEGER (long)
          */
         public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
 
         /**
          * The end time of this TV program, in milliseconds since the epoch.
-         * <p>
-         * The value should be equal to or less than {@link #COLUMN_START_TIME_UTC_MILLIS} of the
+         *
+         * <p>The value should be equal to or less than {@link #COLUMN_START_TIME_UTC_MILLIS} of the
          * next program in the same channel.
-         * </p><p>
-         * Type: INTEGER (long)
-         * </p>
+         *
+         * <p>Type: INTEGER (long)
          */
         public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
 
         /**
          * The comma-separated genre string of this TV program.
-         * <p>
-         * Use the same language appeared in the underlying broadcast standard, if applicable. (For
-         * example, one can refer to the genre strings used in Genre Descriptor of ATSC A/65 or
+         *
+         * <p>Use the same language appeared in the underlying broadcast standard, if applicable.
+         * (For example, one can refer to the genre strings used in Genre Descriptor of ATSC A/65 or
          * Content Descriptor of ETSI EN 300 468, if appropriate.) Otherwise, leave empty.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_BROADCAST_GENRE = "broadcast_genre";
 
         /**
          * The comma-separated canonical genre string of this TV program.
-         * <p>
-         * Canonical genres are defined in {@link Genres}. Use {@link Genres#encode Genres.encode()}
-         * to create a text that can be stored in this column. Use {@link Genres#decode
-         * Genres.decode()} to get the canonical genre strings from the text stored in this column.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Canonical genres are defined in {@link Genres}. Use
+         * {@link Genres#encode Genres.encode()} to create a text that can be stored in this column.
+         * Use {@link Genres#decode Genres.decode()} to get the canonical genre strings from the
+         * text stored in this column.
+         *
+         * <p>Type: TEXT
          * @see Genres
          */
         public static final String COLUMN_CANONICAL_GENRE = "canonical_genre";
 
         /**
          * The short description of this TV program that is displayed to the user by default.
-         * <p>
-         * It is recommended to limit the length of the descriptions to 256 characters.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>It is recommended to limit the length of the descriptions to 256 characters.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
 
         /**
          * The detailed, lengthy description of this TV program that is displayed only when the user
          * wants to see more information.
-         * <p>
-         * TV input services should leave this field empty if they have no additional details beyond
-         * {@link #COLUMN_SHORT_DESCRIPTION}.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>TV input services should leave this field empty if they have no additional details
+         * beyond {@link #COLUMN_SHORT_DESCRIPTION}.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_LONG_DESCRIPTION = "long_description";
 
         /**
          * The width of the video for this TV program, in the unit of pixels.
-         * <p>
-         * Together with {@link #COLUMN_VIDEO_HEIGHT} this is used to determine the video resolution
-         * of the current TV program. Can be empty if it is not known initially or the program does
-         * not convey any video such as the programs from type {@link Channels#SERVICE_TYPE_AUDIO}
-         * channels.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Together with {@link #COLUMN_VIDEO_HEIGHT} this is used to determine the video
+         * resolution of the current TV program. Can be empty if it is not known initially or the
+         * program does not convey any video such as the programs from type
+         * {@link Channels#SERVICE_TYPE_AUDIO} channels.
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_VIDEO_WIDTH = "video_width";
 
         /**
          * The height of the video for this TV program, in the unit of pixels.
-         * <p>
-         * Together with {@link #COLUMN_VIDEO_WIDTH} this is used to determine the video resolution
-         * of the current TV program. Can be empty if it is not known initially or the program does
-         * not convey any video such as the programs from type {@link Channels#SERVICE_TYPE_AUDIO}
-         * channels.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Together with {@link #COLUMN_VIDEO_WIDTH} this is used to determine the video
+         * resolution of the current TV program. Can be empty if it is not known initially or the
+         * program does not convey any video such as the programs from type
+         * {@link Channels#SERVICE_TYPE_AUDIO} channels.
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_VIDEO_HEIGHT = "video_height";
 
         /**
          * The comma-separated audio languages of this TV program.
-         * <p>
-         * This is used to describe available audio languages included in the program. Use either
+         *
+         * <p>This is used to describe available audio languages included in the program. Use either
          * ISO 639-1 or 639-2/T codes.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_AUDIO_LANGUAGE = "audio_language";
 
         /**
          * The comma-separated content ratings of this TV program.
-         * <p>
-         * This is used to describe the content rating(s) of this program. Each comma-separated
+         *
+         * <p>This is used to describe the content rating(s) of this program. Each comma-separated
          * content rating sub-string should be generated by calling
          * {@link TvContentRating#flattenToString}. Note that in most cases the program content is
          * rated by a single rating system, thus resulting in a corresponding single sub-string that
@@ -1022,97 +988,88 @@
          * specified as "blocked rating" in the user's parental control settings, the TV input
          * service should block the current content and wait for the signal that it is okay to
          * unblock.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_CONTENT_RATING = "content_rating";
 
         /**
          * The URI for the poster art of this TV program.
-         * <p>
-         * Can be empty.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Can be empty.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_POSTER_ART_URI = "poster_art_uri";
 
         /**
          * The URI for the thumbnail of this TV program.
-         * <p>
-         * Can be empty.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Can be empty.
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
 
         /**
          * Internal data used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: BLOB
-         * </p>
+         *
+         * <p>Type: BLOB
          */
         public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
 
         /**
          * Internal integer flag used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
 
         /**
          * Internal integer flag used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
 
         /**
          * Internal integer flag used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_INTERNAL_PROVIDER_FLAG3 = "internal_provider_flag3";
 
         /**
          * Internal integer flag used by individual TV input services.
-         * <p>
-         * This is internal to the provider that inserted it, and should not be decoded by other
+         *
+         * <p>This is internal to the provider that inserted it, and should not be decoded by other
          * apps.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_INTERNAL_PROVIDER_FLAG4 = "internal_provider_flag4";
 
         /**
          * The version number of this row entry used by TV input services.
-         * <p>
-         * This is best used by sync adapters to identify the rows to update. The number can be
+         *
+         * <p>This is best used by sync adapters to identify the rows to update. The number can be
          * defined by individual TV input services. One may assign the same value as
          * {@code version_number} in ETSI EN 300 468 or ATSC A/65, if the data are coming from a TV
          * broadcast.
-         * </p><p>
-         * Type: INTEGER
-         * </p>
+         *
+         * <p>Type: INTEGER
          */
         public static final String COLUMN_VERSION_NUMBER = "version_number";
 
@@ -1239,10 +1196,9 @@
     /**
      * Column definitions for the TV programs that the user watched. Applications do not have access
      * to this table.
-     * <p>
-     * By default, the query results will be sorted by
+     *
+     * <p>By default, the query results will be sorted by
      * {@link WatchedPrograms#COLUMN_WATCH_START_TIME_UTC_MILLIS} in descending order.
-     * </p>
      * @hide
      */
     @SystemApi
@@ -1261,9 +1217,8 @@
         /**
          * The UTC time that the user started watching this TV program, in milliseconds since the
          * epoch.
-         * <p>
-         * Type: INTEGER (long)
-         * </p>
+         *
+         * <p>Type: INTEGER (long)
          */
         public static final String COLUMN_WATCH_START_TIME_UTC_MILLIS =
                 "watch_start_time_utc_millis";
@@ -1271,49 +1226,43 @@
         /**
          * The UTC time that the user stopped watching this TV program, in milliseconds since the
          * epoch.
-         * <p>
-         * Type: INTEGER (long)
-         * </p>
+         *
+         * <p>Type: INTEGER (long)
          */
         public static final String COLUMN_WATCH_END_TIME_UTC_MILLIS = "watch_end_time_utc_millis";
 
         /**
          * The ID of the TV channel that provides this TV program.
-         * <p>
-         * Type: INTEGER (long)
-         * </p>
+         *
+         * <p>Type: INTEGER (long)
          */
         public static final String COLUMN_CHANNEL_ID = "channel_id";
 
         /**
          * The title of this TV program.
-         * <p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_TITLE = "title";
 
         /**
          * The start time of this TV program, in milliseconds since the epoch.
-         * <p>
-         * Type: INTEGER (long)
-         * </p>
+         *
+         * <p>Type: INTEGER (long)
          */
         public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
 
         /**
          * The end time of this TV program, in milliseconds since the epoch.
-         * <p>
-         * Type: INTEGER (long)
-         * </p>
+         *
+         * <p>Type: INTEGER (long)
          */
         public static final String COLUMN_END_TIME_UTC_MILLIS = "end_time_utc_millis";
 
         /**
          * The description of this TV program.
-         * <p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_DESCRIPTION = "description";
 
@@ -1321,25 +1270,23 @@
          * Extra parameters given to {@link TvInputService.Session#tune(Uri, android.os.Bundle)
          * TvInputService.Session.tune(Uri, android.os.Bundle)} when tuning to the channel that
          * provides this TV program. (Used internally.)
-         * <p>
-         * This column contains an encoded string that represents comma-separated key-value pairs of
+         *
+         * <p>This column contains an encoded string that represents comma-separated key-value pairs of
          * the tune parameters. (Ex. "[key1]=[value1], [key2]=[value2]"). '%' is used as an escape
          * character for '%', '=', and ','.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_INTERNAL_TUNE_PARAMS = "tune_params";
 
         /**
          * The session token of this TV program. (Used internally.)
-         * <p>
-         * This contains a String representation of {@link IBinder} for
+         *
+         * <p>This contains a String representation of {@link IBinder} for
          * {@link TvInputService.Session} that provides the current TV program. It is used
          * internally to distinguish watched programs entries from different TV input sessions.
-         * </p><p>
-         * Type: TEXT
-         * </p>
+         *
+         * <p>Type: TEXT
          */
         public static final String COLUMN_INTERNAL_SESSION_TOKEN = "session_token";
 
diff --git a/media/java/android/media/tv/TvInputInfo.java b/media/java/android/media/tv/TvInputInfo.java
index 5c1193f..46d33b4 100644
--- a/media/java/android/media/tv/TvInputInfo.java
+++ b/media/java/android/media/tv/TvInputInfo.java
@@ -16,6 +16,7 @@
 
 package android.media.tv;
 
+import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.content.ComponentName;
 import android.content.Context;
@@ -295,18 +296,17 @@
 
     /**
      * Returns the parent input ID.
-     * <p>
-     * A TV input may have a parent input if the TV input is actually a logical representation of
+     *
+     * <p>A TV input may have a parent input if the TV input is actually a logical representation of
      * a device behind the hardware port represented by the parent input.
      * For example, a HDMI CEC logical device, connected to a HDMI port, appears as another TV
      * input. In this case, the parent input of this logical device is the HDMI port.
-     * </p><p>
-     * Applications may group inputs by parent input ID to provide an easier access to inputs
+     *
+     * <p>Applications may group inputs by parent input ID to provide an easier access to inputs
      * sharing the same physical port. In the example of HDMI CEC, logical HDMI CEC devices behind
      * the same HDMI port have the same parent ID, which is the ID representing the port. Thus
      * applications can group the hardware HDMI port and the logical HDMI CEC devices behind it
      * together using this method.
-     * </p>
      *
      * @return the ID of the parent input, if exists. Returns {@code null} if the parent input is
      *         not specified.
@@ -425,7 +425,7 @@
      * @return a CharSequence containing the TV input's label. If the TV input does not have
      *         a label, its name is returned.
      */
-    public CharSequence loadLabel(Context context) {
+    public CharSequence loadLabel(@NonNull Context context) {
         if (TextUtils.isEmpty(mLabel)) {
             return mService.loadLabel(context.getPackageManager());
         } else {
@@ -453,7 +453,7 @@
      * @return a Drawable containing the TV input's icon. If the TV input does not have an icon,
      *         application's icon is returned. If it's unavailable too, {@code null} is returned.
      */
-    public Drawable loadIcon(Context context) {
+    public Drawable loadIcon(@NonNull Context context) {
         if (mIconUri == null) {
             return loadServiceIcon(context);
         }
@@ -507,7 +507,7 @@
      * @param flags The flags used for parceling.
      */
     @Override
-    public void writeToParcel(Parcel dest, int flags) {
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeString(mId);
         dest.writeString(mParentId);
         mService.writeToParcel(dest, flags);
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 99d254e..0f265de 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -16,6 +16,8 @@
 
 package android.media.tv;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.graphics.Rect;
 import android.media.MediaPlayer;
@@ -149,15 +151,17 @@
 
     /**
      * Broadcast intent action used to query available content rating systems.
-     * <p>
-     * The TV input manager service locates available content rating systems by querying broadcast
-     * receivers that are registered for this action. An application can offer additional content
-     * rating systems to the user by declaring a suitable broadcast receiver in its manifest.
-     * </p><p>
-     * Here is an example broadcast receiver declaration that an application might include in its
+     *
+     * <p>The TV input manager service locates available content rating systems by querying
+     * broadcast receivers that are registered for this action. An application can offer additional
+     * content rating systems to the user by declaring a suitable broadcast receiver in its
+     * manifest.
+     *
+     * <p>Here is an example broadcast receiver declaration that an application might include in its
      * AndroidManifest.xml to advertise custom content rating systems. The meta-data specifies a
      * resource that contains a description of each content rating system that is provided by the
      * application.
+     *
      * <p><pre class="prettyprint">
      * {@literal
      * <receiver android:name=".TvInputReceiver">
@@ -168,13 +172,13 @@
      *     <meta-data
      *             android:name="android.media.tv.metadata.CONTENT_RATING_SYSTEMS"
      *             android:resource="@xml/tv_content_rating_systems" />
-     * </receiver>}</pre></p>
-     * In the above example, the <code>@xml/tv_content_rating_systems</code> resource refers to an
+     * </receiver>}</pre>
+     *
+     * <p>In the above example, the <code>@xml/tv_content_rating_systems</code> resource refers to an
      * XML resource whose root element is <code>&lt;rating-system-definitions&gt;</code> that
      * contains zero or more <code>&lt;rating-system-definition&gt;</code> elements. Each <code>
      * &lt;rating-system-definition&gt;</code> element specifies the ratings, sub-ratings and rating
      * orders of a particular content rating system.
-     * </p>
      *
      * @see TvContentRating
      */
@@ -183,10 +187,9 @@
 
     /**
      * Content rating systems metadata associated with {@link #ACTION_QUERY_CONTENT_RATING_SYSTEMS}.
-     * <p>
-     * Specifies the resource ID of an XML resource that describes the content rating systems that
-     * are provided by the application.
-     * </p>
+     *
+     * <p>Specifies the resource ID of an XML resource that describes the content rating systems
+     * that are provided by the application.
      */
     public static final String META_DATA_CONTENT_RATING_SYSTEMS =
             "android.media.tv.metadata.CONTENT_RATING_SYSTEMS";
@@ -229,7 +232,7 @@
          * @param session A {@link TvInputManager.Session} instance created. This can be
          *            {@code null} if the creation request failed.
          */
-        public void onSessionCreated(Session session) {
+        public void onSessionCreated(@Nullable Session session) {
         }
 
         /**
@@ -270,7 +273,7 @@
          * @param trackId The ID of the selected track. When {@code null} the currently selected
          *            track for a given type should be unselected.
          */
-        public void onTrackSelected(Session session, int type, String trackId) {
+        public void onTrackSelected(Session session, int type, @Nullable String trackId) {
         }
 
         /**
@@ -371,12 +374,11 @@
 
         /**
          * This is called when the start playback position is changed.
-         * <p>
-         * The start playback position of the time shifted program should be adjusted when the TV
+         *
+         * <p>The start playback position of the time shifted program should be adjusted when the TV
          * input cannot retain the whole recorded program due to some reason (e.g. limitation on
          * storage space). This is necessary to prevent the application from allowing the user to
          * seek to a time position that is not reachable.
-         * </p>
          *
          * @param session A {@link TvInputManager.Session} associated with this callback.
          * @param timeMs The start playback position of the time shifted program, in milliseconds
@@ -930,7 +932,8 @@
      * @param inputId The ID of the TV input.
      * @return the {@link TvInputInfo} for a given TV input. {@code null} if not found.
      */
-    public TvInputInfo getTvInputInfo(String inputId) {
+    @Nullable
+    public TvInputInfo getTvInputInfo(@NonNull String inputId) {
         if (inputId == null) {
             throw new IllegalArgumentException("inputId cannot be null");
         }
@@ -954,7 +957,7 @@
      * @param inputId The id of the TV input.
      * @throws IllegalArgumentException if the argument is {@code null}.
      */
-    public int getInputState(String inputId) {
+    public int getInputState(@NonNull String inputId) {
         if (inputId == null) {
             throw new IllegalArgumentException("inputId cannot be null");
         }
@@ -975,7 +978,7 @@
      * @param handler A {@link Handler} that the status change will be delivered to.
      * @throws IllegalArgumentException if any of the arguments is {@code null}.
      */
-    public void registerCallback(TvInputCallback callback, Handler handler) {
+    public void registerCallback(@NonNull TvInputCallback callback, @NonNull Handler handler) {
         if (callback == null) {
             throw new IllegalArgumentException("callback cannot be null");
         }
@@ -993,7 +996,7 @@
      * @param callback The existing callback to remove.
      * @throws IllegalArgumentException if any of the arguments is {@code null}.
      */
-    public void unregisterCallback(final TvInputCallback callback) {
+    public void unregisterCallback(@NonNull final TvInputCallback callback) {
         if (callback == null) {
             throw new IllegalArgumentException("callback cannot be null");
         }
@@ -1045,7 +1048,7 @@
      * @param rating The TV content rating to check.
      * @return {@code true} if the given TV content rating is blocked, {@code false} otherwise.
      */
-    public boolean isRatingBlocked(TvContentRating rating) {
+    public boolean isRatingBlocked(@NonNull TvContentRating rating) {
         if (rating == null) {
             throw new IllegalArgumentException("rating cannot be null");
         }
@@ -1130,10 +1133,9 @@
 
     /**
      * Creates a {@link Session} for a given TV input.
-     * <p>
-     * The number of sessions that can be created at the same time is limited by the capability of
-     * the given TV input.
-     * </p>
+     *
+     * <p>The number of sessions that can be created at the same time is limited by the capability
+     * of the given TV input.
      *
      * @param inputId The id of the TV input.
      * @param callback A callback used to receive the created session.
@@ -1501,7 +1503,7 @@
          *            track of the given type will be unselected.
          * @see #getTracks
          */
-        public void selectTrack(int type, String trackId) {
+        public void selectTrack(int type, @Nullable String trackId) {
             synchronized (mMetadataLock) {
                 if (type == TvTrackInfo.TYPE_AUDIO) {
                     if (trackId != null && !containsTrack(mAudioTracks, trackId)) {
@@ -1550,6 +1552,7 @@
          *            {@link TvTrackInfo#TYPE_VIDEO} or {@link TvTrackInfo#TYPE_SUBTITLE}.
          * @return the list of tracks for the given type.
          */
+        @Nullable
         public List<TvTrackInfo> getTracks(int type) {
             synchronized (mMetadataLock) {
                 if (type == TvTrackInfo.TYPE_AUDIO) {
@@ -1579,6 +1582,7 @@
          * @return the ID of the selected track.
          * @see #selectTrack
          */
+        @Nullable
         public String getSelectedTrack(int type) {
             synchronized (mMetadataLock) {
                 if (type == TvTrackInfo.TYPE_AUDIO) {
@@ -1694,8 +1698,8 @@
 
         /**
          * Seeks to a specified time position.
-         * <p>
-         * Normally, the position is given within range between the start and the current time,
+         *
+         * <p>Normally, the position is given within range between the start and the current time,
          * inclusively.
          *
          * @param timeMs The time position to seek to, in milliseconds since the epoch.
@@ -2113,7 +2117,7 @@
     /**
      * The Hardware provides the per-hardware functionality of TV hardware.
      *
-     * TV hardware is physical hardware attached to the Android device; for example, HDMI ports,
+     * <p>TV hardware is physical hardware attached to the Android device; for example, HDMI ports,
      * Component/Composite ports, etc. Specifically, logical devices such as HDMI CEC logical
      * devices don't fall into this category.
      *
diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java
index 9bdeb25..4258534 100644
--- a/media/java/android/media/tv/TvInputService.java
+++ b/media/java/android/media/tv/TvInputService.java
@@ -16,6 +16,8 @@
 
 package android.media.tv;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.app.Service;
@@ -58,15 +60,14 @@
 /**
  * The TvInputService class represents a TV input or source such as HDMI or built-in tuner which
  * provides pass-through video or broadcast TV programs.
- * <p>
- * Applications will not normally use this service themselves, instead relying on the standard
+ *
+ * <p>Applications will not normally use this service themselves, instead relying on the standard
  * interaction provided by {@link TvView}. Those implementing TV input services should normally do
  * so by deriving from this class and providing their own session implementation based on
  * {@link TvInputService.Session}. All TV input services must require that clients hold the
  * {@link android.Manifest.permission#BIND_TV_INPUT} in order to interact with the service; if this
  * permission is not specified in the manifest, the system will refuse to bind to that TV input
  * service.
- * </p>
  */
 public abstract class TvInputService extends Service {
     private static final boolean DEBUG = false;
@@ -159,13 +160,14 @@
 
     /**
      * Returns a concrete implementation of {@link Session}.
-     * <p>
-     * May return {@code null} if this TV input service fails to create a session for some reason.
-     * If TV input represents an external device connected to a hardware TV input,
+     *
+     * <p>May return {@code null} if this TV input service fails to create a session for some
+     * reason. If TV input represents an external device connected to a hardware TV input,
      * {@link HardwareSession} should be returned.
-     * </p>
+     *
      * @param inputId The ID of the TV input associated with the session.
      */
+    @Nullable
     public abstract Session onCreateSession(String inputId);
 
     /**
@@ -176,6 +178,7 @@
      * @param hardwareInfo {@link TvInputHardwareInfo} object just added.
      * @hide
      */
+    @Nullable
     @SystemApi
     public TvInputInfo onHardwareAdded(TvInputHardwareInfo hardwareInfo) {
         return null;
@@ -189,6 +192,7 @@
      * @param hardwareInfo {@link TvInputHardwareInfo} object just removed.
      * @hide
      */
+    @Nullable
     @SystemApi
     public String onHardwareRemoved(TvInputHardwareInfo hardwareInfo) {
         return null;
@@ -202,6 +206,7 @@
      * @param deviceInfo {@link HdmiDeviceInfo} object just added.
      * @hide
      */
+    @Nullable
     @SystemApi
     public TvInputInfo onHdmiDeviceAdded(HdmiDeviceInfo deviceInfo) {
         return null;
@@ -215,6 +220,7 @@
      * @param deviceInfo {@link HdmiDeviceInfo} object just removed.
      * @hide
      */
+    @Nullable
     @SystemApi
     public String onHdmiDeviceRemoved(HdmiDeviceInfo deviceInfo) {
         return null;
@@ -309,7 +315,7 @@
         @SystemApi
         public void notifySessionEvent(final String eventType, final Bundle eventArgs) {
             if (eventType == null) {
-                throw new IllegalArgumentException("eventType should not be null.");
+                throw new IllegalArgumentException("eventType cannot be null");
             }
             executeOrPostRunnable(new Runnable() {
                 @Override
@@ -476,8 +482,8 @@
 
         /**
          * Informs the application that the user is allowed to watch the current program content.
-         * <p>
-         * Each TV input service is required to query the system whether the user is allowed to
+         *
+         * <p>Each TV input service is required to query the system whether the user is allowed to
          * watch the current program before showing it to the user if the parental controls is
          * enabled (i.e. {@link TvInputManager#isParentalControlsEnabled
          * TvInputManager.isParentalControlsEnabled()} returns {@code true}). Whether the TV input
@@ -488,13 +494,12 @@
          * result. If the rating in question turns out to be allowed by the user, the TV input
          * service must call this method to notify the application that is permitted to show the
          * content.
-         * </p><p>
-         * Each TV input service also needs to continuously listen to any changes made to the
+         *
+         * <p>Each TV input service also needs to continuously listen to any changes made to the
          * parental controls settings by registering a broadcast receiver to receive
          * {@link TvInputManager#ACTION_BLOCKED_RATINGS_CHANGED} and
          * {@link TvInputManager#ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED} and immediately
          * reevaluate the current program with the new parental controls settings.
-         * </p>
          *
          * @see #notifyContentBlocked
          * @see TvInputManager
@@ -517,8 +522,8 @@
 
         /**
          * Informs the application that the current program content is blocked by parent controls.
-         * <p>
-         * Each TV input service is required to query the system whether the user is allowed to
+         *
+         * <p>Each TV input service is required to query the system whether the user is allowed to
          * watch the current program before showing it to the user if the parental controls is
          * enabled (i.e. {@link TvInputManager#isParentalControlsEnabled
          * TvInputManager.isParentalControlsEnabled()} returns {@code true}). Whether the TV input
@@ -529,19 +534,21 @@
          * result. If the rating in question turns out to be blocked, the TV input service must
          * immediately block the content and call this method with the content rating of the current
          * program to prompt the PIN verification screen.
-         * </p><p>
-         * Each TV input service also needs to continuously listen to any changes made to the
+         *
+         * <p>Each TV input service also needs to continuously listen to any changes made to the
          * parental controls settings by registering a broadcast receiver to receive
          * {@link TvInputManager#ACTION_BLOCKED_RATINGS_CHANGED} and
          * {@link TvInputManager#ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED} and immediately
          * reevaluate the current program with the new parental controls settings.
-         * </p>
          *
          * @param rating The content rating for the current TV program.
          * @see #notifyContentAllowed
          * @see TvInputManager
          */
-        public void notifyContentBlocked(final TvContentRating rating) {
+        public void notifyContentBlocked(@NonNull final TvContentRating rating) {
+            if (rating == null) {
+                throw new IllegalArgumentException("rating cannot be null");
+            }
             executeOrPostRunnable(new Runnable() {
                 @Override
                 public void run() {
@@ -559,22 +566,21 @@
 
         /**
          * Informs the application that the time shift status is changed.
-         * <p>
-         * Prior to calling this method, the application assumes the status
+         *
+         * <p>Prior to calling this method, the application assumes the status
          * {@link TvInputManager#TIME_SHIFT_STATUS_UNKNOWN}. Right after the session is created, it
          * is important to invoke the method with the status
          * {@link TvInputManager#TIME_SHIFT_STATUS_AVAILABLE} if the implementation does support
          * time shifting, or {@link TvInputManager#TIME_SHIFT_STATUS_UNSUPPORTED} otherwise. Failure
          * to notifying the current status change immediately might result in an undesirable
          * behavior in the application such as hiding the play controls.
-         * </p><p>
-         * If the status {@link TvInputManager#TIME_SHIFT_STATUS_AVAILABLE} is reported, the
+         *
+         * <p>If the status {@link TvInputManager#TIME_SHIFT_STATUS_AVAILABLE} is reported, the
          * application assumes it can pause/resume playback, seek to a specified time position and
          * set playback rate and audio mode. The implementation should override
          * {@link #onTimeShiftPause}, {@link #onTimeShiftResume}, {@link #onTimeShiftSeekTo},
          * {@link #onTimeShiftGetStartPosition}, {@link #onTimeShiftGetCurrentPosition} and
          * {@link #onTimeShiftSetPlaybackRate}.
-         * </p>
          *
          * @param status The current time shift status. Should be one of the followings.
          * <ul>
@@ -672,21 +678,20 @@
         /**
          * Sets the current session as the main session. The main session is a session whose
          * corresponding TV input determines the HDMI-CEC active source device.
-         * <p>
-         * TV input service that manages HDMI-CEC logical device should implement {@link
+         *
+         * <p>TV input service that manages HDMI-CEC logical device should implement {@link
          * #onSetMain} to (1) select the corresponding HDMI logical device as the source device
          * when {@code isMain} is {@code true}, and to (2) select the internal device (= TV itself)
          * as the source device when {@code isMain} is {@code false} and the session is still main.
          * Also, if a surface is passed to a non-main session and active source is changed to
          * initiate the surface, the active source should be returned to the main session.
-         * </p><p>
-         * {@link TvView} guarantees that, when tuning involves a session transition, {@code
+         *
+         * <p>{@link TvView} guarantees that, when tuning involves a session transition, {@code
          * onSetMain(true)} for new session is called first, {@code onSetMain(false)} for old
          * session is called afterwards. This allows {@code onSetMain(false)} to be no-op when TV
          * input service knows that the next main session corresponds to another HDMI logical
          * device. Practically, this implies that one TV input service should handle all HDMI port
          * and HDMI-CEC logical devices for smooth active source transition.
-         * </p>
          *
          * @param isMain If true, session should become main.
          * @see TvView#setMain
@@ -699,15 +704,15 @@
         /**
          * Sets the {@link Surface} for the current input session on which the TV input renders
          * video.
-         * <p>
-         * When {@code setSurface(null)} is called, the implementation should stop using the Surface
-         * object previously given and release any references to it.
+         *
+         * <p>When {@code setSurface(null)} is called, the implementation should stop using the
+         * Surface object previously given and release any references to it.
          *
          * @param surface possibly {@code null} {@link Surface} the application passes to this TV
          *            input session.
          * @return {@code true} if the surface was set, {@code false} otherwise.
          */
-        public abstract boolean onSetSurface(Surface surface);
+        public abstract boolean onSetSurface(@Nullable Surface surface);
 
         /**
          * Called after any structural changes (format or size) have been made to the
@@ -772,8 +777,8 @@
 
         /**
          * Enables or disables the caption.
-         * <p>
-         * The locale for the user's preferred captioning language can be obtained by calling
+         *
+         * <p>The locale for the user's preferred captioning language can be obtained by calling
          * {@link CaptioningManager#getLocale CaptioningManager.getLocale()}.
          *
          * @param enabled {@code true} to enable, {@code false} to disable.
@@ -783,14 +788,13 @@
 
         /**
          * Requests to unblock the content according to the given rating.
-         * <p>
-         * The implementation should unblock the content.
+         *
+         * <p>The implementation should unblock the content.
          * TV input service has responsibility to decide when/how the unblock expires
          * while it can keep previously unblocked ratings in order not to ask a user
          * to unblock whenever a content rating is changed.
          * Therefore an unblocked rating can be valid for a channel, a program,
          * or certain amount of time depending on the implementation.
-         * </p>
          *
          * @param unblockedRating An unblocked content rating
          */
@@ -799,10 +803,10 @@
 
         /**
          * Selects a given track.
-         * <p>
-         * If this is done successfully, the implementation should call {@link #notifyTrackSelected}
-         * to help applications maintain the up-to-date list of the selected tracks.
-         * </p>
+         *
+         * <p>If this is done successfully, the implementation should call
+         * {@link #notifyTrackSelected} to help applications maintain the up-to-date list of the
+         * selected tracks.
          *
          * @param trackId The ID of the track to select. {@code null} means to unselect the current
          *            track for a given type.
@@ -812,7 +816,7 @@
          * @return {@code true} if the track selection was successful, {@code false} otherwise.
          * @see #notifyTrackSelected
          */
-        public boolean onSelectTrack(int type, String trackId) {
+        public boolean onSelectTrack(int type, @Nullable String trackId) {
             return false;
         }
 
@@ -828,7 +832,7 @@
          * @hide
          */
         @SystemApi
-        public void onAppPrivateCommand(String action, Bundle data) {
+        public void onAppPrivateCommand(@NonNull String action, Bundle data) {
         }
 
         /**
@@ -884,6 +888,9 @@
         /**
          * Called when the application sets playback rate and audio mode.
          *
+         * <p>Once a playback rate is set, the implementation should honor the value until a new
+         * tune request. Pause/resume/seek request does not reset the playback rate previously set.
+         *
          * @param rate The ratio between desired playback rate and normal one.
          * @param audioMode Audio playback mode. Must be one of the supported audio modes:
          * <ul>
@@ -902,13 +909,12 @@
          * Returns the start playback position for time shifting, in milliseconds since the epoch.
          * Returns {@link TvInputManager#TIME_SHIFT_INVALID_TIME} if the position is unknown at the
          * moment.
-         * <p>
-         * The start playback position of the time shifted program should be adjusted when the
+         *
+         * <p>The start playback position of the time shifted program should be adjusted when the
          * implementation cannot retain the whole recorded program due to some reason (e.g.
          * limitation on storage space). It is the earliest possible time position that the user can
          * seek to, thus failure to notifying its change immediately might result in bad experience
          * where the application allows the user to seek to an invalid time position.
-         * </p>
          *
          * @see #onTimeShiftResume
          * @see #onTimeShiftPause
@@ -938,11 +944,11 @@
         /**
          * Default implementation of {@link android.view.KeyEvent.Callback#onKeyDown(int, KeyEvent)
          * KeyEvent.Callback.onKeyDown()}: always returns false (doesn't handle the event).
-         * <p>
-         * Override this to intercept key down events before they are processed by the application.
-         * If you return true, the application will not process the event itself. If you return
-         * false, the normal application processing will occur as if the TV input had not seen the
-         * event at all.
+         *
+         * <p>Override this to intercept key down events before they are processed by the
+         * application. If you return true, the application will not process the event itself. If
+         * you return false, the normal application processing will occur as if the TV input had not
+         * seen the event at all.
          *
          * @param keyCode The value in event.getKeyCode().
          * @param event Description of the key event.
@@ -958,8 +964,8 @@
          * Default implementation of
          * {@link android.view.KeyEvent.Callback#onKeyLongPress(int, KeyEvent)
          * KeyEvent.Callback.onKeyLongPress()}: always returns false (doesn't handle the event).
-         * <p>
-         * Override this to intercept key long press events before they are processed by the
+         *
+         * <p>Override this to intercept key long press events before they are processed by the
          * application. If you return true, the application will not process the event itself. If
          * you return false, the normal application processing will occur as if the TV input had not
          * seen the event at all.
@@ -978,11 +984,11 @@
          * Default implementation of
          * {@link android.view.KeyEvent.Callback#onKeyMultiple(int, int, KeyEvent)
          * KeyEvent.Callback.onKeyMultiple()}: always returns false (doesn't handle the event).
-         * <p>
-         * Override this to intercept special key multiple events before they are processed by the
-         * application. If you return true, the application will not itself process the event. If
-         * you return false, the normal application processing will occur as if the TV input had not
-         * seen the event at all.
+         *
+         * <p>Override this to intercept special key multiple events before they are processed by
+         * the application. If you return true, the application will not itself process the event.
+         * If you return false, the normal application processing will occur as if the TV input had
+         * not seen the event at all.
          *
          * @param keyCode The value in event.getKeyCode().
          * @param count The number of times the action was made.
@@ -998,9 +1004,9 @@
         /**
          * Default implementation of {@link android.view.KeyEvent.Callback#onKeyUp(int, KeyEvent)
          * KeyEvent.Callback.onKeyUp()}: always returns false (doesn't handle the event).
-         * <p>
-         * Override this to intercept key up events before they are processed by the application. If
-         * you return true, the application will not itself process the event. If you return false,
+         *
+         * <p>Override this to intercept key up events before they are processed by the application.
+         * If you return true, the application will not itself process the event. If you return false,
          * the normal application processing will occur as if the TV input had not seen the event at
          * all.
          *
@@ -1423,8 +1429,8 @@
     /**
      * Base class for a TV input session which represents an external device connected to a
      * hardware TV input.
-     * <p>
-     * This class is for an input which provides channels for the external set-top box to the
+     *
+     * <p>This class is for an input which provides channels for the external set-top box to the
      * application. Once a TV input returns an implementation of this class on
      * {@link #onCreateSession(String)}, the framework will create a separate session for
      * a hardware TV Input (e.g. HDMI 1) and forward the application's surface to the session so
@@ -1432,9 +1438,10 @@
      * this TV input. The implementation of this class is expected to change the channel of the
      * external set-top box via a proprietary protocol when {@link HardwareSession#onTune(Uri)} is
      * requested by the application.
-     * </p><p>
-     * Note that this class is not for inputs for internal hardware like built-in tuner and HDMI 1.
-     * </p>
+     *
+     * <p>Note that this class is not for inputs for internal hardware like built-in tuner and HDMI
+     * 1.
+     *
      * @see #onCreateSession(String)
      */
     public abstract static class HardwareSession extends Session {
@@ -1455,12 +1462,11 @@
 
         /**
          * Returns the hardware TV input ID the external device is connected to.
-         * <p>
-         * TV input is expected to provide {@link android.R.attr#setupActivity} so that
+         *
+         * <p>TV input is expected to provide {@link android.R.attr#setupActivity} so that
          * the application can launch it before using this TV input. The setup activity may let
          * the user select the hardware TV input to which the external device is connected. The ID
          * of the selected one should be stored in the TV input so that it can be returned here.
-         * </p>
          */
         public abstract String getHardwareInputId();
 
diff --git a/media/java/android/media/tv/TvTrackInfo.java b/media/java/android/media/tv/TvTrackInfo.java
index 8394517..6eedeb4 100644
--- a/media/java/android/media/tv/TvTrackInfo.java
+++ b/media/java/android/media/tv/TvTrackInfo.java
@@ -350,12 +350,11 @@
         /**
          * Sets the pixel aspect ratio (the ratio of a pixel's width to its height) of the video.
          * Valid only for {@link #TYPE_VIDEO} tracks.
-         * <p>
-         * This is needed for applications to be able to scale the video properly for some video
+         *
+         * <p>This is needed for applications to be able to scale the video properly for some video
          * formats such as 720x576 4:3 and 720x576 16:9 where pixels are not square. By default,
          * applications assume the value of 1.0 (square pixels), so it is not necessary to set the
          * pixel aspect ratio for most video formats.
-         * </p>
          *
          * @param videoPixelAspectRatio The pixel aspect ratio of the video.
          */
diff --git a/media/java/android/media/tv/TvView.java b/media/java/android/media/tv/TvView.java
index 9451f69..d248b12 100644
--- a/media/java/android/media/tv/TvView.java
+++ b/media/java/android/media/tv/TvView.java
@@ -16,6 +16,8 @@
 
 package android.media.tv;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.content.Context;
 import android.graphics.Canvas;
@@ -31,6 +33,7 @@
 import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
+import android.util.Pair;
 import android.view.InputEvent;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
@@ -42,21 +45,22 @@
 import android.view.ViewRootImpl;
 
 import java.lang.ref.WeakReference;
+import java.util.ArrayDeque;
 import java.util.List;
+import java.util.Queue;
 
 /**
  * Displays TV contents. The TvView class provides a high level interface for applications to show
  * TV programs from various TV sources that implement {@link TvInputService}. (Note that the list of
  * TV inputs available on the system can be obtained by calling
  * {@link TvInputManager#getTvInputList() TvInputManager.getTvInputList()}.)
- * <p>
- * Once the application supplies the URI for a specific TV channel to {@link #tune(String, Uri)}
+ *
+ * <p>Once the application supplies the URI for a specific TV channel to {@link #tune(String, Uri)}
  * method, it takes care of underlying service binding (and unbinding if the current TvView is
  * already bound to a service) and automatically allocates/deallocates resources needed. In addition
  * to a few essential methods to control how the contents are presented, it also provides a way to
  * dispatch input events to the connected TvInputService in order to enable custom key actions for
  * the TV input.
- * </p>
  */
 public class TvView extends ViewGroup {
     private static final String TAG = "TvView";
@@ -83,8 +87,7 @@
     private OnUnhandledInputEventListener mOnUnhandledInputEventListener;
     private Float mStreamVolume;
     private Boolean mCaptionEnabled;
-    private String mAppPrivateCommandAction;
-    private Bundle mAppPrivateCommandData;
+    private final Queue<Pair<String, Bundle>> mPendingAppPrivateCommands = new ArrayDeque<>();
 
     private boolean mSurfaceChanged;
     private int mSurfaceFormat;
@@ -172,24 +175,23 @@
      * @param callback The callback to receive events. A value of {@code null} removes the existing
      *            callback.
      */
-    public void setCallback(TvInputCallback callback) {
+    public void setCallback(@Nullable TvInputCallback callback) {
         mCallback = callback;
     }
 
     /**
      * Sets this as the main {@link TvView}.
-     * <p>
-     * The main {@link TvView} is a {@link TvView} whose corresponding TV input determines the
+     *
+     * <p>The main {@link TvView} is a {@link TvView} whose corresponding TV input determines the
      * HDMI-CEC active source device. For an HDMI port input, one of source devices that is
      * connected to that HDMI port becomes the active source. For an HDMI-CEC logical device input,
      * the corresponding HDMI-CEC logical device becomes the active source. For any non-HDMI input
      * (including the tuner, composite, S-Video, etc.), the internal device (= TV itself) becomes
      * the active source.
-     * </p><p>
-     * First tuned {@link TvView} becomes main automatically, and keeps to be main until either
+     *
+     * <p>First tuned {@link TvView} becomes main automatically, and keeps to be main until either
      * {@link #reset} is called for the main {@link TvView} or {@link #setMain} is called for other
      * {@link TvView}.
-     * </p>
      * @hide
      */
     @SystemApi
@@ -272,7 +274,7 @@
      * @param inputId The ID of TV input which will play the given channel.
      * @param channelUri The URI of a channel.
      */
-    public void tune(String inputId, Uri channelUri) {
+    public void tune(@NonNull String inputId, Uri channelUri) {
         tune(inputId, channelUri, null);
     }
 
@@ -320,8 +322,8 @@
 
     /**
      * Resets this TvView.
-     * <p>
-     * This method is primarily used to un-tune the current TvView.
+     *
+     * <p>This method is primarily used to un-tune the current TvView.
      */
     public void reset() {
         if (DEBUG) Log.d(TAG, "reset()");
@@ -342,9 +344,8 @@
 
     /**
      * Requests to unblock TV content according to the given rating.
-     * <p>
-     * This notifies TV input that blocked content is now OK to play.
-     * </p>
+     *
+     * <p>This notifies TV input that blocked content is now OK to play.
      *
      * @param unblockedRating A TvContentRating to unblock.
      * @see TvInputService.Session#notifyContentBlocked(TvContentRating)
@@ -359,8 +360,8 @@
 
     /**
      * Enables or disables the caption in this TvView.
-     * <p>
-     * Note that this method does not take any effect unless the current TvView is tuned.
+     *
+     * <p>Note that this method does not take any effect unless the current TvView is tuned.
      *
      * @param enabled {@code true} to enable, {@code false} to disable.
      */
@@ -471,7 +472,7 @@
      * @param callback The callback to receive time shift position changes. A value of {@code null}
      *            removes the existing callback.
      */
-    public void setTimeShiftPositionCallback(TimeShiftPositionCallback callback) {
+    public void setTimeShiftPositionCallback(@Nullable TimeShiftPositionCallback callback) {
         mTimeShiftPositionCallback = callback;
         ensurePositionTracking();
     }
@@ -494,26 +495,23 @@
      * @hide
      */
     @SystemApi
-    public void sendAppPrivateCommand(String action, Bundle data) {
+    public void sendAppPrivateCommand(@NonNull String action, Bundle data) {
         if (TextUtils.isEmpty(action)) {
             throw new IllegalArgumentException("action cannot be null or an empty string");
         }
         if (mSession != null) {
             mSession.sendAppPrivateCommand(action, data);
         } else {
-            Log.w(TAG, "sendAppPrivateCommand - session not created (action " + action + " cached)");
-            if (mAppPrivateCommandAction != null) {
-                Log.w(TAG, "previous cached action " + action + " removed");
-            }
-            mAppPrivateCommandAction = action;
-            mAppPrivateCommandData = data;
+            Log.w(TAG, "sendAppPrivateCommand - session not yet created (action \"" + action
+                    + "\" pending)");
+            mPendingAppPrivateCommands.add(Pair.create(action, data));
         }
     }
 
     /**
      * Dispatches an unhandled input event to the next receiver.
-     * <p>
-     * Except system keys, TvView always consumes input events in the normal flow. This is called
+     *
+     * <p>Except system keys, TvView always consumes input events in the normal flow. This is called
      * asynchronously from where the event is dispatched. It gives the host application a chance to
      * dispatch the unhandled input events.
      *
@@ -728,8 +726,7 @@
     }
 
     private void release() {
-        mAppPrivateCommandAction = null;
-        mAppPrivateCommandData = null;
+        mPendingAppPrivateCommands.clear();
 
         setSessionSurface(null);
         removeSessionOverlayView();
@@ -799,12 +796,11 @@
 
         /**
          * This is called when the start playback position is changed.
-         * <p>
-         * The start playback position of the time shifted program can be adjusted by the TV input
-         * when it cannot retain the whole recorded program due to some reason (e.g. limitation on
-         * storage space). The application should not allow the user to seek to a position earlier
-         * than the start position.
-         * </p>
+         *
+         * <p>The start playback position of the time shifted program can be adjusted by the TV
+         * input when it cannot retain the whole recorded program due to some reason (e.g.
+         * limitation on storage space). The application should not allow the user to seek to a
+         * position earlier than the start position.
          *
          * @param inputId The ID of the TV input bound to this view.
          * @param timeMs The start playback position of the time shifted program, in milliseconds
@@ -965,8 +961,8 @@
     public interface OnUnhandledInputEventListener {
         /**
          * Called when an input event was not handled by the bound TV input.
-         * <p>
-         * This is called asynchronously from where the event is dispatched. It gives the host
+         *
+         * <p>This is called asynchronously from where the event is dispatched. It gives the host
          * application a chance to handle the unhandled input events.
          *
          * @param event The input event.
@@ -1002,6 +998,12 @@
             }
             mSession = session;
             if (session != null) {
+                // Sends the pending app private commands first.
+                for (Pair<String, Bundle> command : mPendingAppPrivateCommands) {
+                    mSession.sendAppPrivateCommand(command.first, command.second);
+                }
+                mPendingAppPrivateCommands.clear();
+
                 synchronized (sMainTvViewLock) {
                     if (hasWindowFocus() && TvView.this == sMainTvView.get()) {
                         mSession.setMain();
@@ -1024,12 +1026,6 @@
                     mSession.setCaptionEnabled(mCaptionEnabled);
                 }
                 mSession.tune(mChannelUri, mTuneParams);
-                if (mAppPrivateCommandAction != null) {
-                    mSession.sendAppPrivateCommand(
-                            mAppPrivateCommandAction, mAppPrivateCommandData);
-                    mAppPrivateCommandAction = null;
-                    mAppPrivateCommandData = null;
-                }
                 ensurePositionTracking();
             } else {
                 mSessionCallback = null;
diff --git a/media/jni/Android.mk b/media/jni/Android.mk
index 8cf9874..dbb53b4 100644
--- a/media/jni/Android.mk
+++ b/media/jni/Android.mk
@@ -2,6 +2,7 @@
 include $(CLEAR_VARS)
 
 LOCAL_SRC_FILES:= \
+    android_media_AmrInputStream.cpp \
     android_media_ImageWriter.cpp \
     android_media_ImageReader.cpp \
     android_media_MediaCrypto.cpp \
@@ -14,12 +15,12 @@
     android_media_MediaMetadataRetriever.cpp \
     android_media_MediaMuxer.cpp \
     android_media_MediaPlayer.cpp \
+    android_media_MediaProfiles.cpp \
     android_media_MediaRecorder.cpp \
     android_media_MediaScanner.cpp \
     android_media_MediaSync.cpp \
     android_media_ResampleInputStream.cpp \
-    android_media_MediaProfiles.cpp \
-    android_media_AmrInputStream.cpp \
+    android_media_SyncSettings.cpp \
     android_media_Utils.cpp \
     android_mtp_MtpDatabase.cpp \
     android_mtp_MtpDevice.cpp \
@@ -43,7 +44,7 @@
     libusbhost \
     libjhead \
     libexif \
-    libstagefright_amrnb_common \
+    libstagefright_amrnb_common
 
 LOCAL_REQUIRED_MODULES := \
     libjhead_jni
@@ -55,6 +56,7 @@
     external/libexif/ \
     external/tremor/Tremor \
     frameworks/base/core/jni \
+    frameworks/base/libs/hwui \
     frameworks/av/media/libmedia \
     frameworks/av/media/libstagefright \
     frameworks/av/media/libstagefright/codecs/amrnb/enc/src \
diff --git a/media/jni/android_media_MediaPlayer.cpp b/media/jni/android_media_MediaPlayer.cpp
index c247220..2c61779 100644
--- a/media/jni/android_media_MediaPlayer.cpp
+++ b/media/jni/android_media_MediaPlayer.cpp
@@ -20,6 +20,7 @@
 #include "utils/Log.h"
 
 #include <media/mediaplayer.h>
+#include <media/AudioResamplerPublic.h>
 #include <media/IMediaHTTPService.h>
 #include <media/MediaPlayerInterface.h>
 #include <stdio.h>
@@ -37,6 +38,8 @@
 #include "utils/KeyedVector.h"
 #include "utils/String8.h"
 #include "android_media_MediaDataSource.h"
+#include "android_media_PlaybackSettings.h"
+#include "android_media_SyncSettings.h"
 #include "android_media_Utils.h"
 
 #include "android_os_Parcel.h"
@@ -66,6 +69,9 @@
 };
 static fields_t fields;
 
+static PlaybackSettings::fields_t gPlaybackSettingsFields;
+static SyncSettings::fields_t gSyncSettingsFields;
+
 static Mutex sLock;
 
 // ----------------------------------------------------------------------------
@@ -420,15 +426,105 @@
 }
 
 static void
-android_media_MediaPlayer_setPlaybackRate(JNIEnv *env, jobject thiz, jfloat rate)
+android_media_MediaPlayer_setPlaybackSettings(JNIEnv *env, jobject thiz, jobject settings)
 {
     sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
     if (mp == NULL) {
         jniThrowException(env, "java/lang/IllegalStateException", NULL);
         return;
     }
-    ALOGV("setPlaybackRate: %f", rate);
-    process_media_player_call(env, thiz, mp->setPlaybackRate(rate), NULL, NULL);
+
+    PlaybackSettings pbs;
+    pbs.fillFromJobject(env, gPlaybackSettingsFields, settings);
+    ALOGV("setPlaybackSettings: %d:%f %d:%f %d:%u %d:%u",
+            pbs.speedSet, pbs.audioRate.mSpeed,
+            pbs.pitchSet, pbs.audioRate.mPitch,
+            pbs.audioFallbackModeSet, pbs.audioRate.mFallbackMode,
+            pbs.audioStretchModeSet, pbs.audioRate.mStretchMode);
+
+    // TODO: pass playback settings to mediaplayer when audiotrack supports it
+    process_media_player_call(env, thiz, mp->setPlaybackRate(pbs.audioRate.mSpeed), NULL, NULL);
+}
+
+static jobject
+android_media_MediaPlayer_getPlaybackSettings(JNIEnv *env, jobject thiz)
+{
+    sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
+    if (mp == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return NULL;
+    }
+
+    PlaybackSettings pbs;
+    AudioPlaybackRate &audioRate = pbs.audioRate;
+
+    audioRate.mSpeed = 1.0f;
+    audioRate.mPitch = 1.0f;
+    audioRate.mFallbackMode = AUDIO_TIMESTRETCH_FALLBACK_DEFAULT;
+    audioRate.mStretchMode = AUDIO_TIMESTRETCH_STRETCH_DEFAULT;
+
+    // TODO: get this from mediaplayer when audiotrack supports it
+    // process_media_player_call(
+    //        env, thiz, mp->getPlaybackSettings(&audioRate), NULL, NULL);
+    ALOGV("getPlaybackSettings: %f %f %d %d",
+            audioRate.mSpeed, audioRate.mPitch, audioRate.mFallbackMode, audioRate.mStretchMode);
+
+    pbs.speedSet = true;
+    pbs.pitchSet = true;
+    pbs.audioFallbackModeSet = true;
+    pbs.audioStretchModeSet = true;
+
+    return pbs.asJobject(env, gPlaybackSettingsFields);
+}
+
+static void
+android_media_MediaPlayer_setSyncSettings(JNIEnv *env, jobject thiz, jobject settings)
+{
+    sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
+    if (mp == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return;
+    }
+
+    SyncSettings scs;
+    scs.fillFromJobject(env, gSyncSettingsFields, settings);
+    ALOGV("setSyncSettings: %d:%d %d:%d %d:%f %d:%f",
+            scs.syncSourceSet, scs.syncSource,
+            scs.audioAdjustModeSet, scs.audioAdjustMode,
+            scs.toleranceSet, scs.tolerance,
+            scs.frameRateSet, scs.frameRate);
+
+    // TODO: pass sync settings to mediaplayer when it supports it
+    // process_media_player_call(env, thiz, mp->setSyncSettings(scs), NULL, NULL);
+}
+
+static jobject
+android_media_MediaPlayer_getSyncSettings(JNIEnv *env, jobject thiz)
+{
+    sp<MediaPlayer> mp = getMediaPlayer(env, thiz);
+    if (mp == NULL) {
+        jniThrowException(env, "java/lang/IllegalStateException", NULL);
+        return NULL;
+    }
+
+    SyncSettings scs;
+    scs.syncSource = 0; // SYNC_SOURCE_DEFAULT
+    scs.audioAdjustMode = 0; // AUDIO_ADJUST_MODE_DEFAULT
+    scs.tolerance = 0.f;
+    scs.frameRate = 0.f;
+
+    // TODO: get this from mediaplayer when it supports it
+    // process_media_player_call(
+    //        env, thiz, mp->getSyncSettings(&scs), NULL, NULL);
+    ALOGV("getSyncSettings: %d %d %f %f",
+            scs.syncSource, scs.audioAdjustMode, scs.tolerance, scs.frameRate);
+
+    scs.syncSourceSet = true;
+    scs.audioAdjustModeSet = true;
+    scs.toleranceSet = true;
+    scs.frameRateSet = false;
+
+    return scs.asJobject(env, gSyncSettingsFields);
 }
 
 static void
@@ -697,6 +793,8 @@
         return;
     }
 
+    env->DeleteLocalRef(clazz);
+
     clazz = env->FindClass("android/net/ProxyInfo");
     if (clazz == NULL) {
         return;
@@ -710,6 +808,11 @@
 
     fields.proxyConfigGetExclusionList =
         env->GetMethodID(clazz, "getExclusionListAsString", "()Ljava/lang/String;");
+
+    env->DeleteLocalRef(clazz);
+
+    gPlaybackSettingsFields.init(env);
+    gSyncSettingsFields.init(env);
 }
 
 static void
@@ -898,7 +1001,10 @@
     {"_stop",               "()V",                              (void *)android_media_MediaPlayer_stop},
     {"getVideoWidth",       "()I",                              (void *)android_media_MediaPlayer_getVideoWidth},
     {"getVideoHeight",      "()I",                              (void *)android_media_MediaPlayer_getVideoHeight},
-    {"_setPlaybackRate",    "(F)V",                             (void *)android_media_MediaPlayer_setPlaybackRate},
+    {"setPlaybackSettings", "(Landroid/media/PlaybackSettings;)V", (void *)android_media_MediaPlayer_setPlaybackSettings},
+    {"getPlaybackSettings", "()Landroid/media/PlaybackSettings;", (void *)android_media_MediaPlayer_getPlaybackSettings},
+    {"setSyncSettings",     "(Landroid/media/SyncSettings;)V",  (void *)android_media_MediaPlayer_setSyncSettings},
+    {"getSyncSettings",     "()Landroid/media/SyncSettings;",   (void *)android_media_MediaPlayer_getSyncSettings},
     {"seekTo",              "(I)V",                             (void *)android_media_MediaPlayer_seekTo},
     {"_pause",              "()V",                              (void *)android_media_MediaPlayer_pause},
     {"isPlaying",           "()Z",                              (void *)android_media_MediaPlayer_isPlaying},
diff --git a/media/jni/android_media_MediaSync.cpp b/media/jni/android_media_MediaSync.cpp
index e167f83..f192262 100644
--- a/media/jni/android_media_MediaSync.cpp
+++ b/media/jni/android_media_MediaSync.cpp
@@ -21,6 +21,7 @@
 #include "android_media_MediaSync.h"
 
 #include "android_media_AudioTrack.h"
+#include "android_media_SyncSettings.h"
 #include "android_runtime/AndroidRuntime.h"
 #include "android_runtime/android_view_Surface.h"
 #include "jni.h"
@@ -46,6 +47,7 @@
 };
 
 static fields_t gFields;
+static SyncSettings::fields_t gSyncSettingsFields;
 
 ////////////////////////////////////////////////////////////////////////////////
 
@@ -84,6 +86,10 @@
     return mSync->updateQueuedAudioData(sizeInBytes, presentationTimeUs);
 }
 
+status_t JMediaSync::getPlayTimeForPendingAudioFrames(int64_t *outTimeUs) {
+    return mSync->getPlayTimeForPendingAudioFrames(outTimeUs);
+}
+
 }  // namespace android
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -266,6 +272,70 @@
     return JNI_TRUE;
 }
 
+static jlong android_media_MediaSync_native_getPlayTimeForPendingAudioFrames(
+        JNIEnv *env, jobject thiz) {
+    sp<JMediaSync> sync = getMediaSync(env, thiz);
+    if (sync == NULL) {
+        throwExceptionAsNecessary(env, INVALID_OPERATION);
+    }
+
+    int64_t playTimeUs = 0;
+    status_t err = sync->getPlayTimeForPendingAudioFrames(&playTimeUs);
+    if (err != NO_ERROR) {
+        throwExceptionAsNecessary(env, err);
+    }
+    return (jlong)playTimeUs;
+}
+
+static void
+android_media_MediaSync_setSyncSettings(JNIEnv *env, jobject thiz, jobject settings)
+{
+    sp<JMediaSync> sync = getMediaSync(env, thiz);
+    if (sync == NULL) {
+        throwExceptionAsNecessary(env, INVALID_OPERATION);
+        return;
+    }
+
+    SyncSettings scs;
+    scs.fillFromJobject(env, gSyncSettingsFields, settings);
+    ALOGV("setSyncSettings: %d:%d %d:%d %d:%f %d:%f",
+            scs.syncSourceSet, scs.syncSource,
+            scs.audioAdjustModeSet, scs.audioAdjustMode,
+            scs.toleranceSet, scs.tolerance,
+            scs.frameRateSet, scs.frameRate);
+
+    // TODO: pass sync settings to mediasync when it supports it
+}
+
+static jobject
+android_media_MediaSync_getSyncSettings(JNIEnv *env, jobject thiz)
+{
+    sp<JMediaSync> sync = getMediaSync(env, thiz);
+    if (sync == NULL) {
+        throwExceptionAsNecessary(env, INVALID_OPERATION);
+        return NULL;
+    }
+
+    SyncSettings scs;
+    scs.syncSource = 0; // SYNC_SOURCE_DEFAULT
+    scs.audioAdjustMode = 0; // AUDIO_ADJUST_MODE_DEFAULT
+    scs.tolerance = 0.f;
+    scs.frameRate = 0.f;
+
+    // TODO: get this from mediaplayer when it supports it
+    // process_media_player_call(
+    //        env, thiz, mp->getSyncSettings(&scs), NULL, NULL);
+    ALOGV("getSyncSettings: %d %d %f %f",
+            scs.syncSource, scs.audioAdjustMode, scs.tolerance, scs.frameRate);
+
+    scs.syncSourceSet = true;
+    scs.audioAdjustModeSet = true;
+    scs.toleranceSet = true;
+    scs.frameRateSet = false;
+
+    return scs.asJobject(env, gSyncSettingsFields);
+}
+
 static void android_media_MediaSync_native_init(JNIEnv *env) {
     ScopedLocalRef<jclass> clazz(env, env->FindClass("android/media/MediaSync"));
     CHECK(clazz.get() != NULL);
@@ -287,6 +357,8 @@
     gFields.mediaTimestampClockRateID =
         env->GetFieldID(clazz.get(), "clockRate", "F");
     CHECK(gFields.mediaTimestampClockRateID != NULL);
+
+    gSyncSettingsFields.init(env);
 }
 
 static void android_media_MediaSync_native_setup(JNIEnv *env, jobject thiz) {
@@ -334,6 +406,10 @@
       "(Landroid/media/MediaTimestamp;)Z",
       (void *)android_media_MediaSync_native_getTimestamp },
 
+    { "native_getPlayTimeForPendingAudioFrames",
+      "()J",
+      (void *)android_media_MediaSync_native_getPlayTimeForPendingAudioFrames },
+
     { "native_init", "()V", (void *)android_media_MediaSync_native_init },
 
     { "native_setup", "()V", (void *)android_media_MediaSync_native_setup },
@@ -342,6 +418,10 @@
 
     { "native_setPlaybackRate", "(F)V", (void *)android_media_MediaSync_native_setPlaybackRate },
 
+    { "setSyncSettings", "(Landroid/media/SyncSettings;)V", (void *)android_media_MediaSync_setSyncSettings},
+
+    { "getSyncSettings", "()Landroid/media/SyncSettings;", (void *)android_media_MediaSync_getSyncSettings},
+
     { "native_finalize", "()V", (void *)android_media_MediaSync_native_finalize },
 };
 
diff --git a/media/jni/android_media_MediaSync.h b/media/jni/android_media_MediaSync.h
index 9e5de7e..cf81a72 100644
--- a/media/jni/android_media_MediaSync.h
+++ b/media/jni/android_media_MediaSync.h
@@ -41,6 +41,8 @@
 
     status_t setPlaybackRate(float rate);
 
+    status_t getPlayTimeForPendingAudioFrames(int64_t *outTimeUs);
+
     sp<const MediaClock> getMediaClock();
 
 protected:
diff --git a/media/jni/android_media_PlaybackSettings.h b/media/jni/android_media_PlaybackSettings.h
new file mode 100644
index 0000000..1f4f256
--- /dev/null
+++ b/media/jni/android_media_PlaybackSettings.h
@@ -0,0 +1,120 @@
+/*
+ * 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.
+ * 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.
+ */
+
+#ifndef _ANDROID_MEDIA_PLAYBACK_SETTINGS_H_
+#define _ANDROID_MEDIA_PLAYBACK_SETTINGS_H_
+
+#include <media/AudioResamplerPublic.h>
+
+namespace android {
+
+// This entire class is inline as it is used from both core and media
+struct PlaybackSettings {
+    AudioPlaybackRate audioRate;
+    bool speedSet;
+    bool pitchSet;
+    bool audioFallbackModeSet;
+    bool audioStretchModeSet;
+
+    struct fields_t {
+        jclass      clazz;
+        jmethodID   constructID;
+
+        jfieldID    speed;
+        jfieldID    pitch;
+        jfieldID    audio_fallback_mode;
+        jfieldID    audio_stretch_mode;
+        jfieldID    set;
+        jint        set_speed;
+        jint        set_pitch;
+        jint        set_audio_fallback_mode;
+        jint        set_audio_stretch_mode;
+
+        void init(JNIEnv *env) {
+            jclass lclazz = env->FindClass("android/media/PlaybackSettings");
+            if (lclazz == NULL) {
+                return;
+            }
+
+            clazz = (jclass)env->NewGlobalRef(lclazz);
+            if (clazz == NULL) {
+                return;
+            }
+
+            constructID = env->GetMethodID(clazz, "<init>", "()V");
+
+            speed = env->GetFieldID(clazz, "mSpeed", "F");
+            pitch = env->GetFieldID(clazz, "mPitch", "F");
+            audio_fallback_mode = env->GetFieldID(clazz, "mAudioFallbackMode", "I");
+            audio_stretch_mode = env->GetFieldID(clazz, "mAudioStretchMode", "I");
+            set = env->GetFieldID(clazz, "mSet", "I");
+
+            set_speed =
+                env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "SET_SPEED", "I"));
+            set_pitch =
+                env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "SET_PITCH", "I"));
+            set_audio_fallback_mode = env->GetStaticIntField(
+                    clazz, env->GetStaticFieldID(clazz, "SET_AUDIO_FALLBACK_MODE", "I"));
+            set_audio_stretch_mode = env->GetStaticIntField(
+                    clazz, env->GetStaticFieldID(clazz, "SET_AUDIO_STRETCH_MODE", "I"));
+
+            env->DeleteLocalRef(lclazz);
+        }
+
+        void exit(JNIEnv *env) {
+            env->DeleteGlobalRef(clazz);
+            clazz = NULL;
+        }
+    };
+
+    void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject settings) {
+        audioRate.mSpeed = env->GetFloatField(settings, fields.speed);
+        audioRate.mPitch = env->GetFloatField(settings, fields.pitch);
+        audioRate.mFallbackMode =
+            (AudioTimestretchFallbackMode)env->GetIntField(settings, fields.audio_fallback_mode);
+        audioRate.mStretchMode =
+            (AudioTimestretchStretchMode)env->GetIntField(settings, fields.audio_stretch_mode);
+        int set = env->GetIntField(settings, fields.set);
+
+        speedSet = set & fields.set_speed;
+        pitchSet = set & fields.set_pitch;
+        audioFallbackModeSet = set & fields.set_audio_fallback_mode;
+        audioStretchModeSet = set & fields.set_audio_stretch_mode;
+    }
+
+    jobject asJobject(JNIEnv *env, const fields_t& fields) {
+        jobject settings = env->NewObject(fields.clazz, fields.constructID);
+        if (settings == NULL) {
+            return NULL;
+        }
+        env->SetFloatField(settings, fields.speed, (jfloat)audioRate.mSpeed);
+        env->SetFloatField(settings, fields.pitch, (jfloat)audioRate.mPitch);
+        env->SetIntField(settings, fields.audio_fallback_mode, (jint)audioRate.mFallbackMode);
+        env->SetIntField(settings, fields.audio_stretch_mode, (jint)audioRate.mStretchMode);
+        env->SetIntField(
+                settings, fields.set,
+                (speedSet ? fields.set_speed : 0)
+                        | (pitchSet ? fields.set_pitch : 0)
+                        | (audioFallbackModeSet ? fields.set_audio_fallback_mode : 0)
+                        | (audioStretchModeSet  ? fields.set_audio_stretch_mode : 0));
+
+        return settings;
+    }
+};
+
+}  // namespace android
+
+#endif  // _ANDROID_MEDIA_PLAYBACK_SETTINGS_H_
diff --git a/media/jni/android_media_SyncSettings.cpp b/media/jni/android_media_SyncSettings.cpp
new file mode 100644
index 0000000..2f0605e
--- /dev/null
+++ b/media/jni/android_media_SyncSettings.cpp
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ * 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.
+ */
+
+#include "android_media_SyncSettings.h"
+
+#include "JNIHelp.h"
+
+namespace android {
+
+void SyncSettings::fields_t::init(JNIEnv *env) {
+    jclass lclazz = env->FindClass("android/media/SyncSettings");
+    if (lclazz == NULL) {
+        return;
+    }
+
+    clazz = (jclass)env->NewGlobalRef(lclazz);
+    if (clazz == NULL) {
+        return;
+    }
+
+    constructID = env->GetMethodID(clazz, "<init>", "()V");
+
+    sync_source = env->GetFieldID(clazz, "mSyncSource", "I");
+    audio_adjust_mode = env->GetFieldID(clazz, "mAudioAdjustMode", "I");
+    tolerance = env->GetFieldID(clazz, "mTolerance", "F");
+    frame_rate = env->GetFieldID(clazz, "mFrameRate", "F");
+    set = env->GetFieldID(clazz, "mSet", "I");
+
+    set_sync_source =
+        env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "SET_SYNC_SOURCE", "I"));
+    set_audio_adjust_mode = env->GetStaticIntField(
+            clazz, env->GetStaticFieldID(clazz, "SET_AUDIO_ADJUST_MODE", "I"));
+    set_tolerance =
+        env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "SET_TOLERANCE", "I"));
+    set_frame_rate =
+        env->GetStaticIntField(clazz, env->GetStaticFieldID(clazz, "SET_FRAME_RATE", "I"));
+
+    env->DeleteLocalRef(lclazz);
+}
+
+void SyncSettings::fields_t::exit(JNIEnv *env) {
+    env->DeleteGlobalRef(clazz);
+    clazz = NULL;
+}
+
+void SyncSettings::fillFromJobject(JNIEnv *env, const fields_t& fields, jobject settings) {
+    syncSource = env->GetIntField(settings, fields.sync_source);
+    audioAdjustMode = env->GetIntField(settings, fields.audio_adjust_mode);
+    tolerance = env->GetFloatField(settings, fields.tolerance);
+    frameRate = env->GetFloatField(settings, fields.frame_rate);
+    int set = env->GetIntField(settings, fields.set);
+
+    syncSourceSet = set & fields.set_sync_source;
+    audioAdjustModeSet = set & fields.set_audio_adjust_mode;
+    toleranceSet = set & fields.set_tolerance;
+    frameRateSet = set & fields.set_frame_rate;
+}
+
+jobject SyncSettings::asJobject(JNIEnv *env, const fields_t& fields) {
+    jobject settings = env->NewObject(fields.clazz, fields.constructID);
+    if (settings == NULL) {
+        return NULL;
+    }
+    env->SetIntField(settings, fields.sync_source, (jint)syncSource);
+    env->SetIntField(settings, fields.audio_adjust_mode, (jint)audioAdjustMode);
+    env->SetFloatField(settings, fields.tolerance, (jfloat)tolerance);
+    env->SetFloatField(settings, fields.frame_rate, (jfloat)frameRate);
+    env->SetIntField(
+            settings, fields.set,
+            (syncSourceSet ? fields.set_sync_source : 0)
+                    | (audioAdjustModeSet ? fields.set_audio_adjust_mode : 0)
+                    | (toleranceSet ? fields.set_tolerance : 0)
+                    | (frameRateSet ? fields.set_frame_rate : 0));
+
+    return settings;
+}
+
+}  // namespace android
diff --git a/media/jni/android_media_SyncSettings.h b/media/jni/android_media_SyncSettings.h
new file mode 100644
index 0000000..586533f
--- /dev/null
+++ b/media/jni/android_media_SyncSettings.h
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ * 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.
+ */
+
+#ifndef _ANDROID_MEDIA_SYNC_SETTINGS_H_
+#define _ANDROID_MEDIA_SYNC_SETTINGS_H_
+
+#include "jni.h"
+
+namespace android {
+
+struct SyncSettings {
+    // keep this here until it is implemented
+    int syncSource;
+    int audioAdjustMode;
+    float tolerance;
+    float frameRate;
+
+    bool syncSourceSet;
+    bool audioAdjustModeSet;
+    bool toleranceSet;
+    bool frameRateSet;
+
+    struct fields_t {
+        jclass      clazz;
+        jmethodID   constructID;
+
+        jfieldID    sync_source;
+        jfieldID    audio_adjust_mode;
+        jfieldID    tolerance;
+        jfieldID    frame_rate;
+        jfieldID    set;
+        jint        set_sync_source;
+        jint        set_audio_adjust_mode;
+        jint        set_tolerance;
+        jint        set_frame_rate;
+
+        // initializes fields
+        void init(JNIEnv *env);
+
+        // releases global references held
+        void exit(JNIEnv *env);
+    };
+
+    // fills this from an android.media.SyncSettings object
+    void fillFromJobject(JNIEnv *env, const fields_t& fields, jobject settings);
+
+    // returns this as a android.media.SyncSettings object
+    jobject asJobject(JNIEnv *env, const fields_t& fields);
+};
+
+}  // namespace android
+
+#endif  // _ANDROID_MEDIA_SYNC_SETTINGS_H_
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java
index 6f33672..d71b44b 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/integration/CameraDeviceBinderTest.java
@@ -19,6 +19,7 @@
 import android.graphics.ImageFormat;
 import android.graphics.SurfaceTexture;
 import android.hardware.camera2.CameraMetadata;
+import android.hardware.camera2.CameraCaptureSession;
 import android.hardware.camera2.CameraCharacteristics;
 import android.hardware.camera2.CaptureRequest;
 import android.hardware.camera2.ICameraDeviceCallbacks;
@@ -170,7 +171,8 @@
         assertEquals(CameraBinderTestUtils.NO_ERROR, status);
         assertFalse(metadata.isEmpty());
 
-        CaptureRequest.Builder request = new CaptureRequest.Builder(metadata, /*reprocess*/false);
+        CaptureRequest.Builder request = new CaptureRequest.Builder(metadata, /*reprocess*/false,
+                CameraCaptureSession.SESSION_ID_NONE);
         assertFalse(request.isEmpty());
         assertFalse(metadata.isEmpty());
         if (needStream) {
diff --git a/native/graphics/jni/Android.mk b/native/graphics/jni/Android.mk
index 91c9ac6..f89a5af 100644
--- a/native/graphics/jni/Android.mk
+++ b/native/graphics/jni/Android.mk
@@ -24,7 +24,8 @@
 
 LOCAL_C_INCLUDES += \
     frameworks/base/native/include \
-    frameworks/base/core/jni/android/graphics
+    frameworks/base/core/jni/android/graphics \
+    frameworks/base/libs/hwui
 
 LOCAL_MODULE:= libjnigraphics
 
diff --git a/packages/DocumentsUI/Android.mk b/packages/DocumentsUI/Android.mk
index 2f97809..67d8ab6 100644
--- a/packages/DocumentsUI/Android.mk
+++ b/packages/DocumentsUI/Android.mk
@@ -11,3 +11,5 @@
 LOCAL_CERTIFICATE := platform
 
 include $(BUILD_PACKAGE)
+
+include $(LOCAL_PATH)/tests/Android.mk
diff --git a/packages/DocumentsUI/res/color/item_doc_grid_overlay.xml b/packages/DocumentsUI/res/color/item_doc_grid_overlay.xml
new file mode 100644
index 0000000..6959c65
--- /dev/null
+++ b/packages/DocumentsUI/res/color/item_doc_grid_overlay.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+     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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_activated="true"
+        android:color="?android:attr/colorControlHighlight" />
+    <item
+        android:state_enabled="false"
+        android:color="?android:attr/colorBackground"
+        android:alpha="0.5" />
+    <item
+        android:color="@android:color/transparent" />
+</selector>
\ No newline at end of file
diff --git a/packages/DocumentsUI/res/color/item_doc_list_background_activated.xml b/packages/DocumentsUI/res/color/item_doc_list_background_activated.xml
new file mode 100644
index 0000000..7d7a110
--- /dev/null
+++ b/packages/DocumentsUI/res/color/item_doc_list_background_activated.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+     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.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:state_activated="true"
+        android:color="?android:attr/colorAccent"
+        android:alpha="0.1" />
+    <item
+        android:color="@android:color/transparent" />
+</selector>
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_album.xml b/packages/DocumentsUI/res/drawable/ic_doc_album.xml
index 6b80a33..e7965e6 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_album.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_album.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_album_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_apk.xml b/packages/DocumentsUI/res/drawable/ic_doc_apk.xml
index d1ba313..4f8f06e 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_apk.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_apk.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_apk_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_audio.xml b/packages/DocumentsUI/res/drawable/ic_doc_audio.xml
index 24bd9fa..cf18b4f 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_audio.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_audio.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_audio_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_certificate.xml b/packages/DocumentsUI/res/drawable/ic_doc_certificate.xml
index 3e5b9e6..c28ed4f 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_certificate.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_certificate.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_certificate_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_codes.xml b/packages/DocumentsUI/res/drawable/ic_doc_codes.xml
index 441c669..0de721a9 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_codes.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_codes.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_codes_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_compressed.xml b/packages/DocumentsUI/res/drawable/ic_doc_compressed.xml
index 15ecb6b..a49cfa4 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_compressed.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_compressed.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_compressed_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_contact.xml b/packages/DocumentsUI/res/drawable/ic_doc_contact.xml
index 361666a..bf550cb 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_contact.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_contact.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_contact_am_alpha"
-    android:tint="@*android:color/secondary_text_material_light"
+    android:tint="?android:attr/colorControlNormal"
     android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_event.xml b/packages/DocumentsUI/res/drawable/ic_doc_event.xml
index a17018b..25cf0f3 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_event.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_event.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_event_am_alpha"
-    android:tint="@*android:color/secondary_text_material_light"
+    android:tint="?android:attr/colorControlNormal"
     android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_excel.xml b/packages/DocumentsUI/res/drawable/ic_doc_excel.xml
index 7d05361..3354725 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_excel.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_excel.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_excel_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_folder.xml b/packages/DocumentsUI/res/drawable/ic_doc_folder.xml
index 85f5e7c..73de60e 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_folder.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_folder.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_folder_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_font.xml b/packages/DocumentsUI/res/drawable/ic_doc_font.xml
index e79ed0c..c74cb9c 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_font.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_font.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_font_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_generic.xml b/packages/DocumentsUI/res/drawable/ic_doc_generic.xml
index d0d999f..a4ee29d 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_generic.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_generic.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_generic_am_alpha"
-    android:tint="@*android:color/secondary_text_material_light"
+    android:tint="?android:attr/colorControlNormal"
     android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_image.xml b/packages/DocumentsUI/res/drawable/ic_doc_image.xml
index fa949e0..9d4c359 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_image.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_image.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_image_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_pdf.xml b/packages/DocumentsUI/res/drawable/ic_doc_pdf.xml
index 51620f5..5c37498 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_pdf.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_pdf.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_pdf_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_powerpoint.xml b/packages/DocumentsUI/res/drawable/ic_doc_powerpoint.xml
index 2a048c8..f0a6c39 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_powerpoint.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_powerpoint.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_powerpoint_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_presentation.xml b/packages/DocumentsUI/res/drawable/ic_doc_presentation.xml
index 71bb853..a14f866 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_presentation.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_presentation.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_presentation_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_spreadsheet.xml b/packages/DocumentsUI/res/drawable/ic_doc_spreadsheet.xml
index 4b4cd99..40f2515 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_spreadsheet.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_spreadsheet.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_spreadsheet_am_alpha"
-    android:tint="@*android:color/secondary_text_material_light"
+    android:tint="?android:attr/colorControlNormal"
     android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_text.xml b/packages/DocumentsUI/res/drawable/ic_doc_text.xml
index 8224a21..ffa9e70 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_text.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_text.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_text_am_alpha"
-    android:tint="@*android:color/secondary_text_material_light"
+    android:tint="?android:attr/colorControlNormal"
     android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_video.xml b/packages/DocumentsUI/res/drawable/ic_doc_video.xml
index 1fed041..2d048c2 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_video.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_video.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_video_am_alpha"
-    android:tint="@*android:color/secondary_text_material_light"
+    android:tint="?android:attr/colorControlNormal"
     android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_doc_word.xml b/packages/DocumentsUI/res/drawable/ic_doc_word.xml
index addfb47..afcc533 100644
--- a/packages/DocumentsUI/res/drawable/ic_doc_word.xml
+++ b/packages/DocumentsUI/res/drawable/ic_doc_word.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_doc_word_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_grid_folder.xml b/packages/DocumentsUI/res/drawable/ic_grid_folder.xml
index 344d558..0c87869 100644
--- a/packages/DocumentsUI/res/drawable/ic_grid_folder.xml
+++ b/packages/DocumentsUI/res/drawable/ic_grid_folder.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_grid_folder_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_root_download.xml b/packages/DocumentsUI/res/drawable/ic_root_download.xml
index a7642f9..f07d8f0 100644
--- a/packages/DocumentsUI/res/drawable/ic_root_download.xml
+++ b/packages/DocumentsUI/res/drawable/ic_root_download.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_root_download_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_root_folder.xml b/packages/DocumentsUI/res/drawable/ic_root_folder.xml
index cda9db8..01df07b 100644
--- a/packages/DocumentsUI/res/drawable/ic_root_folder.xml
+++ b/packages/DocumentsUI/res/drawable/ic_root_folder.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_root_folder_am_alpha"
-    android:tint="@*android:color/secondary_text_material_light"
+    android:tint="?android:attr/colorControlNormal"
     android:autoMirrored="true" />
diff --git a/packages/DocumentsUI/res/drawable/ic_root_recent.xml b/packages/DocumentsUI/res/drawable/ic_root_recent.xml
index d6b33c9..41e6a5e 100644
--- a/packages/DocumentsUI/res/drawable/ic_root_recent.xml
+++ b/packages/DocumentsUI/res/drawable/ic_root_recent.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_root_recent_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_root_sdcard.xml b/packages/DocumentsUI/res/drawable/ic_root_sdcard.xml
index 0b9523b..27cfa81d 100644
--- a/packages/DocumentsUI/res/drawable/ic_root_sdcard.xml
+++ b/packages/DocumentsUI/res/drawable/ic_root_sdcard.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_root_sdcard_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/ic_root_usb_light.xml b/packages/DocumentsUI/res/drawable/ic_root_usb_light.xml
index ff2b197..5f80dd9 100644
--- a/packages/DocumentsUI/res/drawable/ic_root_usb_light.xml
+++ b/packages/DocumentsUI/res/drawable/ic_root_usb_light.xml
@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <bitmap xmlns:android="http://schemas.android.com/apk/res/android"
     android:src="@drawable/ic_root_usb_light_alpha"
-    android:tint="@*android:color/secondary_text_material_light" />
+    android:tint="?android:attr/colorControlNormal" />
diff --git a/packages/DocumentsUI/res/drawable/item_doc_grid_overlay.xml b/packages/DocumentsUI/res/drawable/item_doc_grid_overlay.xml
index 3fbd25e..3f50fb9 100644
--- a/packages/DocumentsUI/res/drawable/item_doc_grid_overlay.xml
+++ b/packages/DocumentsUI/res/drawable/item_doc_grid_overlay.xml
@@ -14,9 +14,7 @@
      limitations under the License.
 -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_focused="true" android:state_activated="true" android:drawable="@color/item_doc_grid_overlay_activated" />
-    <item android:state_focused="false" android:state_activated="true" android:drawable="@color/item_doc_grid_overlay_activated" />
-    <item android:state_enabled="false" android:drawable="@color/item_doc_grid_overlay_disabled" />
-    <item android:drawable="@android:color/transparent" />
-</selector>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    <solid android:color="@color/item_doc_grid_overlay" />
+</shape>
diff --git a/packages/DocumentsUI/res/drawable/item_doc_list_background.xml b/packages/DocumentsUI/res/drawable/item_doc_list_background.xml
index b879542..13910bb 100644
--- a/packages/DocumentsUI/res/drawable/item_doc_list_background.xml
+++ b/packages/DocumentsUI/res/drawable/item_doc_list_background.xml
@@ -14,8 +14,7 @@
      limitations under the License.
 -->
 
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-    <item android:state_focused="true" android:state_activated="true" android:drawable="@color/item_doc_list_background_activated" />
-    <item android:state_focused="false" android:state_activated="true" android:drawable="@color/item_doc_list_background_activated" />
-    <item android:drawable="@android:color/transparent" />
-</selector>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+       android:shape="rectangle">
+    <solid android:color="@color/item_doc_list_background_activated" />
+</shape>
diff --git a/packages/DocumentsUI/res/layout-sw720dp/activity.xml b/packages/DocumentsUI/res/layout-sw720dp/activity.xml
index 1cffd17..7b40a0f 100644
--- a/packages/DocumentsUI/res/layout-sw720dp/activity.xml
+++ b/packages/DocumentsUI/res/layout-sw720dp/activity.xml
@@ -53,8 +53,7 @@
             android:layout_height="match_parent"
             android:layout_weight="1"
             android:orientation="vertical"
-            android:elevation="8dp"
-            android:background="@color/material_grey_50">
+            android:elevation="8dp">
 
             <com.android.documentsui.DirectoryContainerView
                 android:id="@+id/container_directory"
@@ -66,7 +65,6 @@
                 android:id="@+id/container_save"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:background="@color/material_grey_50"
                 android:elevation="8dp" />
 
         </LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/activity.xml b/packages/DocumentsUI/res/layout/activity.xml
index 120168e..b549cd3 100644
--- a/packages/DocumentsUI/res/layout/activity.xml
+++ b/packages/DocumentsUI/res/layout/activity.xml
@@ -51,7 +51,6 @@
             android:id="@+id/container_save"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:background="@color/material_grey_50"
             android:elevation="8dp" />
 
     </LinearLayout>
diff --git a/packages/DocumentsUI/res/layout/fragment_directory.xml b/packages/DocumentsUI/res/layout/fragment_directory.xml
index 4717839..2c08e72 100644
--- a/packages/DocumentsUI/res/layout/fragment_directory.xml
+++ b/packages/DocumentsUI/res/layout/fragment_directory.xml
@@ -16,8 +16,7 @@
 
 <com.android.documentsui.DirectoryView xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/material_grey_50">
+    android:layout_height="match_parent">
 
     <TextView
         android:id="@android:id/empty"
diff --git a/packages/DocumentsUI/res/values-night/colors.xml b/packages/DocumentsUI/res/values-night/colors.xml
new file mode 100644
index 0000000..87cac78
--- /dev/null
+++ b/packages/DocumentsUI/res/values-night/colors.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 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.
+     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.
+-->
+
+<resources>
+    <color name="item_doc_grid_background">#ff111111</color>
+    <color name="item_doc_grid_protect_background">#88ffffff</color>
+</resources>
diff --git a/packages/DocumentsUI/res/values-sw720dp/dimens.xml b/packages/DocumentsUI/res/values-sw720dp/dimens.xml
index 068c806..4786d28 100644
--- a/packages/DocumentsUI/res/values-sw720dp/dimens.xml
+++ b/packages/DocumentsUI/res/values-sw720dp/dimens.xml
@@ -18,11 +18,9 @@
     <bool name="show_as_dialog">true</bool>
 
     <item type="dimen" name="dialog_width">85%</item>
-    <item type="dimen" name="dialog_height">90%</item>
 
     <dimen name="grid_padding_horiz">24dp</dimen>
     <dimen name="grid_padding_vert">16dp</dimen>
 
     <dimen name="grid_item_padding">8dp</dimen>
-
 </resources>
diff --git a/packages/DocumentsUI/res/values-sw720dp/styles.xml b/packages/DocumentsUI/res/values-sw720dp/styles.xml
index 9968bb8..0b03a94 100644
--- a/packages/DocumentsUI/res/values-sw720dp/styles.xml
+++ b/packages/DocumentsUI/res/values-sw720dp/styles.xml
@@ -16,6 +16,11 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <style name="DialogWhenReallyLarge" parent="@*android:style/Theme.DeviceDefault.Light.Dialog.FixedSize" />
+    <style name="DialogWhenReallyLarge" parent="@*android:style/Theme.Material.DayNight.Dialog">
+        <!-- We do not specify width of window here because the max size of
+             floating window specified by windowFixedWidthis is limited. -->
+        <item name="*android:windowFixedHeightMajor">80%</item>
+        <item name="*android:windowFixedHeightMinor">90%</item>
+    </style>
 
 </resources>
diff --git a/packages/DocumentsUI/res/values/colors.xml b/packages/DocumentsUI/res/values/colors.xml
index 2ceb968..2b839d4 100644
--- a/packages/DocumentsUI/res/values/colors.xml
+++ b/packages/DocumentsUI/res/values/colors.xml
@@ -15,19 +15,8 @@
 -->
 
 <resources>
-    <color name="material_grey_50">#fffafafa</color>
     <color name="material_grey_300">#ffeeeeee</color>
 
     <color name="item_doc_grid_background">@color/material_grey_300</color>
-
     <color name="item_doc_grid_protect_background">#88000000</color>
-
-    <color name="item_doc_grid_overlay_activated">#88000000</color>
-    <color name="item_doc_grid_overlay_disabled">#88ffffff</color>
-
-    <color name="item_doc_list_overlay_disabled">#88ffffff</color>
-
-    <!-- 10% alpha of material_deep_teal_500 -->
-    <color name="item_doc_list_background_activated">#1a009688</color>
-
 </resources>
diff --git a/packages/DocumentsUI/res/values/strings.xml b/packages/DocumentsUI/res/values/strings.xml
index 062d433..5281087 100644
--- a/packages/DocumentsUI/res/values/strings.xml
+++ b/packages/DocumentsUI/res/values/strings.xml
@@ -121,22 +121,20 @@
     <string name="copy_remaining"><xliff:g id="duration" example="3 minutes">%s</xliff:g> left</string>
     <!-- Toast shown when a file copy is kicked off -->
     <plurals name="copy_begin">
-      <item quantity="one">Copying <xliff:g id="count" example="1">%1$d</xliff:g> file.</item>
-      <item quantity="other">Copying <xliff:g id="count" example="3">%1$d</xliff:g> files.</item>
+        <item quantity="one">Copying <xliff:g id="count" example="1">%1$d</xliff:g> file.</item>
+        <item quantity="other">Copying <xliff:g id="count" example="3">%1$d</xliff:g> files.</item>
     </plurals>
     <!-- Text shown on the copy notification while DocumentsUI performs setup in preparation for copying files [CHAR LIMIT=32] -->
     <string name="copy_preparing">Preparing for copy\u2026</string>
     <!-- Title of the copy error notification [CHAR LIMIT=48] -->
     <plurals name="copy_error_notification_title">
-      <item quantity="one">Error copying <xliff:g id="count" example="1">%1$d</xliff:g> file.</item>
-      <item quantity="other">Error copying <xliff:g id="count" example="1">%1$d</xliff:g> files.</item>
+        <item quantity="one">Couldn\'t copy <xliff:g id="count" example="1">%1$d</xliff:g> file</item>
+        <item quantity="other">Couldn\'t copy <xliff:g id="count" example="2">%1$d</xliff:g> files</item>
     </plurals>
     <!-- Second line for notifications saying that more information will be shown after touching [CHAR LIMIT=48] -->
     <string name="notification_touch_for_details">Touch to view details</string>
     <!-- Label of a dialog button for retrying a failed operation [CHAR LIMIT=24] -->
     <string name="retry">Retry</string>
-    <!-- Title of the copying failure alert dialog. [CHAR LIMIT=48] -->
-    <string name="copy_failure_alert_title">Error copying files</string>
     <!-- Contents of the copying failure alert dialog. [CHAR LIMIT=48] -->
-    <string name="copy_failure_alert_content">Following files are not copied: <xliff:g id="list">%1$s</xliff:g></string>
+    <string name="copy_failure_alert_content">These files weren\'t copied: <xliff:g id="list">%1$s</xliff:g></string>
 </resources>
diff --git a/packages/DocumentsUI/res/values/styles.xml b/packages/DocumentsUI/res/values/styles.xml
index 39c958e..97509f7 100644
--- a/packages/DocumentsUI/res/values/styles.xml
+++ b/packages/DocumentsUI/res/values/styles.xml
@@ -16,7 +16,7 @@
 
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <style name="DialogWhenReallyLarge" parent="@android:style/Theme.DeviceDefault.Light" />
+    <style name="DialogWhenReallyLarge" parent="@android:style/Theme.Material.DayNight.DarkActionBar" />
 
     <style name="DocumentsTheme" parent="@style/DialogWhenReallyLarge">
         <item name="android:actionBarWidgetTheme">@null</item>
@@ -33,20 +33,11 @@
         <item name="android:windowActionModeOverlay">true</item>
         <item name="android:windowNoTitle">true</item>
 
-        <item name="*android:windowFixedWidthMajor">@null</item>
-        <item name="*android:windowFixedWidthMinor">@null</item>
-        <item name="*android:windowMinWidthMajor">@null</item>
-        <item name="*android:windowMinWidthMinor">@null</item>
-        <item name="*android:windowFixedHeightMajor">80%</item>
-        <item name="*android:windowFixedHeightMinor">90%</item>
-
         <item name="android:windowSoftInputMode">stateUnspecified|adjustUnspecified</item>
     </style>
 
-    <style name="StandaloneTheme" parent="android:Theme.DeviceDefault.Light">
+    <style name="StandaloneTheme" parent="@android:style/Theme.Material.DayNight.DarkActionBar">
         <item name="android:actionBarWidgetTheme">@null</item>
-        <item name="android:actionBarTheme">@*android:style/ThemeOverlay.Material.Dark.ActionBar</item>
-        <item name="android:actionBarPopupTheme">@*android:style/ThemeOverlay.Material.Light</item>
 
         <item name="android:colorPrimaryDark">@*android:color/material_blue_grey_900</item>
         <item name="android:colorPrimary">@*android:color/material_blue_grey_800</item>
diff --git a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
index 8039b71..e0f10fa 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/BaseActivity.java
@@ -16,17 +16,47 @@
 
 package com.android.documentsui;
 
+import static com.android.documentsui.DirectoryFragment.ANIM_NONE;
+import static com.android.documentsui.DirectoryFragment.ANIM_SIDE;
+import static com.android.documentsui.DirectoryFragment.ANIM_UP;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collection;
 import java.util.HashMap;
 import java.util.List;
+import java.util.concurrent.Executor;
 
+import libcore.io.IoUtils;
 import android.app.Activity;
 import android.app.Fragment;
-import android.content.pm.ResolveInfo;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.AsyncTask;
+import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.provider.DocumentsContract;
+import android.provider.DocumentsContract.Root;
+import android.util.Log;
 import android.util.SparseArray;
+import android.view.LayoutInflater;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.MenuItem.OnActionExpandListener;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemSelectedListener;
+import android.widget.BaseAdapter;
+import android.widget.ImageView;
+import android.widget.SearchView;
+import android.widget.SearchView.OnQueryTextListener;
+import android.widget.TextView;
 
+import com.android.documentsui.RecentsProvider.ResumeColumns;
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.model.DurableUtils;
@@ -34,20 +64,143 @@
 import com.google.common.collect.Maps;
 
 abstract class BaseActivity extends Activity {
+
+    static final String EXTRA_STATE = "state";
+
+    RootsCache mRoots;
+    SearchManager mSearchManager;
+
+    private final String mTag;
+
     public abstract State getDisplayState();
-    public abstract RootInfo getCurrentRoot();
-    public abstract void onStateChanged();
-    public abstract void setRootsDrawerOpen(boolean open);
     public abstract void onDocumentPicked(DocumentInfo doc);
     public abstract void onDocumentsPicked(List<DocumentInfo> docs);
-    public abstract DocumentInfo getCurrentDirectory();
-    public abstract void setPending(boolean pending);
-    public abstract void onStackPicked(DocumentStack stack);
-    public abstract void onPickRequested(DocumentInfo pickTarget);
-    public abstract void onAppPicked(ResolveInfo info);
-    public abstract void onRootPicked(RootInfo root, boolean closeDrawer);
-    public abstract void onSaveRequested(DocumentInfo replaceTarget);
-    public abstract void onSaveRequested(String mimeType, String displayName);
+    abstract void onTaskFinished(Uri... uris);
+    abstract void onDirectoryChanged(int anim);
+    abstract void updateActionBar();
+    abstract void saveStackBlocking();
+
+    public BaseActivity(String tag) {
+        mTag = tag;
+    }
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        mRoots = DocumentsApplication.getRootsCache(this);
+        mSearchManager = new SearchManager();
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        boolean showMenu = super.onCreateOptionsMenu(menu);
+
+        getMenuInflater().inflate(R.menu.activity, menu);
+        mSearchManager.install(menu.findItem(R.id.menu_search));
+
+        return showMenu;
+    }
+
+    void onStackRestored(boolean restored, boolean external) {}
+
+    void onRootPicked(RootInfo root) {
+        State state = getDisplayState();
+
+        // Clear entire backstack and start in new root
+        state.stack.root = root;
+        state.stack.clear();
+        state.stackTouched = true;
+
+        mSearchManager.update(root);
+
+        // Recents is always in memory, so we just load it directly.
+        // Otherwise we delegate loading data from disk to a task
+        // to ensure a responsive ui.
+        if (mRoots.isRecentsRoot(root)) {
+            onCurrentDirectoryChanged(ANIM_SIDE);
+        } else {
+            new PickRootTask(root).executeOnExecutor(getCurrentExecutor());
+        }
+    }
+
+    void expandMenus(Menu menu) {
+        for (int i = 0; i < menu.size(); i++) {
+            final MenuItem item = menu.getItem(i);
+            switch (item.getItemId()) {
+                case R.id.menu_advanced:
+                case R.id.menu_file_size:
+                    break;
+                default:
+                    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
+            }
+        }
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        final int id = item.getItemId();
+        if (id == android.R.id.home) {
+            onBackPressed();
+            return true;
+        } else if (id == R.id.menu_create_dir) {
+            CreateDirectoryFragment.show(getFragmentManager());
+            return true;
+        } else if (id == R.id.menu_search) {
+            return false;
+        } else if (id == R.id.menu_sort_name) {
+            setUserSortOrder(State.SORT_ORDER_DISPLAY_NAME);
+            return true;
+        } else if (id == R.id.menu_sort_date) {
+            setUserSortOrder(State.SORT_ORDER_LAST_MODIFIED);
+            return true;
+        } else if (id == R.id.menu_sort_size) {
+            setUserSortOrder(State.SORT_ORDER_SIZE);
+            return true;
+        } else if (id == R.id.menu_grid) {
+            setUserMode(State.MODE_GRID);
+            return true;
+        } else if (id == R.id.menu_list) {
+            setUserMode(State.MODE_LIST);
+            return true;
+        } else if (id == R.id.menu_advanced) {
+            setDisplayAdvancedDevices(!LocalPreferences.getDisplayAdvancedDevices(this));
+            return true;
+        } else if (id == R.id.menu_file_size) {
+            setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this));
+            return true;
+        } else if (id == R.id.menu_settings) {
+            final RootInfo root = getCurrentRoot();
+            final Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_ROOT_SETTINGS);
+            intent.setDataAndType(DocumentsContract.buildRootUri(root.authority, root.rootId),
+                    DocumentsContract.Root.MIME_TYPE_ITEM);
+            startActivity(intent);
+            return true;
+        }
+
+        return super.onOptionsItemSelected(item);
+    }
+
+    /**
+     * Call this when directory changes. Prior to root fragment update
+     * the (abstract) directoryChanged method will be called.
+     * @param anim
+     */
+    final void onCurrentDirectoryChanged(int anim) {
+        onDirectoryChanged(anim);
+
+        final RootsFragment roots = RootsFragment.get(getFragmentManager());
+        if (roots != null) {
+            roots.onCurrentRootChanged();
+        }
+
+        updateActionBar();
+        invalidateOptionsMenu();
+    }
+
+    final String getCallingPackageMaybeExtra() {
+        final String extra = getIntent().getStringExtra(DocumentsContract.EXTRA_PACKAGE_NAME);
+        return (extra != null) ? extra : getCallingPackage();
+    }
 
     public static BaseActivity get(Fragment fragment) {
         return (BaseActivity) fragment.getActivity();
@@ -169,4 +322,393 @@
             }
         };
     }
+
+    void setDisplayAdvancedDevices(boolean display) {
+        State state = getDisplayState();
+        LocalPreferences.setDisplayAdvancedDevices(this, display);
+        state.showAdvanced = state.forceAdvanced | display;
+        RootsFragment.get(getFragmentManager()).onDisplayStateChanged();
+        invalidateOptionsMenu();
+    }
+
+    void setDisplayFileSize(boolean display) {
+        LocalPreferences.setDisplayFileSize(this, display);
+        getDisplayState().showSize = display;
+        DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged();
+        invalidateOptionsMenu();
+    }
+
+    void onStateChanged() {
+        invalidateOptionsMenu();
+    }
+
+    /**
+     * Set state sort order based on explicit user action.
+     */
+    void setUserSortOrder(int sortOrder) {
+        getDisplayState().userSortOrder = sortOrder;
+        DirectoryFragment.get(getFragmentManager()).onUserSortOrderChanged();
+    }
+
+    /**
+     * Set state mode based on explicit user action.
+     */
+    void setUserMode(int mode) {
+        getDisplayState().userMode = mode;
+        DirectoryFragment.get(getFragmentManager()).onUserModeChanged();
+    }
+
+    void setPending(boolean pending) {
+        final SaveFragment save = SaveFragment.get(getFragmentManager());
+        if (save != null) {
+            save.setPending(pending);
+        }
+    }
+
+    @Override
+    protected void onSaveInstanceState(Bundle state) {
+        super.onSaveInstanceState(state);
+        state.putParcelable(EXTRA_STATE, getDisplayState());
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Bundle state) {
+        super.onRestoreInstanceState(state);
+    }
+
+    RootInfo getCurrentRoot() {
+        State state = getDisplayState();
+        if (state.stack.root != null) {
+            return state.stack.root;
+        } else {
+            return mRoots.getRecentsRoot();
+        }
+    }
+
+    public DocumentInfo getCurrentDirectory() {
+        return getDisplayState().stack.peek();
+    }
+
+    public Executor getCurrentExecutor() {
+        final DocumentInfo cwd = getCurrentDirectory();
+        if (cwd != null && cwd.authority != null) {
+            return ProviderExecutor.forAuthority(cwd.authority);
+        } else {
+            return AsyncTask.THREAD_POOL_EXECUTOR;
+        }
+    }
+
+    public void onStackPicked(DocumentStack stack) {
+        try {
+            // Update the restored stack to ensure we have freshest data
+            stack.updateDocuments(getContentResolver());
+
+            State state = getDisplayState();
+            state.stack = stack;
+            state.stackTouched = true;
+            onCurrentDirectoryChanged(ANIM_SIDE);
+
+        } catch (FileNotFoundException e) {
+            Log.w(mTag, "Failed to restore stack: " + e);
+        }
+    }
+
+    final class PickRootTask extends AsyncTask<Void, Void, DocumentInfo> {
+        private RootInfo mRoot;
+
+        public PickRootTask(RootInfo root) {
+            mRoot = root;
+        }
+
+        @Override
+        protected DocumentInfo doInBackground(Void... params) {
+            try {
+                final Uri uri = DocumentsContract.buildDocumentUri(
+                        mRoot.authority, mRoot.documentId);
+                return DocumentInfo.fromUri(getContentResolver(), uri);
+            } catch (FileNotFoundException e) {
+                Log.w(mTag, "Failed to find root", e);
+                return null;
+            }
+        }
+
+        @Override
+        protected void onPostExecute(DocumentInfo result) {
+            if (result != null) {
+                State state = getDisplayState();
+                state.stack.push(result);
+                state.stackTouched = true;
+                onCurrentDirectoryChanged(ANIM_SIDE);
+            }
+        }
+    }
+
+    final class RestoreStackTask extends AsyncTask<Void, Void, Void> {
+        private volatile boolean mRestoredStack;
+        private volatile boolean mExternal;
+
+        @Override
+        protected Void doInBackground(Void... params) {
+            State state = getDisplayState();
+            RootsCache roots = DocumentsApplication.getRootsCache(BaseActivity.this);
+
+            // Restore last stack for calling package
+            final String packageName = getCallingPackageMaybeExtra();
+            final Cursor cursor = getContentResolver()
+                    .query(RecentsProvider.buildResume(packageName), null, null, null, null);
+            try {
+                if (cursor.moveToFirst()) {
+                    mExternal = cursor.getInt(cursor.getColumnIndex(ResumeColumns.EXTERNAL)) != 0;
+                    final byte[] rawStack = cursor.getBlob(
+                            cursor.getColumnIndex(ResumeColumns.STACK));
+                    DurableUtils.readFromArray(rawStack, state.stack);
+                    mRestoredStack = true;
+                }
+            } catch (IOException e) {
+                Log.w(mTag, "Failed to resume: " + e);
+            } finally {
+                IoUtils.closeQuietly(cursor);
+            }
+
+            if (mRestoredStack) {
+                // Update the restored stack to ensure we have freshest data
+                final Collection<RootInfo> matchingRoots = roots.getMatchingRootsBlocking(state);
+                try {
+                    state.stack.updateRoot(matchingRoots);
+                    state.stack.updateDocuments(getContentResolver());
+                } catch (FileNotFoundException e) {
+                    Log.w(mTag, "Failed to restore stack: " + e);
+                    state.stack.reset();
+                    mRestoredStack = false;
+                }
+            }
+
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Void result) {
+            if (isDestroyed()) return;
+            getDisplayState().restored = true;
+            onCurrentDirectoryChanged(ANIM_NONE);
+
+            onStackRestored(mRestoredStack, mExternal);
+
+            getDisplayState().restored = true;
+            onCurrentDirectoryChanged(ANIM_NONE);
+        }
+    }
+
+    final class ItemSelectedListener implements OnItemSelectedListener {
+
+        boolean mIgnoreNextNavigation;
+
+        @Override
+        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
+            if (mIgnoreNextNavigation) {
+                mIgnoreNextNavigation = false;
+                return;
+            }
+
+            State state = getDisplayState();
+            while (state.stack.size() > position + 1) {
+                state.stackTouched = true;
+                state.stack.pop();
+            }
+            onCurrentDirectoryChanged(ANIM_UP);
+        }
+
+        @Override
+        public void onNothingSelected(AdapterView<?> parent) {
+            // Ignored
+        }
+    }
+
+    /**
+     * Class providing toolbar with runtime access to useful activity data.
+     */
+    final class StackAdapter extends BaseAdapter {
+        @Override
+        public int getCount() {
+            return getDisplayState().stack.size();
+        }
+
+        @Override
+        public DocumentInfo getItem(int position) {
+            State state = getDisplayState();
+            return state.stack.get(state.stack.size() - position - 1);
+        }
+
+        @Override
+        public long getItemId(int position) {
+            return position;
+        }
+
+        @Override
+        public View getView(int position, View convertView, ViewGroup parent) {
+            if (convertView == null) {
+                convertView = LayoutInflater.from(parent.getContext())
+                        .inflate(R.layout.item_subdir_title, parent, false);
+            }
+
+            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
+            final DocumentInfo doc = getItem(position);
+
+            if (position == 0) {
+                final RootInfo root = getCurrentRoot();
+                title.setText(root.title);
+            } else {
+                title.setText(doc.displayName);
+            }
+
+            return convertView;
+        }
+
+        @Override
+        public View getDropDownView(int position, View convertView, ViewGroup parent) {
+            if (convertView == null) {
+                convertView = LayoutInflater.from(parent.getContext())
+                        .inflate(R.layout.item_subdir, parent, false);
+            }
+
+            final ImageView subdir = (ImageView) convertView.findViewById(R.id.subdir);
+            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
+            final DocumentInfo doc = getItem(position);
+
+            if (position == 0) {
+                final RootInfo root = getCurrentRoot();
+                title.setText(root.title);
+                subdir.setVisibility(View.GONE);
+            } else {
+                title.setText(doc.displayName);
+                subdir.setVisibility(View.VISIBLE);
+            }
+
+            return convertView;
+        }
+    }
+
+    /**
+     * Facade over the various search parts in the menu.
+     */
+    final class SearchManager implements
+            SearchView.OnCloseListener, OnActionExpandListener, OnQueryTextListener {
+
+        private boolean mSearchExpanded;
+        private boolean mIgnoreNextClose;
+        private boolean mIgnoreNextCollapse;
+
+        private MenuItem mMenu;
+        private SearchView mView;
+
+        public void install(MenuItem menu) {
+            assert(mMenu == null);
+            mMenu = menu;
+            mView = (SearchView) menu.getActionView();
+
+            mMenu.setOnActionExpandListener(this);
+            mView.setOnQueryTextListener(this);
+            mView.setOnCloseListener(this);
+        }
+
+        /**
+         * @param root Info about the current directory.
+         */
+        void update(RootInfo root) {
+            if (mMenu == null) {
+                Log.d(mTag, "update called before Search MenuItem installed.");
+                return;
+            }
+
+            State state = getDisplayState();
+            if (state.currentSearch != null) {
+                mMenu.expandActionView();
+
+                mView.setIconified(false);
+                mView.clearFocus();
+                mView.setQuery(state.currentSearch, false);
+            } else {
+                mView.clearFocus();
+                if (!mView.isIconified()) {
+                    mIgnoreNextClose = true;
+                    mView.setIconified(true);
+                }
+
+                if (mMenu.isActionViewExpanded()) {
+                    mIgnoreNextCollapse = true;
+                    mMenu.collapseActionView();
+                }
+            }
+
+            showMenu(root != null
+                    && ((root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0));
+        }
+
+        void showMenu(boolean visible) {
+            if (mMenu == null) {
+                Log.d(mTag, "showMenu called before Search MenuItem installed.");
+                return;
+            }
+
+            mMenu.setVisible(visible);
+            if (!visible) {
+                getDisplayState().currentSearch = null;
+            }
+        }
+
+        boolean isSearching() {
+            return getDisplayState().currentSearch != null;
+        }
+
+        boolean isExpanded() {
+            return mSearchExpanded;
+        }
+
+        @Override
+        public boolean onClose() {
+            mSearchExpanded = false;
+            if (mIgnoreNextClose) {
+                mIgnoreNextClose = false;
+                return false;
+            }
+
+            getDisplayState().currentSearch = null;
+            onCurrentDirectoryChanged(ANIM_NONE);
+            return false;
+        }
+
+        @Override
+        public boolean onMenuItemActionExpand(MenuItem item) {
+            mSearchExpanded = true;
+            updateActionBar();
+            return true;
+        }
+
+        @Override
+        public boolean onMenuItemActionCollapse(MenuItem item) {
+            mSearchExpanded = false;
+            if (mIgnoreNextCollapse) {
+                mIgnoreNextCollapse = false;
+                return true;
+            }
+
+            getDisplayState().currentSearch = null;
+            onCurrentDirectoryChanged(ANIM_NONE);
+            return true;
+        }
+
+        @Override
+        public boolean onQueryTextSubmit(String query) {
+            mSearchExpanded = true;
+            getDisplayState().currentSearch = query;
+            mView.clearFocus();
+            onCurrentDirectoryChanged(ANIM_NONE);
+            return true;
+        }
+
+        @Override
+        public boolean onQueryTextChange(String newText) {
+            return false;
+        }
+    }
 }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/CopyService.java b/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
index a9f03b6..2e0bece 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/CopyService.java
@@ -26,6 +26,7 @@
 import android.content.ContentProviderClient;
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.CancellationSignal;
@@ -37,12 +38,14 @@
 import android.provider.DocumentsContract.Document;
 import android.text.format.DateUtils;
 import android.util.Log;
+import android.widget.Toast;
 
 import com.android.documentsui.model.DocumentInfo;
 import com.android.documentsui.model.DocumentStack;
 
 import libcore.io.IoUtils;
 
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -70,7 +73,7 @@
     private volatile boolean mIsCancelled;
     // Parameters of the copy job. Requests to an IntentService are serialized so this code only
     // needs to deal with one job at a time.
-    private final ArrayList<Uri> mFailedFiles;
+    private final ArrayList<DocumentInfo> mFailedFiles;
     private long mBatchSize;
     private long mBytesCopied;
     private long mStartTime;
@@ -88,7 +91,27 @@
     public CopyService() {
         super("CopyService");
 
-        mFailedFiles = new ArrayList<Uri>();
+        mFailedFiles = new ArrayList<DocumentInfo>();
+    }
+
+    /**
+     * Starts the service for a copy operation.
+     *
+     * @param context Context for the intent.
+     * @param srcDocs A list of src files to copy.
+     * @param dstStack The copy destination stack.
+     */
+    public static void start(Context context, List<DocumentInfo> srcDocs, DocumentStack dstStack) {
+        final Resources res = context.getResources();
+        final Intent copyIntent = new Intent(context, CopyService.class);
+        copyIntent.putParcelableArrayListExtra(
+                EXTRA_SRC_LIST, new ArrayList<DocumentInfo>(srcDocs));
+        copyIntent.putExtra(EXTRA_STACK, (Parcelable) dstStack);
+
+        Toast.makeText(context,
+                res.getQuantityString(R.plurals.copy_begin, srcDocs.size(), srcDocs.size()),
+                Toast.LENGTH_SHORT).show();
+        context.startService(copyIntent);
     }
 
     @Override
@@ -360,7 +383,7 @@
         if (dstUri == null) {
             // If this is a directory, the entire subdir will not be copied over.
             Log.e(TAG, "Error while copying " + srcInfo.displayName);
-            mFailedFiles.add(srcInfo.derivedUri);
+            mFailedFiles.add(srcInfo);
             return;
         }
 
@@ -444,7 +467,12 @@
         } catch (IOException e) {
             errorOccurred = true;
             Log.e(TAG, "Error while copying " + srcUri.toString(), e);
-            mFailedFiles.add(srcUri);
+            try {
+                mFailedFiles.add(DocumentInfo.fromUri(getContentResolver(), srcUri));
+            } catch (FileNotFoundException ignore) {
+                Log.w(TAG, "Source file gone: " + srcUri, e);
+              // The source file is gone.
+            }
         } finally {
             // This also ensures the file descriptors are closed.
             IoUtils.closeQuietly(src);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java
index 1a17ee0..1f7b41e 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/CreateDirectoryFragment.java
@@ -56,7 +56,11 @@
         final Context context = getActivity();
         final ContentResolver resolver = context.getContentResolver();
 
-        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
+        // We need to specify android.R.style.Theme_DeviceDefault_Dialog explicitly,
+        // because the application theme 'DialogWhenReallyLarge' has
+        // fixed window size properties for large screen devices.
+        final AlertDialog.Builder builder = new AlertDialog.Builder(
+                context, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT);
         final LayoutInflater dialogInflater = LayoutInflater.from(builder.getContext());
 
         final View view = dialogInflater.inflate(R.layout.dialog_create_dir, null, false);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
index 37a14c6..a789da8 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DirectoryFragment.java
@@ -28,7 +28,6 @@
 import static com.android.documentsui.model.DocumentInfo.getCursorInt;
 import static com.android.documentsui.model.DocumentInfo.getCursorLong;
 import static com.android.documentsui.model.DocumentInfo.getCursorString;
-
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.Fragment;
@@ -83,6 +82,7 @@
 import com.android.documentsui.ProviderExecutor.Preemptable;
 import com.android.documentsui.RecentsProvider.StateColumns;
 import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.model.RootInfo;
 import com.google.android.collect.Lists;
 
@@ -311,8 +311,9 @@
                 updateDisplayState();
 
                 // When launched into empty recents, show drawer
-                if (mType == TYPE_RECENT_OPEN && mAdapter.isEmpty() && !state.stackTouched) {
-                    ((BaseActivity) context).setRootsDrawerOpen(true);
+                if (mType == TYPE_RECENT_OPEN && mAdapter.isEmpty() && !state.stackTouched &&
+                        context instanceof DocumentsActivity) {
+                    ((DocumentsActivity) context).setRootsDrawerOpen(true);
                 }
 
                 // Restore any previous instance state
@@ -341,9 +342,6 @@
 
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
-        final Context context = getActivity();
-        final Resources res = context.getResources();
-
         // There's only one request code right now. Replace this with a switch statement or
         // something more scalable when more codes are added.
         if (requestCode != REQUEST_COPY_DESTINATION) {
@@ -355,15 +353,8 @@
             return;
         }
 
-        final List<DocumentInfo> docs = getDisplayState(this).selectedDocumentsForCopy;
-        final Intent copyIntent = new Intent(context, CopyService.class);
-        copyIntent.putParcelableArrayListExtra(CopyService.EXTRA_SRC_LIST, new ArrayList<DocumentInfo>(docs));
-        copyIntent.putExtra(CopyService.EXTRA_STACK, data.getParcelableExtra(CopyService.EXTRA_STACK));
-
-        Toast.makeText(context,
-                res.getQuantityString(R.plurals.copy_begin, docs.size(), docs.size()),
-                Toast.LENGTH_SHORT).show();
-        context.startService(copyIntent);
+        CopyService.start(getActivity(), getDisplayState(this).selectedDocumentsForCopy,
+                (DocumentStack) data.getParcelableExtra(CopyService.EXTRA_STACK));
     }
 
     @Override
@@ -503,7 +494,8 @@
             open.setVisible(!manageOrBrowse);
             share.setVisible(manageOrBrowse);
             delete.setVisible(manageOrBrowse);
-            copy.setVisible(manageOrBrowse);
+            // Disable copying from the Recents view.
+            copy.setVisible(manageOrBrowse && mType != TYPE_RECENT_OPEN);
 
             return true;
         }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
index a2a789f..92c9cd1 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/DocumentsActivity.java
@@ -21,16 +21,17 @@
 import static com.android.documentsui.BaseActivity.State.ACTION_GET_CONTENT;
 import static com.android.documentsui.BaseActivity.State.ACTION_MANAGE;
 import static com.android.documentsui.BaseActivity.State.ACTION_OPEN;
-import static com.android.documentsui.BaseActivity.State.ACTION_OPEN_TREE;
 import static com.android.documentsui.BaseActivity.State.ACTION_OPEN_COPY_DESTINATION;
-import static com.android.documentsui.BaseActivity.State.MODE_GRID;
-import static com.android.documentsui.BaseActivity.State.MODE_LIST;
+import static com.android.documentsui.BaseActivity.State.ACTION_OPEN_TREE;
 import static com.android.documentsui.DirectoryFragment.ANIM_DOWN;
 import static com.android.documentsui.DirectoryFragment.ANIM_NONE;
-import static com.android.documentsui.DirectoryFragment.ANIM_SIDE;
 import static com.android.documentsui.DirectoryFragment.ANIM_UP;
 
+import java.util.Arrays;
+import java.util.List;
+
 import android.app.Activity;
+import android.app.Fragment;
 import android.app.FragmentManager;
 import android.content.ActivityNotFoundException;
 import android.content.ClipData;
@@ -42,7 +43,6 @@
 import android.content.Intent;
 import android.content.pm.ResolveInfo;
 import android.content.res.Resources;
-import android.database.Cursor;
 import android.graphics.Point;
 import android.net.Uri;
 import android.os.AsyncTask;
@@ -54,51 +54,27 @@
 import android.support.v4.widget.DrawerLayout;
 import android.support.v4.widget.DrawerLayout.DrawerListener;
 import android.util.Log;
-import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
-import android.view.MenuItem.OnActionExpandListener;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
 import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.SearchView;
-import android.widget.SearchView.OnQueryTextListener;
 import android.widget.Spinner;
-import android.widget.TextView;
 import android.widget.Toast;
 import android.widget.Toolbar;
 
-import libcore.io.IoUtils;
-
 import com.android.documentsui.RecentsProvider.RecentColumns;
 import com.android.documentsui.RecentsProvider.ResumeColumns;
 import com.android.documentsui.model.DocumentInfo;
-import com.android.documentsui.model.DocumentStack;
 import com.android.documentsui.model.DurableUtils;
 import com.android.documentsui.model.RootInfo;
 
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.concurrent.Executor;
-
 public class DocumentsActivity extends BaseActivity {
+    private static final int CODE_FORWARD = 42;
     public static final String TAG = "Documents";
 
-    private static final String EXTRA_STATE = "state";
-
-    private static final int CODE_FORWARD = 42;
-
     private boolean mShowAsDialog;
 
-    private SearchView mSearchView;
-
     private Toolbar mToolbar;
     private Spinner mToolbarStack;
 
@@ -110,21 +86,19 @@
 
     private DirectoryContainerView mDirectoryContainer;
 
-    private boolean mIgnoreNextNavigation;
-    private boolean mIgnoreNextClose;
-    private boolean mIgnoreNextCollapse;
-
-    private boolean mSearchExpanded;
-
-    private RootsCache mRoots;
     private State mState;
 
+    private ItemSelectedListener mStackListener;
+    private BaseAdapter mStackAdapter;
+
+    public DocumentsActivity() {
+        super(TAG);
+    }
+
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        mRoots = DocumentsApplication.getRootsCache(this);
-
         setResult(Activity.RESULT_CANCELED);
         setContentView(R.layout.activity);
 
@@ -157,16 +131,16 @@
 
         mDirectoryContainer = (DirectoryContainerView) findViewById(R.id.container_directory);
 
-        if (icicle != null) {
-            mState = icicle.getParcelable(EXTRA_STATE);
-        } else {
-            buildDefaultState();
-        }
+        mState = (icicle != null)
+                ? icicle.<State>getParcelable(EXTRA_STATE)
+                : buildDefaultState();
 
         mToolbar = (Toolbar) findViewById(R.id.toolbar);
         mToolbar.setTitleTextAppearance(context,
                 android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Title);
 
+        mStackAdapter = new StackAdapter();
+        mStackListener = new ItemSelectedListener();
         mToolbarStack = (Spinner) findViewById(R.id.stack);
         mToolbarStack.setOnItemSelectedListener(mStackListener);
 
@@ -220,55 +194,57 @@
         }
     }
 
-    private void buildDefaultState() {
-        mState = new State();
+    private State buildDefaultState() {
+        State state = new State();
 
         final Intent intent = getIntent();
         final String action = intent.getAction();
         if (Intent.ACTION_OPEN_DOCUMENT.equals(action)) {
-            mState.action = ACTION_OPEN;
+            state.action = ACTION_OPEN;
         } else if (Intent.ACTION_CREATE_DOCUMENT.equals(action)) {
-            mState.action = ACTION_CREATE;
+            state.action = ACTION_CREATE;
         } else if (Intent.ACTION_GET_CONTENT.equals(action)) {
-            mState.action = ACTION_GET_CONTENT;
+            state.action = ACTION_GET_CONTENT;
         } else if (Intent.ACTION_OPEN_DOCUMENT_TREE.equals(action)) {
-            mState.action = ACTION_OPEN_TREE;
+            state.action = ACTION_OPEN_TREE;
         } else if (DocumentsContract.ACTION_MANAGE_ROOT.equals(action)) {
-            mState.action = ACTION_MANAGE;
+            state.action = ACTION_MANAGE;
         } else if (DocumentsContract.ACTION_BROWSE_DOCUMENT_ROOT.equals(action)) {
-            mState.action = ACTION_BROWSE;
+            state.action = ACTION_BROWSE;
         } else if (DocumentsIntent.ACTION_OPEN_COPY_DESTINATION.equals(action)) {
-            mState.action = ACTION_OPEN_COPY_DESTINATION;
+            state.action = ACTION_OPEN_COPY_DESTINATION;
         }
 
-        if (mState.action == ACTION_OPEN || mState.action == ACTION_GET_CONTENT) {
-            mState.allowMultiple = intent.getBooleanExtra(
+        if (state.action == ACTION_OPEN || state.action == ACTION_GET_CONTENT) {
+            state.allowMultiple = intent.getBooleanExtra(
                     Intent.EXTRA_ALLOW_MULTIPLE, false);
         }
 
-        if (mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE) {
-            mState.acceptMimes = new String[] { "*/*" };
-            mState.allowMultiple = true;
+        if (state.action == ACTION_MANAGE || state.action == ACTION_BROWSE) {
+            state.acceptMimes = new String[] { "*/*" };
+            state.allowMultiple = true;
         } else if (intent.hasExtra(Intent.EXTRA_MIME_TYPES)) {
-            mState.acceptMimes = intent.getStringArrayExtra(Intent.EXTRA_MIME_TYPES);
+            state.acceptMimes = intent.getStringArrayExtra(Intent.EXTRA_MIME_TYPES);
         } else {
-            mState.acceptMimes = new String[] { intent.getType() };
+            state.acceptMimes = new String[] { intent.getType() };
         }
 
-        mState.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
-        mState.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false);
-        mState.showAdvanced = mState.forceAdvanced
+        state.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
+        state.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false);
+        state.showAdvanced = state.forceAdvanced
                 | LocalPreferences.getDisplayAdvancedDevices(this);
 
-        if (mState.action == ACTION_MANAGE || mState.action == ACTION_BROWSE) {
-            mState.showSize = true;
+        if (state.action == ACTION_MANAGE || state.action == ACTION_BROWSE) {
+            state.showSize = true;
         } else {
-            mState.showSize = LocalPreferences.getDisplayFileSize(this);
+            state.showSize = LocalPreferences.getDisplayFileSize(this);
         }
-        if (mState.action == ACTION_OPEN_COPY_DESTINATION) {
-            mState.directoryCopy = intent.getBooleanExtra(
+        if (state.action == ACTION_OPEN_COPY_DESTINATION) {
+            state.directoryCopy = intent.getBooleanExtra(
                     BaseActivity.DocumentsIntent.EXTRA_DIRECTORY_COPY, false);
         }
+
+        return state;
     }
 
     private class RestoreRootTask extends AsyncTask<Void, Void, RootInfo> {
@@ -290,7 +266,7 @@
             mState.restored = true;
 
             if (root != null) {
-                onRootPicked(root, true);
+                onRootPicked(root);
             } else {
                 Log.w(TAG, "Failed to find root: " + mRootUri);
                 finish();
@@ -298,71 +274,55 @@
         }
     }
 
-    private class RestoreStackTask extends AsyncTask<Void, Void, Void> {
-        private volatile boolean mRestoredStack;
-        private volatile boolean mExternal;
+    @Override
+    void onStackRestored(boolean restored, boolean external) {
+        // Show drawer when no stack restored, but only when requesting
+        // non-visual content. However, if we last used an external app,
+        // drawer is always shown.
 
-        @Override
-        protected Void doInBackground(Void... params) {
-            // Restore last stack for calling package
-            final String packageName = getCallingPackageMaybeExtra();
-            final Cursor cursor = getContentResolver()
-                    .query(RecentsProvider.buildResume(packageName), null, null, null, null);
-            try {
-                if (cursor.moveToFirst()) {
-                    mExternal = cursor.getInt(cursor.getColumnIndex(ResumeColumns.EXTERNAL)) != 0;
-                    final byte[] rawStack = cursor.getBlob(
-                            cursor.getColumnIndex(ResumeColumns.STACK));
-                    DurableUtils.readFromArray(rawStack, mState.stack);
-                    mRestoredStack = true;
-                }
-            } catch (IOException e) {
-                Log.w(TAG, "Failed to resume: " + e);
-            } finally {
-                IoUtils.closeQuietly(cursor);
-            }
-
-            if (mRestoredStack) {
-                // Update the restored stack to ensure we have freshest data
-                final Collection<RootInfo> matchingRoots = mRoots.getMatchingRootsBlocking(mState);
-                try {
-                    mState.stack.updateRoot(matchingRoots);
-                    mState.stack.updateDocuments(getContentResolver());
-                } catch (FileNotFoundException e) {
-                    Log.w(TAG, "Failed to restore stack: " + e);
-                    mState.stack.reset();
-                    mRestoredStack = false;
-                }
-            }
-
-            return null;
+        boolean showDrawer = false;
+        if (!restored) {
+            showDrawer = true;
+        }
+        if (MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, mState.acceptMimes)) {
+            showDrawer = false;
+        }
+        if (external && mState.action == ACTION_GET_CONTENT) {
+            showDrawer = true;
         }
 
-        @Override
-        protected void onPostExecute(Void result) {
-            if (isDestroyed()) return;
-            mState.restored = true;
+        if (showDrawer) {
+            setRootsDrawerOpen(true);
+        }
+    }
 
-            // Show drawer when no stack restored, but only when requesting
-            // non-visual content. However, if we last used an external app,
-            // drawer is always shown.
+    public void onAppPicked(ResolveInfo info) {
+        final Intent intent = new Intent(getIntent());
+        intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+        intent.setComponent(new ComponentName(
+                info.activityInfo.applicationInfo.packageName, info.activityInfo.name));
+        startActivityForResult(intent, CODE_FORWARD);
+    }
 
-            boolean showDrawer = false;
-            if (!mRestoredStack) {
-                showDrawer = true;
-            }
-            if (MimePredicate.mimeMatches(MimePredicate.VISUAL_MIMES, mState.acceptMimes)) {
-                showDrawer = false;
-            }
-            if (mExternal && mState.action == ACTION_GET_CONTENT) {
-                showDrawer = true;
-            }
+    @Override
+    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+        Log.d(TAG, "onActivityResult() code=" + resultCode);
 
-            if (showDrawer) {
-                setRootsDrawerOpen(true);
-            }
+        // Only relay back results when not canceled; otherwise stick around to
+        // let the user pick another app/backend.
+        if (requestCode == CODE_FORWARD && resultCode != RESULT_CANCELED) {
 
-            onCurrentDirectoryChanged(ANIM_NONE);
+            // Remember that we last picked via external app
+            final String packageName = getCallingPackageMaybeExtra();
+            final ContentValues values = new ContentValues();
+            values.put(ResumeColumns.EXTERNAL, 1);
+            getContentResolver().insert(RecentsProvider.buildResume(packageName), values);
+
+            // Pass back result to original caller
+            setResult(resultCode, data);
+            finish();
+        } else {
+            super.onActivityResult(requestCode, resultCode, data);
         }
     }
 
@@ -397,7 +357,6 @@
         updateActionBar();
     }
 
-    @Override
     public void setRootsDrawerOpen(boolean open) {
         if (!mShowAsDialog) {
             if (open) {
@@ -416,6 +375,7 @@
         }
     }
 
+    @Override
     public void updateActionBar() {
         if (mRootsToolbar != null) {
             if (mState.action == ACTION_OPEN ||
@@ -447,7 +407,7 @@
             });
         }
 
-        if (mSearchExpanded) {
+        if (mSearchManager.isExpanded()) {
             mToolbar.setTitle(null);
             mToolbarStack.setVisibility(View.GONE);
             mToolbarStack.setAdapter(null);
@@ -461,7 +421,7 @@
                 mToolbarStack.setVisibility(View.VISIBLE);
                 mToolbarStack.setAdapter(mStackAdapter);
 
-                mIgnoreNextNavigation = true;
+                mStackListener.mIgnoreNextNavigation = true;
                 mToolbarStack.setSelection(mStackAdapter.getCount() - 1);
             }
         }
@@ -469,79 +429,13 @@
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        getMenuInflater().inflate(R.menu.activity, menu);
+        boolean showMenu = super.onCreateOptionsMenu(menu);
 
         // Most actions are visible when showing as dialog
         if (mShowAsDialog) {
-            for (int i = 0; i < menu.size(); i++) {
-                final MenuItem item = menu.getItem(i);
-                switch (item.getItemId()) {
-                    case R.id.menu_advanced:
-                    case R.id.menu_file_size:
-                        break;
-                    default:
-                        item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
-                }
-            }
+            expandMenus(menu);
         }
-
-        final MenuItem searchMenu = menu.findItem(R.id.menu_search);
-        mSearchView = (SearchView) searchMenu.getActionView();
-        mSearchView.setOnQueryTextListener(new OnQueryTextListener() {
-            @Override
-            public boolean onQueryTextSubmit(String query) {
-                mSearchExpanded = true;
-                mState.currentSearch = query;
-                mSearchView.clearFocus();
-                onCurrentDirectoryChanged(ANIM_NONE);
-                return true;
-            }
-
-            @Override
-            public boolean onQueryTextChange(String newText) {
-                return false;
-            }
-        });
-
-        searchMenu.setOnActionExpandListener(new OnActionExpandListener() {
-            @Override
-            public boolean onMenuItemActionExpand(MenuItem item) {
-                mSearchExpanded = true;
-                updateActionBar();
-                return true;
-            }
-
-            @Override
-            public boolean onMenuItemActionCollapse(MenuItem item) {
-                mSearchExpanded = false;
-                if (mIgnoreNextCollapse) {
-                    mIgnoreNextCollapse = false;
-                    return true;
-                }
-
-                mState.currentSearch = null;
-                onCurrentDirectoryChanged(ANIM_NONE);
-                return true;
-            }
-        });
-
-        mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
-            @Override
-            public boolean onClose() {
-                mSearchExpanded = false;
-                if (mIgnoreNextClose) {
-                    mIgnoreNextClose = false;
-                    return false;
-                }
-
-                mState.currentSearch = null;
-                onCurrentDirectoryChanged(ANIM_NONE);
-                return false;
-            }
-        });
-
-        return true;
+        return showMenu;
     }
 
     @Override
@@ -554,7 +448,6 @@
         final DocumentInfo cwd = getCurrentDirectory();
 
         final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
-        final MenuItem search = menu.findItem(R.id.menu_search);
         final MenuItem sort = menu.findItem(R.id.menu_sort);
         final MenuItem sortSize = menu.findItem(R.id.menu_sort_size);
         final MenuItem grid = menu.findItem(R.id.menu_grid);
@@ -564,36 +457,22 @@
         final MenuItem settings = menu.findItem(R.id.menu_settings);
 
         sort.setVisible(cwd != null);
-        grid.setVisible(mState.derivedMode != MODE_GRID);
-        list.setVisible(mState.derivedMode != MODE_LIST);
+        grid.setVisible(mState.derivedMode != State.MODE_GRID);
+        list.setVisible(mState.derivedMode != State.MODE_LIST);
 
-        if (mState.currentSearch != null) {
-            // Search uses backend ranking; no sorting
-            sort.setVisible(false);
+        mSearchManager.update(root);
 
-            search.expandActionView();
-
-            mSearchView.setIconified(false);
-            mSearchView.clearFocus();
-            mSearchView.setQuery(mState.currentSearch, false);
-        } else {
-            mIgnoreNextClose = true;
-            mSearchView.setIconified(true);
-            mSearchView.clearFocus();
-
-            mIgnoreNextCollapse = true;
-            search.collapseActionView();
-        }
+        // Search uses backend ranking; no sorting
+        sort.setVisible(mSearchManager.isSearching());
 
         // Only sort by size when visible
         sortSize.setVisible(mState.showSize);
 
-        boolean searchVisible;
         boolean fileSizeVisible = !(mState.action == ACTION_MANAGE
                 || mState.action == ACTION_BROWSE);
         if (mState.action == ACTION_CREATE || mState.action == ACTION_OPEN_TREE) {
             createDir.setVisible(cwd != null && cwd.isCreateSupported());
-            searchVisible = false;
+            mSearchManager.showMenu(false);
 
             // No display options in recent directories
             if (cwd == null) {
@@ -607,14 +486,8 @@
             }
         } else {
             createDir.setVisible(false);
-
-            searchVisible = root != null
-                    && ((root.flags & Root.FLAG_SUPPORTS_SEARCH) != 0);
         }
 
-        // TODO: close any search in-progress when hiding
-        search.setVisible(searchVisible);
-
         advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
                 ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
         fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
@@ -634,90 +507,7 @@
         if (mDrawerToggle != null && mDrawerToggle.onOptionsItemSelected(item)) {
             return true;
         }
-
-        final int id = item.getItemId();
-        if (id == android.R.id.home) {
-            onBackPressed();
-            return true;
-        } else if (id == R.id.menu_create_dir) {
-            CreateDirectoryFragment.show(getFragmentManager());
-            return true;
-        } else if (id == R.id.menu_search) {
-            return false;
-        } else if (id == R.id.menu_sort_name) {
-            setUserSortOrder(State.SORT_ORDER_DISPLAY_NAME);
-            return true;
-        } else if (id == R.id.menu_sort_date) {
-            setUserSortOrder(State.SORT_ORDER_LAST_MODIFIED);
-            return true;
-        } else if (id == R.id.menu_sort_size) {
-            setUserSortOrder(State.SORT_ORDER_SIZE);
-            return true;
-        } else if (id == R.id.menu_grid) {
-            setUserMode(State.MODE_GRID);
-            return true;
-        } else if (id == R.id.menu_list) {
-            setUserMode(State.MODE_LIST);
-            return true;
-        } else if (id == R.id.menu_advanced) {
-            setDisplayAdvancedDevices(!LocalPreferences.getDisplayAdvancedDevices(this));
-            return true;
-        } else if (id == R.id.menu_file_size) {
-            setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this));
-            return true;
-        } else if (id == R.id.menu_settings) {
-            final RootInfo root = getCurrentRoot();
-            final Intent intent = new Intent(DocumentsContract.ACTION_DOCUMENT_ROOT_SETTINGS);
-            intent.setDataAndType(DocumentsContract.buildRootUri(root.authority, root.rootId),
-                    DocumentsContract.Root.MIME_TYPE_ITEM);
-            startActivity(intent);
-            return true;
-        } else {
-            return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void setDisplayAdvancedDevices(boolean display) {
-        LocalPreferences.setDisplayAdvancedDevices(this, display);
-        mState.showAdvanced = mState.forceAdvanced | display;
-        RootsFragment.get(getFragmentManager()).onDisplayStateChanged();
-        invalidateOptionsMenu();
-    }
-
-    private void setDisplayFileSize(boolean display) {
-        LocalPreferences.setDisplayFileSize(this, display);
-        mState.showSize = display;
-        DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged();
-        invalidateOptionsMenu();
-    }
-
-    @Override
-    public void onStateChanged() {
-        invalidateOptionsMenu();
-    }
-
-    /**
-     * Set state sort order based on explicit user action.
-     */
-    private void setUserSortOrder(int sortOrder) {
-        mState.userSortOrder = sortOrder;
-        DirectoryFragment.get(getFragmentManager()).onUserSortOrderChanged();
-    }
-
-    /**
-     * Set state mode based on explicit user action.
-     */
-    private void setUserMode(int mode) {
-        mState.userMode = mode;
-        DirectoryFragment.get(getFragmentManager()).onUserModeChanged();
-    }
-
-    @Override
-    public void setPending(boolean pending) {
-        final SaveFragment save = SaveFragment.get(getFragmentManager());
-        if (save != null) {
-            save.setPending(pending);
-        }
+        return super.onOptionsItemSelected(item);
     }
 
     @Override
@@ -740,131 +530,12 @@
     }
 
     @Override
-    protected void onSaveInstanceState(Bundle state) {
-        super.onSaveInstanceState(state);
-        state.putParcelable(EXTRA_STATE, mState);
-    }
-
-    @Override
-    protected void onRestoreInstanceState(Bundle state) {
-        super.onRestoreInstanceState(state);
-    }
-
-    private BaseAdapter mStackAdapter = new BaseAdapter() {
-        @Override
-        public int getCount() {
-            return mState.stack.size();
-        }
-
-        @Override
-        public DocumentInfo getItem(int position) {
-            return mState.stack.get(mState.stack.size() - position - 1);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = LayoutInflater.from(parent.getContext())
-                        .inflate(R.layout.item_subdir_title, parent, false);
-            }
-
-            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
-            final DocumentInfo doc = getItem(position);
-
-            if (position == 0) {
-                final RootInfo root = getCurrentRoot();
-                title.setText(root.title);
-            } else {
-                title.setText(doc.displayName);
-            }
-
-            return convertView;
-        }
-
-        @Override
-        public View getDropDownView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = LayoutInflater.from(parent.getContext())
-                        .inflate(R.layout.item_subdir, parent, false);
-            }
-
-            final ImageView subdir = (ImageView) convertView.findViewById(R.id.subdir);
-            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
-            final DocumentInfo doc = getItem(position);
-
-            if (position == 0) {
-                final RootInfo root = getCurrentRoot();
-                title.setText(root.title);
-                subdir.setVisibility(View.GONE);
-            } else {
-                title.setText(doc.displayName);
-                subdir.setVisibility(View.VISIBLE);
-            }
-
-            return convertView;
-        }
-    };
-
-    private OnItemSelectedListener mStackListener = new OnItemSelectedListener() {
-        @Override
-        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-            if (mIgnoreNextNavigation) {
-                mIgnoreNextNavigation = false;
-                return;
-            }
-
-            while (mState.stack.size() > position + 1) {
-                mState.stackTouched = true;
-                mState.stack.pop();
-            }
-            onCurrentDirectoryChanged(ANIM_UP);
-        }
-
-        @Override
-        public void onNothingSelected(AdapterView<?> parent) {
-            // Ignored
-        }
-    };
-
-    @Override
-    public RootInfo getCurrentRoot() {
-        if (mState.stack.root != null) {
-            return mState.stack.root;
-        } else {
-            return mRoots.getRecentsRoot();
-        }
-    }
-
-    @Override
-    public DocumentInfo getCurrentDirectory() {
-        return mState.stack.peek();
-    }
-
-    private String getCallingPackageMaybeExtra() {
-        final String extra = getIntent().getStringExtra(DocumentsContract.EXTRA_PACKAGE_NAME);
-        return (extra != null) ? extra : getCallingPackage();
-    }
-
-    public Executor getCurrentExecutor() {
-        final DocumentInfo cwd = getCurrentDirectory();
-        if (cwd != null && cwd.authority != null) {
-            return ProviderExecutor.forAuthority(cwd.authority);
-        } else {
-            return AsyncTask.THREAD_POOL_EXECUTOR;
-        }
-    }
-
-    @Override
     public State getDisplayState() {
         return mState;
     }
 
-    private void onCurrentDirectoryChanged(int anim) {
+    @Override
+    void onDirectoryChanged(int anim) {
         final FragmentManager fm = getFragmentManager();
         final RootInfo root = getCurrentRoot();
         final DocumentInfo cwd = getCurrentDirectory();
@@ -883,7 +554,7 @@
                 // Start recents in grid when requesting visual things
                 final boolean visualMimes = MimePredicate.mimeMatches(
                         MimePredicate.VISUAL_MIMES, mState.acceptMimes);
-                mState.userMode = visualMimes ? MODE_GRID : MODE_LIST;
+                mState.userMode = visualMimes ? State.MODE_GRID : State.MODE_LIST;
                 mState.derivedMode = mState.userMode;
             }
         } else {
@@ -913,108 +584,20 @@
                 pick.setPickTarget(mState.action, cwd, displayName);
             }
         }
+    }
 
-        final RootsFragment roots = RootsFragment.get(fm);
-        if (roots != null) {
-            roots.onCurrentRootChanged();
-        }
+    void onSaveRequested(DocumentInfo replaceTarget) {
+        new ExistingFinishTask(replaceTarget.derivedUri).executeOnExecutor(getCurrentExecutor());
+    }
 
-        updateActionBar();
-        invalidateOptionsMenu();
-        dumpStack();
+    void onSaveRequested(String mimeType, String displayName) {
+        new CreateFinishTask(mimeType, displayName).executeOnExecutor(getCurrentExecutor());
     }
 
     @Override
-    public void onStackPicked(DocumentStack stack) {
-        try {
-            // Update the restored stack to ensure we have freshest data
-            stack.updateDocuments(getContentResolver());
-
-            mState.stack = stack;
-            mState.stackTouched = true;
-            onCurrentDirectoryChanged(ANIM_SIDE);
-
-        } catch (FileNotFoundException e) {
-            Log.w(TAG, "Failed to restore stack: " + e);
-        }
-    }
-
-    @Override
-    public void onRootPicked(RootInfo root, boolean closeDrawer) {
-        // Clear entire backstack and start in new root
-        mState.stack.root = root;
-        mState.stack.clear();
-        mState.stackTouched = true;
-
-        if (!mRoots.isRecentsRoot(root)) {
-            new PickRootTask(root).executeOnExecutor(getCurrentExecutor());
-        } else {
-            onCurrentDirectoryChanged(ANIM_SIDE);
-        }
-
-        if (closeDrawer) {
-            setRootsDrawerOpen(false);
-        }
-    }
-
-    private class PickRootTask extends AsyncTask<Void, Void, DocumentInfo> {
-        private RootInfo mRoot;
-
-        public PickRootTask(RootInfo root) {
-            mRoot = root;
-        }
-
-        @Override
-        protected DocumentInfo doInBackground(Void... params) {
-            try {
-                final Uri uri = DocumentsContract.buildDocumentUri(
-                        mRoot.authority, mRoot.documentId);
-                return DocumentInfo.fromUri(getContentResolver(), uri);
-            } catch (FileNotFoundException e) {
-                Log.w(TAG, "Failed to find root", e);
-                return null;
-            }
-        }
-
-        @Override
-        protected void onPostExecute(DocumentInfo result) {
-            if (result != null) {
-                mState.stack.push(result);
-                mState.stackTouched = true;
-                onCurrentDirectoryChanged(ANIM_SIDE);
-            }
-        }
-    }
-
-    @Override
-    public void onAppPicked(ResolveInfo info) {
-        final Intent intent = new Intent(getIntent());
-        intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT);
-        intent.setComponent(new ComponentName(
-                info.activityInfo.applicationInfo.packageName, info.activityInfo.name));
-        startActivityForResult(intent, CODE_FORWARD);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        Log.d(TAG, "onActivityResult() code=" + resultCode);
-
-        // Only relay back results when not canceled; otherwise stick around to
-        // let the user pick another app/backend.
-        if (requestCode == CODE_FORWARD && resultCode != RESULT_CANCELED) {
-
-            // Remember that we last picked via external app
-            final String packageName = getCallingPackageMaybeExtra();
-            final ContentValues values = new ContentValues();
-            values.put(ResumeColumns.EXTERNAL, 1);
-            getContentResolver().insert(RecentsProvider.buildResume(packageName), values);
-
-            // Pass back result to original caller
-            setResult(resultCode, data);
-            finish();
-        } else {
-            super.onActivityResult(requestCode, resultCode, data);
-        }
+    void onRootPicked(RootInfo root) {
+        super.onRootPicked(root);
+        setRootsDrawerOpen(false);
     }
 
     @Override
@@ -1076,17 +659,6 @@
         }
     }
 
-    @Override
-    public void onSaveRequested(DocumentInfo replaceTarget) {
-        new ExistingFinishTask(replaceTarget.derivedUri).executeOnExecutor(getCurrentExecutor());
-    }
-
-    @Override
-    public void onSaveRequested(String mimeType, String displayName) {
-        new CreateFinishTask(mimeType, displayName).executeOnExecutor(getCurrentExecutor());
-    }
-
-    @Override
     public void onPickRequested(DocumentInfo pickTarget) {
         Uri result;
         if (mState.action == ACTION_OPEN_TREE) {
@@ -1101,7 +673,8 @@
         new PickFinishTask(result).executeOnExecutor(getCurrentExecutor());
     }
 
-    private void saveStackBlocking() {
+    @Override
+    void saveStackBlocking() {
         final ContentResolver resolver = getContentResolver();
         final ContentValues values = new ContentValues();
 
@@ -1124,7 +697,8 @@
         resolver.insert(RecentsProvider.buildResume(packageName), values);
     }
 
-    private void onFinished(Uri... uris) {
+    @Override
+    void onTaskFinished(Uri... uris) {
         Log.d(TAG, "onFinished() " + Arrays.toString(uris));
 
         final Intent intent = new Intent();
@@ -1159,7 +733,52 @@
         finish();
     }
 
-    private class CreateFinishTask extends AsyncTask<Void, Void, Uri> {
+    public static DocumentsActivity get(Fragment fragment) {
+        return (DocumentsActivity) fragment.getActivity();
+    }
+
+    private final class PickFinishTask extends AsyncTask<Void, Void, Void> {
+        private final Uri mUri;
+
+        public PickFinishTask(Uri uri) {
+            mUri = uri;
+        }
+
+        @Override
+        protected Void doInBackground(Void... params) {
+            saveStackBlocking();
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Void result) {
+            onTaskFinished(mUri);
+        }
+    }
+
+    final class ExistingFinishTask extends AsyncTask<Void, Void, Void> {
+        private final Uri[] mUris;
+
+        public ExistingFinishTask(Uri... uris) {
+            mUris = uris;
+        }
+
+        @Override
+        protected Void doInBackground(Void... params) {
+            saveStackBlocking();
+            return null;
+        }
+
+        @Override
+        protected void onPostExecute(Void result) {
+            onTaskFinished(mUris);
+        }
+    }
+
+    /**
+     * Task that creates a new document in the background.
+     */
+    final class CreateFinishTask extends AsyncTask<Void, Void, Uri> {
         private final String mMimeType;
         private final String mDisplayName;
 
@@ -1201,7 +820,7 @@
         @Override
         protected void onPostExecute(Uri result) {
             if (result != null) {
-                onFinished(result);
+                onTaskFinished(result);
             } else {
                 Toast.makeText(DocumentsActivity.this, R.string.save_error, Toast.LENGTH_SHORT)
                         .show();
@@ -1210,50 +829,4 @@
             setPending(false);
         }
     }
-
-    private class ExistingFinishTask extends AsyncTask<Void, Void, Void> {
-        private final Uri[] mUris;
-
-        public ExistingFinishTask(Uri... uris) {
-            mUris = uris;
-        }
-
-        @Override
-        protected Void doInBackground(Void... params) {
-            saveStackBlocking();
-            return null;
-        }
-
-        @Override
-        protected void onPostExecute(Void result) {
-            onFinished(mUris);
-        }
-    }
-
-    private class PickFinishTask extends AsyncTask<Void, Void, Void> {
-        private final Uri mUri;
-
-        public PickFinishTask(Uri uri) {
-            mUri = uri;
-        }
-
-        @Override
-        protected Void doInBackground(Void... params) {
-            saveStackBlocking();
-            return null;
-        }
-
-        @Override
-        protected void onPostExecute(Void result) {
-            onFinished(mUri);
-        }
-    }
-
-    private void dumpStack() {
-        Log.d(TAG, "Current stack: ");
-        Log.d(TAG, " * " + mState.stack.root);
-        for (DocumentInfo doc : mState.stack) {
-            Log.d(TAG, " +-- " + doc);
-        }
-    }
 }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/FailureDialogFragment.java b/packages/DocumentsUI/src/com/android/documentsui/FailureDialogFragment.java
index 1748c9c..00b0f78 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/FailureDialogFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/FailureDialogFragment.java
@@ -20,6 +20,7 @@
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.DialogFragment;
+import android.app.Fragment;
 import android.app.FragmentManager;
 import android.app.FragmentTransaction;
 import android.content.DialogInterface;
@@ -27,7 +28,9 @@
 import android.os.Bundle;
 import android.text.Html;
 
+import com.android.documentsui.CopyService;
 import com.android.documentsui.model.DocumentInfo;
+import com.android.documentsui.model.DocumentStack;
 
 import java.io.FileNotFoundException;
 import java.util.ArrayList;
@@ -40,9 +43,10 @@
     private static final String TAG = "FailureDialogFragment";
 
     private int mFailure;
-    private ArrayList<Uri> mFailedSrcList;
+    private ArrayList<DocumentInfo> mFailedSrcList;
 
-    public static void show(FragmentManager fm, int failure, ArrayList<Uri> failedSrcList) {
+    public static void show(FragmentManager fm, int failure,
+            ArrayList<DocumentInfo> failedSrcList, DocumentStack dstStack) {
         // TODO: Add support for other failures than copy.
         if (failure != CopyService.FAILURE_COPY) {
             return;
@@ -62,7 +66,11 @@
 
     @Override
     public void onClick(DialogInterface dialog, int whichButton) {
-      // TODO: Pass mFailure and mFailedSrcList to the parent fragment.
+      if (whichButton == DialogInterface.BUTTON_POSITIVE) {
+          CopyService.start(getActivity(), mFailedSrcList,
+                  (DocumentStack) getActivity().getIntent().getParcelableExtra(
+                          CopyService.EXTRA_STACK));
+      }
     }
 
     @Override
@@ -73,27 +81,17 @@
         mFailedSrcList = getArguments().getParcelableArrayList(CopyService.EXTRA_SRC_LIST);
 
         final StringBuilder list = new StringBuilder("<p>");
-        for (Uri documentUri : mFailedSrcList) {
-            try {
-                final DocumentInfo documentInfo = DocumentInfo.fromUri(
-                    getActivity().getContentResolver(), documentUri);
-                list.append(String.format("&#8226; %s<br>", documentInfo.displayName));
-            }
-            catch (FileNotFoundException ignore) {
-                // Source file most probably gone.
-            }
+        for (DocumentInfo documentInfo : mFailedSrcList) {
+            list.append(String.format("&#8226; %s<br>", documentInfo.displayName));
         }
         list.append("</p>");
         final String message = String.format(getString(R.string.copy_failure_alert_content),
                 list.toString());
 
         return new AlertDialog.Builder(getActivity())
-            .setTitle(getString(R.string.copy_failure_alert_title))
             .setMessage(Html.fromHtml(message))
-            // TODO: Implement retrying the copy operation.
             .setPositiveButton(R.string.retry, this)
             .setNegativeButton(android.R.string.cancel, this)
-            .setIcon(android.R.drawable.ic_dialog_alert)
             .create();
     }
 }
diff --git a/packages/DocumentsUI/src/com/android/documentsui/PickFragment.java b/packages/DocumentsUI/src/com/android/documentsui/PickFragment.java
index 7ea51b9..e899379 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/PickFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/PickFragment.java
@@ -75,7 +75,7 @@
     private View.OnClickListener mPickListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {
-            final BaseActivity activity = BaseActivity.get(PickFragment.this);
+            final DocumentsActivity activity = DocumentsActivity.get(PickFragment.this);
             activity.onPickRequested(mPickTarget);
         }
     };
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java
index 26aecc5..e11d7d9 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RecentsCreateFragment.java
@@ -109,8 +109,9 @@
                 mAdapter.swapStacks(data);
 
                 // When launched into empty recents, show drawer
-                if (mAdapter.isEmpty() && !state.stackTouched) {
-                    ((BaseActivity) context).setRootsDrawerOpen(true);
+                if (mAdapter.isEmpty() && !state.stackTouched &&
+                        context instanceof DocumentsActivity) {
+                    ((DocumentsActivity) context).setRootsDrawerOpen(true);
                 }
             }
 
diff --git a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
index ed5e123..fd67a77 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/RootsFragment.java
@@ -174,11 +174,12 @@
     private OnItemClickListener mItemListener = new OnItemClickListener() {
         @Override
         public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
-            final BaseActivity activity = BaseActivity.get(RootsFragment.this);
-            final Item item = mAdapter.getItem(position);
+            Item item = mAdapter.getItem(position);
             if (item instanceof RootItem) {
-                activity.onRootPicked(((RootItem) item).root, true);
+                BaseActivity activity = BaseActivity.get(RootsFragment.this);
+                activity.onRootPicked(((RootItem) item).root);
             } else if (item instanceof AppItem) {
+                DocumentsActivity activity = DocumentsActivity.get(RootsFragment.this);
                 activity.onAppPicked(((AppItem) item).info);
             } else {
                 throw new IllegalStateException("Unknown root: " + item);
diff --git a/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java b/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
index a13fccc..ce98db2 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/SaveFragment.java
@@ -113,7 +113,7 @@
     private View.OnClickListener mSaveListener = new View.OnClickListener() {
         @Override
         public void onClick(View v) {
-            final BaseActivity activity = BaseActivity.get(SaveFragment.this);
+            final DocumentsActivity activity = DocumentsActivity.get(SaveFragment.this);
             if (mReplaceTarget != null) {
                 activity.onSaveRequested(mReplaceTarget);
             } else {
diff --git a/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java b/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java
index 976f21d..cad277d 100644
--- a/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java
+++ b/packages/DocumentsUI/src/com/android/documentsui/StandaloneActivity.java
@@ -16,50 +16,29 @@
 
 package com.android.documentsui;
 
-
 import static com.android.documentsui.DirectoryFragment.ANIM_DOWN;
 import static com.android.documentsui.DirectoryFragment.ANIM_NONE;
-import static com.android.documentsui.DirectoryFragment.ANIM_SIDE;
 import static com.android.documentsui.DirectoryFragment.ANIM_UP;
 import android.app.Activity;
-import android.app.Fragment;
 import android.app.FragmentManager;
 import android.content.ActivityNotFoundException;
 import android.content.ClipData;
-import android.content.ComponentName;
-import android.content.ContentProviderClient;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.ResolveInfo;
-import android.content.res.Resources;
-import android.database.Cursor;
 import android.graphics.Point;
 import android.net.Uri;
-import android.os.AsyncTask;
 import android.os.Bundle;
-import android.os.Debug;
 import android.provider.DocumentsContract;
-import android.support.v4.app.ActionBarDrawerToggle;
-import android.support.v4.widget.DrawerLayout;
-import android.support.v4.widget.DrawerLayout.DrawerListener;
+import android.provider.DocumentsContract.Root;
 import android.util.Log;
-import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuItem;
-import android.view.MenuItem.OnActionExpandListener;
 import android.view.View;
-import android.view.ViewGroup;
 import android.view.WindowManager;
-import android.widget.AdapterView;
-import android.widget.AdapterView.OnItemSelectedListener;
 import android.widget.BaseAdapter;
-import android.widget.ImageView;
-import android.widget.SearchView;
-import android.widget.SearchView.OnQueryTextListener;
 import android.widget.Spinner;
-import android.widget.TextView;
 import android.widget.Toast;
 import android.widget.Toolbar;
 
@@ -70,77 +49,49 @@
 import com.android.documentsui.model.DurableUtils;
 import com.android.documentsui.model.RootInfo;
 
-import libcore.io.IoUtils;
-
-import java.io.FileNotFoundException;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Collection;
 import java.util.List;
-import java.util.concurrent.Executor;
 
+/**
+ * Activity providing a directly launchable file management activity.
+ */
 public class StandaloneActivity extends BaseActivity {
     public static final String TAG = "StandaloneFileManagement";
 
-    private static final String EXTRA_STATE = "state";
-
-    private static final int CODE_FORWARD = 42;
-
-    private SearchView mSearchView;
-
     private Toolbar mToolbar;
     private Spinner mToolbarStack;
-
     private Toolbar mRootsToolbar;
-
-    private ActionBarDrawerToggle mDrawerToggle;
-
     private DirectoryContainerView mDirectoryContainer;
-
-    private boolean mIgnoreNextNavigation;
-    private boolean mIgnoreNextClose;
-    private boolean mIgnoreNextCollapse;
-
-    private boolean mSearchExpanded;
-
-    private RootsCache mRoots;
     private State mState;
+    private ItemSelectedListener mStackListener;
+    private BaseAdapter mStackAdapter;
+
+    public StandaloneActivity() {
+        super(TAG);
+    }
 
     @Override
     public void onCreate(Bundle icicle) {
-        // Debug.waitForDebugger();
         super.onCreate(icicle);
 
-        mRoots = DocumentsApplication.getRootsCache(this);
-
         setResult(Activity.RESULT_CANCELED);
         setContentView(R.layout.activity);
 
         final Context context = this;
-        final Resources res = getResources();
-
-        // Strongly define our horizontal dimension; we leave vertical as
-        final WindowManager.LayoutParams a = getWindow().getAttributes();
-
-        final Point size = new Point();
-        getWindowManager().getDefaultDisplay().getSize(size);
-        // a.width = (int) res.getFraction(R.dimen.dialog_width, size.x, size.x);
-
-        getWindow().setAttributes(a);
 
         mDirectoryContainer = (DirectoryContainerView) findViewById(R.id.container_directory);
 
-        if (icicle != null) {
-            mState = icicle.getParcelable(EXTRA_STATE);
-        } else {
-            buildDefaultState();
-        }
+        mState = (icicle != null)
+            ? icicle.<State>getParcelable(EXTRA_STATE)
+            : buildDefaultState();
 
         mToolbar = (Toolbar) findViewById(R.id.toolbar);
         mToolbar.setTitleTextAppearance(context,
                 android.R.style.TextAppearance_DeviceDefault_Widget_ActionBar_Title);
 
+        mStackAdapter = new StackAdapter();
+        mStackListener = new ItemSelectedListener();
         mToolbarStack = (Spinner) findViewById(R.id.stack);
         mToolbarStack.setOnItemSelectedListener(mStackListener);
 
@@ -155,99 +106,48 @@
         RootsFragment.show(getFragmentManager(), null);
         if (!mState.restored) {
             new RestoreStackTask().execute();
+
+            // Show a failure dialog if there was a failed operation.
             final Intent intent = getIntent();
+            final DocumentStack dstStack = intent.getParcelableExtra(CopyService.EXTRA_STACK);
             final int failure = intent.getIntExtra(CopyService.EXTRA_FAILURE, 0);
             if (failure != 0) {
-                final ArrayList<Uri> failedSrcList = intent.getParcelableArrayListExtra(
-                        CopyService.EXTRA_SRC_LIST);
-                FailureDialogFragment.show(getFragmentManager(), failure, failedSrcList);
+                final ArrayList<DocumentInfo> failedSrcList =
+                        intent.getParcelableArrayListExtra(CopyService.EXTRA_SRC_LIST);
+                FailureDialogFragment.show(getFragmentManager(), failure, failedSrcList, dstStack);
             }
         } else {
             onCurrentDirectoryChanged(ANIM_NONE);
         }
     }
 
-    private void buildDefaultState() {
-        mState = new State();
+    private State buildDefaultState() {
+        State state = new State();
 
         final Intent intent = getIntent();
-        mState.action = State.ACTION_BROWSE_ALL;
-        mState.acceptMimes = new String[] { "*/*" };
-        mState.allowMultiple = true;
-        mState.acceptMimes = new String[] { intent.getType() };
-        mState.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
-        mState.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false);
-        mState.showAdvanced = mState.forceAdvanced
+        state.action = State.ACTION_BROWSE_ALL;
+        state.acceptMimes = new String[] { "*/*" };
+        state.allowMultiple = true;
+        state.acceptMimes = new String[] { intent.getType() };
+        state.localOnly = intent.getBooleanExtra(Intent.EXTRA_LOCAL_ONLY, false);
+        state.forceAdvanced = intent.getBooleanExtra(DocumentsContract.EXTRA_SHOW_ADVANCED, false);
+        state.showAdvanced = state.forceAdvanced
                 | LocalPreferences.getDisplayAdvancedDevices(this);
-        mState.showSize = true;
+        state.showSize = true;
         final DocumentStack stack = intent.getParcelableExtra(CopyService.EXTRA_STACK);
         if (stack != null)
-            mState.stack = stack;
-    }
+            state.stack = stack;
 
-    private class RestoreStackTask extends AsyncTask<Void, Void, Void> {
-        private volatile boolean mRestoredStack;
-        private volatile boolean mExternal;
-
-        @Override
-        protected Void doInBackground(Void... params) {
-            // Restore last stack for calling package
-            final String packageName = getCallingPackageMaybeExtra();
-            final Cursor cursor = getContentResolver()
-                    .query(RecentsProvider.buildResume(packageName), null, null, null, null);
-            try {
-                if (cursor.moveToFirst()) {
-                    mExternal = cursor.getInt(cursor.getColumnIndex(ResumeColumns.EXTERNAL)) != 0;
-                    final byte[] rawStack = cursor.getBlob(
-                            cursor.getColumnIndex(ResumeColumns.STACK));
-                    DurableUtils.readFromArray(rawStack, mState.stack);
-                    mRestoredStack = true;
-                }
-            } catch (IOException e) {
-                Log.w(TAG, "Failed to resume: " + e);
-            } finally {
-                IoUtils.closeQuietly(cursor);
-            }
-
-            if (mRestoredStack) {
-                // Update the restored stack to ensure we have freshest data
-                final Collection<RootInfo> matchingRoots = mRoots.getMatchingRootsBlocking(mState);
-                try {
-                    mState.stack.updateRoot(matchingRoots);
-                    mState.stack.updateDocuments(getContentResolver());
-                } catch (FileNotFoundException e) {
-                    Log.w(TAG, "Failed to restore stack: " + e);
-                    mState.stack.reset();
-                    mRestoredStack = false;
-                }
-            }
-
-            return null;
-        }
-
-        @Override
-        protected void onPostExecute(Void result) {
-            if (isDestroyed()) return;
-            mState.restored = true;
-            onCurrentDirectoryChanged(ANIM_NONE);
-        }
+        return state;
     }
 
     @Override
     protected void onPostCreate(Bundle savedInstanceState) {
         super.onPostCreate(savedInstanceState);
-        if (mDrawerToggle != null) {
-            mDrawerToggle.syncState();
-        }
         updateActionBar();
     }
 
     @Override
-    public void setRootsDrawerOpen(boolean open) {
-        Log.w(TAG, "Trying to change state of roots drawer to > " + (open ? "open" : "closed"));
-      // throw new UnsupportedOperationException();
-    }
-
     public void updateActionBar() {
         final RootInfo root = getCurrentRoot();
         mToolbar.setNavigationIcon(
@@ -255,7 +155,7 @@
         mToolbar.setNavigationContentDescription(R.string.drawer_open);
         mToolbar.setNavigationOnClickListener(null);
 
-        if (mSearchExpanded) {
+        if (mSearchManager.isExpanded()) {
             mToolbar.setTitle(null);
             mToolbarStack.setVisibility(View.GONE);
             mToolbarStack.setAdapter(null);
@@ -269,7 +169,7 @@
                 mToolbarStack.setVisibility(View.VISIBLE);
                 mToolbarStack.setAdapter(mStackAdapter);
 
-                mIgnoreNextNavigation = true;
+                mStackListener.mIgnoreNextNavigation = true;
                 mToolbarStack.setSelection(mStackAdapter.getCount() - 1);
             }
         }
@@ -277,220 +177,57 @@
 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        getMenuInflater().inflate(R.menu.activity, menu);
+        boolean showMenu = super.onCreateOptionsMenu(menu);
 
-        for (int i = 0; i < menu.size(); i++) {
-            final MenuItem item = menu.getItem(i);
-            switch (item.getItemId()) {
-                case R.id.menu_advanced:
-                case R.id.menu_file_size:
-                    break;
-                default:
-                    item.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
-            }
-        }
-
-        final MenuItem searchMenu = menu.findItem(R.id.menu_search);
-        mSearchView = (SearchView) searchMenu.getActionView();
-        mSearchView.setOnQueryTextListener(new OnQueryTextListener() {
-            @Override
-            public boolean onQueryTextSubmit(String query) {
-                mSearchExpanded = true;
-                mState.currentSearch = query;
-                mSearchView.clearFocus();
-                onCurrentDirectoryChanged(ANIM_NONE);
-                return true;
-            }
-
-            @Override
-            public boolean onQueryTextChange(String newText) {
-                return false;
-            }
-        });
-
-        searchMenu.setOnActionExpandListener(new OnActionExpandListener() {
-            @Override
-            public boolean onMenuItemActionExpand(MenuItem item) {
-                mSearchExpanded = true;
-                updateActionBar();
-                return true;
-            }
-
-            @Override
-            public boolean onMenuItemActionCollapse(MenuItem item) {
-                mSearchExpanded = false;
-                if (mIgnoreNextCollapse) {
-                    mIgnoreNextCollapse = false;
-                    return true;
-                }
-
-                mState.currentSearch = null;
-                onCurrentDirectoryChanged(ANIM_NONE);
-                return true;
-            }
-        });
-
-        mSearchView.setOnCloseListener(new SearchView.OnCloseListener() {
-            @Override
-            public boolean onClose() {
-                mSearchExpanded = false;
-                if (mIgnoreNextClose) {
-                    mIgnoreNextClose = false;
-                    return false;
-                }
-
-                mState.currentSearch = null;
-                onCurrentDirectoryChanged(ANIM_NONE);
-                return false;
-            }
-        });
-
-        return true;
+        expandMenus(menu);
+        return showMenu;
     }
 
     @Override
     public boolean onPrepareOptionsMenu(Menu menu) {
         super.onPrepareOptionsMenu(menu);
 
-        final FragmentManager fm = getFragmentManager();
-
         final RootInfo root = getCurrentRoot();
         final DocumentInfo cwd = getCurrentDirectory();
 
         final MenuItem createDir = menu.findItem(R.id.menu_create_dir);
-        final MenuItem search = menu.findItem(R.id.menu_search);
         final MenuItem sort = menu.findItem(R.id.menu_sort);
         final MenuItem sortSize = menu.findItem(R.id.menu_sort_size);
         final MenuItem grid = menu.findItem(R.id.menu_grid);
         final MenuItem list = menu.findItem(R.id.menu_list);
         final MenuItem advanced = menu.findItem(R.id.menu_advanced);
         final MenuItem fileSize = menu.findItem(R.id.menu_file_size);
+        final MenuItem settings = menu.findItem(R.id.menu_settings);
 
-        sort.setVisible(cwd != null);
         grid.setVisible(mState.derivedMode != State.MODE_GRID);
         list.setVisible(mState.derivedMode != State.MODE_LIST);
 
-        if (mState.currentSearch != null) {
-            // Search uses backend ranking; no sorting
-            sort.setVisible(false);
+        mSearchManager.update(root);
 
-            search.expandActionView();
-
-            mSearchView.setIconified(false);
-            mSearchView.clearFocus();
-            mSearchView.setQuery(mState.currentSearch, false);
-        } else {
-            mIgnoreNextClose = true;
-            mSearchView.setIconified(true);
-            mSearchView.clearFocus();
-
-            mIgnoreNextCollapse = true;
-            search.collapseActionView();
-        }
+        sort.setVisible(cwd != null && !mSearchManager.isSearching());
 
         // Only sort by size when visible
         sortSize.setVisible(mState.showSize);
 
-        fileSize.setVisible(true);
-        search.setVisible(true);
-        createDir.setVisible(true);
-        advanced.setVisible(true);
+        createDir.setVisible(cwd != null
+                && cwd.isCreateSupported()
+                && !mSearchManager.isSearching()
+                && !root.isDownloads());
+
+        fileSize.setVisible(cwd != null);
+        advanced.setVisible(cwd != null);
 
         advanced.setTitle(LocalPreferences.getDisplayAdvancedDevices(this)
                 ? R.string.menu_advanced_hide : R.string.menu_advanced_show);
         fileSize.setTitle(LocalPreferences.getDisplayFileSize(this)
                 ? R.string.menu_file_size_hide : R.string.menu_file_size_show);
 
+        settings.setVisible((root.flags & Root.FLAG_HAS_SETTINGS) != 0);
 
         return true;
     }
 
     @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        if (mDrawerToggle != null && mDrawerToggle.onOptionsItemSelected(item)) {
-            return true;
-        }
-
-        final int id = item.getItemId();
-        if (id == android.R.id.home) {
-            onBackPressed();
-            return true;
-        } else if (id == R.id.menu_create_dir) {
-            CreateDirectoryFragment.show(getFragmentManager());
-            return true;
-        } else if (id == R.id.menu_search) {
-            return false;
-        } else if (id == R.id.menu_sort_name) {
-            setUserSortOrder(State.SORT_ORDER_DISPLAY_NAME);
-            return true;
-        } else if (id == R.id.menu_sort_date) {
-            setUserSortOrder(State.SORT_ORDER_LAST_MODIFIED);
-            return true;
-        } else if (id == R.id.menu_sort_size) {
-            setUserSortOrder(State.SORT_ORDER_SIZE);
-            return true;
-        } else if (id == R.id.menu_grid) {
-            setUserMode(State.MODE_GRID);
-            return true;
-        } else if (id == R.id.menu_list) {
-            setUserMode(State.MODE_LIST);
-            return true;
-        } else if (id == R.id.menu_advanced) {
-            setDisplayAdvancedDevices(!LocalPreferences.getDisplayAdvancedDevices(this));
-            return true;
-        } else if (id == R.id.menu_file_size) {
-            setDisplayFileSize(!LocalPreferences.getDisplayFileSize(this));
-            return true;
-        } else {
-            return super.onOptionsItemSelected(item);
-        }
-    }
-
-    private void setDisplayAdvancedDevices(boolean display) {
-        LocalPreferences.setDisplayAdvancedDevices(this, display);
-        mState.showAdvanced = mState.forceAdvanced | display;
-        RootsFragment.get(getFragmentManager()).onDisplayStateChanged();
-        invalidateOptionsMenu();
-    }
-
-    private void setDisplayFileSize(boolean display) {
-        LocalPreferences.setDisplayFileSize(this, display);
-        mState.showSize = display;
-        DirectoryFragment.get(getFragmentManager()).onDisplayStateChanged();
-        invalidateOptionsMenu();
-    }
-
-    @Override
-    public void onStateChanged() {
-        invalidateOptionsMenu();
-    }
-
-    /**
-     * Set state sort order based on explicit user action.
-     */
-    private void setUserSortOrder(int sortOrder) {
-        mState.userSortOrder = sortOrder;
-        DirectoryFragment.get(getFragmentManager()).onUserSortOrderChanged();
-    }
-
-    /**
-     * Set state mode based on explicit user action.
-     */
-    private void setUserMode(int mode) {
-        mState.userMode = mode;
-        DirectoryFragment.get(getFragmentManager()).onUserModeChanged();
-    }
-
-    @Override
-    public void setPending(boolean pending) {
-        final SaveFragment save = SaveFragment.get(getFragmentManager());
-        if (save != null) {
-            save.setPending(pending);
-        }
-    }
-
-    @Override
     public void onBackPressed() {
         if (!mState.stackTouched) {
             super.onBackPressed();
@@ -507,130 +244,12 @@
     }
 
     @Override
-    protected void onSaveInstanceState(Bundle state) {
-        super.onSaveInstanceState(state);
-        state.putParcelable(EXTRA_STATE, mState);
-    }
-
-    @Override
-    protected void onRestoreInstanceState(Bundle state) {
-        super.onRestoreInstanceState(state);
-    }
-
-    private BaseAdapter mStackAdapter = new BaseAdapter() {
-        @Override
-        public int getCount() {
-            return mState.stack.size();
-        }
-
-        @Override
-        public DocumentInfo getItem(int position) {
-            return mState.stack.get(mState.stack.size() - position - 1);
-        }
-
-        @Override
-        public long getItemId(int position) {
-            return position;
-        }
-
-        @Override
-        public View getView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = LayoutInflater.from(parent.getContext())
-                        .inflate(R.layout.item_subdir_title, parent, false);
-            }
-
-            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
-            final DocumentInfo doc = getItem(position);
-
-            if (position == 0) {
-                final RootInfo root = getCurrentRoot();
-                title.setText(root.title);
-            } else {
-                title.setText(doc.displayName);
-            }
-
-            return convertView;
-        }
-
-        @Override
-        public View getDropDownView(int position, View convertView, ViewGroup parent) {
-            if (convertView == null) {
-                convertView = LayoutInflater.from(parent.getContext())
-                        .inflate(R.layout.item_subdir, parent, false);
-            }
-
-            final ImageView subdir = (ImageView) convertView.findViewById(R.id.subdir);
-            final TextView title = (TextView) convertView.findViewById(android.R.id.title);
-            final DocumentInfo doc = getItem(position);
-
-            if (position == 0) {
-                final RootInfo root = getCurrentRoot();
-                title.setText(root.title);
-                subdir.setVisibility(View.GONE);
-            } else {
-                title.setText(doc.displayName);
-                subdir.setVisibility(View.VISIBLE);
-            }
-
-            return convertView;
-        }
-    };
-
-    private OnItemSelectedListener mStackListener = new OnItemSelectedListener() {
-        @Override
-        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
-            if (mIgnoreNextNavigation) {
-                mIgnoreNextNavigation = false;
-                return;
-            }
-
-            while (mState.stack.size() > position + 1) {
-                mState.stackTouched = true;
-                mState.stack.pop();
-            }
-            onCurrentDirectoryChanged(ANIM_UP);
-        }
-
-        @Override
-        public void onNothingSelected(AdapterView<?> parent) {
-            // Ignored
-        }
-    };
-
-    @Override
-    public RootInfo getCurrentRoot() {
-        if (mState.stack.root != null) {
-            return mState.stack.root;
-        } else {
-            return mRoots.getRecentsRoot();
-        }
-    }
-
-    public DocumentInfo getCurrentDirectory() {
-        return mState.stack.peek();
-    }
-
-    private String getCallingPackageMaybeExtra() {
-        final String extra = getIntent().getStringExtra(DocumentsContract.EXTRA_PACKAGE_NAME);
-        return (extra != null) ? extra : getCallingPackage();
-    }
-
-    public Executor getCurrentExecutor() {
-        final DocumentInfo cwd = getCurrentDirectory();
-        if (cwd != null && cwd.authority != null) {
-            return ProviderExecutor.forAuthority(cwd.authority);
-        } else {
-            return AsyncTask.THREAD_POOL_EXECUTOR;
-        }
-    }
-
-    @Override
     public State getDisplayState() {
         return mState;
     }
 
-    private void onCurrentDirectoryChanged(int anim) {
+    @Override
+    void onDirectoryChanged(int anim) {
         final FragmentManager fm = getFragmentManager();
         final RootInfo root = getCurrentRoot();
         final DocumentInfo cwd = getCurrentDirectory();
@@ -654,109 +273,10 @@
                 DirectoryFragment.showNormal(fm, root, cwd, anim);
             }
         }
-
-        final RootsFragment roots = RootsFragment.get(fm);
-        if (roots != null) {
-            roots.onCurrentRootChanged();
-        }
-
-        updateActionBar();
-        invalidateOptionsMenu();
-        dumpStack();
-    }
-
-    @Override
-    public void onStackPicked(DocumentStack stack) {
-        try {
-            // Update the restored stack to ensure we have freshest data
-            stack.updateDocuments(getContentResolver());
-
-            mState.stack = stack;
-            mState.stackTouched = true;
-            onCurrentDirectoryChanged(ANIM_SIDE);
-
-        } catch (FileNotFoundException e) {
-            Log.w(TAG, "Failed to restore stack: " + e);
-        }
-    }
-
-    @Override
-    public void onRootPicked(RootInfo root, boolean closeDrawer) {
-        // Clear entire backstack and start in new root
-        mState.stack.root = root;
-        mState.stack.clear();
-        mState.stackTouched = true;
-
-        if (!mRoots.isRecentsRoot(root)) {
-            new PickRootTask(root).executeOnExecutor(getCurrentExecutor());
-        } else {
-            onCurrentDirectoryChanged(ANIM_SIDE);
-        }
-    }
-
-    private class PickRootTask extends AsyncTask<Void, Void, DocumentInfo> {
-        private RootInfo mRoot;
-
-        public PickRootTask(RootInfo root) {
-            mRoot = root;
-        }
-
-        @Override
-        protected DocumentInfo doInBackground(Void... params) {
-            try {
-                final Uri uri = DocumentsContract.buildDocumentUri(
-                        mRoot.authority, mRoot.documentId);
-                return DocumentInfo.fromUri(getContentResolver(), uri);
-            } catch (FileNotFoundException e) {
-                Log.w(TAG, "Failed to find root", e);
-                return null;
-            }
-        }
-
-        @Override
-        protected void onPostExecute(DocumentInfo result) {
-            if (result != null) {
-                mState.stack.push(result);
-                mState.stackTouched = true;
-                onCurrentDirectoryChanged(ANIM_SIDE);
-            }
-        }
-    }
-
-    @Override
-    public void onAppPicked(ResolveInfo info) {
-        final Intent intent = new Intent(getIntent());
-        intent.setFlags(intent.getFlags() & ~Intent.FLAG_ACTIVITY_FORWARD_RESULT);
-        intent.setComponent(new ComponentName(
-                info.activityInfo.applicationInfo.packageName, info.activityInfo.name));
-        startActivityForResult(intent, CODE_FORWARD);
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        Log.d(TAG, "onActivityResult() code=" + resultCode);
-
-        // Only relay back results when not canceled; otherwise stick around to
-        // let the user pick another app/backend.
-        if (requestCode == CODE_FORWARD && resultCode != RESULT_CANCELED) {
-
-            // Remember that we last picked via external app
-            final String packageName = getCallingPackageMaybeExtra();
-            final ContentValues values = new ContentValues();
-            values.put(ResumeColumns.EXTERNAL, 1);
-            getContentResolver().insert(RecentsProvider.buildResume(packageName), values);
-
-            // Pass back result to original caller
-            setResult(resultCode, data);
-            finish();
-        } else {
-            super.onActivityResult(requestCode, resultCode, data);
-        }
     }
 
     @Override
     public void onDocumentPicked(DocumentInfo doc) {
-        final FragmentManager fm = getFragmentManager();
         if (doc.isDirectory()) {
             mState.stack.push(doc);
             mState.stackTouched = true;
@@ -780,27 +300,12 @@
     }
 
     @Override
-    public void onSaveRequested(DocumentInfo replaceTarget) {
-        new ExistingFinishTask(replaceTarget.derivedUri).executeOnExecutor(getCurrentExecutor());
-    }
-
-    @Override
-    public void onSaveRequested(String mimeType, String displayName) {
-        new CreateFinishTask(mimeType, displayName).executeOnExecutor(getCurrentExecutor());
-    }
-
-    @Override
-    public void onPickRequested(DocumentInfo pickTarget) {
-        final Uri viaUri = DocumentsContract.buildTreeDocumentUri(pickTarget.authority,
-                pickTarget.documentId);
-        new PickFinishTask(viaUri).executeOnExecutor(getCurrentExecutor());
-    }
-
-    private void saveStackBlocking() {
+    void saveStackBlocking() {
         final ContentResolver resolver = getContentResolver();
         final ContentValues values = new ContentValues();
 
-        final byte[] rawStack = DurableUtils.writeToArrayOrNull(mState.stack);
+        final byte[] rawStack = DurableUtils.writeToArrayOrNull(
+                getDisplayState().stack);
 
         // Remember location for next app launch
         final String packageName = getCallingPackageMaybeExtra();
@@ -810,7 +315,8 @@
         resolver.insert(RecentsProvider.buildResume(packageName), values);
     }
 
-    private void onFinished(Uri... uris) {
+    @Override
+    void onTaskFinished(Uri... uris) {
         Log.d(TAG, "onFinished() " + Arrays.toString(uris));
 
         final Intent intent = new Intent();
@@ -832,106 +338,4 @@
         setResult(Activity.RESULT_OK, intent);
         finish();
     }
-
-    private class CreateFinishTask extends AsyncTask<Void, Void, Uri> {
-        private final String mMimeType;
-        private final String mDisplayName;
-
-        public CreateFinishTask(String mimeType, String displayName) {
-            mMimeType = mimeType;
-            mDisplayName = displayName;
-        }
-
-        @Override
-        protected void onPreExecute() {
-            setPending(true);
-        }
-
-        @Override
-        protected Uri doInBackground(Void... params) {
-            final ContentResolver resolver = getContentResolver();
-            final DocumentInfo cwd = getCurrentDirectory();
-
-            ContentProviderClient client = null;
-            Uri childUri = null;
-            try {
-                client = DocumentsApplication.acquireUnstableProviderOrThrow(
-                        resolver, cwd.derivedUri.getAuthority());
-                childUri = DocumentsContract.createDocument(
-                        client, cwd.derivedUri, mMimeType, mDisplayName);
-            } catch (Exception e) {
-                Log.w(TAG, "Failed to create document", e);
-            } finally {
-                ContentProviderClient.releaseQuietly(client);
-            }
-
-            if (childUri != null) {
-                saveStackBlocking();
-            }
-
-            return childUri;
-        }
-
-        @Override
-        protected void onPostExecute(Uri result) {
-            if (result != null) {
-                onFinished(result);
-            } else {
-                Toast.makeText(StandaloneActivity.this, R.string.save_error, Toast.LENGTH_SHORT)
-                        .show();
-            }
-
-            setPending(false);
-        }
-    }
-
-    private class ExistingFinishTask extends AsyncTask<Void, Void, Void> {
-        private final Uri[] mUris;
-
-        public ExistingFinishTask(Uri... uris) {
-            mUris = uris;
-        }
-
-        @Override
-        protected Void doInBackground(Void... params) {
-            saveStackBlocking();
-            return null;
-        }
-
-        @Override
-        protected void onPostExecute(Void result) {
-            onFinished(mUris);
-        }
-    }
-
-    private class PickFinishTask extends AsyncTask<Void, Void, Void> {
-        private final Uri mUri;
-
-        public PickFinishTask(Uri uri) {
-            mUri = uri;
-        }
-
-        @Override
-        protected Void doInBackground(Void... params) {
-            saveStackBlocking();
-            return null;
-        }
-
-        @Override
-        protected void onPostExecute(Void result) {
-            onFinished(mUri);
-        }
-    }
-
-    private void dumpStack() {
-        Log.d(TAG, "Current stack: ");
-        Log.d(TAG, " * " + mState.stack.root);
-        for (DocumentInfo doc : mState.stack) {
-            Log.d(TAG, " +-- " + doc);
-        }
-    }
-
-    public static BaseActivity get(Fragment fragment) {
-        return (BaseActivity) fragment.getActivity();
-    }
 }
diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
index aff57bf..73a723d 100644
--- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
+++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
@@ -45,7 +45,6 @@
 import android.webkit.MimeTypeMap;
 
 import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.IndentingPrintWriter;
 
 import java.io.File;
@@ -55,7 +54,6 @@
 import java.io.PrintWriter;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Objects;
 
 public class ExternalStorageProvider extends DocumentsProvider {
     private static final String TAG = "ExternalStorage";
@@ -327,7 +325,7 @@
             throw new IllegalArgumentException("Parent document isn't a directory");
         }
 
-        final File file = buildUniqueFile(parent, mimeType, displayName);
+        final File file = FileUtils.buildUniqueFile(parent, mimeType, displayName);
         if (Document.MIME_TYPE_DIR.equals(mimeType)) {
             if (!file.mkdir()) {
                 throw new IllegalStateException("Failed to mkdir " + file);
@@ -345,68 +343,6 @@
         return getDocIdForFile(file);
     }
 
-    private static File buildFile(File parent, String name, String ext) {
-        if (TextUtils.isEmpty(ext)) {
-            return new File(parent, name);
-        } else {
-            return new File(parent, name + "." + ext);
-        }
-    }
-
-    @VisibleForTesting
-    public static File buildUniqueFile(File parent, String mimeType, String displayName)
-            throws FileNotFoundException {
-        String name;
-        String ext;
-
-        if (Document.MIME_TYPE_DIR.equals(mimeType)) {
-            name = displayName;
-            ext = null;
-        } else {
-            String mimeTypeFromExt;
-
-            // Extract requested extension from display name
-            final int lastDot = displayName.lastIndexOf('.');
-            if (lastDot >= 0) {
-                name = displayName.substring(0, lastDot);
-                ext = displayName.substring(lastDot + 1);
-                mimeTypeFromExt = MimeTypeMap.getSingleton().getMimeTypeFromExtension(
-                        ext.toLowerCase());
-            } else {
-                name = displayName;
-                ext = null;
-                mimeTypeFromExt = null;
-            }
-
-            if (mimeTypeFromExt == null) {
-                mimeTypeFromExt = "application/octet-stream";
-            }
-
-            final String extFromMimeType = MimeTypeMap.getSingleton().getExtensionFromMimeType(
-                    mimeType);
-            if (Objects.equals(mimeType, mimeTypeFromExt) || Objects.equals(ext, extFromMimeType)) {
-                // Extension maps back to requested MIME type; allow it
-            } else {
-                // No match; insist that create file matches requested MIME
-                name = displayName;
-                ext = extFromMimeType;
-            }
-        }
-
-        File file = buildFile(parent, name, ext);
-
-        // If conflicting file, try adding counter suffix
-        int n = 0;
-        while (file.exists()) {
-            if (n++ >= 32) {
-                throw new FileNotFoundException("Failed to create unique file");
-            }
-            file = buildFile(parent, name + " (" + n + ")", ext);
-        }
-
-        return file;
-    }
-
     @Override
     public String renameDocument(String docId, String displayName) throws FileNotFoundException {
         // Since this provider treats renames as generating a completely new
diff --git a/packages/ExternalStorageProvider/tests/Android.mk b/packages/ExternalStorageProvider/tests/Android.mk
deleted file mode 100644
index 830731a..0000000
--- a/packages/ExternalStorageProvider/tests/Android.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := tests
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner
-
-LOCAL_PACKAGE_NAME := ExternalStorageProviderTests
-LOCAL_INSTRUMENTATION_FOR := ExternalStorageProvider
-
-LOCAL_CERTIFICATE := platform
-
-include $(BUILD_PACKAGE)
diff --git a/packages/ExternalStorageProvider/tests/AndroidManifest.xml b/packages/ExternalStorageProvider/tests/AndroidManifest.xml
deleted file mode 100644
index ffcd499..0000000
--- a/packages/ExternalStorageProvider/tests/AndroidManifest.xml
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="com.android.externalstorage.tests">
-
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-        android:targetPackage="com.android.externalstorage"
-        android:label="Tests for ExternalStorageProvider" />
-
-</manifest>
diff --git a/packages/ExternalStorageProvider/tests/src/com/android/externalstorage/ExternalStorageProviderTest.java b/packages/ExternalStorageProvider/tests/src/com/android/externalstorage/ExternalStorageProviderTest.java
deleted file mode 100644
index f980b60..0000000
--- a/packages/ExternalStorageProvider/tests/src/com/android/externalstorage/ExternalStorageProviderTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- * 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.
- */
-
-package com.android.externalstorage;
-
-import static com.android.externalstorage.ExternalStorageProvider.buildUniqueFile;
-
-import android.os.FileUtils;
-import android.provider.DocumentsContract.Document;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.MediumTest;
-
-import java.io.File;
-
-@MediumTest
-public class ExternalStorageProviderTest extends AndroidTestCase {
-
-    private File mTarget;
-
-    @Override
-    protected void setUp() throws Exception {
-        super.setUp();
-        mTarget = getContext().getFilesDir();
-        FileUtils.deleteContents(mTarget);
-    }
-
-    @Override
-    protected void tearDown() throws Exception {
-        super.tearDown();
-        FileUtils.deleteContents(mTarget);
-    }
-
-    public void testBuildUniqueFile_normal() throws Exception {
-        assertNameEquals("test.jpg", buildUniqueFile(mTarget, "image/jpeg", "test"));
-        assertNameEquals("test.jpg", buildUniqueFile(mTarget, "image/jpeg", "test.jpg"));
-        assertNameEquals("test.jpeg", buildUniqueFile(mTarget, "image/jpeg", "test.jpeg"));
-        assertNameEquals("TEst.JPeg", buildUniqueFile(mTarget, "image/jpeg", "TEst.JPeg"));
-        assertNameEquals("test.png.jpg", buildUniqueFile(mTarget, "image/jpeg", "test.png.jpg"));
-        assertNameEquals("test.png.jpg", buildUniqueFile(mTarget, "image/jpeg", "test.png"));
-
-        assertNameEquals("test.flac", buildUniqueFile(mTarget, "audio/flac", "test"));
-        assertNameEquals("test.flac", buildUniqueFile(mTarget, "audio/flac", "test.flac"));
-        assertNameEquals("test.flac", buildUniqueFile(mTarget, "application/x-flac", "test"));
-        assertNameEquals("test.flac", buildUniqueFile(mTarget, "application/x-flac", "test.flac"));
-    }
-
-    public void testBuildUniqueFile_unknown() throws Exception {
-        assertNameEquals("test", buildUniqueFile(mTarget, "application/octet-stream", "test"));
-        assertNameEquals("test.jpg", buildUniqueFile(mTarget, "application/octet-stream", "test.jpg"));
-        assertNameEquals(".test", buildUniqueFile(mTarget, "application/octet-stream", ".test"));
-
-        assertNameEquals("test", buildUniqueFile(mTarget, "lolz/lolz", "test"));
-        assertNameEquals("test.lolz", buildUniqueFile(mTarget, "lolz/lolz", "test.lolz"));
-    }
-
-    public void testBuildUniqueFile_dir() throws Exception {
-        assertNameEquals("test", buildUniqueFile(mTarget, Document.MIME_TYPE_DIR, "test"));
-        new File(mTarget, "test").mkdir();
-        assertNameEquals("test (1)", buildUniqueFile(mTarget, Document.MIME_TYPE_DIR, "test"));
-
-        assertNameEquals("test.jpg", buildUniqueFile(mTarget, Document.MIME_TYPE_DIR, "test.jpg"));
-        new File(mTarget, "test.jpg").mkdir();
-        assertNameEquals("test.jpg (1)", buildUniqueFile(mTarget, Document.MIME_TYPE_DIR, "test.jpg"));
-    }
-
-    public void testBuildUniqueFile_increment() throws Exception {
-        assertNameEquals("test.jpg", buildUniqueFile(mTarget, "image/jpeg", "test.jpg"));
-        new File(mTarget, "test.jpg").createNewFile();
-        assertNameEquals("test (1).jpg", buildUniqueFile(mTarget, "image/jpeg", "test.jpg"));
-        new File(mTarget, "test (1).jpg").createNewFile();
-        assertNameEquals("test (2).jpg", buildUniqueFile(mTarget, "image/jpeg", "test.jpg"));
-    }
-
-    private static void assertNameEquals(String expected, File actual) {
-        assertEquals(expected, actual.getName());
-    }
-}
diff --git a/packages/Keyguard/src/com/android/keyguard/CarrierText.java b/packages/Keyguard/src/com/android/keyguard/CarrierText.java
index 4fbcc1e..e083c9c 100644
--- a/packages/Keyguard/src/com/android/keyguard/CarrierText.java
+++ b/packages/Keyguard/src/com/android/keyguard/CarrierText.java
@@ -18,6 +18,7 @@
 
 import java.util.List;
 import java.util.Locale;
+import java.util.Objects;
 
 import android.content.Context;
 import android.content.Intent;
@@ -141,7 +142,11 @@
                         plmn = i.getStringExtra(TelephonyIntents.EXTRA_PLMN);
                     }
                     if (DEBUG) Log.d(TAG, "Getting plmn/spn sticky brdcst " + plmn + "/" + spn);
-                    text = concatenate(plmn, spn);
+                    if (Objects.equals(plmn, spn)) {
+                        text = plmn;
+                    } else {
+                        text = concatenate(plmn, spn);
+                    }
                 }
                 displayText =  makeCarrierStringOnEmergencyCapable(
                         getContext().getText(R.string.keyguard_missing_sim_message_short), text);
@@ -293,11 +298,7 @@
         final boolean plmnValid = !TextUtils.isEmpty(plmn);
         final boolean spnValid = !TextUtils.isEmpty(spn);
         if (plmnValid && spnValid) {
-            if (plmn.equals(spn)) {
-                return plmn;
-            } else {
-                return new StringBuilder().append(plmn).append(mSeparator).append(spn).toString();
-            }
+            return new StringBuilder().append(plmn).append(mSeparator).append(spn).toString();
         } else if (plmnValid) {
             return plmn;
         } else if (spnValid) {
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index c7092b3..8d99a64 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -383,9 +383,11 @@
                 Slog.i(LOG_TAG, "[PERSIST END]");
             }
 
-        } catch (IOException e) {
-            Slog.wtf(LOG_TAG, "Failed to write settings, restoring backup", e);
+            // Any error while writing is fatal.
+        } catch (Throwable t) {
+            Slog.wtf(LOG_TAG, "Failed to write settings, restoring backup", t);
             destination.failWrite(out);
+            throw new IllegalStateException("Failed to write settings, restoring backup", t);
         } finally {
             IoUtils.closeQuietly(out);
         }
@@ -406,9 +408,10 @@
             XmlPullParser parser = Xml.newPullParser();
             parser.setInput(in, null);
             parseStateLocked(parser);
-        } catch (XmlPullParserException | IOException ise) {
+
+        } catch (XmlPullParserException | IOException e) {
             throw new IllegalStateException("Failed parsing settings file: "
-                    + mStatePersistFile , ise);
+                    + mStatePersistFile , e);
         } finally {
             IoUtils.closeQuietly(in);
         }
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 35e9636..5b4b4fd 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -94,6 +94,7 @@
     <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
     <uses-permission android:name="android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS"/>
     <uses-permission android:name="android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS" />
+    <uses-permission android:name="android.permission.CHANGE_APP_IDLE_STATE" />
 
     <application android:label="@string/app_label">
         <provider
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index a8a4baa..24f6931 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -208,6 +208,10 @@
             </intent-filter>
         </receiver>
 
+        <!-- Callback for dismissing screenshot notification after a share target is picked -->
+        <receiver android:name=".screenshot.GlobalScreenshot$TargetChosenReceiver"
+                  android:exported="false" />
+
         <!-- started from UsbDeviceSettingsManager -->
         <activity android:name=".usb.UsbConfirmActivity"
             android:exported="true"
diff --git a/packages/SystemUI/README.md b/packages/SystemUI/README.md
new file mode 100644
index 0000000..ae0a362
--- /dev/null
+++ b/packages/SystemUI/README.md
@@ -0,0 +1,5 @@
+# SystemUI Documentation
+
+---
+
+ * [Demo Mode](/packages/SystemUI/docs/demo_mode.md)
diff --git a/packages/SystemUI/docs/demo_mode.md b/packages/SystemUI/docs/demo_mode.md
new file mode 100644
index 0000000..18ae4cb
--- /dev/null
+++ b/packages/SystemUI/docs/demo_mode.md
@@ -0,0 +1,169 @@
+# Demo Mode for the Android System UI
+*Demo mode for the status bar allows you to force the status bar into a fixed state, useful for taking screenshots with a consistent status bar state, or testing different status icon permutations. Demo mode is available in recent versions of Android.*
+
+## Enabling demo mode
+Demo mode is protected behind a system setting. To enable it for a device, run:
+
+```
+adb shell settings put global sysui_demo_allowed 1
+```
+
+## Protocol
+The protocol is based on broadcast intents, and thus can be driven via the command line (```adb shell am broadcast```) or an app (```Context.sendBroadcast```).
+
+### Broadcast action
+```
+com.android.systemui.demo
+```
+
+### Commands
+Commands and subcommands (below) are sent as string extras in the broadcast
+intent.
+<br/>
+Commands are sent as string extras with key ```command``` (required). Possible values are:
+
+Command              | Subcommand                 | Argument       | Description
+---                  | ---                        | ---            | ---
+```enter```          |                            |                | Enters demo mode, bar state allowed to be modified (for convenience, any of the other non-exit commands will automatically flip demo mode on, no need to call this explicitly in practice)
+```exit```           |                            |                | Exits demo mode, bars back to their system-driven state
+```battery```        |                            |                | Control the battery display
+                     | ```level```                |                | Sets the battery level (0 - 100)
+                     | ```plugged```              |                | Sets charging state (```true```, ```false```)
+```network```        |                            |                | Control the RSSI display
+                     | ```airplane```             |                | ```show``` to show icon, any other value to hide
+                     | ```fully```                |                | Sets MCS state to fully connected (```true```, ```false```)
+                     | ```wifi```                 |                | ```show``` to show icon, any other value to hide
+                     |                            | ```level```    | Sets wifi level (null or 0-4)
+                     | ```mobile```               |                | ```show``` to show icon, any other value to hide
+                     |                            | ```datatype``` | Values: ```1x```, ```3g```, ```4g```, ```e```, ```g```, ```h```, ```lte```, ```roam```, any other value to hide
+                     |                            | ```level```    | Sets mobile signal strength level (null or 0-4)
+                     | ```carriernetworkchange``` |                | Sets mobile signal icon to carrier network change UX when disconnected (```show``` to show icon, any other value to hide)
+```bars```           |                            |                | Control the visual style of the bars (opaque, translucent, etc)
+                     | ```mode```                 |                | Sets the bars visual style (opaque, translucent, semi-transparent)
+```status```         |                            |                | Control the system status icons
+                     | ```volume```               |                | Sets the icon in the volume slot (```silent```, ```vibrate```, any other value to hide)
+                     | ```bluetooth```            |                | Sets the icon in the bluetooth slot (```connected```, ```disconnected```, any other value to hide)
+                     | ```location```             |                | Sets the icon in the location slot (```show```, any other value to hide)
+                     | ```alarm```                |                | Sets the icon in the alarm_clock slot (```show```, any other value to hide)
+                     | ```sync```                 |                | Sets the icon in the sync_active slot (```show```, any other value to hide)
+                     | ```tty```                  |                | Sets the icon in the tty slot (```show```, any other value to hide)
+                     | ```eri```                  |                | Sets the icon in the cdma_eri slot (```show```, any other value to hide)
+                     | ```mute```                 |                | Sets the icon in the mute slot (```show```, any other value to hide)
+                     | ```speakerphone```         |                | Sets the icon in the speakerphone slot (```show```, any other value to hide)
+```notifications```  |                            |                | Control the notification icons
+                     | ```visible```              |                | ```false``` to hide the notification icons, any other value to show
+```clock```          |                            |                | Control the clock display
+                     | ```millis```               |                | Sets the time in millis
+                     | ```hhmm```                 |                | Sets the time in hh:mm
+
+## Examples
+Enter demo mode
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command enter
+```
+
+
+Exit demo mode
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command exit
+```
+
+
+Set the clock to 12:31
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command clock -e hhmm
+1231
+```
+
+
+Set the wifi level to max
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command network -e wifi
+show -e level 4
+```
+
+
+Show the silent volume icon
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command status -e volume
+silent
+```
+
+
+Empty battery, and not charging (red exclamation point)
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command battery -e level
+0 -e plugged false
+```
+
+
+Hide the notification icons
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command notifications -e
+visible false
+```
+
+
+Exit demo mode
+
+```
+adb shell am broadcast -a com.android.systemui.demo -e command exit
+```
+
+
+## Example demo controller app in AOSP
+```
+frameworks/base/tests/SystemUIDemoModeController
+```
+
+
+## Example script (for screenshotting purposes)
+```bash
+#!/bin/sh
+CMD=$1
+
+if [[ $ADB == "" ]]; then
+  ADB=adb
+fi
+
+if [[ $CMD != "on" && $CMD != "off" ]]; then
+  echo "Usage: $0 [on|off] [hhmm]" >&2
+  exit
+fi
+
+if [[ "$2" != "" ]]; then
+  HHMM="$2"
+fi
+
+$ADB root || exit
+$ADB wait-for-devices
+$ADB shell settings put global sysui_demo_allowed 1
+
+if [ $CMD == "on" ]; then
+  $ADB shell am broadcast -a com.android.systemui.demo -e command enter || exit
+  if [[ "$HHMM" != "" ]]; then
+    $ADB shell am broadcast -a com.android.systemui.demo -e command clock -e
+hhmm ${HHMM}
+  fi
+  $ADB shell am broadcast -a com.android.systemui.demo -e command battery -e
+plugged false
+  $ADB shell am broadcast -a com.android.systemui.demo -e command battery -e
+level 100
+  $ADB shell am broadcast -a com.android.systemui.demo -e command network -e
+wifi show -e level 4
+  $ADB shell am broadcast -a com.android.systemui.demo -e command network -e
+mobile show -e datatype none -e level 4
+  $ADB shell am broadcast -a com.android.systemui.demo -e command notifications
+-e visible false
+elif [ $CMD == "off" ]; then
+  $ADB shell am broadcast -a com.android.systemui.demo -e command exit
+fi
+```
+
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 7e50454..6e59029 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -338,6 +338,9 @@
     <!-- The minimum background radius when swiping to a side for the camera / phone affordances. -->
     <dimen name="keyguard_affordance_min_background_radius">30dp</dimen>
 
+    <!-- The size of the touch targets on the keyguard for the affordances. -->
+    <dimen name="keyguard_affordance_touch_target_size">96dp</dimen>
+
     <!-- The grow amount for the camera and phone circles when hinting -->
     <dimen name="hint_grow_amount_sideways">60dp</dimen>
 
@@ -567,4 +570,7 @@
     <!-- Padding to be used on the bottom of the fingerprint icon on Keyguard so it better aligns
          with the other icons. -->
     <dimen name="fingerprint_icon_additional_padding">12dp</dimen>
+
+    <!-- Minimum margin of the notification panel on the side, when being positioned dynamically -->
+    <dimen name="notification_panel_min_side_margin">48dp</dimen>
 </resources>
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 105bf0f..715f4e4 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -25,6 +25,7 @@
 import android.app.Notification.BigPictureStyle;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.ContentValues;
 import android.content.Context;
@@ -242,7 +243,12 @@
             sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);
             sharingIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
 
-            Intent chooserIntent = Intent.createChooser(sharingIntent, null);
+            final PendingIntent callback = PendingIntent.getBroadcast(context, 0,
+                    new Intent(context, GlobalScreenshot.TargetChosenReceiver.class)
+                            .putExtra(GlobalScreenshot.CANCEL_ID, mNotificationId),
+                    PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT);
+            Intent chooserIntent = Intent.createChooser(sharingIntent, null,
+                    callback.getIntentSender());
             chooserIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK
                     | Intent.FLAG_ACTIVITY_NEW_TASK);
 
@@ -341,6 +347,8 @@
 class GlobalScreenshot {
     private static final String TAG = "GlobalScreenshot";
 
+    static final String CANCEL_ID = "android:cancel_id";
+
     private static final int SCREENSHOT_FLASH_TO_PEAK_DURATION = 130;
     private static final int SCREENSHOT_DROP_IN_DURATION = 430;
     private static final int SCREENSHOT_DROP_OUT_DELAY = 500;
@@ -732,4 +740,22 @@
                 .build();
         nManager.notify(R.id.notification_screenshot, n);
     }
+
+    /**
+     * Removes the notification for a screenshot after a share target is chosen.
+     */
+    public static class TargetChosenReceiver extends BroadcastReceiver {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (!intent.hasExtra(CANCEL_ID)) {
+                return;
+            }
+
+            final NotificationManager nm =
+                    (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+
+            final int id = intent.getIntExtra(CANCEL_ID, 0);
+            nm.cancel(id);
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java
index 583184f..9ccff72 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardAffordanceView.java
@@ -204,7 +204,7 @@
     private void updateCircleColor() {
         float fraction = 0.5f + 0.5f * Math.max(0.0f, Math.min(1.0f,
                 (mCircleRadius - mMinBackgroundRadius) / (0.5f * mMinBackgroundRadius)));
-        if (mPreviewView != null) {
+        if (mPreviewView != null && mPreviewView.getVisibility() == VISIBLE) {
             float finishingFraction = 1 - Math.max(0, mCircleRadius - mCircleStartRadius)
                     / (mMaxCircleSize - mCircleStartRadius);
             fraction *= finishingFraction;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
index 964d75f..1c53655 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationContentView.java
@@ -95,7 +95,7 @@
         if (mContractedChild != null) {
             int size = Math.min(maxSize, mSmallHeight);
             mContractedChild.measure(widthMeasureSpec,
-                    MeasureSpec.makeMeasureSpec(size, MeasureSpec.AT_MOST));
+                    MeasureSpec.makeMeasureSpec(size, MeasureSpec.EXACTLY));
             maxChildHeight = Math.max(maxChildHeight, mContractedChild.getMeasuredHeight());
         }
         if (mExpandedChild != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
index 9d892f6..0a6d472 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardAffordanceHelper.java
@@ -39,7 +39,7 @@
     public static final float SWIPE_RESTING_ALPHA_AMOUNT = 0.5f;
     public static final long HINT_PHASE1_DURATION = 200;
     private static final long HINT_PHASE2_DURATION = 350;
-    private static final float BACKGROUND_RADIUS_SCALE_FACTOR = 0.15f;
+    private static final float BACKGROUND_RADIUS_SCALE_FACTOR = 0.25f;
     private static final int HINT_CIRCLE_OPEN_DURATION = 500;
 
     private final Context mContext;
@@ -63,13 +63,30 @@
     private Interpolator mDisappearInterpolator;
     private Animator mSwipeAnimator;
     private int mMinBackgroundRadius;
-    private boolean mMotionPerformedByUser;
     private boolean mMotionCancelled;
+    private int mTouchTargetSize;
+    private View mTargetedView;
+    private boolean mTouchSlopExeeded;
     private AnimatorListenerAdapter mFlingEndListener = new AnimatorListenerAdapter() {
+        public boolean mCancelled;
+
         @Override
         public void onAnimationEnd(Animator animation) {
             mSwipeAnimator = null;
             mSwipingInProgress = false;
+            if (!mCancelled) {
+                mTargetedView = null;
+            }
+        }
+
+        @Override
+        public void onAnimationCancel(Animator animation) {
+            mCancelled = true;
+        }
+
+        @Override
+        public void onAnimationStart(Animator animation) {
+            mCancelled = false;
         }
     };
     private Runnable mAnimationEndRunnable = new Runnable() {
@@ -97,6 +114,8 @@
                 R.dimen.keyguard_min_swipe_amount);
         mMinBackgroundRadius = mContext.getResources().getDimensionPixelSize(
                 R.dimen.keyguard_affordance_min_background_radius);
+        mTouchTargetSize = mContext.getResources().getDimensionPixelSize(
+                R.dimen.keyguard_affordance_touch_target_size);
         mHintGrowAmount =
                 mContext.getResources().getDimensionPixelSize(R.dimen.hint_grow_amount_sideways);
         mFlingAnimationUtils = new FlingAnimationUtils(mContext, 0.4f);
@@ -118,9 +137,7 @@
 
     public boolean onTouchEvent(MotionEvent event) {
         int action = event.getActionMasked();
-        if (mMotionCancelled && action != MotionEvent.ACTION_DOWN
-                && action != MotionEvent.ACTION_UP
-                && action != MotionEvent.ACTION_CANCEL) {
+        if (mMotionCancelled && action != MotionEvent.ACTION_DOWN) {
             return false;
         }
         final float y = event.getY();
@@ -129,53 +146,86 @@
         boolean isUp = false;
         switch (action) {
             case MotionEvent.ACTION_DOWN:
-                if (mSwipingInProgress) {
-                    cancelAnimation();
+                View targetView = getIconAtPosition(x, y);
+                if (targetView == null || (mTargetedView != null && mTargetedView != targetView)) {
+                    mMotionCancelled = true;
+                    return false;
                 }
-                mInitialTouchY = y;
+                if (mTargetedView != null) {
+                    cancelAnimation();
+                } else {
+                    mTouchSlopExeeded = false;
+                }
+                mCallback.onSwipingStarted(targetView == mLeftIcon);
+                mSwipingInProgress = true;
+                mTargetedView = targetView;
                 mInitialTouchX = x;
+                mInitialTouchY = y;
                 mTranslationOnDown = mTranslation;
                 initVelocityTracker();
                 trackMovement(event);
-                mMotionPerformedByUser = false;
                 mMotionCancelled = false;
                 break;
             case MotionEvent.ACTION_POINTER_DOWN:
                 mMotionCancelled = true;
-                endMotion(event, true /* forceSnapBack */);
+                endMotion(true /* forceSnapBack */, x, y);
                 break;
             case MotionEvent.ACTION_MOVE:
-                final float w = x - mInitialTouchX;
                 trackMovement(event);
-                if (((leftSwipePossible() && w > mTouchSlop)
-                        || (rightSwipePossible() && w < -mTouchSlop))
-                        && Math.abs(w) > Math.abs(y - mInitialTouchY)
-                        && !mSwipingInProgress) {
-                    cancelAnimation();
-                    mInitialTouchY = y;
-                    mInitialTouchX = x;
-                    mTranslationOnDown = mTranslation;
-                    mSwipingInProgress = true;
-                    mCallback.onSwipingStarted(w < -mTouchSlop);
+                float xDist = x - mInitialTouchX;
+                float yDist = y - mInitialTouchY;
+                float distance = (float) Math.hypot(xDist, yDist);
+                if (!mTouchSlopExeeded && distance > mTouchSlop) {
+                    mTouchSlopExeeded = true;
                 }
                 if (mSwipingInProgress) {
-                    setTranslation(mTranslationOnDown + x - mInitialTouchX, false, false);
+                    if (mTargetedView == mRightIcon) {
+                        distance = mTranslationOnDown - distance;
+                        distance = Math.min(0, distance);
+                    } else {
+                        distance = mTranslationOnDown + distance;
+                        distance = Math.max(0, distance);
+                    }
+                    setTranslation(distance, false /* isReset */, false /* animateReset */);
                 }
                 break;
 
             case MotionEvent.ACTION_UP:
                 isUp = true;
             case MotionEvent.ACTION_CANCEL:
+                boolean hintOnTheRight = mTargetedView == mRightIcon;
                 trackMovement(event);
-                endMotion(event, !isUp);
+                endMotion(!isUp, x, y);
+                if (!mTouchSlopExeeded && isUp) {
+                    mCallback.onIconClicked(hintOnTheRight);
+                }
                 break;
         }
         return true;
     }
 
-    private void endMotion(MotionEvent event, boolean forceSnapBack) {
+    private View getIconAtPosition(float x, float y) {
+        if (leftSwipePossible() && isOnIcon(mLeftIcon, x, y)) {
+            return mLeftIcon;
+        }
+        if (rightSwipePossible() && isOnIcon(mRightIcon, x, y)) {
+            return mRightIcon;
+        }
+        return null;
+    }
+
+    private boolean isOnIcon(View icon, float x, float y) {
+        float iconX = icon.getX() + icon.getWidth() / 2.0f;
+        float iconY = icon.getY() + icon.getHeight() / 2.0f;
+        double distance = Math.hypot(x - iconX, y - iconY);
+        return distance <= mTouchTargetSize / 2;
+    }
+
+    private void endMotion(boolean forceSnapBack, float lastX, float lastY) {
         if (mSwipingInProgress) {
-            flingWithCurrentVelocity(forceSnapBack);
+            flingWithCurrentVelocity(forceSnapBack, lastX, lastY);
+        } else {
+            mTargetedView = null;
         }
         if (mVelocityTracker != null) {
             mVelocityTracker.recycle();
@@ -195,8 +245,9 @@
         return false;
     }
 
-    public void startHintAnimation(boolean right, Runnable onFinishedListener) {
-
+    public void startHintAnimation(boolean right,
+            Runnable onFinishedListener) {
+        cancelAnimation();
         startHintAnimationPhase1(right, onFinishedListener);
     }
 
@@ -216,6 +267,7 @@
             public void onAnimationEnd(Animator animation) {
                 if (mCancelled) {
                     mSwipeAnimator = null;
+                    mTargetedView = null;
                     onFinishedListener.run();
                     targetView.showArrow(false);
                 } else {
@@ -227,6 +279,7 @@
         animator.setDuration(HINT_PHASE1_DURATION);
         animator.start();
         mSwipeAnimator = animator;
+        mTargetedView = targetView;
     }
 
     /**
@@ -239,6 +292,7 @@
             @Override
             public void onAnimationEnd(Animator animation) {
                 mSwipeAnimator = null;
+                mTargetedView = null;
                 targetView.showArrow(false);
                 onFinishedListener.run();
             }
@@ -265,7 +319,7 @@
                 targetView.setCircleRadiusWithoutAnimation(newRadius);
                 float translation = getTranslationFromRadius(newRadius);
                 mTranslation = right ? -translation : translation;
-                updateIconsFromRadius(targetView, newRadius);
+                updateIconsFromTranslation(targetView);
             }
         });
         return animator;
@@ -277,8 +331,8 @@
         }
     }
 
-    private void flingWithCurrentVelocity(boolean forceSnapBack) {
-        float vel = getCurrentVelocity();
+    private void flingWithCurrentVelocity(boolean forceSnapBack, float lastX, float lastY) {
+        float vel = getCurrentVelocity(lastX, lastY);
 
         // We snap back if the current translation is not far enough
         boolean snapBack = isBelowFalsingThreshold();
@@ -300,7 +354,9 @@
     }
 
     private void fling(float vel, final boolean snapBack) {
-        float target = mTranslation < 0 ? -mCallback.getPageWidth() : mCallback.getPageWidth();
+        float target = mTranslation < 0
+                ? -mCallback.getMaxTranslationDistance()
+                : mCallback.getMaxTranslationDistance();
         target = snapBack ? 0 : target;
 
         ValueAnimator animator = ValueAnimator.ofFloat(mTranslation, target);
@@ -334,10 +390,6 @@
         translation = rightSwipePossible() ? translation : Math.max(0, translation);
         translation = leftSwipePossible() ? translation : Math.min(0, translation);
         float absTranslation = Math.abs(translation);
-        if (absTranslation > Math.abs(mTranslationOnDown) + getMinTranslationAmount() ||
-                mMotionPerformedByUser) {
-            mMotionPerformedByUser = true;
-        }
         if (translation != mTranslation || isReset) {
             KeyguardAffordanceView targetView = translation > 0 ? mLeftIcon : mRightIcon;
             KeyguardAffordanceView otherView = translation > 0 ? mRightIcon : mLeftIcon;
@@ -345,7 +397,7 @@
 
             // We interpolate the alpha of the other icons to 0
             float fadeOutAlpha = 1.0f - alpha;
-            fadeOutAlpha = Math.min(1.0f, Math.max(0.0f, fadeOutAlpha));
+            fadeOutAlpha = Math.max(fadeOutAlpha, 0.0f);
 
             boolean animateIcons = isReset && animateReset;
             float radius = getRadiusFromTranslation(absTranslation);
@@ -366,8 +418,9 @@
         }
     }
 
-    private void updateIconsFromRadius(KeyguardAffordanceView targetView, float newRadius) {
-        float alpha = newRadius / mMinBackgroundRadius;
+    private void updateIconsFromTranslation(KeyguardAffordanceView targetView) {
+        float absTranslation = Math.abs(mTranslation);
+        float alpha = absTranslation / getMinTranslationAmount();
 
         // We interpolate the alpha of the other icons to 0
         float fadeOutAlpha =  1.0f - alpha;
@@ -381,15 +434,20 @@
     }
 
     private float getTranslationFromRadius(float circleSize) {
-        float translation = (circleSize - mMinBackgroundRadius) / BACKGROUND_RADIUS_SCALE_FACTOR;
-        return Math.max(0, translation);
+        float translation = (circleSize - mMinBackgroundRadius)
+                / BACKGROUND_RADIUS_SCALE_FACTOR;
+        return translation > 0.0f ? translation + mTouchSlop : 0.0f;
     }
 
     private float getRadiusFromTranslation(float translation) {
-        return translation * BACKGROUND_RADIUS_SCALE_FACTOR + mMinBackgroundRadius;
+        if (translation <= mTouchSlop) {
+            return 0.0f;
+        }
+        return (translation - mTouchSlop)  * BACKGROUND_RADIUS_SCALE_FACTOR + mMinBackgroundRadius;
     }
 
     public void animateHideLeftRightIcon() {
+        cancelAnimation();
         updateIcon(mRightIcon, 0f, 0f, true, false);
         updateIcon(mLeftIcon, 0f, 0f, true, false);
     }
@@ -429,12 +487,22 @@
         mVelocityTracker = VelocityTracker.obtain();
     }
 
-    private float getCurrentVelocity() {
+    private float getCurrentVelocity(float lastX, float lastY) {
         if (mVelocityTracker == null) {
             return 0;
         }
         mVelocityTracker.computeCurrentVelocity(1000);
-        return mVelocityTracker.getXVelocity();
+        float aX = mVelocityTracker.getXVelocity();
+        float aY = mVelocityTracker.getYVelocity();
+        float bX = lastX - mInitialTouchX;
+        float bY = lastY - mInitialTouchY;
+        float bLen = (float) Math.hypot(bX, bY);
+        // Project the velocity onto the distance vector: a * b / |b|
+        float projectedVelocity = (aX * bX + aY * bY) / bLen;
+        if (mTargetedView == mRightIcon) {
+            projectedVelocity = -projectedVelocity;
+        }
+        return projectedVelocity;
     }
 
     public void onConfigurationChanged() {
@@ -472,12 +540,14 @@
          */
         void onAnimationToSideEnded();
 
-        float getPageWidth();
+        float getMaxTranslationDistance();
 
         void onSwipingStarted(boolean isRightwardMotion);
 
         void onSwipingAborted();
 
+        void onIconClicked(boolean rightIcon);
+
         KeyguardAffordanceView getLeftIcon();
 
         KeyguardAffordanceView getCenterIcon();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
index 96e9543..7d61099 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java
@@ -187,6 +187,9 @@
     private boolean mExpansionIsFromHeadsUp;
     private int mBottomBarHeight;
     private boolean mExpandingFromHeadsUp;
+    private int mPositionMinSideMargin;
+    private int mLastOrientation = -1;
+
     private Runnable mHeadsUpExistenceChangedRunnable = new Runnable() {
         @Override
         public void run() {
@@ -236,6 +239,7 @@
         mAfforanceHelper = new KeyguardAffordanceHelper(this, getContext());
         mSecureCameraLaunchManager =
                 new SecureCameraLaunchManager(getContext(), mKeyguardBottomArea);
+        mLastOrientation = getResources().getConfiguration().orientation;
 
         // recompute internal state when qspanel height changes
         mQsContainer.addOnLayoutChangeListener(new OnLayoutChangeListener() {
@@ -268,6 +272,8 @@
                 getResources().getDimensionPixelSize(R.dimen.notification_scrim_wait_distance);
         mQsFalsingThreshold = getResources().getDimensionPixelSize(
                 R.dimen.qs_falsing_threshold);
+        mPositionMinSideMargin = getResources().getDimensionPixelSize(
+                R.dimen.notification_panel_min_side_margin);
     }
 
     public void updateResources() {
@@ -692,6 +698,9 @@
         if (!mHeadsUpTouchHelper.isTrackingHeadsUp() && handleQSTouch(event)) {
             return true;
         }
+        if (event.getActionMasked() == MotionEvent.ACTION_DOWN && isFullyCollapsed()) {
+            updateVerticalPanelPosition(event.getX());
+        }
         super.onTouchEvent(event);
         return true;
     }
@@ -740,7 +749,7 @@
     }
 
     private boolean isInQsArea(float x, float y) {
-        return (x >= mScrollView.getLeft() && x <= mScrollView.getRight()) &&
+        return (x >= mScrollView.getX() && x <= mScrollView.getX() + mScrollView.getWidth()) &&
                 (y <= mNotificationStackScroller.getBottomMostNotificationBottom()
                 || y <= mQsContainer.getY() + mQsContainer.getHeight());
     }
@@ -939,7 +948,7 @@
             mKeyguardStatusBar.setAlpha(1f);
             mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE);
         }
-
+        resetVerticalPanelPosition();
         updateQsState();
     }
 
@@ -1376,7 +1385,7 @@
             return false;
         }
         View header = mKeyguardShowing ? mKeyguardStatusBar : mHeader;
-        boolean onHeader = x >= header.getLeft() && x <= header.getRight()
+        boolean onHeader = x >= header.getX() && x <= header.getX() + header.getWidth()
                 && y >= header.getTop() && y <= header.getBottom();
         if (mQsExpanded) {
             return onHeader || (mScrollView.isScrolledToBottom() && yDiff < 0) && isInQsArea(x, y);
@@ -1771,6 +1780,10 @@
     protected void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
         mAfforanceHelper.onConfigurationChanged();
+        if (newConfig.orientation != mLastOrientation) {
+            resetVerticalPanelPosition();
+        }
+        mLastOrientation = newConfig.orientation;
     }
 
     @Override
@@ -1836,29 +1849,6 @@
     }
 
     @Override
-    protected void onEdgeClicked(boolean right) {
-        if ((right && getRightIcon().getVisibility() != View.VISIBLE)
-                || (!right && getLeftIcon().getVisibility() != View.VISIBLE)
-                || isDozing()) {
-            return;
-        }
-        mHintAnimationRunning = true;
-        mAfforanceHelper.startHintAnimation(right, new Runnable() {
-            @Override
-            public void run() {
-                mHintAnimationRunning = false;
-                mStatusBar.onHintFinished();
-            }
-        });
-        boolean start = getLayoutDirection() == LAYOUT_DIRECTION_RTL ? right : !right;
-        if (start) {
-            mStatusBar.onPhoneHintStarted();
-        } else {
-            mStatusBar.onCameraHintStarted();
-        }
-    }
-
-    @Override
     protected void startUnlockHintAnimation() {
         super.startUnlockHintAnimation();
         startHighlightIconAnimation(getCenterIcon());
@@ -1880,8 +1870,8 @@
     }
 
     @Override
-    public float getPageWidth() {
-        return getWidth();
+    public float getMaxTranslationDistance() {
+        return (float) Math.hypot(getWidth(), getHeight());
     }
 
     @Override
@@ -1903,6 +1893,27 @@
     }
 
     @Override
+    public void onIconClicked(boolean rightIcon) {
+        if (mHintAnimationRunning) {
+            return;
+        }
+        mHintAnimationRunning = true;
+        mAfforanceHelper.startHintAnimation(rightIcon, new Runnable() {
+            @Override
+            public void run() {
+                mHintAnimationRunning = false;
+                mStatusBar.onHintFinished();
+            }
+        });
+        rightIcon = getLayoutDirection() == LAYOUT_DIRECTION_RTL ? !rightIcon : rightIcon;
+        if (rightIcon) {
+            mStatusBar.onCameraHintStarted();
+        } else {
+            mStatusBar.onPhoneHintStarted();
+        }
+    }
+
+    @Override
     public KeyguardAffordanceView getLeftIcon() {
         return getLayoutDirection() == LAYOUT_DIRECTION_RTL
                 ? mKeyguardBottomArea.getCameraView()
@@ -2187,4 +2198,42 @@
             mExpandingFromHeadsUp = true;
         }
     }
+
+    @Override
+    protected void onClosingFinished() {
+        super.onClosingFinished();
+        resetVerticalPanelPosition();
+    }
+
+    /**
+     * Updates the vertical position of the panel so it is positioned closer to the touch
+     * responsible for opening the panel.
+     *
+     * @param x the x-coordinate the touch event
+     */
+    private void updateVerticalPanelPosition(float x) {
+        if (mNotificationStackScroller.getWidth() * 1.75f > getWidth()) {
+            resetVerticalPanelPosition();
+            return;
+        }
+        float leftMost = mPositionMinSideMargin + mNotificationStackScroller.getWidth() / 2;
+        float rightMost = getWidth() - mPositionMinSideMargin
+                - mNotificationStackScroller.getWidth() / 2;
+        if (Math.abs(x - getWidth() / 2) < mNotificationStackScroller.getWidth() / 4) {
+            x = getWidth() / 2;
+        }
+        x = Math.min(rightMost, Math.max(leftMost, x));
+        setVerticalPanelTranslation(x -
+                (mNotificationStackScroller.getLeft() + mNotificationStackScroller.getWidth()/2));
+     }
+
+    private void resetVerticalPanelPosition() {
+        setVerticalPanelTranslation(0f);
+    }
+
+    private void setVerticalPanelTranslation(float translation) {
+        mNotificationStackScroller.setTranslationX(translation);
+        mScrollView.setTranslationX(translation);
+        mHeader.setTranslationX(translation);
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
index 3a30429..b32cd9c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java
@@ -972,17 +972,7 @@
         if (mHintAnimationRunning) {
             return true;
         }
-        if (x < mEdgeTapAreaWidth
-                && mStatusBar.getBarState() == StatusBarState.KEYGUARD) {
-            onEdgeClicked(false /* right */);
-            return true;
-        } else if (x > getWidth() - mEdgeTapAreaWidth
-                && mStatusBar.getBarState() == StatusBarState.KEYGUARD) {
-            onEdgeClicked(true /* right */);
-            return true;
-        } else {
-            return onMiddleClicked();
-        }
+        return onMiddleClicked();
     }
 
     protected final Runnable mPostCollapseRunnable = new Runnable() {
@@ -994,8 +984,6 @@
 
     protected abstract boolean onMiddleClicked();
 
-    protected abstract void onEdgeClicked(boolean right);
-
     protected abstract boolean isDozing();
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
index b6dbfce..c854d63 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java
@@ -3249,6 +3249,10 @@
         mKeyguardFadingAway = false;
     }
 
+    public void stopWaitingForKeyguardExit() {
+        mWaitingForKeyguardExit = false;
+    }
+
     private void updatePublicMode() {
         setLockscreenPublicMode(
                 mStatusBarKeyguardViewManager.isShowing() && mStatusBarKeyguardViewManager
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
index 194a19a..0caf51a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -145,6 +145,7 @@
         if (mShowing) {
             if (mOccluded) {
                 mPhoneStatusBar.hideKeyguard();
+                mPhoneStatusBar.stopWaitingForKeyguardExit();
                 mBouncer.hide(false /* destroyView */);
             } else {
                 showBouncerOrKeyguard();
diff --git a/preloaded-classes b/preloaded-classes
index 86bd5c9..95d0b42 100644
--- a/preloaded-classes
+++ b/preloaded-classes
@@ -828,6 +828,11 @@
 android.hardware.usb.UsbDevice
 android.hardware.usb.UsbDeviceConnection
 android.hardware.usb.UsbRequest
+# Initializing android.icu.impl.ICUBinary loads the ICU data.
+# Opening the files in the Zygote avoids StrictMode violations.
+# It also ensures the ICU data files are mapped on boot and all
+# apps will be consistent (even if files are added to /data).
+android.icu.impl.ICUBinary
 android.inputmethodservice.ExtractEditText
 android.location.Location
 android.location.Location$1
diff --git a/rs/jni/Android.mk b/rs/jni/Android.mk
index 94f0859..0658620 100644
--- a/rs/jni/Android.mk
+++ b/rs/jni/Android.mk
@@ -25,6 +25,7 @@
     $(JNI_H_INCLUDE) \
     frameworks/rs \
     frameworks/base/core/jni \
+    frameworks/base/libs/hwui \
     $(rs_generated_include_dir)
 
 LOCAL_CFLAGS += -Wno-unused-parameter -std=c++11
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 9f80fd8..0e3867d 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -460,6 +460,7 @@
     // set to null if in idle mode; while in this mode, any alarms we don't want
     // to run during this time are placed in mPendingWhileIdleAlarms
     Alarm mPendingIdleUntil = null;
+    Alarm mNextWakeFromIdle = null;
     final ArrayList<Alarm> mPendingWhileIdleAlarms = new ArrayList<>();
 
     public AlarmManagerService(Context context) {
@@ -565,13 +566,22 @@
     }
 
     void restorePendingWhileIdleAlarmsLocked() {
+        // Bring pending alarms back into the main list.
         final long nowElapsed = SystemClock.elapsedRealtime();
-        for (int i=mPendingWhileIdleAlarms.size() - 1; i >= 0 && mPendingIdleUntil != null; i --) {
+        for (int i=mPendingWhileIdleAlarms.size() - 1; i >= 0 && mPendingIdleUntil == null; i--) {
             Alarm a = mPendingWhileIdleAlarms.remove(i);
             reAddAlarmLocked(a, nowElapsed, false);
         }
+
+        // Reschedule everything.
         rescheduleKernelAlarmsLocked();
         updateNextAlarmClockLocked();
+
+        // And send a TIME_TICK right now, since it is important to get the UI updated.
+        try {
+            mTimeTickSender.send();
+        } catch (PendingIntent.CanceledException e) {
+        }
     }
 
     static final class InFlight extends Intent {
@@ -583,7 +593,7 @@
         final int mAlarmType;
 
         InFlight(AlarmManagerService service, PendingIntent pendingIntent, WorkSource workSource,
-                int alarmType, String tag) {
+                int alarmType, String tag, long nowELAPSED) {
             mPendingIntent = pendingIntent;
             mWorkSource = workSource;
             mTag = tag;
@@ -593,6 +603,7 @@
                 fs = new FilterStats(mBroadcastStats, mTag);
                 mBroadcastStats.filterStats.put(mTag, fs);
             }
+            fs.lastTime = nowELAPSED;
             mFilterStats = fs;
             mAlarmType = alarmType;
         }
@@ -602,6 +613,7 @@
         final BroadcastStats mBroadcastStats;
         final String mTag;
 
+        long lastTime;
         long aggregateTime;
         int count;
         int numWakeup;
@@ -806,33 +818,38 @@
         setImplLocked(a, false, doValidate);
     }
 
+    private void updateNextWakeFromIdleFuzzLocked() {
+        if (mNextWakeFromIdle != null) {
+
+        }
+    }
+
     private void setImplLocked(Alarm a, boolean rebatching, boolean doValidate) {
         if ((a.flags&AlarmManager.FLAG_IDLE_UNTIL) != 0) {
-            // This is a special alarm that will put the system idle until it goes off.
+            // This is a special alarm that will put the system into idle until it goes off.
             // The caller has given the time they want this to happen at, however we need
             // to pull that earlier if there are existing alarms that have requested to
             // bring us out of idle.
-            final int N = mAlarmBatches.size();
-            for (int i = 0; i < N; i++) {
-                Batch b = mAlarmBatches.get(i);
-                if (a.whenElapsed > b.end) {
-                    // There are no interesting things happening before our idle until,
-                    // so keep the requested time.
-                    break;
-                }
-                if ((b.flags&AlarmManager.FLAG_WAKE_FROM_IDLE) != 0) {
-                    a.when = a.whenElapsed = a.maxWhenElapsed = b.end;
-                    break;
-                }
+            if (mNextWakeFromIdle != null) {
+                a.when = a.whenElapsed = a.maxWhenElapsed = mNextWakeFromIdle.whenElapsed;
             }
             // Add fuzz to make the alarm go off some time before the actual desired time.
             final long nowElapsed = SystemClock.elapsedRealtime();
-            long fuzz = fuzzForDuration(a.whenElapsed-nowElapsed);
+            final int fuzz = fuzzForDuration(a.whenElapsed-nowElapsed);
             if (fuzz > 0) {
                 if (mRandom == null) {
                     mRandom = new Random();
                 }
-                a.whenElapsed -= mRandom.nextLong() % fuzz;
+                final int delta = mRandom.nextInt(fuzz);
+                a.whenElapsed -= delta;
+                if (false) {
+                    Slog.d(TAG, "Alarm when: " + a.whenElapsed);
+                    Slog.d(TAG, "Delta until alarm: " + (a.whenElapsed-nowElapsed));
+                    Slog.d(TAG, "Applied fuzz: " + fuzz);
+                    Slog.d(TAG, "Final delta: " + delta);
+                    Slog.d(TAG, "Final when: " + a.whenElapsed);
+                }
+                a.when = a.maxWhenElapsed = a.whenElapsed;
             }
 
         } else if (mPendingIdleUntil != null) {
@@ -869,11 +886,16 @@
         if ((a.flags&AlarmManager.FLAG_IDLE_UNTIL) != 0) {
             mPendingIdleUntil = a;
             needRebatch = true;
-        } else if ((a.flags&AlarmManager.FLAG_WAKE_FROM_IDLE) != 0 && mPendingIdleUntil != null) {
-            // If we are adding an alarm that asks to wake from idle, and we are currently
-            // idling, then we need to rebatch alarms in case the idle until time needs to
-            // be updated.
-            needRebatch = true;
+        } else if ((a.flags&AlarmManager.FLAG_WAKE_FROM_IDLE) != 0) {
+            if (mNextWakeFromIdle == null || mNextWakeFromIdle.whenElapsed > a.whenElapsed) {
+                mNextWakeFromIdle = a;
+                // If this wake from idle is earlier than whatever was previously scheduled,
+                // and we are currently idling, then we need to rebatch alarms in case the idle
+                // until time needs to be updated.
+                if (mPendingIdleUntil != null) {
+                    needRebatch = true;
+                }
+            }
         }
 
         if (!rebatching) {
@@ -960,6 +982,11 @@
         }
 
         @Override
+        public long getNextWakeFromIdleTime() {
+            return getNextWakeFromIdleTimeImpl();
+        }
+
+        @Override
         public AlarmManager.AlarmClockInfo getNextAlarmClock(int userId) {
             userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
                     Binder.getCallingUid(), userId, false /* allowAll */, false /* requireFull */,
@@ -1030,10 +1057,15 @@
                 pw.println();
                 pw.println("Idle mode state:");
                 pw.print("  Idling until: "); pw.println(mPendingIdleUntil);
-                mPendingIdleUntil.dump(pw, "    ", nowELAPSED, nowRTC, sdf);
+                mPendingIdleUntil.dump(pw, "    ", nowRTC, nowELAPSED, sdf);
                 pw.println("  Pending alarms:");
                 dumpAlarmList(pw, mPendingWhileIdleAlarms, "    ", nowELAPSED, nowRTC, sdf);
             }
+            if (mNextWakeFromIdle != null) {
+                pw.println();
+                pw.print("  Next wake from idle: "); pw.println(mNextWakeFromIdle);
+                mNextWakeFromIdle.dump(pw, "    ", nowRTC, nowELAPSED, sdf);
+            }
 
             pw.println();
             pw.print("Past-due non-wakeup alarms: ");
@@ -1140,7 +1172,10 @@
                                 TimeUtils.formatDuration(fs.aggregateTime, pw);
                                 pw.print(" "); pw.print(fs.numWakeup);
                                 pw.print(" wakes " ); pw.print(fs.count);
-                                pw.print(" alarms: ");
+                                pw.print(" alarms, last ");
+                                TimeUtils.formatDuration(fs.lastTime, nowELAPSED, pw);
+                                pw.println(":");
+                        pw.print("      ");
                                 pw.print(fs.mTag);
                                 pw.println();
                     }
@@ -1216,7 +1251,13 @@
         return null;
     }
 
-    private AlarmManager.AlarmClockInfo getNextAlarmClockImpl(int userId) {
+    long getNextWakeFromIdleTimeImpl() {
+        synchronized (mLock) {
+            return mNextWakeFromIdle != null ? mNextWakeFromIdle.whenElapsed : Long.MAX_VALUE;
+        }
+    }
+
+    AlarmManager.AlarmClockInfo getNextAlarmClockImpl(int userId) {
         synchronized (mLock) {
             return mNextAlarmClockForUser.get(userId);
         }
@@ -1398,6 +1439,9 @@
                 mPendingIdleUntil = null;
                 restorePending = true;
             }
+            if (mNextWakeFromIdle != null && mNextWakeFromIdle.operation.equals(operation)) {
+                mNextWakeFromIdle = null;
+            }
             rebatchAllAlarmsLocked(true);
             if (restorePending) {
                 restorePendingWhileIdleAlarmsLocked();
@@ -1585,11 +1629,19 @@
                 Alarm alarm = batch.get(i);
                 alarm.count = 1;
                 triggerList.add(alarm);
+                if ((alarm.flags&AlarmManager.FLAG_WAKE_FROM_IDLE) != 0) {
+                    EventLogTags.writeDeviceIdleWakeFromIdle(mPendingIdleUntil != null ? 1 : 0,
+                            alarm.tag);
+                }
                 if (mPendingIdleUntil == alarm) {
                     mPendingIdleUntil = null;
                     rebatchAllAlarmsLocked(false);
                     restorePendingWhileIdleAlarmsLocked();
                 }
+                if (mNextWakeFromIdle == alarm) {
+                    mNextWakeFromIdle = null;
+                    rebatchAllAlarmsLocked(false);
+                }
 
                 // Recurring alarms may have passed several alarm intervals while the
                 // phone was asleep or off, so pass a trigger count when sending them.
@@ -1655,7 +1707,7 @@
         public final long origWhen;
         public final boolean wakeup;
         public final PendingIntent operation;
-        public final String  tag;
+        public final String tag;
         public final WorkSource workSource;
         public final int flags;
         public int count;
@@ -1725,6 +1777,12 @@
                     pw.print(" repeatInterval="); pw.print(repeatInterval);
                     pw.print(" count="); pw.print(count);
                     pw.print(" flags=0x"); pw.println(Integer.toHexString(flags));
+            if (alarmClock != null) {
+                pw.print(prefix); pw.println("Alarm clock:");
+                pw.print(prefix); pw.print("  triggerTime=");
+                pw.println(sdf.format(new Date(alarmClock.getTriggerTime())));
+                pw.print(prefix); pw.print("  showIntent="); pw.println(alarmClock.getShowIntent());
+            }
             pw.print(prefix); pw.print("operation="); pw.println(operation);
         }
     }
@@ -1762,11 +1820,11 @@
         }
     }
 
-    static long fuzzForDuration(long duration) {
+    static int fuzzForDuration(long duration) {
         if (duration < 15*60*1000) {
             // If the duration until the time is less than 15 minutes, the maximum fuzz
             // is the duration.
-            return duration;
+            return (int)duration;
         } else if (duration < 90*60*1000) {
             // If duration is less than 1 1/2 hours, the maximum fuzz is 15 minutes,
             return 15*60*1000;
@@ -1824,7 +1882,7 @@
                     mWakeLock.acquire();
                 }
                 final InFlight inflight = new InFlight(AlarmManagerService.this,
-                        alarm.operation, alarm.workSource, alarm.type, alarm.tag);
+                        alarm.operation, alarm.workSource, alarm.type, alarm.tag, nowELAPSED);
                 mInFlight.add(inflight);
                 mBroadcastRefCount++;
 
diff --git a/services/core/java/com/android/server/AssetAtlasService.java b/services/core/java/com/android/server/AssetAtlasService.java
index 66cc29a..9e28b64 100644
--- a/services/core/java/com/android/server/AssetAtlasService.java
+++ b/services/core/java/com/android/server/AssetAtlasService.java
@@ -199,9 +199,6 @@
         private final ArrayList<Bitmap> mBitmaps;
         private final int mPixelCount;
 
-        private long mNativeBitmap;
-
-        // Used for debugging only
         private Bitmap mAtlasBitmap;
 
         Renderer(ArrayList<Bitmap> bitmaps, int pixelCount) {
@@ -299,9 +296,7 @@
                 }
 
                 final long endRender = System.nanoTime();
-                if (mNativeBitmap != 0) {
-                    result = nUploadAtlas(buffer, mNativeBitmap);
-                }
+                result = nUploadAtlas(buffer, mAtlasBitmap);
 
                 final long endUpload = System.nanoTime();
                 if (DEBUG_ATLAS) {
@@ -326,14 +321,8 @@
          * @param height
          */
         private Canvas acquireCanvas(int width, int height) {
-            if (DEBUG_ATLAS_TEXTURE) {
-                mAtlasBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-                return new Canvas(mAtlasBitmap);
-            } else {
-                Canvas canvas = new Canvas();
-                mNativeBitmap = nAcquireAtlasCanvas(canvas, width, height);
-                return canvas;
-            }
+            mAtlasBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
+            return new Canvas(mAtlasBitmap);
         }
 
         /**
@@ -343,8 +332,8 @@
          * to disk in /data/system/atlas.png for debugging.
          */
         private void releaseCanvas(Canvas canvas) {
+            canvas.setBitmap(null);
             if (DEBUG_ATLAS_TEXTURE) {
-                canvas.setBitmap(null);
 
                 File systemDirectory = new File(Environment.getDataDirectory(), "system");
                 File dataFile = new File(systemDirectory, "atlas.png");
@@ -358,18 +347,13 @@
                 } catch (IOException e) {
                     // Ignore
                 }
-
-                mAtlasBitmap.recycle();
-                mAtlasBitmap = null;
-            } else {
-                nReleaseAtlasCanvas(canvas, mNativeBitmap);
             }
+            mAtlasBitmap.recycle();
+            mAtlasBitmap = null;
         }
     }
 
-    private static native long nAcquireAtlasCanvas(Canvas canvas, int width, int height);
-    private static native void nReleaseAtlasCanvas(Canvas canvas, long bitmap);
-    private static native boolean nUploadAtlas(GraphicBuffer buffer, long bitmap);
+    private static native boolean nUploadAtlas(GraphicBuffer buffer, Bitmap bitmap);
 
     @Override
     public boolean isCompatible(int ppid) {
diff --git a/services/core/java/com/android/server/EventLogTags.logtags b/services/core/java/com/android/server/EventLogTags.logtags
index a227341..abd2ca0 100644
--- a/services/core/java/com/android/server/EventLogTags.logtags
+++ b/services/core/java/com/android/server/EventLogTags.logtags
@@ -173,6 +173,13 @@
 # ---------------------------
 33000 wp_wallpaper_crashed (component|3)
 
+# ---------------------------
+# Device idle
+# ---------------------------
+34000 device_idle (state|1|5), (reason|3)
+34001 device_idle_step
+34002 device_idle_wake_from_idle (is_idle|1|5), (reason|3)
+
 
 # ---------------------------
 # ConnectivityService.java
diff --git a/services/core/java/com/android/server/LockSettingsService.java b/services/core/java/com/android/server/LockSettingsService.java
index a31a1a7..5df74c5 100644
--- a/services/core/java/com/android/server/LockSettingsService.java
+++ b/services/core/java/com/android/server/LockSettingsService.java
@@ -220,6 +220,35 @@
                 setString("migrated_biometric_weak", "true", 0);
                 Slog.i(TAG, "Migrated biometric weak to use the fallback instead");
             }
+
+            // Migrates lockscreen.disabled. Prior to M, the flag was ignored when more than one
+            // user was present on the system, so if we're upgrading to M and there is more than one
+            // user we disable the flag to remain consistent.
+            if (getString("migrated_lockscreen_disabled", null, 0) == null) {
+                final UserManager um = (UserManager) mContext.getSystemService(USER_SERVICE);
+
+                final List<UserInfo> users = um.getUsers();
+                final int userCount = users.size();
+                int switchableUsers = 0;
+                for (int i = 0; i < userCount; i++) {
+                    if (users.get(i).supportsSwitchTo()) {
+                        switchableUsers++;
+                    }
+                }
+
+                if (switchableUsers > 1) {
+                    for (int i = 0; i < userCount; i++) {
+                        int id = users.get(i).id;
+
+                        if (getBoolean(LockPatternUtils.DISABLE_LOCKSCREEN_KEY, false, id)) {
+                            setBoolean(LockPatternUtils.DISABLE_LOCKSCREEN_KEY, false, id);
+                        }
+                    }
+                }
+
+                setString("migrated_lockscreen_disabled", "true", 0);
+                Slog.i(TAG, "Migrated lockscreen disabled flag");
+            }
         } catch (RemoteException re) {
             Slog.e(TAG, "Unable to migrate old data", re);
         }
diff --git a/services/core/java/com/android/server/MountService.java b/services/core/java/com/android/server/MountService.java
index f88802a..89a7173 100644
--- a/services/core/java/com/android/server/MountService.java
+++ b/services/core/java/com/android/server/MountService.java
@@ -232,7 +232,12 @@
         public static final int FstrimCompleted                = 700;
     }
 
+    private static final int VERSION_INIT = 1;
+    private static final int VERSION_ADD_PRIMARY = 2;
+
     private static final String TAG_VOLUMES = "volumes";
+    private static final String ATTR_VERSION = "version";
+    private static final String ATTR_PRIMARY_STORAGE_UUID = "primaryStorageUuid";
     private static final String TAG_VOLUME = "volume";
     private static final String ATTR_TYPE = "type";
     private static final String ATTR_FS_UUID = "fsUuid";
@@ -302,6 +307,8 @@
     /** Map from UUID to metadata */
     @GuardedBy("mLock")
     private ArrayMap<String, VolumeMetadata> mMetadata = new ArrayMap<>();
+    @GuardedBy("mLock")
+    private String mPrimaryStorageUuid;
 
     /** Map from disk ID to latches */
     @GuardedBy("mLock")
@@ -943,22 +950,25 @@
     }
 
     private void onDiskScannedLocked(DiskInfo disk) {
+        final Intent intent = new Intent(DiskInfo.ACTION_DISK_SCANNED);
+        intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
+        mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
+                android.Manifest.permission.WRITE_MEDIA_STORAGE);
+
         final CountDownLatch latch = mDiskScanLatches.remove(disk.id);
         if (latch != null) {
             latch.countDown();
         }
 
-        boolean empty = true;
+        int volumeCount = 0;
         for (int i = 0; i < mVolumes.size(); i++) {
             final VolumeInfo vol = mVolumes.valueAt(i);
             if (Objects.equals(disk.id, vol.getDiskId())) {
-                empty = false;
+                volumeCount++;
             }
         }
 
-        if (empty) {
-            mCallbacks.notifyDiskUnsupported(disk);
-        }
+        mCallbacks.notifyDiskScanned(disk, volumeCount);
     }
 
     private void onVolumeCreatedLocked(VolumeInfo vol) {
@@ -1022,8 +1032,8 @@
         if (isBroadcastWorthy(vol)) {
             final Intent intent = new Intent(VolumeInfo.ACTION_VOLUME_STATE_CHANGED);
             intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
-            // TODO: require receiver to hold permission
-            mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+            mContext.sendBroadcastAsUser(intent, UserHandle.ALL,
+                    android.Manifest.permission.WRITE_MEDIA_STORAGE);
         }
 
         final String oldStateEnv = VolumeInfo.getEnvironmentForState(oldState);
@@ -1166,7 +1176,21 @@
             while ((type = in.next()) != END_DOCUMENT) {
                 if (type == START_TAG) {
                     final String tag = in.getName();
-                    if (TAG_VOLUME.equals(tag)) {
+                    if (TAG_VOLUMES.equals(tag)) {
+                        final int version = readIntAttribute(in, ATTR_VERSION, VERSION_INIT);
+                        if (version >= VERSION_ADD_PRIMARY) {
+                            mPrimaryStorageUuid = readStringAttribute(in,
+                                    ATTR_PRIMARY_STORAGE_UUID);
+                        } else {
+                            if (SystemProperties.getBoolean(StorageManager.PROP_PRIMARY_PHYSICAL,
+                                    false)) {
+                                mPrimaryStorageUuid = StorageManager.UUID_PRIMARY_PHYSICAL;
+                            } else {
+                                mPrimaryStorageUuid = StorageManager.UUID_PRIVATE_INTERNAL;
+                            }
+                        }
+
+                    } else if (TAG_VOLUME.equals(tag)) {
                         final VolumeMetadata meta = VolumeMetadata.read(in);
                         mMetadata.put(meta.fsUuid, meta);
                     }
@@ -1192,6 +1216,8 @@
             out.setOutput(fos, "utf-8");
             out.startDocument(null, true);
             out.startTag(null, TAG_VOLUMES);
+            writeIntAttribute(out, ATTR_VERSION, VERSION_ADD_PRIMARY);
+            writeStringAttribute(out, ATTR_PRIMARY_STORAGE_UUID, mPrimaryStorageUuid);
             final int size = mMetadata.size();
             for (int i = 0; i < size; i++) {
                 final VolumeMetadata meta = mMetadata.valueAt(i);
@@ -1398,6 +1424,24 @@
     }
 
     @Override
+    public String getPrimaryStorageUuid() throws RemoteException {
+        synchronized (mLock) {
+            return mPrimaryStorageUuid;
+        }
+    }
+
+    @Override
+    public void setPrimaryStorageUuid(String volumeUuid) throws RemoteException {
+        synchronized (mLock) {
+            Slog.d(TAG, "Changing primary storage UUID to " + volumeUuid);
+            mPrimaryStorageUuid = volumeUuid;
+            writeMetadataLocked();
+
+            // TODO: reevaluate all volumes we know about!
+        }
+    }
+
+    @Override
     public int[] getStorageUsers(String path) {
         enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);
         waitForReady();
@@ -2700,7 +2744,7 @@
         private static final int MSG_STORAGE_STATE_CHANGED = 1;
         private static final int MSG_VOLUME_STATE_CHANGED = 2;
         private static final int MSG_VOLUME_METADATA_CHANGED = 3;
-        private static final int MSG_DISK_UNSUPPORTED = 4;
+        private static final int MSG_DISK_SCANNED = 4;
 
         private final RemoteCallbackList<IMountServiceListener>
                 mCallbacks = new RemoteCallbackList<>();
@@ -2748,8 +2792,8 @@
                     callback.onVolumeMetadataChanged((VolumeInfo) args.arg1);
                     break;
                 }
-                case MSG_DISK_UNSUPPORTED: {
-                    callback.onDiskUnsupported((DiskInfo) args.arg1);
+                case MSG_DISK_SCANNED: {
+                    callback.onDiskScanned((DiskInfo) args.arg1, args.argi2);
                     break;
                 }
             }
@@ -2777,10 +2821,11 @@
             obtainMessage(MSG_VOLUME_METADATA_CHANGED, args).sendToTarget();
         }
 
-        private void notifyDiskUnsupported(DiskInfo disk) {
+        private void notifyDiskScanned(DiskInfo disk, int volumeCount) {
             final SomeArgs args = SomeArgs.obtain();
             args.arg1 = disk;
-            obtainMessage(MSG_DISK_UNSUPPORTED, args).sendToTarget();
+            args.argi2 = volumeCount;
+            obtainMessage(MSG_DISK_SCANNED, args).sendToTarget();
         }
     }
 
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index 1b32f57..999e91b 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -734,12 +734,15 @@
             throw new IllegalArgumentException("account is null");
         }
         checkAuthenticateAccountsPermission(account);
-
-        final UserAccounts accounts = getUserAccountsForCaller();
         int userId = Binder.getCallingUserHandle().getIdentifier();
         if (!canUserModifyAccounts(userId) || !canUserModifyAccountsForType(userId, account.type)) {
             return false;
         }
+        return updateLastAuthenticatedTime(account);
+    }
+
+    private boolean updateLastAuthenticatedTime(Account account) {
+        final UserAccounts accounts = getUserAccountsForCaller();
         synchronized (accounts.cacheLock) {
             final ContentValues values = new ContentValues();
             values.put(ACCOUNTS_LAST_AUTHENTICATE_TIME_EPOCH_MILLIS, System.currentTimeMillis());
@@ -2022,7 +2025,7 @@
         try {
             new Session(accounts, response, account.type, expectActivityLaunch,
                     true /* stripAuthTokenFromResult */, account.name,
-                    true /* authDetailsRequired */) {
+                    true /* authDetailsRequired */, true /* updateLastAuthenticatedTime */) {
                 @Override
                 public void run() throws RemoteException {
                     mAuthenticator.confirmCredentials(this, account, options);
@@ -2059,7 +2062,7 @@
         try {
             new Session(accounts, response, account.type, expectActivityLaunch,
                     true /* stripAuthTokenFromResult */, account.name,
-                    false /* authDetailsRequired */) {
+                    false /* authDetailsRequired */, true /* updateLastCredentialTime */) {
                 @Override
                 public void run() throws RemoteException {
                     mAuthenticator.updateCredentials(this, account, authTokenType, loginOptions);
@@ -2492,6 +2495,11 @@
         final String mAccountName;
         // Indicates if we need to add auth details(like last credential time)
         final boolean mAuthDetailsRequired;
+        // If set, we need to update the last authenticated time. This is
+        // currently
+        // used on
+        // successful confirming credentials.
+        final boolean mUpdateLastAuthenticatedTime;
 
         public int mNumResults = 0;
         private int mNumRequestContinued = 0;
@@ -2505,6 +2513,13 @@
         public Session(UserAccounts accounts, IAccountManagerResponse response, String accountType,
                 boolean expectActivityLaunch, boolean stripAuthTokenFromResult, String accountName,
                 boolean authDetailsRequired) {
+            this(accounts, response, accountType, expectActivityLaunch, stripAuthTokenFromResult,
+                    accountName, authDetailsRequired, false /* updateLastAuthenticatedTime */);
+        }
+
+        public Session(UserAccounts accounts, IAccountManagerResponse response, String accountType,
+                boolean expectActivityLaunch, boolean stripAuthTokenFromResult, String accountName,
+                boolean authDetailsRequired, boolean updateLastAuthenticatedTime) {
             super();
             //if (response == null) throw new IllegalArgumentException("response is null");
             if (accountType == null) throw new IllegalArgumentException("accountType is null");
@@ -2516,6 +2531,7 @@
             mCreationTime = SystemClock.elapsedRealtime();
             mAccountName = accountName;
             mAuthDetailsRequired = authDetailsRequired;
+            mUpdateLastAuthenticatedTime = updateLastAuthenticatedTime;
 
             synchronized (mSessions) {
                 mSessions.put(toString(), this);
@@ -2651,15 +2667,55 @@
         public void onResult(Bundle result) {
             mNumResults++;
             Intent intent = null;
-            if (result != null && mAuthDetailsRequired) {
-                long lastAuthenticatedTime = DatabaseUtils.longForQuery(
-                        mAccounts.openHelper.getReadableDatabase(),
-                        "select " + ACCOUNTS_LAST_AUTHENTICATE_TIME_EPOCH_MILLIS + " from " +
-                                TABLE_ACCOUNTS + " WHERE " + ACCOUNTS_NAME + "=? AND "
-                                + ACCOUNTS_TYPE + "=?",
-                        new String[]{mAccountName, mAccountType});
-                result.putLong(AccountManager.KEY_LAST_AUTHENTICATE_TIME_MILLIS_EPOCH,
-                        lastAuthenticatedTime);
+            if (result != null) {
+                boolean isSuccessfulConfirmCreds = result.getBoolean(
+                        AccountManager.KEY_BOOLEAN_RESULT, false);
+                boolean isSuccessfulUpdateCreds = 
+                        result.containsKey(AccountManager.KEY_ACCOUNT_NAME)
+                        && result.containsKey(AccountManager.KEY_ACCOUNT_TYPE);
+                // We should only update lastAuthenticated time, if 
+                // mUpdateLastAuthenticatedTime is true and the confirmRequest
+                // or updateRequest was successful
+                boolean needUpdate = mUpdateLastAuthenticatedTime 
+                        && (isSuccessfulConfirmCreds || isSuccessfulUpdateCreds);
+                if (needUpdate || mAuthDetailsRequired) {
+                    boolean accountPresent = isAccountPresentForCaller(mAccountName, mAccountType);
+                    if (needUpdate && accountPresent) {
+                        updateLastAuthenticatedTime(new Account(mAccountName, mAccountType));
+                    }
+                    if (mAuthDetailsRequired) {
+                        long lastAuthenticatedTime = -1;
+                        if (accountPresent) {
+                            lastAuthenticatedTime = DatabaseUtils.longForQuery(
+                                    mAccounts.openHelper.getReadableDatabase(),
+                                    "select " + ACCOUNTS_LAST_AUTHENTICATE_TIME_EPOCH_MILLIS
+                                            + " from " +
+                                            TABLE_ACCOUNTS + " WHERE " + ACCOUNTS_NAME + "=? AND "
+                                            + ACCOUNTS_TYPE + "=?",
+                                    new String[] {
+                                            mAccountName, mAccountType
+                                    });
+                        }
+                        result.putLong(AccountManager.KEY_LAST_AUTHENTICATE_TIME_MILLIS_EPOCH,
+                                lastAuthenticatedTime);
+                    }
+                }
+                if (mAuthDetailsRequired) {
+                    long lastAuthenticatedTime = -1;
+                    if (isAccountPresentForCaller(mAccountName, mAccountType)) {
+                        lastAuthenticatedTime = DatabaseUtils.longForQuery(
+                                mAccounts.openHelper.getReadableDatabase(),
+                                "select " + ACCOUNTS_LAST_AUTHENTICATE_TIME_EPOCH_MILLIS + " from "
+                                        +
+                                        TABLE_ACCOUNTS + " WHERE " + ACCOUNTS_NAME + "=? AND "
+                                        + ACCOUNTS_TYPE + "=?",
+                                new String[] {
+                                        mAccountName, mAccountType
+                                });
+                    }
+                    result.putLong(AccountManager.KEY_LAST_AUTHENTICATE_TIME_MILLIS_EPOCH,
+                            lastAuthenticatedTime);
+                }
             }
             if (result != null
                     && (intent = result.getParcelable(AccountManager.KEY_INTENT)) != null) {
@@ -3202,6 +3258,17 @@
         return false;
     }
 
+    private boolean isAccountPresentForCaller(String accountName, String accountType) {
+        if (getUserAccountsForCaller().accountCache.containsKey(accountType)) {
+            for (Account account : getUserAccountsForCaller().accountCache.get(accountType)) {
+                if (account.name.equals(accountName)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     private boolean hasExplicitlyGrantedPermission(Account account, String authTokenType,
             int callerUid) {
         if (callerUid == Process.SYSTEM_UID) {
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 9d5ae8e..4970e0f 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -437,6 +437,11 @@
      */
     SparseArray<String[]> mLockTaskPackages = new SparseArray<>();
 
+    /**
+     * The package name of the DeviceOwner. This package is not permitted to have its data cleared.
+     */
+    String mDeviceOwnerName;
+
     public class PendingAssistExtras extends Binder implements Runnable {
         public final ActivityRecord activity;
         public final Bundle extras;
@@ -4831,6 +4836,9 @@
     public boolean clearApplicationUserData(final String packageName,
             final IPackageDataObserver observer, int userId) {
         enforceNotIsolatedCaller("clearApplicationUserData");
+        if (packageName != null && packageName.equals(mDeviceOwnerName)) {
+            throw new SecurityException("Clearing DeviceOwner data is forbidden.");
+        }
         int uid = Binder.getCallingUid();
         int pid = Binder.getCallingPid();
         userId = handleIncomingUser(pid, uid,
@@ -5500,17 +5508,20 @@
             if (app.isolated) {
                 mBatteryStatsService.removeIsolatedUid(app.uid, app.info.uid);
             }
-            app.kill(reason, true);
-            handleAppDiedLocked(app, true, allowRestart);
-            removeLruProcessLocked(app);
-
+            boolean willRestart = false;
             if (app.persistent && !app.isolated) {
                 if (!callerWillRestart) {
-                    addAppLocked(app.info, false, null /* ABI override */);
+                    willRestart = true;
                 } else {
                     needRestart = true;
                 }
             }
+            app.kill(reason, true);
+            handleAppDiedLocked(app, willRestart, allowRestart);
+            if (willRestart) {
+                removeLruProcessLocked(app);
+                addAppLocked(app.info, false, null /* ABI override */);
+            }
         } else {
             mRemovedProcesses.add(app);
         }
@@ -8563,6 +8574,17 @@
     }
 
     @Override
+    public void updateDeviceOwner(String packageName) {
+        final int callingUid = Binder.getCallingUid();
+        if (callingUid != 0 && callingUid != Process.SYSTEM_UID) {
+            throw new SecurityException("updateDeviceOwner called from non-system process");
+        }
+        synchronized (this) {
+            mDeviceOwnerName = packageName;
+        }
+    }
+
+    @Override
     public void updateLockTaskPackages(int userId, String[] packages) {
         final int callingUid = Binder.getCallingUid();
         if (callingUid != 0 && callingUid != Process.SYSTEM_UID) {
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index 905adc0..58665d7 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -982,9 +982,18 @@
         if (noOutput) {
             return;
         }
-        if (BatteryStatsHelper.checkWifiOnly(mContext)) {
-            flags |= BatteryStats.DUMP_DEVICE_WIFI_ONLY;
+
+        long ident = Binder.clearCallingIdentity();
+        try {
+            if (BatteryStatsHelper.checkWifiOnly(mContext)) {
+                flags |= BatteryStats.DUMP_DEVICE_WIFI_ONLY;
+            }
+            // Fetch data from external sources and update the BatteryStatsImpl object with them.
+            updateExternalStats("dump");
+        } finally {
+            Binder.restoreCallingIdentity(ident);
         }
+
         if (reqUid >= 0) {
             // By default, if the caller is only interested in a specific package, then
             // we only dump the aggregated data since charged.
@@ -995,9 +1004,6 @@
             }
         }
 
-        // Fetch data from external sources and update the BatteryStatsImpl object with them.
-        updateExternalStats("dump");
-
         if (useCheckinFormat) {
             List<ApplicationInfo> apps = mContext.getPackageManager().getInstalledApplications(0);
             if (isRealCheckin) {
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index f62f08d..a91a7ca 100644
--- a/services/core/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -18,7 +18,9 @@
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
+import java.text.SimpleDateFormat;
 import java.util.ArrayList;
+import java.util.Date;
 
 import android.app.ActivityManager;
 import android.app.AppGlobals;
@@ -95,14 +97,27 @@
     final ArrayList<BroadcastRecord> mOrderedBroadcasts = new ArrayList<BroadcastRecord>();
 
     /**
-     * Historical data of past broadcasts, for debugging.
+     * Historical data of past broadcasts, for debugging.  This is a ring buffer
+     * whose last element is at mHistoryNext.
      */
     final BroadcastRecord[] mBroadcastHistory = new BroadcastRecord[MAX_BROADCAST_HISTORY];
+    int mHistoryNext = 0;
 
     /**
-     * Summary of historical data of past broadcasts, for debugging.
+     * Summary of historical data of past broadcasts, for debugging.  This is a
+     * ring buffer whose last element is at mSummaryHistoryNext.
      */
     final Intent[] mBroadcastSummaryHistory = new Intent[MAX_BROADCAST_SUMMARY_HISTORY];
+    int mSummaryHistoryNext = 0;
+
+    /**
+     * Various milestone timestamps of entries in the mBroadcastSummaryHistory ring
+     * buffer, also tracked via the mSummaryHistoryNext index.  These are all in wall
+     * clock time, not elapsed.
+     */
+    final long[] mSummaryHistoryEnqueueTime = new  long[MAX_BROADCAST_SUMMARY_HISTORY];
+    final long[] mSummaryHistoryDispatchTime = new  long[MAX_BROADCAST_SUMMARY_HISTORY];
+    final long[] mSummaryHistoryFinishTime = new  long[MAX_BROADCAST_SUMMARY_HISTORY];
 
     /**
      * Set when we current have a BROADCAST_INTENT_MSG in flight.
@@ -1060,18 +1075,28 @@
         }
     }
 
+    private final int ringAdvance(int x, final int increment, final int ringSize) {
+        x += increment;
+        if (x < 0) return (ringSize - 1);
+        else if (x >= ringSize) return 0;
+        else return x;
+    }
+
     private final void addBroadcastToHistoryLocked(BroadcastRecord r) {
         if (r.callingUid < 0) {
             // This was from a registerReceiver() call; ignore it.
             return;
         }
-        System.arraycopy(mBroadcastHistory, 0, mBroadcastHistory, 1,
-                MAX_BROADCAST_HISTORY-1);
         r.finishTime = SystemClock.uptimeMillis();
-        mBroadcastHistory[0] = r;
-        System.arraycopy(mBroadcastSummaryHistory, 0, mBroadcastSummaryHistory, 1,
-                MAX_BROADCAST_SUMMARY_HISTORY-1);
-        mBroadcastSummaryHistory[0] = r.intent;
+
+        mBroadcastHistory[mHistoryNext] = r;
+        mHistoryNext = ringAdvance(mHistoryNext, 1, MAX_BROADCAST_HISTORY);
+
+        mBroadcastSummaryHistory[mSummaryHistoryNext] = r.intent;
+        mSummaryHistoryEnqueueTime[mSummaryHistoryNext] = r.enqueueClockTime;
+        mSummaryHistoryDispatchTime[mSummaryHistoryNext] = r.dispatchClockTime;
+        mSummaryHistoryFinishTime[mSummaryHistoryNext] = System.currentTimeMillis();
+        mSummaryHistoryNext = ringAdvance(mSummaryHistoryNext, 1, MAX_BROADCAST_SUMMARY_HISTORY);
     }
 
     final void logBroadcastReceiverDiscardLocked(BroadcastRecord r) {
@@ -1158,11 +1183,20 @@
 
         int i;
         boolean printed = false;
-        for (i=0; i<MAX_BROADCAST_HISTORY; i++) {
-            BroadcastRecord r = mBroadcastHistory[i];
+
+        i = -1;
+        int lastIndex = mHistoryNext;
+        int ringIndex = lastIndex;
+        do {
+            // increasing index = more recent entry, and we want to print the most
+            // recent first and work backwards, so we roll through the ring backwards.
+            ringIndex = ringAdvance(ringIndex, -1, MAX_BROADCAST_HISTORY);
+            BroadcastRecord r = mBroadcastHistory[ringIndex];
             if (r == null) {
-                break;
+                continue;
             }
+
+            i++; // genuine record of some sort even if we're filtering it out
             if (dumpPackage != null && !dumpPackage.equals(r.callerPackage)) {
                 continue;
             }
@@ -1190,17 +1224,33 @@
                     pw.print("    extras: "); pw.println(bundle.toString());
                 }
             }
-        }
+        } while (ringIndex != lastIndex);
 
         if (dumpPackage == null) {
+            lastIndex = ringIndex = mSummaryHistoryNext;
             if (dumpAll) {
-                i = 0;
                 printed = false;
+                i = -1;
+            } else {
+                // roll over the 'i' full dumps that have already been issued
+                for (int j = i;
+                        j > 0 && ringIndex != lastIndex;) {
+                    ringIndex = ringAdvance(ringIndex, -1, MAX_BROADCAST_SUMMARY_HISTORY);
+                    BroadcastRecord r = mBroadcastHistory[ringIndex];
+                    if (r == null) {
+                        continue;
+                    }
+                    j--;
+                }
             }
-            for (; i<MAX_BROADCAST_SUMMARY_HISTORY; i++) {
-                Intent intent = mBroadcastSummaryHistory[i];
+            // done skipping; dump the remainder of the ring. 'i' is still the ordinal within
+            // the overall broadcast history.
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+            do {
+                ringIndex = ringAdvance(ringIndex, -1, MAX_BROADCAST_SUMMARY_HISTORY);
+                Intent intent = mBroadcastSummaryHistory[ringIndex];
                 if (intent == null) {
-                    break;
+                    continue;
                 }
                 if (!printed) {
                     if (needSep) {
@@ -1214,13 +1264,17 @@
                     pw.println("  ...");
                     break;
                 }
+                i++;
                 pw.print("  #"); pw.print(i); pw.print(": ");
                 pw.println(intent.toShortString(false, true, true, false));
+                pw.print("    enq="); pw.print(sdf.format(new Date(mSummaryHistoryEnqueueTime[ringIndex])));
+                pw.print(" disp="); pw.print(sdf.format(new Date(mSummaryHistoryDispatchTime[ringIndex])));
+                pw.print(" fin="); pw.println(sdf.format(new Date(mSummaryHistoryFinishTime[ringIndex])));
                 Bundle bundle = intent.getExtras();
                 if (bundle != null) {
                     pw.print("    extras: "); pw.println(bundle.toString());
                 }
-            }
+            } while (ringIndex != lastIndex);
         }
 
         return needSep;
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 9a30f0d..6b56279 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -86,6 +86,8 @@
 import android.provider.Settings.System;
 import android.telecom.TelecomManager;
 import android.text.TextUtils;
+import android.util.ArrayMap;
+import android.util.ArraySet;
 import android.util.Log;
 import android.util.MathUtils;
 import android.util.Slog;
@@ -110,10 +112,8 @@
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
-import java.util.Map;
 import java.util.NoSuchElementException;
 import java.util.Objects;
-import java.util.Set;
 
 /**
  * The implementation of the volume manager service.
@@ -407,8 +407,7 @@
         return "0x" + Integer.toHexString(device) + ":" + deviceAddress;
     }
 
-    private final HashMap<String, DeviceListSpec> mConnectedDevices =
-            new HashMap<String, DeviceListSpec>();
+    private final ArrayMap<String, DeviceListSpec> mConnectedDevices = new ArrayMap<>();
 
     // Forced device usage for communications
     private int mForcedUseForComm;
@@ -2830,16 +2829,22 @@
             }
         }
         public void onServiceDisconnected(int profile) {
+            ArraySet<String> toRemove = null;
             switch (profile) {
             case BluetoothProfile.A2DP:
                 synchronized (mConnectedDevices) {
                     synchronized (mA2dpAvrcpLock) {
                         // Disconnect ALL DEVICE_OUT_BLUETOOTH_A2DP devices
-                        for(Map.Entry<String, DeviceListSpec> entry
-                                : mConnectedDevices.entrySet()) {
-                            DeviceListSpec deviceSpec = entry.getValue();
+                        for (int i = 0; i < mConnectedDevices.size(); i++) {
+                            DeviceListSpec deviceSpec = mConnectedDevices.valueAt(i);
                             if (deviceSpec.mDeviceType == AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP) {
-                                makeA2dpDeviceUnavailableNow(deviceSpec.mDeviceAddress);
+                                toRemove = toRemove != null ? toRemove : new ArraySet<String>();
+                                toRemove.add(deviceSpec.mDeviceAddress);
+                            }
+                        }
+                        if (toRemove != null) {
+                            for (int i = 0; i < toRemove.size(); i++) {
+                                makeA2dpDeviceUnavailableNow(toRemove.valueAt(i));
                             }
                         }
                     }
@@ -2849,11 +2854,16 @@
             case BluetoothProfile.A2DP_SINK:
                 synchronized (mConnectedDevices) {
                     // Disconnect ALL DEVICE_IN_BLUETOOTH_A2DP devices
-                    for(Map.Entry<String, DeviceListSpec> entry
-                            : mConnectedDevices.entrySet()) {
-                        DeviceListSpec deviceSpec = entry.getValue();
+                    for(int i = 0; i < mConnectedDevices.size(); i++) {
+                        DeviceListSpec deviceSpec = mConnectedDevices.valueAt(i);
                         if (deviceSpec.mDeviceType == AudioSystem.DEVICE_IN_BLUETOOTH_A2DP) {
-                            makeA2dpSrcUnavailable(deviceSpec.mDeviceAddress);
+                            toRemove = toRemove != null ? toRemove : new ArraySet<String>();
+                            toRemove.add(deviceSpec.mDeviceAddress);
+                        }
+                    }
+                    if (toRemove != null) {
+                        for (int i = 0; i < toRemove.size(); i++) {
+                            makeA2dpSrcUnavailable(toRemove.valueAt(i));
                         }
                     }
                 }
@@ -4147,11 +4157,8 @@
 
                     // Restore device connection states
                     synchronized (mConnectedDevices) {
-                        Set set = mConnectedDevices.entrySet();
-                        Iterator i = set.iterator();
-                        while (i.hasNext()) {
-                            Map.Entry device = (Map.Entry)i.next();
-                            DeviceListSpec spec = (DeviceListSpec)device.getValue();
+                        for (int i = 0; i < mConnectedDevices.size(); i++) {
+                            DeviceListSpec spec = mConnectedDevices.valueAt(i);
                             AudioSystem.setDeviceConnectionState(
                                                             spec.mDeviceType,
                                                             AudioSystem.DEVICE_STATE_AVAILABLE,
@@ -4600,8 +4607,8 @@
         int delay = 0;
         if ((state == 0) && ((device & mBecomingNoisyIntentDevices) != 0)) {
             int devices = 0;
-            for (String key : mConnectedDevices.keySet()) {
-                int dev = mConnectedDevices.get(key).mDeviceType;
+            for (int i = 0; i < mConnectedDevices.size(); i++) {
+                int dev = mConnectedDevices.valueAt(i).mDeviceType;
                 if (((dev & AudioSystem.DEVICE_BIT_IN) == 0)
                         && ((dev & mBecomingNoisyIntentDevices) != 0)) {
                     devices |= dev;
diff --git a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
index c4f410f..5ac027d 100644
--- a/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
+++ b/services/core/java/com/android/server/hdmi/HdmiCecLocalDeviceTv.java
@@ -905,10 +905,14 @@
     @ServiceThreadOnly
     private void updateArcFeatureStatus(int portId, boolean isConnected) {
         assertRunOnServiceThread();
+        HdmiDeviceInfo avr = getAvrDeviceInfo();
+        if (avr == null) {
+            return;
+        }
         // HEAC 2.4, HEACT 5-15
         // Should not activate ARC if +5V status is false.
         HdmiPortInfo portInfo = mService.getPortInfo(portId);
-        if (portInfo.isArcSupported()) {
+        if (avr.getPortId() == portId && portInfo.isArcSupported()) {
             changeArcFeatureEnabled(portId, isConnected);
         }
     }
diff --git a/services/core/java/com/android/server/location/GpsLocationProvider.java b/services/core/java/com/android/server/location/GpsLocationProvider.java
index a72c77e..d3240ec 100644
--- a/services/core/java/com/android/server/location/GpsLocationProvider.java
+++ b/services/core/java/com/android/server/location/GpsLocationProvider.java
@@ -550,14 +550,19 @@
             }
         }
 
-        try {
-            // Convert properties to string contents and send it to HAL.
-            ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
-            properties.store(baos, null);
-            native_configuration_update(baos.toString());
-            Log.d(TAG, "final config = " + baos.toString());
-        } catch (IOException ex) {
-            Log.w(TAG, "failed to dump properties contents");
+        if (native_is_gnss_configuration_supported()) {
+            try {
+                // Convert properties to string contents and send it to HAL.
+                ByteArrayOutputStream baos = new ByteArrayOutputStream(4096);
+                properties.store(baos, null);
+                native_configuration_update(baos.toString());
+                Log.d(TAG, "final config = " + baos.toString());
+            } catch (IOException ex) {
+                Log.w(TAG, "failed to dump properties contents");
+            }
+        } else if (DEBUG) {
+            Log.d(TAG, "Skipped configuration update because GNSS configuration in GPS HAL is not"
+                    + " supported");
         }
 
         // SUPL_ES configuration.
@@ -732,16 +737,21 @@
         }
 
         if (info != null) {
-            boolean dataEnabled = TelephonyManager.getDefault().getDataEnabled();
-            boolean networkAvailable = info.isAvailable() && dataEnabled;
-            String defaultApn = getSelectedApn();
-            if (defaultApn == null) {
-                defaultApn = "dummy-apn";
-            }
+            if (native_is_agps_ril_supported()) {
+                boolean dataEnabled = TelephonyManager.getDefault().getDataEnabled();
+                boolean networkAvailable = info.isAvailable() && dataEnabled;
+                String defaultApn = getSelectedApn();
+                if (defaultApn == null) {
+                    defaultApn = "dummy-apn";
+                }
 
-            native_update_network_state(info.isConnected(), info.getType(),
-                                        info.isRoaming(), networkAvailable,
-                                        info.getExtraInfo(), defaultApn);
+                native_update_network_state(info.isConnected(), info.getType(),
+                        info.isRoaming(), networkAvailable,
+                        info.getExtraInfo(), defaultApn);
+            } else if (DEBUG) {
+                Log.d(TAG, "Skipped network state update because AGPS-RIL in GPS HAL is not"
+                        + " supported");
+            }
         }
 
         if (info != null && info.getType() == ConnectivityManager.TYPE_MOBILE_SUPL
@@ -1752,7 +1762,7 @@
     // NI Client support
     //=============================================================
     private final INetInitiatedListener mNetInitiatedListener = new INetInitiatedListener.Stub() {
-        // Sends a response for an NI reqeust to HAL.
+        // Sends a response for an NI request to HAL.
         @Override
         public boolean sendNiResponse(int notificationId, int userResponse)
         {
@@ -1843,7 +1853,7 @@
     private void requestSetID(int flags) {
         TelephonyManager phone = (TelephonyManager)
                 mContext.getSystemService(Context.TELEPHONY_SERVICE);
-        int    type = AGPS_SETID_TYPE_NONE;
+        int type = AGPS_SETID_TYPE_NONE;
         String data = "";
 
         if ((flags & AGPS_RIL_REQUEST_SETID_IMSI) == AGPS_RIL_REQUEST_SETID_IMSI) {
@@ -1994,20 +2004,26 @@
                     .addOnSubscriptionsChangedListener(mOnSubscriptionsChangedListener);
 
             // listen for events
-            IntentFilter intentFilter = new IntentFilter();
-            intentFilter.addAction(Intents.DATA_SMS_RECEIVED_ACTION);
-            intentFilter.addDataScheme("sms");
-            intentFilter.addDataAuthority("localhost","7275");
-            mContext.registerReceiver(mBroadcastReceiver, intentFilter, null, this);
+            IntentFilter intentFilter;
+            if (native_is_agps_ril_supported()) {
+                intentFilter = new IntentFilter();
+                intentFilter.addAction(Intents.DATA_SMS_RECEIVED_ACTION);
+                intentFilter.addDataScheme("sms");
+                intentFilter.addDataAuthority("localhost", "7275");
+                mContext.registerReceiver(mBroadcastReceiver, intentFilter, null, this);
 
-            intentFilter = new IntentFilter();
-            intentFilter.addAction(Intents.WAP_PUSH_RECEIVED_ACTION);
-            try {
-                intentFilter.addDataType("application/vnd.omaloc-supl-init");
-            } catch (IntentFilter.MalformedMimeTypeException e) {
-                Log.w(TAG, "Malformed SUPL init mime type");
+                intentFilter = new IntentFilter();
+                intentFilter.addAction(Intents.WAP_PUSH_RECEIVED_ACTION);
+                try {
+                    intentFilter.addDataType("application/vnd.omaloc-supl-init");
+                } catch (IntentFilter.MalformedMimeTypeException e) {
+                    Log.w(TAG, "Malformed SUPL init mime type");
+                }
+                mContext.registerReceiver(mBroadcastReceiver, intentFilter, null, this);
+            } else if (DEBUG) {
+                Log.d(TAG, "Skipped registration for SMS/WAP-PUSH messages because AGPS Ril in GPS"
+                        + " HAL is not supported");
             }
-            mContext.registerReceiver(mBroadcastReceiver, intentFilter, null, this);
 
             intentFilter = new IntentFilter();
             intentFilter.addAction(ALARM_WAKEUP);
@@ -2187,6 +2203,8 @@
     static { class_init_native(); }
     private static native void class_init_native();
     private static native boolean native_is_supported();
+    private static native boolean native_is_agps_ril_supported();
+    private static native boolean native_is_gnss_configuration_supported();
 
     private native boolean native_init();
     private native void native_cleanup();
diff --git a/services/core/java/com/android/server/pm/KeySetManagerService.java b/services/core/java/com/android/server/pm/KeySetManagerService.java
index db3ae91..c8e5c3a 100644
--- a/services/core/java/com/android/server/pm/KeySetManagerService.java
+++ b/services/core/java/com/android/server/pm/KeySetManagerService.java
@@ -488,7 +488,7 @@
     }
 
     public String encodePublicKey(PublicKey k) throws IOException {
-        return new String(Base64.encode(k.getEncoded(), 0));
+        return new String(Base64.encode(k.getEncoded(), Base64.NO_WRAP));
     }
 
     public void dumpLPr(PrintWriter pw, String packageName,
diff --git a/services/core/java/com/android/server/pm/PackageDexOptimizer.java b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
index 4c36fa6..a42e4e7 100644
--- a/services/core/java/com/android/server/pm/PackageDexOptimizer.java
+++ b/services/core/java/com/android/server/pm/PackageDexOptimizer.java
@@ -199,7 +199,8 @@
     @Nullable
     private String createOatDirIfSupported(PackageParser.Package pkg, String dexInstructionSet)
             throws IOException {
-        if (pkg.isSystemApp() && !pkg.isUpdatedSystemApp()) {
+        if ((pkg.isSystemApp() && !pkg.isUpdatedSystemApp()) || pkg.isForwardLocked()
+                || pkg.applicationInfo.isExternalAsec()) {
             return null;
         }
         File codePath = new File(pkg.codePath);
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index 89fa320..a406175 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -717,7 +717,7 @@
         } else {
             final VolumeInfo vol = mStorage.findVolumeByUuid(volumeUuid);
             if (vol != null && vol.type == VolumeInfo.TYPE_PRIVATE
-                    && vol.state == VolumeInfo.STATE_MOUNTED) {
+                    && vol.isMountedWritable()) {
                 return new File(vol.path, "app");
             } else {
                 throw new FileNotFoundException("Failed to find volume for UUID " + volumeUuid);
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 24cc909..bd22524 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -49,12 +49,10 @@
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ASK;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_NEVER;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_UNDEFINED;
-import static android.content.pm.PackageManager.MOVE_EXTERNAL_MEDIA;
 import static android.content.pm.PackageManager.MOVE_FAILED_DOESNT_EXIST;
 import static android.content.pm.PackageManager.MOVE_FAILED_INTERNAL_ERROR;
 import static android.content.pm.PackageManager.MOVE_FAILED_OPERATION_PENDING;
 import static android.content.pm.PackageManager.MOVE_FAILED_SYSTEM_PACKAGE;
-import static android.content.pm.PackageManager.MOVE_INTERNAL;
 import static android.content.pm.PackageParser.isApkFile;
 import static android.os.Process.PACKAGE_INFO_GID;
 import static android.os.Process.SYSTEM_UID;
@@ -144,6 +142,7 @@
 import android.os.Parcel;
 import android.os.ParcelFileDescriptor;
 import android.os.Process;
+import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.os.SELinux;
 import android.os.ServiceManager;
@@ -174,6 +173,7 @@
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
+import android.util.SparseIntArray;
 import android.util.Xml;
 import android.view.Display;
 
@@ -189,11 +189,14 @@
 import com.android.internal.content.NativeLibraryHelper;
 import com.android.internal.content.PackageHelper;
 import com.android.internal.os.IParcelFileDescriptorFactory;
+import com.android.internal.os.SomeArgs;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.FastPrintWriter;
 import com.android.internal.util.FastXmlSerializer;
 import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.Preconditions;
 import com.android.server.EventLogTags;
+import com.android.server.FgThread;
 import com.android.server.IntentResolver;
 import com.android.server.LocalServices;
 import com.android.server.ServiceThread;
@@ -237,6 +240,7 @@
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
 import java.util.concurrent.atomic.AtomicLong;
 
 /**
@@ -504,6 +508,10 @@
     final PackageInstallerService mInstallerService;
 
     private final PackageDexOptimizer mPackageDexOptimizer;
+
+    private AtomicInteger mNextMoveId = new AtomicInteger();
+    private final MoveCallbacks mMoveCallbacks;
+
     // Cache of users who need badging.
     SparseBooleanArray mUserNeedsBadging = new SparseBooleanArray();
 
@@ -1698,6 +1706,7 @@
 
         mInstaller = installer;
         mPackageDexOptimizer = new PackageDexOptimizer(this);
+        mMoveCallbacks = new MoveCallbacks(FgThread.get().getLooper());
 
         getDefaultDisplayMetrics(context, mMetrics);
 
@@ -11067,7 +11076,7 @@
         final boolean onExternal = (((installFlags & PackageManager.INSTALL_EXTERNAL) != 0)
                 || (args.volumeUuid != null));
         boolean replace = false;
-        final int scanFlags = SCAN_NEW_INSTALL | SCAN_FORCE_DEX | SCAN_UPDATE_SIGNATURE;
+        int scanFlags = SCAN_NEW_INSTALL | SCAN_FORCE_DEX | SCAN_UPDATE_SIGNATURE;
         // Result object to be returned
         res.returnCode = PackageManager.INSTALL_SUCCEEDED;
 
@@ -11234,13 +11243,18 @@
             return;
         }
 
-        // Run dexopt before old package gets removed, to minimize time when app is not available
-        int result = mPackageDexOptimizer
-                .performDexOpt(pkg, null /* instruction sets */, true /* forceDex */,
-                        false /* defer */, false /* inclDependencies */);
-        if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
-            res.setError(INSTALL_FAILED_DEXOPT, "Dexopt failed for " + pkg.codePath);
-            return;
+        // If app directory is not writable, dexopt will be called after the rename
+        if (!forwardLocked && !pkg.applicationInfo.isExternalAsec()) {
+            // Enable SCAN_NO_DEX flag to skip dexopt at a later stage
+            scanFlags |= SCAN_NO_DEX;
+            // Run dexopt before old package gets removed, to minimize time when app is unavailable
+            int result = mPackageDexOptimizer
+                    .performDexOpt(pkg, null /* instruction sets */, true /* forceDex */,
+                            false /* defer */, false /* inclDependencies */);
+            if (result == PackageDexOptimizer.DEX_OPT_FAILED) {
+                res.setError(INSTALL_FAILED_DEXOPT, "Dexopt failed for " + pkg.codePath);
+                return;
+            }
         }
 
         if (!args.doRename(res.returnCode, pkg, oldCodePath)) {
@@ -11250,13 +11264,12 @@
 
         startIntentFilterVerifications(args.user.getIdentifier(), pkg);
 
-        // Call with SCAN_NO_DEX, since dexopt has already been made
         if (replace) {
-            replacePackageLI(pkg, parseFlags, scanFlags | SCAN_REPLACING | SCAN_NO_DEX, args.user,
+            replacePackageLI(pkg, parseFlags, scanFlags | SCAN_REPLACING, args.user,
                     installerPackageName, volumeUuid, res);
         } else {
-            installNewPackageLI(pkg, parseFlags, scanFlags | SCAN_DELETE_DATA_ON_FAILURES
-                    | SCAN_NO_DEX, args.user, installerPackageName, volumeUuid, res);
+            installNewPackageLI(pkg, parseFlags, scanFlags | SCAN_DELETE_DATA_ON_FAILURES,
+                    args.user, installerPackageName, volumeUuid, res);
         }
         synchronized (mPackages) {
             final PackageSetting ps = mSettings.mPackages.get(pkgName);
@@ -14133,49 +14146,25 @@
     }
 
     @Override
-    public void movePackage(final String packageName, final IPackageMoveObserver observer,
-            final int flags) {
+    public int movePackage(final String packageName, final String volumeUuid) {
         mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MOVE_PACKAGE, null);
 
-        final int installFlags;
-        if ((flags & MOVE_INTERNAL) != 0) {
-            installFlags = INSTALL_INTERNAL;
-        } else if ((flags & MOVE_EXTERNAL_MEDIA) != 0) {
-            installFlags = INSTALL_EXTERNAL;
-        } else {
-            throw new IllegalArgumentException("Unsupported move flags " + flags);
-        }
-
+        final int moveId = mNextMoveId.getAndIncrement();
         try {
-            movePackageInternal(packageName, null, installFlags, false, observer);
+            movePackageInternal(packageName, volumeUuid, moveId);
         } catch (PackageManagerException e) {
             Slog.d(TAG, "Failed to move " + packageName, e);
-            try {
-                observer.packageMoved(packageName, e.error);
-            } catch (RemoteException ignored) {
-            }
+            mMoveCallbacks.notifyStatusChanged(moveId, PackageManager.MOVE_FAILED_INTERNAL_ERROR);
         }
+        return moveId;
     }
 
-    @Override
-    public void movePackageAndData(final String packageName, final String volumeUuid,
-            final IPackageMoveObserver observer) {
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MOVE_PACKAGE, null);
-        try {
-            movePackageInternal(packageName, volumeUuid, INSTALL_INTERNAL, true, observer);
-        } catch (PackageManagerException e) {
-            Slog.d(TAG, "Failed to move " + packageName, e);
-            try {
-                observer.packageMoved(packageName, e.error);
-            } catch (RemoteException ignored) {
-            }
-        }
-    }
-
-    private void movePackageInternal(final String packageName, String volumeUuid, int installFlags,
-            boolean andData, final IPackageMoveObserver observer) throws PackageManagerException {
+    private void movePackageInternal(final String packageName, final String volumeUuid,
+            final int moveId) throws PackageManagerException {
         final UserHandle user = new UserHandle(UserHandle.getCallingUserId());
+        final PackageManager pm = mContext.getPackageManager();
 
+        final boolean currentAsec;
         final String currentVolumeUuid;
         final File codeFile;
         final String installerPackageName;
@@ -14201,8 +14190,13 @@
 
             // TODO: yell if already in desired location
 
+            mMoveCallbacks.notifyStarted(moveId,
+                    String.valueOf(pm.getApplicationLabel(pkg.applicationInfo)));
+
             pkg.mOperationPending = true;
 
+            currentAsec = pkg.applicationInfo.isForwardLocked()
+                    || pkg.applicationInfo.isExternalAsec();
             currentVolumeUuid = ps.volumeUuid;
             codeFile = new File(pkg.codePath);
             installerPackageName = ps.installerPackageName;
@@ -14211,10 +14205,36 @@
             seinfo = pkg.applicationInfo.seinfo;
         }
 
-        if (andData) {
-            Slog.d(TAG, "Moving " + packageName + " private data from " + currentVolumeUuid + " to "
-                    + volumeUuid);
+        int installFlags;
+        final boolean moveData;
+
+        if (Objects.equals(StorageManager.UUID_PRIVATE_INTERNAL, volumeUuid)) {
+            installFlags = INSTALL_INTERNAL;
+            moveData = !currentAsec;
+        } else if (Objects.equals(StorageManager.UUID_PRIMARY_PHYSICAL, volumeUuid)) {
+            installFlags = INSTALL_EXTERNAL;
+            moveData = false;
+        } else {
+            final StorageManager storage = mContext.getSystemService(StorageManager.class);
+            final VolumeInfo volume = storage.findVolumeByUuid(volumeUuid);
+            if (volume == null || volume.getType() != VolumeInfo.TYPE_PRIVATE
+                    || !volume.isMountedWritable()) {
+                throw new PackageManagerException(MOVE_FAILED_INTERNAL_ERROR,
+                        "Move location not mounted private volume");
+            }
+
+            Preconditions.checkState(!currentAsec);
+
+            installFlags = INSTALL_INTERNAL;
+            moveData = true;
+        }
+
+        Slog.d(TAG, "Moving " + packageName + " from " + currentVolumeUuid + " to " + volumeUuid);
+        mMoveCallbacks.notifyStatusChanged(moveId, 10, -1);
+
+        if (moveData) {
             synchronized (mInstallLock) {
+                // TODO: split this into separate copy and delete operations
                 if (mInstaller.moveUserDataDirs(currentVolumeUuid, volumeUuid, packageName, appId,
                         seinfo) != 0) {
                     synchronized (mPackages) {
@@ -14230,6 +14250,8 @@
             }
         }
 
+        mMoveCallbacks.notifyStatusChanged(moveId, 50);
+
         final IPackageInstallObserver2 installObserver = new IPackageInstallObserver2.Stub() {
             @Override
             public void onUserActionRequired(Intent intent) throws RemoteException {
@@ -14255,13 +14277,16 @@
                 final int status = PackageManager.installStatusToPublicStatus(returnCode);
                 switch (status) {
                     case PackageInstaller.STATUS_SUCCESS:
-                        observer.packageMoved(packageName, PackageManager.MOVE_SUCCEEDED);
+                        mMoveCallbacks.notifyStatusChanged(moveId,
+                                PackageManager.MOVE_SUCCEEDED);
                         break;
                     case PackageInstaller.STATUS_FAILURE_STORAGE:
-                        observer.packageMoved(packageName, PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE);
+                        mMoveCallbacks.notifyStatusChanged(moveId,
+                                PackageManager.MOVE_FAILED_INSUFFICIENT_STORAGE);
                         break;
                     default:
-                        observer.packageMoved(packageName, PackageManager.MOVE_FAILED_INTERNAL_ERROR);
+                        mMoveCallbacks.notifyStatusChanged(moveId,
+                                PackageManager.MOVE_FAILED_INTERNAL_ERROR);
                         break;
                 }
             }
@@ -14279,6 +14304,39 @@
     }
 
     @Override
+    public int movePrimaryStorage(String volumeUuid) throws RemoteException {
+        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MOVE_PACKAGE, null);
+
+        final int moveId = mNextMoveId.getAndIncrement();
+
+        // TODO: ask mountservice to take down both, connect over to DCS to
+        // migrate, and then bring up new storage
+
+        return moveId;
+    }
+
+    @Override
+    public int getMoveStatus(int moveId) {
+        mContext.enforceCallingOrSelfPermission(
+                android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null);
+        return mMoveCallbacks.mLastStatus.get(moveId);
+    }
+
+    @Override
+    public void registerMoveCallback(IPackageMoveObserver callback) {
+        mContext.enforceCallingOrSelfPermission(
+                android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null);
+        mMoveCallbacks.register(callback);
+    }
+
+    @Override
+    public void unregisterMoveCallback(IPackageMoveObserver callback) {
+        mContext.enforceCallingOrSelfPermission(
+                android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS, null);
+        mMoveCallbacks.unregister(callback);
+    }
+
+    @Override
     public boolean setInstallLocation(int loc) {
         mContext.enforceCallingOrSelfPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS,
                 null);
@@ -14601,4 +14659,82 @@
             }
         }
     }
+
+    private static class MoveCallbacks extends Handler {
+        private static final int MSG_STARTED = 1;
+        private static final int MSG_STATUS_CHANGED = 2;
+
+        private final RemoteCallbackList<IPackageMoveObserver>
+                mCallbacks = new RemoteCallbackList<>();
+
+        private final SparseIntArray mLastStatus = new SparseIntArray();
+
+        public MoveCallbacks(Looper looper) {
+            super(looper);
+        }
+
+        public void register(IPackageMoveObserver callback) {
+            mCallbacks.register(callback);
+        }
+
+        public void unregister(IPackageMoveObserver callback) {
+            mCallbacks.unregister(callback);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            final SomeArgs args = (SomeArgs) msg.obj;
+            final int n = mCallbacks.beginBroadcast();
+            for (int i = 0; i < n; i++) {
+                final IPackageMoveObserver callback = mCallbacks.getBroadcastItem(i);
+                try {
+                    invokeCallback(callback, msg.what, args);
+                } catch (RemoteException ignored) {
+                }
+            }
+            mCallbacks.finishBroadcast();
+            args.recycle();
+        }
+
+        private void invokeCallback(IPackageMoveObserver callback, int what, SomeArgs args)
+                throws RemoteException {
+            switch (what) {
+                case MSG_STARTED: {
+                    callback.onStarted(args.argi1, (String) args.arg2);
+                    break;
+                }
+                case MSG_STATUS_CHANGED: {
+                    callback.onStatusChanged(args.argi1, args.argi2, (long) args.arg3);
+                    break;
+                }
+            }
+        }
+
+        private void notifyStarted(int moveId, String title) {
+            Slog.v(TAG, "Move " + moveId + " started with title " + title);
+
+            final SomeArgs args = SomeArgs.obtain();
+            args.argi1 = moveId;
+            args.arg2 = title;
+            obtainMessage(MSG_STARTED, args).sendToTarget();
+        }
+
+        private void notifyStatusChanged(int moveId, int status) {
+            notifyStatusChanged(moveId, status, -1);
+        }
+
+        private void notifyStatusChanged(int moveId, int status, long estMillis) {
+            Slog.v(TAG, "Move " + moveId + " status " + status);
+
+            final SomeArgs args = SomeArgs.obtain();
+            args.argi1 = moveId;
+            args.argi2 = status;
+            args.arg3 = estMillis;
+            obtainMessage(MSG_STATUS_CHANGED, args).sendToTarget();
+
+            synchronized (mLastStatus) {
+                mLastStatus.put(moveId, status);
+            }
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index f3fdb0d..252c16a 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -4269,10 +4269,14 @@
                 serializer.endTag(null, TAG_RUNTIME_PERMISSIONS);
                 serializer.endDocument();
                 destination.finishWrite(out);
-            } catch (IOException e) {
+
+                // Any error while writing is fatal.
+            } catch (Throwable t) {
                 Slog.wtf(PackageManagerService.TAG,
-                        "Failed to write settings, restoring backup", e);
+                        "Failed to write settings, restoring backup", t);
                 destination.failWrite(out);
+                throw new IllegalStateException("Failed to write runtime permissions,"
+                        + " restoring backup", t);
             } finally {
                 IoUtils.closeQuietly(out);
             }
@@ -4319,9 +4323,10 @@
                 XmlPullParser parser = Xml.newPullParser();
                 parser.setInput(in, null);
                 parseRuntimePermissionsLPr(parser, userId);
-            } catch (XmlPullParserException | IOException ise) {
+
+            } catch (XmlPullParserException | IOException e) {
                 throw new IllegalStateException("Failed parsing permissions file: "
-                        + permissionsFile , ise);
+                        + permissionsFile , e);
             } finally {
                 IoUtils.closeQuietly(in);
             }
diff --git a/services/core/java/com/android/server/power/DeviceIdleController.java b/services/core/java/com/android/server/power/DeviceIdleController.java
index a23a87b..6b29b9a 100644
--- a/services/core/java/com/android/server/power/DeviceIdleController.java
+++ b/services/core/java/com/android/server/power/DeviceIdleController.java
@@ -41,6 +41,7 @@
 import com.android.internal.app.IBatteryStats;
 import com.android.server.SystemService;
 import com.android.server.am.BatteryStatsService;
+import com.android.server.EventLogTags;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -100,6 +101,11 @@
      * Scaling factor to apply to current idle timeout each time we cycle through that state.
      */
     private static final float DEFAULT_IDLE_FACTOR = 2f;
+    /**
+     * This is the minimum time we will allow until the next upcoming alarm for us to
+     * actually go in to idle mode.
+     */
+    private static final long DEFAULT_MIN_TIME_TO_ALARM = 60*60*1000L;
 
     private AlarmManager mAlarmManager;
     private IBatteryStats mBatteryStats;
@@ -239,7 +245,7 @@
             becomeInactiveIfAppropriateLocked();
         } else if (screenOn) {
             mScreenOn = true;
-            becomeActiveLocked();
+            becomeActiveLocked("screen");
         }
     }
 
@@ -249,12 +255,13 @@
             becomeInactiveIfAppropriateLocked();
         } else if (charging) {
             mCharging = charging;
-            becomeActiveLocked();
+            becomeActiveLocked("charging");
         }
     }
 
-    void becomeActiveLocked() {
+    void becomeActiveLocked(String reason) {
         if (mState != STATE_ACTIVE) {
+            EventLogTags.writeDeviceIdle(STATE_ACTIVE, reason);
             mLocalPowerManager.setDeviceIdleMode(false);
             try {
                 mNetworkPolicyManager.setDeviceIdleMode(false);
@@ -281,10 +288,22 @@
             mNextIdlePendingDelay = 0;
             mNextIdleDelay = 0;
             scheduleAlarmLocked(mInactiveTimeout, false);
+            EventLogTags.writeDeviceIdle(mState, "no activity");
         }
     }
 
     void stepIdleStateLocked() {
+        EventLogTags.writeDeviceIdleStep();
+
+        final long now = SystemClock.elapsedRealtime();
+        if ((now+DEFAULT_MIN_TIME_TO_ALARM) > mAlarmManager.getNextWakeFromIdleTime()) {
+            // Whoops, there is an upcoming alarm.  We don't actually want to go idle.
+            if (mState != STATE_ACTIVE) {
+                becomeActiveLocked("alarm");
+            }
+            return;
+        }
+
         switch (mState) {
             case STATE_INACTIVE:
                 // We have now been inactive long enough, it is time to start looking
@@ -295,6 +314,7 @@
                 mNextIdlePendingDelay = DEFAULT_IDLE_PENDING_TIMEOUT;
                 mNextIdleDelay = DEFAULT_IDLE_TIMEOUT;
                 mState = STATE_IDLE_PENDING;
+                EventLogTags.writeDeviceIdle(mState, "step");
                 break;
             case STATE_IDLE_PENDING:
                 // We have been waiting to become idle, and now it is time!  This is the
@@ -307,6 +327,7 @@
                     mNextIdleDelay = DEFAULT_MAX_IDLE_TIMEOUT;
                 }
                 mState = STATE_IDLE;
+                EventLogTags.writeDeviceIdle(mState, "step");
                 mLocalPowerManager.setDeviceIdleMode(true);
                 try {
                     mNetworkPolicyManager.setDeviceIdleMode(true);
@@ -323,6 +344,7 @@
                     mNextIdlePendingDelay = DEFAULT_MAX_IDLE_PENDING_TIMEOUT;
                 }
                 mState = STATE_IDLE_PENDING;
+                EventLogTags.writeDeviceIdle(mState, "step");
                 mLocalPowerManager.setDeviceIdleMode(false);
                 try {
                     mNetworkPolicyManager.setDeviceIdleMode(false);
@@ -352,6 +374,7 @@
             }
             mState = STATE_ACTIVE;
             mInactiveTimeout = DEFAULT_MOTION_INACTIVE_TIMEOUT;
+            EventLogTags.writeDeviceIdle(mState, "motion");
             becomeInactiveIfAppropriateLocked();
         }
     }
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index 4c06cbe..9033c9c 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -501,12 +501,15 @@
         return a;
     }
 
-    private Animation createClipRevealAnimationLocked(int transit, boolean enter,
-                                                      int appWidth, int appHeight) {
+    private Animation createClipRevealAnimationLocked(int transit, boolean enter, Rect appFrame) {
         final Animation anim;
         if (enter) {
             // Reveal will expand and move faster in horizontal direction
 
+            // Start from upper left of start and move to final position
+            final int appWidth = appFrame.width();
+            final int appHeight = appFrame.height();
+
             // Start from size of launch icon, expand to full width/height
             Animation clipAnimLR = new ClipRectLRAnimation(
                     (appWidth - mNextAppTransitionStartWidth) / 2,
@@ -521,9 +524,9 @@
 
             // Start from middle of launch icon area, move to 0, 0
             int startMiddleX = mNextAppTransitionStartX +
-                    (mNextAppTransitionStartWidth - appWidth) / 2;
+                    (mNextAppTransitionStartWidth - appWidth) / 2 - appFrame.left;
             int startMiddleY = mNextAppTransitionStartY +
-                    (mNextAppTransitionStartHeight - appHeight) / 2;
+                    (mNextAppTransitionStartHeight - appHeight) / 2 - appFrame.top;
 
             TranslateXAnimation translateX = new TranslateXAnimation(
                     Animation.ABSOLUTE, startMiddleX, Animation.ABSOLUTE, 0);
@@ -940,7 +943,7 @@
 
     Animation loadAnimation(WindowManager.LayoutParams lp, int transit, boolean enter,
             int appWidth, int appHeight, int orientation, Rect containingFrame, Rect contentInsets,
-            boolean isFullScreen, boolean isVoiceInteraction) {
+            Rect appFrame, boolean isFullScreen, boolean isVoiceInteraction) {
         Animation a;
         if (isVoiceInteraction && (transit == TRANSIT_ACTIVITY_OPEN
                 || transit == TRANSIT_TASK_OPEN
@@ -977,9 +980,7 @@
                             + " anim=" + a + " nextAppTransition=ANIM_CUSTOM_IN_PLACE"
                             + " transit=" + transit + " Callers=" + Debug.getCallers(3));
         } else if (mNextAppTransitionType == NEXT_TRANSIT_TYPE_CLIP_REVEAL) {
-            a = createClipRevealAnimationLocked(transit, enter,
-                    containingFrame.right - containingFrame.left,
-                    containingFrame.bottom - containingFrame.top);
+            a = createClipRevealAnimationLocked(transit, enter, appFrame);
             if (DEBUG_APP_TRANSITIONS || DEBUG_ANIM) Slog.v(TAG,
                     "applyAnimation:"
                             + " anim=" + a + " nextAppTransition=ANIM_CLIP_REVEAL"
diff --git a/services/core/java/com/android/server/wm/AppWindowToken.java b/services/core/java/com/android/server/wm/AppWindowToken.java
index e914cd4..a210223 100644
--- a/services/core/java/com/android/server/wm/AppWindowToken.java
+++ b/services/core/java/com/android/server/wm/AppWindowToken.java
@@ -281,7 +281,7 @@
                 Slog.w(WindowManagerService.TAG, "removeAllWindows: removing win=" + win);
             }
 
-            service.removeWindowLocked(win.mSession, win);
+            service.removeWindowLocked(win);
         }
         allAppWindows.clear();
         windows.clear();
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java
index bb53534..c24fcb3 100644
--- a/services/core/java/com/android/server/wm/InputMonitor.java
+++ b/services/core/java/com/android/server/wm/InputMonitor.java
@@ -78,7 +78,7 @@
             WindowState windowState = (WindowState) inputWindowHandle.windowState;
             if (windowState != null) {
                 Slog.i(WindowManagerService.TAG, "WINDOW DIED " + windowState);
-                mService.removeWindowLocked(windowState.mSession, windowState);
+                mService.removeWindowLocked(windowState);
             }
         }
     }
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index f29d524..c5bdbb0 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -624,6 +624,12 @@
     static final int WALLPAPER_DRAW_TIMEOUT = 2;
     int mWallpaperDrawState = WALLPAPER_DRAW_NORMAL;
 
+    // Set to the wallpaper window we would like to hide once the transition animations are done.
+    // This is useful in cases where we don't want the wallpaper to be hidden when the close app
+    // is a wallpaper target and is done animating out, but the opening app isn't a wallpaper
+    // target and isn't done animating in.
+    WindowState mDeferredHideWallpaper = null;
+
     AppWindowToken mFocusedApp = null;
 
     PowerManager mPowerManager;
@@ -1781,17 +1787,24 @@
     }
 
     void hideWallpapersLocked(final WindowState winGoingAway) {
-        if (mWallpaperTarget != null &&
-                (mWallpaperTarget != winGoingAway || mLowerWallpaperTarget != null)) {
+        if (mWallpaperTarget != null
+                && (mWallpaperTarget != winGoingAway || mLowerWallpaperTarget != null)) {
+            return;
+        }
+        if (mAppTransition.isRunning()) {
+            // Defer hiding the wallpaper when app transition is running until the animations
+            // are done.
+            mDeferredHideWallpaper = winGoingAway;
             return;
         }
 
+        final boolean wasDeferred = (mDeferredHideWallpaper == winGoingAway);
         for (int i = mWallpaperTokens.size() - 1; i >= 0; i--) {
             final WindowToken token = mWallpaperTokens.get(i);
             for (int j = token.windows.size() - 1; j >= 0; j--) {
                 final WindowState wallpaper = token.windows.get(j);
                 final WindowStateAnimator winAnimator = wallpaper.mWinAnimator;
-                if (!winAnimator.mLastHidden) {
+                if (!winAnimator.mLastHidden || wasDeferred) {
                     winAnimator.hide();
                     dispatchWallpaperVisibility(wallpaper, false);
                     final DisplayContent displayContent = wallpaper.getDisplayContent();
@@ -2270,12 +2283,15 @@
     }
 
     /**
-     * Check wallpaper for visiblity change and notify window if so.
+     * Check wallpaper for visibility change and notify window if so.
      * @param wallpaper The wallpaper to test and notify.
      * @param visible Current visibility.
      */
     void dispatchWallpaperVisibility(final WindowState wallpaper, final boolean visible) {
-        if (wallpaper.mWallpaperVisible != visible) {
+        // Only send notification if the visibility actually changed and we are not trying to hide
+        // the wallpaper when we are deferring hiding of the wallpaper.
+        if (wallpaper.mWallpaperVisible != visible
+                && (mDeferredHideWallpaper == null || visible)) {
             wallpaper.mWallpaperVisible = visible;
             try {
                 if (DEBUG_VISIBILITY || DEBUG_WALLPAPER_LIGHT) Slog.v(TAG,
@@ -2644,11 +2660,11 @@
             if (win == null) {
                 return;
             }
-            removeWindowLocked(session, win);
+            removeWindowLocked(win);
         }
     }
 
-    public void removeWindowLocked(Session session, WindowState win) {
+    void removeWindowLocked(WindowState win) {
         if (win.mAttrs.type == TYPE_APPLICATION_STARTING) {
             if (DEBUG_STARTING_WINDOW) Slog.d(TAG, "Starting window removed " + win);
         }
@@ -3412,6 +3428,7 @@
             WindowState win = atoken.findMainWindow();
             Rect containingFrame = new Rect(0, 0, width, height);
             Rect contentInsets = new Rect();
+            Rect appFrame = new Rect(0, 0, width, height);
             boolean isFullScreen = true;
             if (win != null) {
                 if (win.mContainingFrame != null) {
@@ -3420,6 +3437,9 @@
                 if (win.mContentInsets != null) {
                     contentInsets.set(win.mContentInsets);
                 }
+                if (win.mFrame != null) {
+                    appFrame.set(win.mFrame);
+                }
                 isFullScreen =
                         ((win.mSystemUiVisibility & SYSTEM_UI_FLAGS_LAYOUT_STABLE_FULLSCREEN) ==
                                 SYSTEM_UI_FLAGS_LAYOUT_STABLE_FULLSCREEN) ||
@@ -3433,8 +3453,8 @@
                 enter = false;
             }
             Animation a = mAppTransition.loadAnimation(lp, transit, enter, width, height,
-                    mCurConfiguration.orientation, containingFrame, contentInsets, isFullScreen,
-                    isVoiceInteraction);
+                    mCurConfiguration.orientation, containingFrame, contentInsets, appFrame,
+                    isFullScreen, isVoiceInteraction);
             if (a != null) {
                 if (DEBUG_ANIM) {
                     RuntimeException e = null;
@@ -9523,6 +9543,12 @@
         int changes = 0;
 
         mAppTransition.setIdle();
+
+        if (mDeferredHideWallpaper != null) {
+            hideWallpapersLocked(mDeferredHideWallpaper);
+            mDeferredHideWallpaper = null;
+        }
+
         // Restore window app tokens to the ActivityManager views
         ArrayList<TaskStack> stacks = getDefaultDisplayContentLocked().getStacks();
         for (int stackNdx = stacks.size() - 1; stackNdx >= 0; --stackNdx) {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 4f795a6..ec70879 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -523,8 +523,9 @@
     public void computeFrameLw(Rect pf, Rect df, Rect of, Rect cf, Rect vf, Rect dcf, Rect sf) {
         mHaveFrame = true;
 
-        TaskStack stack = mAppToken != null ? getStack() : null;
-        if (stack != null && !stack.isFullscreen()) {
+        final TaskStack stack = mAppToken != null ? getStack() : null;
+        final boolean nonFullscreenStack = stack != null && !stack.isFullscreen();
+        if (nonFullscreenStack) {
             stack.getBounds(mContainingFrame);
             final WindowState imeWin = mService.mInputMethodWindow;
             if (imeWin != null && imeWin.isVisibleNow() && mService.mInputMethodTarget == this
@@ -607,9 +608,13 @@
             y = mAttrs.y;
         }
 
-        // Make sure window fits in containing frame required by {@link Gravity#apply} call.
-        w = Math.min(w, pw);
-        h = Math.min(h, ph);
+        if (nonFullscreenStack) {
+            // Make sure window fits in containing frame since it is in a non-fullscreen stack as
+            // required by {@link Gravity#apply} call.
+            w = Math.min(w, pw);
+            h = Math.min(h, ph);
+        }
+
         Gravity.apply(mAttrs.gravity, w, h, mContainingFrame,
                 (int) (x + mAttrs.horizontalMargin * pw),
                 (int) (y + mAttrs.verticalMargin * ph), mFrame);
@@ -1164,10 +1169,10 @@
                     WindowState win = mService.windowForClientLocked(mSession, mClient, false);
                     Slog.i(TAG, "WIN DEATH: " + win);
                     if (win != null) {
-                        mService.removeWindowLocked(mSession, win);
+                        mService.removeWindowLocked(win);
                     } else if (mHasSurface) {
                         Slog.e(TAG, "!!! LEAK !!! Window removed but surface still valid.");
-                        mService.removeWindowLocked(mSession, WindowState.this);
+                        mService.removeWindowLocked(WindowState.this);
                     }
                 }
             } catch (IllegalArgumentException ex) {
@@ -1630,6 +1635,10 @@
                     pw.println();
             pw.print(prefix); pw.print("mSystemDecorRect="); mSystemDecorRect.printShortString(pw);
                     pw.print(" last="); mLastSystemDecorRect.printShortString(pw);
+                    if (mWinAnimator.mHasClipRect) {
+                        pw.print(" mLastClipRect=");
+                        mWinAnimator.mLastClipRect.printShortString(pw);
+                    }
                     pw.println();
         }
         if (mEnforceSizeCompat) {
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index 1a30cba..d6726c1 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1139,8 +1139,6 @@
                     mShownAlpha *= appTransformation.getAlpha();
                     if (appTransformation.hasClipRect()) {
                         mClipRect.set(appTransformation.getClipRect());
-                        // Account for non-fullscreen windows
-                        mClipRect.offset(frame.left, frame.top);
                         if (mWin.mHScale > 0) {
                             mClipRect.left /= mWin.mHScale;
                             mClipRect.right /= mWin.mHScale;
@@ -1223,7 +1221,7 @@
         }
     }
 
-    void applyDecorRect(final Rect decorRect) {
+    private void applyDecorRect(final Rect decorRect) {
         final WindowState w = mWin;
         final int width = w.mFrame.width();
         final int height = w.mFrame.height();
diff --git a/services/core/java/com/android/server/wm/WindowToken.java b/services/core/java/com/android/server/wm/WindowToken.java
index bbeee8c..b303505 100644
--- a/services/core/java/com/android/server/wm/WindowToken.java
+++ b/services/core/java/com/android/server/wm/WindowToken.java
@@ -83,7 +83,7 @@
             WindowState win = windows.get(winNdx);
             if (WindowManagerService.DEBUG_WINDOW_MOVEMENT) Slog.w(WindowManagerService.TAG,
                     "removeAllWindows: removing win=" + win);
-            win.mService.removeWindowLocked(win.mSession, win);
+            win.mService.removeWindowLocked(win);
         }
         windows.clear();
     }
diff --git a/services/core/jni/Android.mk b/services/core/jni/Android.mk
index 19ca2b4..a5546cf 100644
--- a/services/core/jni/Android.mk
+++ b/services/core/jni/Android.mk
@@ -33,6 +33,7 @@
     $(JNI_H_INCLUDE) \
     frameworks/base/services \
     frameworks/base/libs \
+    frameworks/base/libs/hwui \
     frameworks/base/core/jni \
     frameworks/native/services \
     libcore/include \
diff --git a/services/core/jni/com_android_server_AssetAtlasService.cpp b/services/core/jni/com_android_server_AssetAtlasService.cpp
index e4f242e..ad1d0f5 100644
--- a/services/core/jni/com_android_server_AssetAtlasService.cpp
+++ b/services/core/jni/com_android_server_AssetAtlasService.cpp
@@ -47,40 +47,9 @@
 #define FENCE_TIMEOUT 2000000000
 
 // ----------------------------------------------------------------------------
-// JNI Helpers
-// ----------------------------------------------------------------------------
-
-static struct {
-    jmethodID setNativeBitmap;
-} gCanvasClassInfo;
-
-#define INVOKEV(object, method, ...) \
-    env->CallVoidMethod(object, method, __VA_ARGS__)
-
-// ----------------------------------------------------------------------------
 // Canvas management
 // ----------------------------------------------------------------------------
 
-static jlong com_android_server_AssetAtlasService_acquireCanvas(JNIEnv* env, jobject,
-        jobject canvas, jint width, jint height) {
-
-    SkBitmap* bitmap = new SkBitmap;
-    bitmap->allocN32Pixels(width, height);
-    bitmap->eraseColor(0);
-    INVOKEV(canvas, gCanvasClassInfo.setNativeBitmap, reinterpret_cast<jlong>(bitmap));
-
-    return reinterpret_cast<jlong>(bitmap);
-}
-
-static void com_android_server_AssetAtlasService_releaseCanvas(JNIEnv* env, jobject,
-        jobject canvas, jlong bitmapHandle) {
-
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
-    INVOKEV(canvas, gCanvasClassInfo.setNativeBitmap, (jlong)0);
-
-    delete bitmap;
-}
-
 #define CLEANUP_GL_AND_RETURN(result) \
     if (fence != EGL_NO_SYNC_KHR) eglDestroySyncKHR(display, fence); \
     if (image) eglDestroyImageKHR(display, image); \
@@ -93,9 +62,11 @@
     return result;
 
 static jboolean com_android_server_AssetAtlasService_upload(JNIEnv* env, jobject,
-        jobject graphicBuffer, jlong bitmapHandle) {
+        jobject graphicBuffer, jobject bitmapHandle) {
 
-    SkBitmap* bitmap = reinterpret_cast<SkBitmap*>(bitmapHandle);
+    SkBitmap& bitmap = *GraphicsJNI::getSkBitmap(env, bitmapHandle);
+    SkAutoLockPixels alp(bitmap);
+
     // The goal of this method is to copy the bitmap into the GraphicBuffer
     // using the GPU to swizzle the texture content
     sp<GraphicBuffer> buffer(graphicBufferForJavaObject(env, graphicBuffer));
@@ -186,9 +157,9 @@
         }
 
         // Upload the content of the bitmap in the GraphicBuffer
-        glPixelStorei(GL_UNPACK_ALIGNMENT, bitmap->bytesPerPixel());
-        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, bitmap->width(), bitmap->height(),
-                GL_RGBA, GL_UNSIGNED_BYTE, bitmap->getPixels());
+        glPixelStorei(GL_UNPACK_ALIGNMENT, bitmap.bytesPerPixel());
+        glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, bitmap.width(), bitmap.height(),
+                GL_RGBA, GL_UNSIGNED_BYTE, bitmap.getPixels());
         if (glGetError() != GL_NO_ERROR) {
             ALOGW("Could not upload to texture");
             CLEANUP_GL_AND_RETURN(JNI_FALSE);
@@ -233,20 +204,11 @@
 const char* const kClassPathName = "com/android/server/AssetAtlasService";
 
 static JNINativeMethod gMethods[] = {
-    { "nAcquireAtlasCanvas", "(Landroid/graphics/Canvas;II)J",
-            (void*) com_android_server_AssetAtlasService_acquireCanvas },
-    { "nReleaseAtlasCanvas", "(Landroid/graphics/Canvas;J)V",
-            (void*) com_android_server_AssetAtlasService_releaseCanvas },
-    { "nUploadAtlas", "(Landroid/view/GraphicBuffer;J)Z",
+    { "nUploadAtlas", "(Landroid/view/GraphicBuffer;Landroid/graphics/Bitmap;)Z",
             (void*) com_android_server_AssetAtlasService_upload },
 };
 
 int register_android_server_AssetAtlasService(JNIEnv* env) {
-    jclass clazz;
-
-    FIND_CLASS(clazz, "android/graphics/Canvas");
-    GET_METHOD_ID(gCanvasClassInfo.setNativeBitmap, clazz, "setNativeBitmap", "(J)V");
-
     return jniRegisterNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
 }
 
diff --git a/services/core/jni/com_android_server_location_GpsLocationProvider.cpp b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
index 0cd6eb5..3804e1d 100644
--- a/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
+++ b/services/core/jni/com_android_server_location_GpsLocationProvider.cpp
@@ -509,13 +509,22 @@
     }
 }
 
-static jboolean android_location_GpsLocationProvider_is_supported(JNIEnv* /* env */,
-                                                                  jclass /* clazz */) {
-    if (sGpsInterface != NULL) {
-        return JNI_TRUE;
-    } else {
-        return JNI_FALSE;
-    }
+static jboolean android_location_GpsLocationProvider_is_supported(
+        JNIEnv* /* env */, jclass /* clazz */)
+{
+    return (sGpsInterface != NULL) ?  JNI_TRUE : JNI_FALSE;
+}
+
+static jboolean android_location_GpsLocationProvider_is_agps_ril_supported(
+        JNIEnv* /* env */, jclass /* clazz */)
+{
+    return (sAGpsRilInterface != NULL) ? JNI_TRUE : JNI_FALSE;
+}
+
+static jboolean android_location_gpsLocationProvider_is_gnss_configuration_supported(
+        JNIEnv* /* env */, jclass /* jclazz */)
+{
+    return (sGnssConfigurationInterface != NULL) ? JNI_TRUE : JNI_FALSE;
 }
 
 static jboolean android_location_GpsLocationProvider_init(JNIEnv* env, jobject obj)
@@ -715,14 +724,10 @@
         sGpsInterface->inject_location(latitude, longitude, accuracy);
 }
 
-static jboolean android_location_GpsLocationProvider_supports_xtra(JNIEnv* /* env */,
-                                                                   jobject /* obj */)
+static jboolean android_location_GpsLocationProvider_supports_xtra(
+        JNIEnv* /* env */, jobject /* obj */)
 {
-    if (sGpsXtraInterface != NULL) {
-        return JNI_TRUE;
-    } else {
-        return JNI_FALSE;
-    }
+    return (sGpsXtraInterface != NULL) ? JNI_TRUE : JNI_FALSE;
 }
 
 static void android_location_GpsLocationProvider_inject_xtra_data(JNIEnv* env, jobject /* obj */,
@@ -844,13 +849,10 @@
     }
 }
 
-static jboolean android_location_GpsLocationProvider_is_geofence_supported(JNIEnv* /* env */,
-                                                                           jobject /* obj */)
+static jboolean android_location_GpsLocationProvider_is_geofence_supported(
+        JNIEnv* /* env */, jobject /* obj */)
 {
-    if (sGpsGeofencingInterface != NULL) {
-        return JNI_TRUE;
-    }
-    return JNI_FALSE;
+    return (sGpsGeofencingInterface != NULL) ? JNI_TRUE : JNI_FALSE;
 }
 
 static jboolean android_location_GpsLocationProvider_add_geofence(JNIEnv* /* env */,
@@ -1436,6 +1438,10 @@
      /* name, signature, funcPtr */
     {"class_init_native", "()V", (void *)android_location_GpsLocationProvider_class_init_native},
     {"native_is_supported", "()Z", (void*)android_location_GpsLocationProvider_is_supported},
+    {"native_is_agps_ril_supported", "()Z",
+            (void*)android_location_GpsLocationProvider_is_agps_ril_supported},
+    {"native_is_gnss_configuration_supported", "()Z",
+            (void*)android_location_gpsLocationProvider_is_gnss_configuration_supported},
     {"native_init", "()Z", (void*)android_location_GpsLocationProvider_init},
     {"native_cleanup", "()V", (void*)android_location_GpsLocationProvider_cleanup},
     {"native_set_position_mode",
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index dc7fad6..6fc3103 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -22,6 +22,7 @@
 import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA;
 import static android.content.pm.PackageManager.GET_UNINSTALLED_PACKAGES;
 
+import android.Manifest.permission;
 import android.accessibilityservice.AccessibilityServiceInfo;
 import android.accounts.AccountManager;
 import android.app.Activity;
@@ -45,6 +46,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageManager;
@@ -135,6 +137,7 @@
 import java.security.cert.X509Certificate;
 import java.text.DateFormat;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
@@ -302,7 +305,7 @@
         final ArrayList<ComponentName> mRemovingAdmins = new ArrayList<>();
 
         // This is the list of component allowed to start lock task mode.
-        final List<String> mLockTaskPackages = new ArrayList<>();
+        List<String> mLockTaskPackages = new ArrayList<>();
 
         boolean mStatusBarEnabledState = true;
 
@@ -1103,6 +1106,7 @@
     void loadDeviceOwner() {
         synchronized (this) {
             mDeviceOwner = DeviceOwner.load();
+            updateDeviceOwnerLocked();
         }
     }
 
@@ -1626,36 +1630,54 @@
         // sufficiently what is currently set.  Note that this is only
         // a sanity check in case the two get out of sync; this should
         // never normally happen.
-        LockPatternUtils utils = new LockPatternUtils(mContext);
-        if (utils.getActivePasswordQuality(userHandle) < policy.mActivePasswordQuality) {
-            Slog.w(LOG_TAG, "Active password quality 0x"
-                    + Integer.toHexString(policy.mActivePasswordQuality)
-                    + " does not match actual quality 0x"
-                    + Integer.toHexString(utils.getActivePasswordQuality(userHandle)));
-            policy.mActivePasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
-            policy.mActivePasswordLength = 0;
-            policy.mActivePasswordUpperCase = 0;
-            policy.mActivePasswordLowerCase = 0;
-            policy.mActivePasswordLetters = 0;
-            policy.mActivePasswordNumeric = 0;
-            policy.mActivePasswordSymbols = 0;
-            policy.mActivePasswordNonLetter = 0;
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            LockPatternUtils utils = new LockPatternUtils(mContext);
+            if (utils.getActivePasswordQuality(userHandle) < policy.mActivePasswordQuality) {
+                Slog.w(LOG_TAG, "Active password quality 0x"
+                        + Integer.toHexString(policy.mActivePasswordQuality)
+                        + " does not match actual quality 0x"
+                        + Integer.toHexString(utils.getActivePasswordQuality(userHandle)));
+                policy.mActivePasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
+                policy.mActivePasswordLength = 0;
+                policy.mActivePasswordUpperCase = 0;
+                policy.mActivePasswordLowerCase = 0;
+                policy.mActivePasswordLetters = 0;
+                policy.mActivePasswordNumeric = 0;
+                policy.mActivePasswordSymbols = 0;
+                policy.mActivePasswordNonLetter = 0;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(identity);
         }
 
         validatePasswordOwnerLocked(policy);
         syncDeviceCapabilitiesLocked(policy);
         updateMaximumTimeToLockLocked(policy);
-        updateLockTaskPackagesLocked(policy, userHandle);
+        addDeviceInitializerToLockTaskPackagesLocked(userHandle);
+        updateLockTaskPackagesLocked(policy.mLockTaskPackages, userHandle);
         if (!policy.mStatusBarEnabledState) {
             setStatusBarEnabledStateInternal(policy.mStatusBarEnabledState, userHandle);
         }
     }
 
-    private void updateLockTaskPackagesLocked(DevicePolicyData policy, int userId) {
+    private void updateLockTaskPackagesLocked(List<String> packages, int userId) {
         IActivityManager am = ActivityManagerNative.getDefault();
         long ident = Binder.clearCallingIdentity();
         try {
-            am.updateLockTaskPackages(userId, policy.mLockTaskPackages.toArray(new String[0]));
+            am.updateLockTaskPackages(userId, packages.toArray(new String[packages.size()]));
+        } catch (RemoteException e) {
+            // Not gonna happen.
+        } finally {
+            Binder.restoreCallingIdentity(ident);
+        }
+    }
+
+    private void updateDeviceOwnerLocked() {
+        IActivityManager am = ActivityManagerNative.getDefault();
+        long ident = Binder.clearCallingIdentity();
+        try {
+            am.updateDeviceOwner(getDeviceOwner());
         } catch (RemoteException e) {
             // Not gonna happen.
         } finally {
@@ -3961,15 +3983,7 @@
                     + " for device owner");
         }
         synchronized (this) {
-            if (!allowedToSetDeviceOwnerOnDevice()) {
-                throw new IllegalStateException(
-                        "Trying to set device owner but device is already provisioned.");
-            }
-
-            if (mDeviceOwner != null && mDeviceOwner.hasDeviceOwner()) {
-                throw new IllegalStateException(
-                        "Trying to set device owner but device owner is already set.");
-            }
+            enforceCanSetDeviceOwner();
 
             // Shutting down backup manager service permanently.
             long ident = Binder.clearCallingIdentity();
@@ -3986,14 +4000,13 @@
             if (mDeviceOwner == null) {
                 // Device owner is not set and does not exist, set it.
                 mDeviceOwner = DeviceOwner.createWithDeviceOwner(packageName, ownerName);
-                mDeviceOwner.writeOwnerFile();
-                return true;
             } else {
-                // Device owner is not set but a profile owner exists, update Device owner state.
+                // Device owner state already exists, update it.
                 mDeviceOwner.setDeviceOwner(packageName, ownerName);
-                mDeviceOwner.writeOwnerFile();
-                return true;
             }
+            mDeviceOwner.writeOwnerFile();
+            updateDeviceOwnerLocked();
+            return true;
         }
     }
 
@@ -4075,6 +4088,7 @@
                 if (mDeviceOwner != null) {
                     mDeviceOwner.clearDeviceOwner();
                     mDeviceOwner.writeOwnerFile();
+                    updateDeviceOwnerLocked();
                 }
             } finally {
                 Binder.restoreCallingIdentity(ident);
@@ -4103,16 +4117,15 @@
 
             if (mDeviceOwner == null) {
                 // Device owner state does not exist, create it.
-                mDeviceOwner = DeviceOwner.createWithDeviceInitializer(
-                        initializer, ownerName);
-                mDeviceOwner.writeOwnerFile();
-                return true;
+                mDeviceOwner = DeviceOwner.createWithDeviceInitializer(initializer, ownerName);
             } else {
                 // Device owner already exists, update it.
                 mDeviceOwner.setDeviceInitializer(initializer, ownerName);
-                mDeviceOwner.writeOwnerFile();
-                return true;
             }
+
+            addDeviceInitializerToLockTaskPackagesLocked(UserHandle.USER_OWNER);
+            mDeviceOwner.writeOwnerFile();
+            return true;
         }
     }
 
@@ -4204,43 +4217,23 @@
         if (!mHasFeature) {
             return false;
         }
-        mContext.enforceCallingOrSelfPermission(android.Manifest.permission.MANAGE_USERS, null);
-
-        UserInfo info = mUserManager.getUserInfo(userHandle);
-        if (info == null) {
-            // User doesn't exist.
-            throw new IllegalArgumentException(
-                    "Attempted to set profile owner for invalid userId: " + userHandle);
-        }
-        if (info.isGuest()) {
-            throw new IllegalStateException("Cannot set a profile owner on a guest");
-        }
-
         if (who == null
                 || !DeviceOwner.isInstalledForUser(who.getPackageName(), userHandle)) {
             throw new IllegalArgumentException("Component " + who
                     + " not installed for userId:" + userHandle);
         }
         synchronized (this) {
-            // Only SYSTEM_UID can override the userSetupComplete
-            if (UserHandle.getAppId(Binder.getCallingUid()) != Process.SYSTEM_UID
-                    && hasUserSetupCompleted(userHandle)) {
-                throw new IllegalStateException(
-                        "Trying to set profile owner but user is already set-up.");
-            }
-
+            enforceCanSetProfileOwner(userHandle);
             if (mDeviceOwner == null) {
                 // Device owner state does not exist, create it.
                 mDeviceOwner = DeviceOwner.createWithProfileOwner(who, ownerName,
                         userHandle);
-                mDeviceOwner.writeOwnerFile();
-                return true;
             } else {
-                // Device owner already exists, update it.
+                // Device owner state already exists, update it.
                 mDeviceOwner.setProfileOwner(who, ownerName, userHandle);
-                mDeviceOwner.writeOwnerFile();
-                return true;
             }
+            mDeviceOwner.writeOwnerFile();
+            return true;
         }
     }
 
@@ -4430,18 +4423,77 @@
     }
 
     /**
-     * Device owner can only be set on an unprovisioned device. However, if initiated via "adb",
-     * we also allow it if no accounts or additional users are present on the device.
+     * The profile owner can only be set by adb or an app with the MANAGE_PROFILE_AND_DEVICE_OWNERS
+     * permission.
+     * The profile owner can only be set before the user setup phase has completed,
+     * except for:
+     * - SYSTEM_UID
+     * - adb if there are not accounts.
      */
-    private boolean allowedToSetDeviceOwnerOnDevice() {
-        if (!hasUserSetupCompleted(UserHandle.USER_OWNER)) {
-            return true;
+    private void enforceCanSetProfileOwner(int userHandle) {
+        UserInfo info = mUserManager.getUserInfo(userHandle);
+        if (info == null) {
+            // User doesn't exist.
+            throw new IllegalArgumentException(
+                    "Attempted to set profile owner for invalid userId: " + userHandle);
         }
+        if (info.isGuest()) {
+            throw new IllegalStateException("Cannot set a profile owner on a guest");
+        }
+        if (getProfileOwner(userHandle) != null) {
+            throw new IllegalStateException("Trying to set the profile owner, but profile owner "
+                    + "is already set.");
+        }
+        int callingUid = Binder.getCallingUid();
+        if (callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID) {
+            if (hasUserSetupCompleted(userHandle) &&
+                    AccountManager.get(mContext).getAccountsAsUser(userHandle).length > 0) {
+                throw new IllegalStateException("Not allowed to set the profile owner because "
+                        + "there are already some accounts on the profile");
+            }
+            return;
+        }
+        mContext.enforceCallingOrSelfPermission(
+                android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS, null);
+        if (hasUserSetupCompleted(userHandle)
+                && UserHandle.getAppId(callingUid) != Process.SYSTEM_UID) {
+            throw new IllegalStateException("Cannot set the profile owner on a user which is "
+                    + "already set-up");
+        }
+    }
 
-        int callingId = Binder.getCallingUid();
-        return (callingId == Process.SHELL_UID || callingId == Process.ROOT_UID)
-                && mUserManager.getUserCount() == 1
-                && AccountManager.get(mContext).getAccounts().length == 0;
+    /**
+     * The Device owner can only be set by adb or an app with the MANAGE_PROFILE_AND_DEVICE_OWNERS
+     * permission.
+     * The device owner can only be set before the setup phase of the primary user has completed,
+     * except for adb if no accounts or additional users are present on the device.
+     */
+    private void enforceCanSetDeviceOwner() {
+        if (mDeviceOwner != null && mDeviceOwner.hasDeviceOwner()) {
+            throw new IllegalStateException("Trying to set the device owner, but device owner "
+                    + "is already set.");
+        }
+        int callingUid = Binder.getCallingUid();
+        if (callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID) {
+            if (!hasUserSetupCompleted(UserHandle.USER_OWNER)) {
+                return;
+            }
+            if (mUserManager.getUserCount() > 1) {
+                throw new IllegalStateException("Not allowed to set the device owner because there "
+                        + "are already several users on the device");
+            }
+            if (AccountManager.get(mContext).getAccounts().length > 0) {
+                throw new IllegalStateException("Not allowed to set the device owner because there "
+                        + "are already some accounts on the device");
+            }
+            return;
+        }
+        mContext.enforceCallingOrSelfPermission(
+                android.Manifest.permission.MANAGE_PROFILE_AND_DEVICE_OWNERS, null);
+        if (hasUserSetupCompleted(UserHandle.USER_OWNER)) {
+            throw new IllegalStateException("Cannot set the device owner if the device is "
+                    + "already set-up");
+        }
     }
 
     private void enforceCrossUserPermission(int userHandle) {
@@ -5093,20 +5145,21 @@
             final IPackageManager ipm = AppGlobals.getPackageManager();
             IActivityManager activityManager = ActivityManagerNative.getDefault();
 
+            final int userHandle = user.getIdentifier();
             try {
                 // Install the profile owner if not present.
-                if (!ipm.isPackageAvailable(profileOwnerPkg, user.getIdentifier())) {
-                    ipm.installExistingPackageAsUser(profileOwnerPkg, user.getIdentifier());
+                if (!ipm.isPackageAvailable(profileOwnerPkg, userHandle)) {
+                    ipm.installExistingPackageAsUser(profileOwnerPkg, userHandle);
                 }
 
                 // Start user in background.
-                activityManager.startUserInBackground(user.getIdentifier());
+                activityManager.startUserInBackground(userHandle);
             } catch (RemoteException e) {
                 Slog.e(LOG_TAG, "Failed to make remote calls for configureUser", e);
             }
 
-            setActiveAdmin(profileOwnerComponent, true, user.getIdentifier(), adminExtras);
-            setProfileOwner(profileOwnerComponent, ownerName, user.getIdentifier());
+            setActiveAdmin(profileOwnerComponent, true, userHandle, adminExtras);
+            setProfileOwner(profileOwnerComponent, ownerName, userHandle);
             return user;
         } finally {
             restoreCallingIdentity(id);
@@ -5651,29 +5704,26 @@
      * This function can only be called by the device owner.
      * @param packages The list of packages allowed to enter lock task mode.
      */
-    public void setLockTaskPackages(ComponentName who, String[] packages) throws SecurityException {
+    public void setLockTaskPackages(ComponentName who, String[] packages)
+            throws SecurityException {
         Preconditions.checkNotNull(who, "ComponentName is null");
         synchronized (this) {
             getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
 
             int userHandle = Binder.getCallingUserHandle().getIdentifier();
-            DevicePolicyData policy = getUserData(userHandle);
-            policy.mLockTaskPackages.clear();
-            if (packages != null) {
-                for (int j = 0; j < packages.length; j++) {
-                    String pkg = packages[j];
-                    if (pkg != null) {
-                        policy.mLockTaskPackages.add(pkg);
-                    }
-                }
-            }
-
-            // Store the settings persistently.
-            saveSettingsLocked(userHandle);
-            updateLockTaskPackagesLocked(policy, userHandle);
+            setLockTaskPackagesLocked(userHandle, new ArrayList<>(Arrays.asList(packages)));
         }
     }
 
+    private void setLockTaskPackagesLocked(int userHandle, List<String> packages) {
+        DevicePolicyData policy = getUserData(userHandle);
+        policy.mLockTaskPackages = packages;
+
+        // Store the settings persistently.
+        saveSettingsLocked(userHandle);
+        updateLockTaskPackagesLocked(packages, userHandle);
+    }
+
     /**
      * This function returns the list of components allowed to start the task lock mode.
      */
@@ -5681,13 +5731,17 @@
         Preconditions.checkNotNull(who, "ComponentName is null");
         synchronized (this) {
             getActiveAdminForCallerLocked(who, DeviceAdminInfo.USES_POLICY_DEVICE_OWNER);
-
             int userHandle = Binder.getCallingUserHandle().getIdentifier();
-            DevicePolicyData policy = getUserData(userHandle);
-            return policy.mLockTaskPackages.toArray(new String[policy.mLockTaskPackages.size()]);
+            final List<String> packages = getLockTaskPackagesLocked(userHandle);
+            return packages.toArray(new String[packages.size()]);
         }
     }
 
+    private List<String> getLockTaskPackagesLocked(int userHandle) {
+        final DevicePolicyData policy = getUserData(userHandle);
+        return policy.mLockTaskPackages;
+    }
+
     /**
      * This function lets the caller know whether the given package is allowed to start the
      * lock task mode.
@@ -5951,6 +6005,8 @@
                 if (!policy.mUserSetupComplete) {
                     policy.mUserSetupComplete = true;
                     synchronized (this) {
+                        // The DeviceInitializer was whitelisted but now should be removed.
+                        removeDeviceInitializerFromLockTaskPackages(userHandle);
                         saveSettingsLocked(userHandle);
                     }
                 }
@@ -5958,6 +6014,35 @@
         }
     }
 
+    private void addDeviceInitializerToLockTaskPackagesLocked(int userHandle) {
+        if (hasUserSetupCompleted(userHandle)) {
+            return;
+        }
+
+        final String deviceInitializerPackage = getDeviceInitializer();
+        if (deviceInitializerPackage == null) {
+            return;
+        }
+
+        final List<String> packages = getLockTaskPackagesLocked(userHandle);
+        if (!packages.contains(deviceInitializerPackage)) {
+            packages.add(deviceInitializerPackage);
+            setLockTaskPackagesLocked(userHandle, packages);
+        }
+    }
+
+    private void removeDeviceInitializerFromLockTaskPackages(int userHandle) {
+        final String deviceInitializerPackage = getDeviceInitializer();
+        if (deviceInitializerPackage == null) {
+            return;
+        }
+
+        List<String> packages = getLockTaskPackagesLocked(userHandle);
+        if (packages.remove(deviceInitializerPackage)) {
+            setLockTaskPackagesLocked(userHandle, packages);
+        }
+    }
+
     private class SetupContentObserver extends ContentObserver {
 
         private final Uri mUserSetupComplete = Settings.Secure.getUriFor(
@@ -6088,4 +6173,42 @@
         }
         return false;
     }
+
+    @Override
+    public void notifyPendingSystemUpdate(long updateReceivedTime) {
+        mContext.enforceCallingOrSelfPermission(permission.NOTIFY_PENDING_SYSTEM_UPDATE,
+                "Only the system update service can broadcast update information");
+
+        if (UserHandle.getCallingUserId() != UserHandle.USER_OWNER) {
+            Slog.w(LOG_TAG, "Only the system update service in the primary user" +
+                    "can broadcast update information.");
+            return;
+        }
+        Intent intent = new Intent(DeviceAdminReceiver.ACTION_NOTIFY_PENDING_SYSTEM_UPDATE);
+        intent.putExtra(DeviceAdminReceiver.EXTRA_SYSTEM_UPDATE_RECEIVED_TIME,
+                updateReceivedTime);
+
+        synchronized (this) {
+            String deviceOwnerPackage = getDeviceOwner();
+            if (deviceOwnerPackage == null) {
+                return;
+            }
+
+            try {
+                ActivityInfo[] receivers  = mContext.getPackageManager().getPackageInfo(
+                        deviceOwnerPackage, PackageManager.GET_RECEIVERS).receivers;
+                if (receivers != null) {
+                    for (int i = 0; i < receivers.length; i++) {
+                        if (permission.BIND_DEVICE_ADMIN.equals(receivers[i].permission)) {
+                            intent.setComponent(new ComponentName(deviceOwnerPackage,
+                                    receivers[i].name));
+                            mContext.sendBroadcastAsUser(intent, UserHandle.OWNER);
+                        }
+                    }
+                }
+            } catch (NameNotFoundException e) {
+                Log.e(LOG_TAG, "Cannot find device owner package", e);
+            }
+        }
+    }
 }
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index 3d54dfb..edeeaba 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -17,7 +17,10 @@
 package com.android.server.usage;
 
 import android.Manifest;
+import android.app.ActivityManagerNative;
+import android.app.AppGlobals;
 import android.app.AppOpsManager;
+import android.app.admin.DevicePolicyManager;
 import android.app.usage.ConfigurationStats;
 import android.app.usage.IUsageStatsManager;
 import android.app.usage.UsageEvents;
@@ -30,6 +33,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.ParceledListSlice;
 import android.content.pm.UserInfo;
@@ -82,6 +86,7 @@
     static final int MSG_FLUSH_TO_DISK = 1;
     static final int MSG_REMOVE_USER = 2;
     static final int MSG_INFORM_LISTENERS = 3;
+    static final int MSG_RESET_LAST_TIMESTAMP = 4;
 
     private final Object mLock = new Object();
     Handler mHandler;
@@ -279,6 +284,29 @@
     }
 
     /**
+     * Forces the app's timestamp to reflect idle or active. If idle, then it rolls back the
+     * last used timestamp to a point in time thats behind the threshold for idle.
+     */
+    void resetLastTimestamp(String packageName, int userId, boolean idle) {
+        synchronized (mLock) {
+            final long timeNow = checkAndGetTimeLocked();
+            final long lastTimestamp = timeNow - (idle ? mAppIdleDurationMillis : 0);
+
+            final UserUsageStatsService service =
+                    getUserDataAndInitializeIfNeededLocked(userId, timeNow);
+            final long lastUsed = service.getLastPackageAccessTime(packageName);
+            final boolean previouslyIdle = hasPassedIdleDuration(lastUsed);
+            service.setLastTimestamp(packageName, lastTimestamp);
+            // Inform listeners if necessary
+            if (previouslyIdle != idle) {
+                // Slog.d(TAG, "Informing listeners of out-of-idle " + event.mPackage);
+                mHandler.sendMessage(mHandler.obtainMessage(MSG_INFORM_LISTENERS, userId,
+                        /* idle = */ idle ? 1 : 0, packageName));
+            }
+        }
+    }
+
+    /**
      * Called by the Binder stub.
      */
     void flushToDisk() {
@@ -384,13 +412,41 @@
     }
 
     boolean isAppIdle(String packageName, int userId) {
+        if (packageName == null) return false;
         if (SystemConfig.getInstance().getAllowInPowerSave().contains(packageName)) {
             return false;
         }
+        if (isActiveDeviceAdmin(packageName, userId)) {
+            return false;
+        }
+
         final long lastUsed = getLastPackageAccessTime(packageName, userId);
         return hasPassedIdleDuration(lastUsed);
     }
 
+    void setAppIdle(String packageName, boolean idle, int userId) {
+        if (packageName == null) return;
+
+        mHandler.obtainMessage(MSG_RESET_LAST_TIMESTAMP, userId, idle ? 1 : 0, packageName)
+                .sendToTarget();
+    }
+
+    private boolean isActiveDeviceAdmin(String packageName, int userId) {
+        DevicePolicyManager dpm = getContext().getSystemService(DevicePolicyManager.class);
+        if (dpm == null) return false;
+        List<ComponentName> components = dpm.getActiveAdminsAsUser(userId);
+        if (components == null) {
+            return false;
+        }
+        final int size = components.size();
+        for (int i = 0; i < size; i++) {
+            if (components.get(i).getPackageName().equals(packageName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     void informListeners(String packageName, int userId, boolean isIdle) {
         for (AppIdleStateChangeListener listener : mPackageAccessListeners) {
             listener.onAppIdleStateChanged(packageName, userId, isIdle);
@@ -459,6 +515,10 @@
                     informListeners((String) msg.obj, msg.arg1, msg.arg2 == 1);
                     break;
 
+                case MSG_RESET_LAST_TIMESTAMP:
+                    resetLastTimestamp((String) msg.obj, msg.arg1, msg.arg2 == 1);
+                    break;
+
                 default:
                     super.handleMessage(msg);
                     break;
@@ -566,6 +626,46 @@
         }
 
         @Override
+        public boolean isAppIdle(String packageName, int userId) {
+            try {
+                userId = ActivityManagerNative.getDefault().handleIncomingUser(Binder.getCallingPid(),
+                        Binder.getCallingUid(), userId, false, true, "isAppIdle", null);
+            } catch (RemoteException re) {
+                return false;
+            }
+            final long token = Binder.clearCallingIdentity();
+            try {
+                return UsageStatsService.this.isAppIdle(packageName, userId);
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+
+        @Override
+        public void setAppIdle(String packageName, boolean idle, int userId) {
+            final int callingUid = Binder.getCallingUid();
+            try {
+                userId = ActivityManagerNative.getDefault().handleIncomingUser(
+                        Binder.getCallingPid(), callingUid, userId, false, true,
+                        "setAppIdle", null);
+            } catch (RemoteException re) {
+                return;
+            }
+            getContext().enforceCallingPermission(Manifest.permission.CHANGE_APP_IDLE_STATE,
+                    "No permission to change app idle state");
+            final long token = Binder.clearCallingIdentity();
+            try {
+                PackageInfo pi = AppGlobals.getPackageManager()
+                        .getPackageInfo(packageName, 0, userId);
+                if (pi == null) return;
+                UsageStatsService.this.setAppIdle(packageName, idle, userId);
+            } catch (RemoteException re) {
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+
+        @Override
         protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
             if (getContext().checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
                     != PackageManager.PERMISSION_GRANTED) {
diff --git a/services/usage/java/com/android/server/usage/UserUsageStatsService.java b/services/usage/java/com/android/server/usage/UserUsageStatsService.java
index 0a9481a..d94759d 100644
--- a/services/usage/java/com/android/server/usage/UserUsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UserUsageStatsService.java
@@ -211,6 +211,17 @@
         notifyStatsChanged();
     }
 
+    /**
+     * Sets the last timestamp for each of the intervals.
+     * @param lastTimestamp
+     */
+    void setLastTimestamp(String packageName, long lastTimestamp) {
+        for (IntervalStats stats : mCurrentStats) {
+            stats.update(packageName, lastTimestamp, UsageEvents.Event.NONE);
+        }
+        notifyStatsChanged();
+    }
+
     private static final StatCombiner<UsageStats> sUsageStatsCombiner =
             new StatCombiner<UsageStats>() {
                 @Override
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index bbd5e30..2a30384 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -66,9 +66,18 @@
     public static final int STATE_DISCONNECTED = 7;
 
     /**
-     * The state of an outgoing {@code Call}, but waiting for user input before proceeding.
+     * The state of an outgoing {@code Call} when waiting on user to select a
+     * {@link PhoneAccount} through which to place the call.
      */
-    public static final int STATE_PRE_DIAL_WAIT = 8;
+    public static final int STATE_SELECT_PHONE_ACCOUNT = 8;
+
+    /**
+     * @hide
+     * @deprecated use STATE_SELECT_PHONE_ACCOUNT.
+     */
+    @Deprecated
+    @SystemApi
+    public static final int STATE_PRE_DIAL_WAIT = STATE_SELECT_PHONE_ACCOUNT;
 
     /**
      * The initial state of an outgoing {@code Call}.
@@ -929,7 +938,7 @@
             mVideoCall = parcelableCall.getVideoCall();
         }
 
-        int state = stateFromParcelableCallState(parcelableCall.getState());
+        int state = parcelableCall.getState();
         boolean stateChanged = mState != state;
         if (stateChanged) {
             mState = state;
@@ -1064,32 +1073,4 @@
             callback.onConferenceableCallsChanged(this, mUnmodifiableConferenceableCalls);
         }
     }
-
-    private int stateFromParcelableCallState(int parcelableCallState) {
-        switch (parcelableCallState) {
-            case CallState.NEW:
-                return STATE_NEW;
-            case CallState.CONNECTING:
-                return STATE_CONNECTING;
-            case CallState.PRE_DIAL_WAIT:
-                return STATE_PRE_DIAL_WAIT;
-            case CallState.DIALING:
-                return STATE_DIALING;
-            case CallState.RINGING:
-                return STATE_RINGING;
-            case CallState.ACTIVE:
-                return STATE_ACTIVE;
-            case CallState.ON_HOLD:
-                return STATE_HOLDING;
-            case CallState.DISCONNECTED:
-                return STATE_DISCONNECTED;
-            case CallState.ABORTED:
-                return STATE_DISCONNECTED;
-            case CallState.DISCONNECTING:
-                return STATE_DISCONNECTING;
-            default:
-                Log.wtf(this, "Unrecognized CallState %s", parcelableCallState);
-                return STATE_NEW;
-        }
-    }
 }
diff --git a/telecomm/java/android/telecom/CallState.java b/telecomm/java/android/telecom/CallState.java
deleted file mode 100644
index 5584226..0000000
--- a/telecomm/java/android/telecom/CallState.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright 2014, 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.
- * 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.
- */
-
-package android.telecom;
-
-/**
- * Defines call-state constants of the different states in which a call can exist. Although states
- * have the notion of normal transitions, due to the volatile nature of telephony systems, code
- * that uses these states should be resilient to unexpected state changes outside of what is
- * considered traditional.
- */
-public final class CallState {
-
-    private CallState() {}
-
-    /**
-     * Indicates that a call is new and not connected. This is used as the default state internally
-     * within Telecom and should not be used between Telecom and call services. Call services are
-     * not expected to ever interact with NEW calls, but {@link InCallService}s will see calls in
-     * this state.
-     */
-    public static final int NEW = 0;
-
-    /**
-     * The initial state of an outgoing {@code Call}.
-     * Common transitions are to {@link #DIALING} state for a successful call or
-     * {@link #DISCONNECTED} if it failed.
-     */
-    public static final int CONNECTING = 1;
-
-    /**
-     * Indicates that the call is about to go into the outgoing and dialing state but is waiting for
-     * user input before it proceeds. For example, where no default {@link PhoneAccount} is set,
-     * this is the state where the InCallUI is waiting for the user to select a
-     * {@link PhoneAccount} to call from.
-     */
-    public static final int PRE_DIAL_WAIT = 2;
-
-    /**
-     * Indicates that a call is outgoing and in the dialing state. A call transitions to this state
-     * once an outgoing call has begun (e.g., user presses the dial button in Dialer). Calls in this
-     * state usually transition to {@link #ACTIVE} if the call was answered or {@link #DISCONNECTED}
-     * if the call was disconnected somehow (e.g., failure or cancellation of the call by the user).
-     */
-    public static final int DIALING = 3;
-
-    /**
-     * Indicates that a call is incoming and the user still has the option of answering, rejecting,
-     * or doing nothing with the call. This state is usually associated with some type of audible
-     * ringtone. Normal transitions are to {@link #ACTIVE} if answered or {@link #DISCONNECTED}
-     * otherwise.
-     */
-    public static final int RINGING = 4;
-
-    /**
-     * Indicates that a call is currently connected to another party and a communication channel is
-     * open between them. The normal transition to this state is by the user answering a
-     * {@link #DIALING} call or a {@link #RINGING} call being answered by the other party.
-     */
-    public static final int ACTIVE = 5;
-
-    /**
-     * Indicates that the call is currently on hold. In this state, the call is not terminated
-     * but no communication is allowed until the call is no longer on hold. The typical transition
-     * to this state is by the user putting an {@link #ACTIVE} call on hold by explicitly performing
-     * an action, such as clicking the hold button.
-     */
-    public static final int ON_HOLD = 6;
-
-    /**
-     * Indicates that a call is currently disconnected. All states can transition to this state
-     * by the call service giving notice that the connection has been severed. When the user
-     * explicitly ends a call, it will not transition to this state until the call service confirms
-     * the disconnection or communication was lost to the call service currently responsible for
-     * this call (e.g., call service crashes).
-     */
-    public static final int DISCONNECTED = 7;
-
-    /**
-     * Indicates that the call was attempted (mostly in the context of outgoing, at least at the
-     * time of writing) but cancelled before it was successfully connected.
-     */
-    public static final int ABORTED = 8;
-
-    /**
-     * Indicates that the call is in the process of being disconnected and will transition next
-     * to a {@link #DISCONNECTED} state.
-     * <p>
-     * This state is not expected to be communicated from the Telephony layer, but will be reported
-     * to the InCall UI for calls where disconnection has been initiated by the user but the
-     * ConnectionService has confirmed the call as disconnected.
-     */
-    public static final int DISCONNECTING = 9;
-
-    public static String toString(int callState) {
-        switch (callState) {
-            case NEW:
-                return "NEW";
-            case CONNECTING:
-                return "CONNECTING";
-            case PRE_DIAL_WAIT:
-                return "PRE_DIAL_WAIT";
-            case DIALING:
-                return "DIALING";
-            case RINGING:
-                return "RINGING";
-            case ACTIVE:
-                return "ACTIVE";
-            case ON_HOLD:
-                return "ON_HOLD";
-            case DISCONNECTED:
-                return "DISCONNECTED";
-            case ABORTED:
-                return "ABORTED";
-            case DISCONNECTING:
-                return "DISCONNECTING";
-            default:
-                return "UNKNOWN";
-        }
-    }
-}
diff --git a/telecomm/java/android/telecom/DefaultDialerManager.java b/telecomm/java/android/telecom/DefaultDialerManager.java
new file mode 100644
index 0000000..eef72fb
--- /dev/null
+++ b/telecomm/java/android/telecom/DefaultDialerManager.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 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. 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.
+ */
+
+package android.telecom;
+
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.provider.Settings;
+import android.text.TextUtils;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Class for managing the default dialer application that will receive incoming calls, and be
+ * allowed to make emergency outgoing calls.
+ *
+ * @hide
+ */
+public class DefaultDialerManager {
+    private static final String TAG = "DefaultDialerManager";
+
+    /**
+     * Sets the specified package name as the default dialer application. The caller of this method
+     * needs to have permission to write to secure settings.
+     *
+     * @hide
+     * */
+    public static void setDefaultPhoneApplication(Context context, String packageName) {
+        // Get old package name
+        String oldPackageName = Settings.Secure.getString(context.getContentResolver(),
+                Settings.Secure.DIALER_DEFAULT_APPLICATION);
+
+        if (packageName != null && oldPackageName != null && packageName.equals(oldPackageName)) {
+            // No change
+            return;
+        }
+
+        // Only make the change if the new package belongs to a valid phone application
+        List<ComponentName> componentNames = getInstalledDialerApplications(context);
+        final ComponentName foundComponent = getComponentName(componentNames, packageName);
+
+        if (foundComponent != null) {
+            // Update the secure setting.
+            Settings.Secure.putString(context.getContentResolver(),
+                    Settings.Secure.DIALER_DEFAULT_APPLICATION, foundComponent.getPackageName());
+        }
+    }
+
+    /**
+     * Returns the installed dialer application that will be used to receive incoming calls, and is
+     * allowed to make emergency calls.
+     *
+     * The application will be returned in order of preference:
+     * 1) User selected phone application (if still installed)
+     * 2) Pre-installed system dialer (if not disabled)
+     * 3) Null
+     *
+     * @hide
+     * */
+    public static ComponentName getDefaultDialerApplication(Context context) {
+        String defaultPackageName = Settings.Secure.getString(context.getContentResolver(),
+                Settings.Secure.DIALER_DEFAULT_APPLICATION);
+
+        final List<ComponentName> componentNames = getInstalledDialerApplications(context);
+        if (!TextUtils.isEmpty(defaultPackageName)) {
+            final ComponentName defaultDialer =
+                    getComponentName(componentNames, defaultPackageName);
+            if (defaultDialer != null) {
+                return defaultDialer;
+            }
+        }
+
+        // No user-set dialer found, fallback to system dialer
+        ComponentName systemDialer = getTelecomManager(context).getDefaultPhoneApp();
+
+        if (systemDialer == null) {
+            // No system dialer configured at build time
+            return null;
+        }
+
+        // Verify that the system dialer has not been disabled.
+        return getComponentName(componentNames, systemDialer.getPackageName());
+    }
+
+    /**
+     * Returns a list of installed and available dialer applications.
+     *
+     * In order to appear in the list, a dialer application must implement an intent-filter with
+     * the DIAL intent for the following schemes:
+     *
+     * 1) Empty scheme
+     * 2) tel Uri scheme
+     *
+     * @hide
+     **/
+    public static List<ComponentName> getInstalledDialerApplications(Context context) {
+        PackageManager packageManager = context.getPackageManager();
+
+        // Get the list of apps registered for the DIAL intent with empty scheme
+        Intent intent = new Intent(Intent.ACTION_DIAL);
+        List<ResolveInfo> resolveInfoList = packageManager.queryIntentActivities(intent, 0);
+
+        List<ComponentName> componentNames = new ArrayList<ComponentName> ();
+
+        for (ResolveInfo resolveInfo : resolveInfoList) {
+            final ActivityInfo activityInfo = resolveInfo.activityInfo;
+            if (activityInfo == null) {
+                continue;
+            }
+            final ComponentName componentName =
+                    new ComponentName(activityInfo.packageName, activityInfo.name);
+            componentNames.add(componentName);
+        }
+
+        // TODO: Filter for apps that don't handle DIAL intent with tel scheme
+        return componentNames;
+    }
+
+    /**
+     * Returns the {@link ComponentName} for the installed dialer application for a given package
+     * name.
+     *
+     * @param context A valid context.
+     * @param packageName to retrieve the {@link ComponentName} for.
+     *
+     * @return The {@link ComponentName} for the installed dialer application corresponding to the
+     * package name, or null if none is found.
+     *
+     * @hide
+     */
+    public static ComponentName getDialerApplicationForPackageName(Context context,
+            String packageName) {
+        return getComponentName(getInstalledDialerApplications(context), packageName);
+    }
+
+    /**
+     * Returns the component from a list of application components that corresponds to the package
+     * name.
+     *
+     * @param componentNames A list of component names
+     * @param packageName The package name to look for
+     * @return The {@link ComponentName} that matches the provided packageName, or null if not
+     *         found.
+     */
+    private static ComponentName getComponentName(List<ComponentName> componentNames,
+            String packageName) {
+        for (ComponentName componentName : componentNames) {
+            if (TextUtils.equals(packageName, componentName.getPackageName())) {
+                return componentName;
+            }
+        }
+        return null;
+    }
+
+    private static TelecomManager getTelecomManager(Context context) {
+        return (TelecomManager) context.getSystemService(Context.TELECOM_SERVICE);
+    }
+}
diff --git a/telecomm/java/android/telecom/DisconnectCause.java b/telecomm/java/android/telecom/DisconnectCause.java
index 73bcd0c..3a7faf6 100644
--- a/telecomm/java/android/telecom/DisconnectCause.java
+++ b/telecomm/java/android/telecom/DisconnectCause.java
@@ -130,8 +130,10 @@
 
     /**
      * Returns a short label which explains the reason for the disconnect cause and is for display
-     * in the user interface. The {@link ConnectionService } is responsible for providing and
-     * localizing this label. If there is no string provided, returns null.
+     * in the user interface. If not null, it is expected that the In-Call UI should display this
+     * text where it would normally display the call state ("Dialing", "Disconnected") and is
+     * therefore expected to be relatively small. The {@link ConnectionService } is responsible for
+     * providing and localizing this label. If there is no string provided, returns null.
      *
      * @return The disconnect label.
      */
@@ -141,8 +143,11 @@
 
     /**
      * Returns a description which explains the reason for the disconnect cause and is for display
-     * in the user interface. The {@link ConnectionService } is responsible for providing and
-     * localizing this message. If there is no string provided, returns null.
+     * in the user interface. This optional text is generally a longer and more descriptive version
+     * of {@link #getLabel}, however it can exist even if {@link #getLabel} is empty. The In-Call UI
+     * should display this relatively prominently; the traditional implementation displays this as
+     * an alert dialog. The {@link ConnectionService} is responsible for providing and localizing
+     * this message. If there is no string provided, returns null.
      *
      * @return The disconnect description.
      */
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index a72172c..fd95327 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -17,6 +17,7 @@
 import android.annotation.SystemApi;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.RemoteException;
@@ -1057,6 +1058,39 @@
         }
     }
 
+    /**
+     * Places a new outgoing call to the provided address using the system telecom service with
+     * the specified extras.
+     *
+     * This method is equivalent to placing an outgoing call using {@link Intent#ACTION_CALL},
+     * except that the outgoing call will always be sent via the system telecom service. If
+     * method-caller is either the user selected default dialer app or preloaded system dialer
+     * app, then emergency calls will also be allowed.
+     *
+     * Requires permission: {@link android.Manifest.permission#CALL_PHONE}
+     *
+     * Usage example:
+     * <pre>
+     * Uri uri = Uri.fromParts("tel", "12345", null);
+     * Bundle extras = new Bundle();
+     * extras.putBoolean(TelecomManager.EXTRA_START_CALL_WITH_SPEAKERPHONE, true);
+     * telecomManager.placeCall(uri, extras);
+     * </pre>
+     *
+     * @param address The address to make the call to.
+     * @param extras Bundle of extras to use with the call.
+     */
+    public void placeCall(Uri address, Bundle extras) {
+        ITelecomService service = getTelecomService();
+        if (service != null) {
+            try {
+                service.placeCall(address, extras, mContext.getOpPackageName());
+            } catch (RemoteException e) {
+                Log.e(TAG, "Error calling ITelecomService#placeCall", e);
+            }
+        }
+    }
+
     private ITelecomService getTelecomService() {
         return ITelecomService.Stub.asInterface(ServiceManager.getService(Context.TELECOM_SERVICE));
     }
diff --git a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
index 727fd4bb..45b2482 100644
--- a/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
+++ b/telecomm/java/com/android/internal/telecom/ITelecomService.aidl
@@ -210,4 +210,9 @@
      * @see TelecomServiceImpl#addNewUnknownCall
      */
     void addNewUnknownCall(in PhoneAccountHandle phoneAccount, in Bundle extras);
+
+    /**
+     * @see TelecomServiceImpl#placeCall
+     */
+    void placeCall(in Uri handle, in Bundle extras, String callingPackage);
 }
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index d103fbf..7d1a2fa 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -71,6 +71,11 @@
     public static final String BOOL_SHOW_APN_SETTING_CDMA = "bool_show_apn_setting_cdma";
 
     /**
+     * Control whether users can edit APNs in Settings.
+     */
+    public static final String BOOL_APN_EXPAND = "bool_apn_expand";
+
+    /**
      * If Voice Radio Technology is RIL_RADIO_TECHNOLOGY_LTE:14 or RIL_RADIO_TECHNOLOGY_UNKNOWN:0
      * this is the value that should be used instead. A configuration value of
      * RIL_RADIO_TECHNOLOGY_UNKNOWN:0 means there is no replacement value and that the default
@@ -121,6 +126,7 @@
         sDefaults.putBoolean(BOOL_CARRIER_VOLTE_PROVISIONED, false);
         sDefaults.putBoolean(BOOL_CARRIER_VOLTE_TTY_SUPPORTED, true);
         sDefaults.putBoolean(BOOL_SHOW_APN_SETTING_CDMA, false);
+        sDefaults.putBoolean(BOOL_APN_EXPAND, true);
 
         sDefaults.putInt(INT_VOLTE_REPLACEMENT_RAT, 0);
 
diff --git a/telephony/java/android/telephony/RadioAccessFamily.java b/telephony/java/android/telephony/RadioAccessFamily.java
index d10a7ea..9fea418 100644
--- a/telephony/java/android/telephony/RadioAccessFamily.java
+++ b/telephony/java/android/telephony/RadioAccessFamily.java
@@ -48,6 +48,13 @@
     public static final int RAF_GSM = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_GSM);
     public static final int RAF_TD_SCDMA = (1 << ServiceState.RIL_RADIO_TECHNOLOGY_TD_SCDMA);
 
+    // Grouping of RAFs
+    private static final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE;
+    private static final int HS = RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP;
+    private static final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT;
+    private static final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B | RAF_EHRPD;
+    private static final int WCDMA = HS | RAF_UMTS;
+
     /* Phone ID of phone */
     private int mPhoneId;
 
@@ -136,12 +143,6 @@
     };
 
     public static int getRafFromNetworkType(int type) {
-        final int GSM = RAF_GSM | RAF_GPRS | RAF_EDGE;
-        final int HS = RAF_HSUPA | RAF_HSDPA | RAF_HSPA | RAF_HSPAP;
-        final int CDMA = RAF_IS95A | RAF_IS95B | RAF_1xRTT;
-        final int EVDO = RAF_EVDO_0 | RAF_EVDO_A | RAF_EVDO_B;
-        final int WCDMA = HS | RAF_UMTS;
-
         int raf;
 
         switch (type) {
@@ -158,7 +159,7 @@
                 raf = GSM | WCDMA;
                 break;
             case RILConstants.NETWORK_MODE_CDMA:
-                raf = CDMA;
+                raf = CDMA | EVDO;
                 break;
             case RILConstants.NETWORK_MODE_LTE_CDMA_EVDO:
                 raf = RAF_LTE | CDMA | EVDO;
@@ -188,7 +189,71 @@
                 raf = RAF_UNKNOWN;
                 break;
         }
+
         return raf;
     }
+
+    /**
+     * if the raf includes ANY bit set for a group
+     * adjust it to contain ALL the bits for that group
+     */
+    private static int getAdjustedRaf(int raf) {
+        raf = ((GSM & raf) > 0) ? (GSM | raf) : raf;
+        raf = ((WCDMA & raf) > 0) ? (WCDMA | raf) : raf;
+        raf = ((CDMA & raf) > 0) ? (CDMA | raf) : raf;
+        raf = ((EVDO & raf) > 0) ? (EVDO | raf) : raf;
+
+        return raf;
+    }
+
+    public static int getNetworkTypeFromRaf(int raf) {
+        int type;
+
+        raf = getAdjustedRaf(raf);
+
+        switch (raf) {
+            case (GSM | WCDMA):
+                type = RILConstants.NETWORK_MODE_WCDMA_PREF;
+                break;
+            case GSM:
+                type = RILConstants.NETWORK_MODE_GSM_ONLY;
+                break;
+            case WCDMA:
+                type = RILConstants.NETWORK_MODE_WCDMA_ONLY;
+                break;
+            case (CDMA | EVDO):
+                type = RILConstants.NETWORK_MODE_CDMA;
+                break;
+            case (RAF_LTE | CDMA | EVDO):
+                type = RILConstants.NETWORK_MODE_LTE_CDMA_EVDO;
+                break;
+            case (RAF_LTE | GSM | WCDMA):
+                type = RILConstants.NETWORK_MODE_LTE_GSM_WCDMA;
+                break;
+            case (RAF_LTE | CDMA | EVDO | GSM | WCDMA):
+                type = RILConstants.NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA;
+                break;
+            case RAF_LTE:
+                type = RILConstants.NETWORK_MODE_LTE_ONLY;
+                break;
+            case (RAF_LTE | WCDMA):
+                type = RILConstants.NETWORK_MODE_LTE_WCDMA;
+                break;
+            case CDMA:
+                type = RILConstants.NETWORK_MODE_CDMA_NO_EVDO;
+                break;
+            case EVDO:
+                type = RILConstants.NETWORK_MODE_EVDO_NO_CDMA;
+                break;
+            case (GSM | WCDMA | CDMA | EVDO):
+                type = RILConstants.NETWORK_MODE_GLOBAL;
+                break;
+            default:
+                type = RILConstants.PREFERRED_NETWORK_MODE ;
+                break;
+        }
+
+        return type;
+    }
 }
 
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index 17db3fb..7b58755 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -470,8 +470,6 @@
 
     /**
      * Get signal level as an int from 0..4
-     *
-     * @hide
      */
     public int getLevel() {
         int level;
diff --git a/test-runner/src/android/test/mock/MockPackageManager.java b/test-runner/src/android/test/mock/MockPackageManager.java
index 276b713..9efea0d 100644
--- a/test-runner/src/android/test/mock/MockPackageManager.java
+++ b/test-runner/src/android/test/mock/MockPackageManager.java
@@ -16,7 +16,6 @@
 
 package android.test.mock;
 
-import android.annotation.NonNull;
 import android.app.PackageInstallObserver;
 import android.content.ComponentName;
 import android.content.Intent;
@@ -29,7 +28,6 @@
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageDeleteObserver;
 import android.content.pm.IPackageInstallObserver;
-import android.content.pm.IPackageMoveObserver;
 import android.content.pm.IPackageStatsObserver;
 import android.content.pm.InstrumentationInfo;
 import android.content.pm.IntentFilterVerificationInfo;
@@ -46,11 +44,14 @@
 import android.content.pm.ServiceInfo;
 import android.content.pm.VerificationParams;
 import android.content.pm.VerifierDeviceIdentity;
+import android.content.pm.PackageManager.MoveCallback;
 import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
+import android.os.Handler;
+import android.os.ResultReceiver;
 import android.os.UserHandle;
 import android.os.storage.VolumeInfo;
 
@@ -487,36 +488,65 @@
         throw new UnsupportedOperationException();
     }
 
-    /** {@hide} */
-    @Override
-    public void movePackage(String packageName, IPackageMoveObserver observer, int flags) {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@hide} */
-    @Override
-    public void movePackageAndData(String packageName, String volumeUuid,
-            IPackageMoveObserver observer) {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@hide} */
-    @Override
-    public @NonNull VolumeInfo getApplicationCurrentVolume(ApplicationInfo app) {
-        throw new UnsupportedOperationException();
-    }
-
-    /** {@hide} */
-    @Override
-    public @NonNull List<VolumeInfo> getApplicationCandidateVolumes(ApplicationInfo app) {
-        throw new UnsupportedOperationException();
-    }
-
     @Override
     public String getInstallerPackageName(String packageName) {
         throw new UnsupportedOperationException();
     }
 
+    /** {@hide} */
+    @Override
+    public int getMoveStatus(int moveId) {
+        throw new UnsupportedOperationException();
+    }
+
+    /** {@hide} */
+    @Override
+    public void registerMoveCallback(MoveCallback callback, Handler handler) {
+        throw new UnsupportedOperationException();
+    }
+
+    /** {@hide} */
+    @Override
+    public void unregisterMoveCallback(MoveCallback callback) {
+        throw new UnsupportedOperationException();
+    }
+
+    /** {@hide} */
+    @Override
+    public int movePackage(String packageName, VolumeInfo vol) {
+        throw new UnsupportedOperationException();
+    }
+
+    /** {@hide} */
+    @Override
+    public VolumeInfo getPackageCurrentVolume(ApplicationInfo app) {
+        throw new UnsupportedOperationException();
+    }
+
+    /** {@hide} */
+    @Override
+    public List<VolumeInfo> getPackageCandidateVolumes(ApplicationInfo app) {
+        throw new UnsupportedOperationException();
+    }
+
+    /** {@hide} */
+    @Override
+    public int movePrimaryStorage(VolumeInfo vol) {
+        throw new UnsupportedOperationException();
+    }
+
+    /** {@hide} */
+    @Override
+    public VolumeInfo getPrimaryStorageCurrentVolume() {
+        throw new UnsupportedOperationException();
+    }
+
+    /** {@hide} */
+    @Override
+    public List<VolumeInfo> getPrimaryStorageCandidateVolumes() {
+        throw new UnsupportedOperationException();
+    }
+
     /**
      * @hide - to match hiding in superclass
      */
diff --git a/tests/VoiceInteraction/res/layout/main.xml b/tests/VoiceInteraction/res/layout/main.xml
index 092d37d..34a7563 100644
--- a/tests/VoiceInteraction/res/layout/main.xml
+++ b/tests/VoiceInteraction/res/layout/main.xml
@@ -34,6 +34,12 @@
             android:text="@string/asyncStructure"
             />
 
+    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
+        android:assistBlocked="true"
+        android:textAppearance="?android:attr/textAppearanceMedium"
+        android:text="This won't be included in assist."
+        />
+
 </LinearLayout>
 
 
diff --git a/tests/VoiceInteraction/res/xml/interaction_service.xml b/tests/VoiceInteraction/res/xml/interaction_service.xml
index ce5669c..789493a 100644
--- a/tests/VoiceInteraction/res/xml/interaction_service.xml
+++ b/tests/VoiceInteraction/res/xml/interaction_service.xml
@@ -20,4 +20,5 @@
 <voice-interaction-service xmlns:android="http://schemas.android.com/apk/res/android"
     android:sessionService="com.android.test.voiceinteraction.MainInteractionSessionService"
     android:recognitionService="com.android.test.voiceinteraction.MainRecognitionService"
-    android:settingsActivity="com.android.test.voiceinteraction.SettingsActivity" />
+    android:settingsActivity="com.android.test.voiceinteraction.SettingsActivity"
+    android:supportsAssistGesture="true" />
diff --git a/tools/aapt/Bundle.h b/tools/aapt/Bundle.h
index e7cde74..3dae917 100644
--- a/tools/aapt/Bundle.h
+++ b/tools/aapt/Bundle.h
@@ -54,7 +54,7 @@
           mWantUTF16(false), mValues(false), mIncludeMetaData(false),
           mCompressionMethod(0), mJunkPath(false), mOutputAPKFile(NULL),
           mManifestPackageNameOverride(NULL), mInstrumentationPackageNameOverride(NULL),
-          mAutoAddOverlay(false), mGenDependencies(false),
+          mAutoAddOverlay(false), mGenDependencies(false), mNoVersionVectors(false),
           mCrunchedOutputDir(NULL), mProguardFile(NULL),
           mAndroidManifestFile(NULL), mPublicOutputFile(NULL),
           mRClassDir(NULL), mResourceIntermediatesDir(NULL), mManifestMinSdkVersion(NULL),
@@ -203,6 +203,8 @@
     void setSingleCrunchOutputFile(const char* val) { mSingleCrunchOutputFile = val; }
     bool getBuildSharedLibrary() const { return mBuildSharedLibrary; }
     void setBuildSharedLibrary(bool val) { mBuildSharedLibrary = val; }
+    void setNoVersionVectors(bool val) { mNoVersionVectors = val; }
+    bool getNoVersionVectors() const { return mNoVersionVectors; }
 
     /*
      * Set and get the file specification.
@@ -282,6 +284,7 @@
     const char* mInstrumentationPackageNameOverride;
     bool        mAutoAddOverlay;
     bool        mGenDependencies;
+    bool        mNoVersionVectors;
     const char* mCrunchedOutputDir;
     const char* mProguardFile;
     const char* mAndroidManifestFile;
diff --git a/tools/aapt/Main.cpp b/tools/aapt/Main.cpp
index 8b416aa..7dee585 100644
--- a/tools/aapt/Main.cpp
+++ b/tools/aapt/Main.cpp
@@ -211,7 +211,9 @@
         "       specified folder.\n"
         "   --ignore-assets\n"
         "       Assets to be ignored. Default pattern is:\n"
-        "       %s\n",
+        "       %s\n"
+        "   --no-version-vectors\n"
+        "       Do not automatically generate versioned copies of vector XML resources.\n",
         gDefaultIgnoreAssets);
 }
 
@@ -673,6 +675,8 @@
                     gUserIgnoreAssets = argv[0];
                 } else if (strcmp(cp, "-pseudo-localize") == 0) {
                     bundle.setPseudolocalize(PSEUDO_ACCENTED | PSEUDO_BIDI);
+                } else if (strcmp(cp, "-no-version-vectors") == 0) {
+                    bundle.setNoVersionVectors(true);
                 } else {
                     fprintf(stderr, "ERROR: Unknown option '-%s'\n", cp);
                     wantUsage = true;
diff --git a/tools/aapt/ResourceTable.cpp b/tools/aapt/ResourceTable.cpp
index c5fccbf..3b146da 100644
--- a/tools/aapt/ResourceTable.cpp
+++ b/tools/aapt/ResourceTable.cpp
@@ -4611,6 +4611,9 @@
                                         const String16& resourceName,
                                         const sp<AaptFile>& target,
                                         const sp<XMLNode>& root) {
+    const String16 vector16("vector");
+    const String16 animatedVector16("animated-vector");
+
     const int minSdk = getMinSdkVersion(bundle);
     if (minSdk >= SDK_LOLLIPOP_MR1) {
         // Lollipop MR1 and up handles public attributes differently, no
@@ -4620,8 +4623,8 @@
 
     const ConfigDescription config(target->getGroupEntry().toParams());
     if (target->getResourceType() == "" || config.sdkVersion >= SDK_LOLLIPOP_MR1) {
-        // Skip resources that have no type (AndroidManifest.xml) or are already version qualified with v21
-        // or higher.
+        // Skip resources that have no type (AndroidManifest.xml) or are already version qualified
+        // with v21 or higher.
         return NO_ERROR;
     }
 
@@ -4635,6 +4638,12 @@
         sp<XMLNode> node = nodesToVisit.top();
         nodesToVisit.pop();
 
+        if (bundle->getNoVersionVectors() && (node->getElementName() == vector16 ||
+                    node->getElementName() == animatedVector16)) {
+            // We were told not to version vector tags, so skip the children here.
+            continue;
+        }
+
         const Vector<XMLNode::attribute_entry>& attrs = node->getAttributes();
         for (size_t i = 0; i < attrs.size(); i++) {
             const XMLNode::attribute_entry& attr = attrs[i];