Merge "remove unnecessary variable in CachedBluetoothDeviceManager"
diff --git a/api/test-current.txt b/api/test-current.txt
index 3fa202f..35c6c48 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -8,6 +8,8 @@
     field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS";
     field public static final java.lang.String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
     field public static final java.lang.String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
+    field public static final java.lang.String FORCE_STOP_PACKAGES = "android.permission.FORCE_STOP_PACKAGES";
+    field public static final java.lang.String CHANGE_CONFIGURATION = "android.permission.CHANGE_CONFIGURATION";
   }
 
 }
@@ -30,6 +32,8 @@
     method public long getTotalRam();
     method public int getUidImportance(int);
     method public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
+    method public void forceStopPackage(java.lang.String);
+    method public void scheduleApplicationInfoChanged(java.util.List<java.lang.String>, int);
   }
 
   public static abstract interface ActivityManager.OnUidImportanceListener {
@@ -56,6 +60,14 @@
     method public void setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) throws java.lang.SecurityException;
     method public static boolean supportsMultiWindow(android.content.Context);
     method public static boolean supportsSplitScreenMultiWindow(android.content.Context);
+    method public boolean moveTopActivityToPinnedStack(int, android.graphics.Rect);
+    method public void startSystemLockTaskMode(int);
+    method public void stopSystemLockTaskMode();
+    method public void moveTaskToStack(int, int, boolean);
+    method public void resizeStack(int, android.graphics.Rect, boolean);
+    method public void resizeTask(int, android.graphics.Rect);
+    method public void resizeDockedStack(android.graphics.Rect,android.graphics.Rect);
+    method public java.lang.String listAllStacks();
     field public static final int INVALID_STACK_ID = -1; // 0xffffffff
     field public static final int SPLIT_SCREEN_CREATE_MODE_BOTTOM_OR_RIGHT = 1; // 0x1
     field public static final int SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT = 0; // 0x0
@@ -1456,6 +1468,7 @@
   public final class MotionEvent extends android.view.InputEvent implements android.os.Parcelable {
     method public void setActionButton(int);
     method public void setButtonState(int);
+    method public void setDisplayId(int);
   }
 
   public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
diff --git a/config/hiddenapi-light-greylist.txt b/config/hiddenapi-light-greylist.txt
index 0e0a8c7..c84142a 100644
--- a/config/hiddenapi-light-greylist.txt
+++ b/config/hiddenapi-light-greylist.txt
@@ -517,215 +517,6 @@
 Landroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager;
 Landroid/location/ILocationManager$Stub;->TRANSACTION_getAllProviders:I
 Landroid/location/ILocationManager;->getAllProviders()Ljava/util/List;
-Landroid/media/AmrInputStream;-><init>(Ljava/io/InputStream;)V
-Landroid/media/AsyncPlayer;->setUsesWakeLock(Landroid/content/Context;)V
-Landroid/media/AudioAttributes$Builder;->addTag(Ljava/lang/String;)Landroid/media/AudioAttributes$Builder;
-Landroid/media/AudioAttributes$Builder;->setInternalLegacyStreamType(I)Landroid/media/AudioAttributes$Builder;
-Landroid/media/AudioAttributes;->mContentType:I
-Landroid/media/AudioAttributes;->mFlags:I
-Landroid/media/AudioAttributes;->mFormattedTags:Ljava/lang/String;
-Landroid/media/AudioAttributes;->mSource:I
-Landroid/media/AudioAttributes;->mUsage:I
-Landroid/media/AudioAttributes;->toLegacyStreamType(Landroid/media/AudioAttributes;)I
-Landroid/media/AudioDevicePort;-><init>(Landroid/media/AudioHandle;Ljava/lang/String;[I[I[I[I[Landroid/media/AudioGain;ILjava/lang/String;)V
-Landroid/media/AudioDevicePort;->type()I
-Landroid/media/AudioDevicePortConfig;-><init>(Landroid/media/AudioDevicePort;IIILandroid/media/AudioGainConfig;)V
-Landroid/media/AudioFormat;-><init>(IIII)V
-Landroid/media/AudioFormat;->mChannelMask:I
-Landroid/media/AudioFormat;->mEncoding:I
-Landroid/media/AudioFormat;->mSampleRate:I
-Landroid/media/audiofx/AudioEffect;-><init>(Ljava/util/UUID;Ljava/util/UUID;II)V
-Landroid/media/audiofx/AudioEffect;->checkState(Ljava/lang/String;)V
-Landroid/media/audiofx/AudioEffect;->command(I[B[B)I
-Landroid/media/audiofx/AudioEffect;->getParameter([I[B)I
-Landroid/media/audiofx/AudioEffect;->getParameter([I[I)I
-Landroid/media/audiofx/AudioEffect;->setParameter([I[S)I
-Landroid/media/audiofx/Visualizer;->mId:I
-Landroid/media/AudioGain;-><init>(IIIIIIIII)V
-Landroid/media/AudioGainConfig;-><init>(ILandroid/media/AudioGain;II[II)V
-Landroid/media/AudioGainConfig;->mChannelMask:I
-Landroid/media/AudioGainConfig;->mIndex:I
-Landroid/media/AudioGainConfig;->mMode:I
-Landroid/media/AudioGainConfig;->mRampDurationMs:I
-Landroid/media/AudioGainConfig;->mValues:[I
-Landroid/media/AudioHandle;-><init>(I)V
-Landroid/media/AudioHandle;->mId:I
-Landroid/media/AudioManager;-><init>()V
-Landroid/media/AudioManager;-><init>(Landroid/content/Context;)V
-Landroid/media/AudioManager;->abandonAudioFocusForCall()V
-Landroid/media/AudioManager;->createAudioPatch([Landroid/media/AudioPatch;[Landroid/media/AudioPortConfig;[Landroid/media/AudioPortConfig;)I
-Landroid/media/AudioManager;->DEVICE_OUT_ANLG_DOCK_HEADSET:I
-Landroid/media/AudioManager;->DEVICE_OUT_BLUETOOTH_A2DP:I
-Landroid/media/AudioManager;->DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES:I
-Landroid/media/AudioManager;->DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER:I
-Landroid/media/AudioManager;->DEVICE_OUT_BLUETOOTH_SCO_HEADSET:I
-Landroid/media/AudioManager;->DEVICE_OUT_DGTL_DOCK_HEADSET:I
-Landroid/media/AudioManager;->DEVICE_OUT_EARPIECE:I
-Landroid/media/AudioManager;->DEVICE_OUT_HDMI:I
-Landroid/media/AudioManager;->DEVICE_OUT_SPEAKER:I
-Landroid/media/AudioManager;->DEVICE_OUT_WIRED_HEADPHONE:I
-Landroid/media/AudioManager;->DEVICE_OUT_WIRED_HEADSET:I
-Landroid/media/AudioManager;->EXTRA_VOLUME_STREAM_TYPE:Ljava/lang/String;
-Landroid/media/AudioManager;->EXTRA_VOLUME_STREAM_VALUE:Ljava/lang/String;
-Landroid/media/AudioManager;->forceVolumeControlStream(I)V
-Landroid/media/AudioManager;->getDevicesForStream(I)I
-Landroid/media/AudioManager;->getLastAudibleStreamVolume(I)I
-Landroid/media/AudioManager;->getOutputLatency(I)I
-Landroid/media/AudioManager;->getRingerModeInternal()I
-Landroid/media/AudioManager;->getService()Landroid/media/IAudioService;
-Landroid/media/AudioManager;->isMasterMute()Z
-Landroid/media/AudioManager;->isMusicActiveRemotely()Z
-Landroid/media/AudioManager;->isSilentMode()Z
-Landroid/media/AudioManager;->isValidRingerMode(I)Z
-Landroid/media/AudioManager;->listAudioPatches(Ljava/util/ArrayList;)I
-Landroid/media/AudioManager;->listAudioPorts(Ljava/util/ArrayList;)I
-Landroid/media/AudioManager;->mAudioFocusIdListenerMap:Ljava/util/concurrent/ConcurrentHashMap;
-Landroid/media/AudioManager;->NUM_SOUND_EFFECTS:I
-Landroid/media/AudioManager;->releaseAudioPatch(Landroid/media/AudioPatch;)I
-Landroid/media/AudioManager;->reloadAudioSettings()V
-Landroid/media/AudioManager;->requestAudioFocusForCall(II)V
-Landroid/media/AudioManager;->setMasterMute(ZI)V
-Landroid/media/AudioManager;->setRingerModeInternal(I)V
-Landroid/media/AudioManager;->setWiredDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;)V
-Landroid/media/AudioManager;->startBluetoothScoVirtualCall()V
-Landroid/media/AudioManager;->STREAM_BLUETOOTH_SCO:I
-Landroid/media/AudioManager;->STREAM_SYSTEM_ENFORCED:I
-Landroid/media/AudioManager;->STREAM_TTS:I
-Landroid/media/AudioManager;->VOLUME_CHANGED_ACTION:Ljava/lang/String;
-Landroid/media/AudioMixPort;-><init>(Landroid/media/AudioHandle;IILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V
-Landroid/media/AudioMixPort;->ioHandle()I
-Landroid/media/AudioMixPortConfig;-><init>(Landroid/media/AudioMixPort;IIILandroid/media/AudioGainConfig;)V
-Landroid/media/AudioPatch;-><init>(Landroid/media/AudioHandle;[Landroid/media/AudioPortConfig;[Landroid/media/AudioPortConfig;)V
-Landroid/media/AudioPatch;->mHandle:Landroid/media/AudioHandle;
-Landroid/media/AudioPatch;->sinks()[Landroid/media/AudioPortConfig;
-Landroid/media/AudioPatch;->sources()[Landroid/media/AudioPortConfig;
-Landroid/media/audiopolicy/AudioMix;->mCallbackFlags:I
-Landroid/media/audiopolicy/AudioMix;->mDeviceAddress:Ljava/lang/String;
-Landroid/media/audiopolicy/AudioMix;->mDeviceSystemType:I
-Landroid/media/audiopolicy/AudioMix;->mFormat:Landroid/media/AudioFormat;
-Landroid/media/audiopolicy/AudioMix;->mMixType:I
-Landroid/media/audiopolicy/AudioMix;->mRouteFlags:I
-Landroid/media/audiopolicy/AudioMix;->mRule:Landroid/media/audiopolicy/AudioMixingRule;
-Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;->mAttr:Landroid/media/AudioAttributes;
-Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;->mIntProp:I
-Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;->mRule:I
-Landroid/media/audiopolicy/AudioMixingRule;->mCriteria:Ljava/util/ArrayList;
-Landroid/media/AudioPort;-><init>(Landroid/media/AudioHandle;ILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V
-Landroid/media/AudioPort;->id()I
-Landroid/media/AudioPort;->mActiveConfig:Landroid/media/AudioPortConfig;
-Landroid/media/AudioPort;->mGains:[Landroid/media/AudioGain;
-Landroid/media/AudioPort;->mHandle:Landroid/media/AudioHandle;
-Landroid/media/AudioPort;->mRole:I
-Landroid/media/AudioPort;->role()I
-Landroid/media/AudioPortConfig;-><init>(Landroid/media/AudioPort;IIILandroid/media/AudioGainConfig;)V
-Landroid/media/AudioPortConfig;->mChannelMask:I
-Landroid/media/AudioPortConfig;->mConfigMask:I
-Landroid/media/AudioPortConfig;->mFormat:I
-Landroid/media/AudioPortConfig;->mGain:Landroid/media/AudioGainConfig;
-Landroid/media/AudioPortConfig;->mPort:Landroid/media/AudioPort;
-Landroid/media/AudioPortConfig;->mSamplingRate:I
-Landroid/media/AudioPortConfig;->port()Landroid/media/AudioPort;
-Landroid/media/AudioPortEventHandler;->mJniCallback:J
-Landroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
-Landroid/media/AudioRecord;->mAudioAttributes:Landroid/media/AudioAttributes;
-Landroid/media/AudioRecord;->mInitializationLooper:Landroid/os/Looper;
-Landroid/media/AudioRecord;->mNativeCallbackCookie:J
-Landroid/media/AudioRecord;->mNativeDeviceCallback:J
-Landroid/media/AudioRecord;->mNativeRecorderInJavaObj:J
-Landroid/media/AudioRecord;->native_release()V
-Landroid/media/AudioRecord;->native_setup(Ljava/lang/Object;Ljava/lang/Object;[IIIII[ILjava/lang/String;J)I
-Landroid/media/AudioRecord;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
-Landroid/media/AudioRecordingConfiguration;->getClientPackageName()Ljava/lang/String;
-Landroid/media/AudioRecordingConfiguration;->getClientUid()I
-Landroid/media/AudioSystem;->DEVICE_IN_AMBIENT:I
-Landroid/media/AudioSystem;->DEVICE_IN_ANLG_DOCK_HEADSET:I
-Landroid/media/AudioSystem;->DEVICE_IN_AUX_DIGITAL:I
-Landroid/media/AudioSystem;->DEVICE_IN_BACK_MIC:I
-Landroid/media/AudioSystem;->DEVICE_IN_BLUETOOTH_A2DP:I
-Landroid/media/AudioSystem;->DEVICE_IN_BLUETOOTH_SCO_HEADSET:I
-Landroid/media/AudioSystem;->DEVICE_IN_BUILTIN_MIC:I
-Landroid/media/AudioSystem;->DEVICE_IN_COMMUNICATION:I
-Landroid/media/AudioSystem;->DEVICE_IN_DEFAULT:I
-Landroid/media/AudioSystem;->DEVICE_IN_DGTL_DOCK_HEADSET:I
-Landroid/media/AudioSystem;->DEVICE_IN_REMOTE_SUBMIX:I
-Landroid/media/AudioSystem;->DEVICE_IN_USB_ACCESSORY:I
-Landroid/media/AudioSystem;->DEVICE_IN_USB_DEVICE:I
-Landroid/media/AudioSystem;->DEVICE_IN_VOICE_CALL:I
-Landroid/media/AudioSystem;->DEVICE_IN_WIRED_HEADSET:I
-Landroid/media/AudioSystem;->DEVICE_OUT_ALL_USB:I
-Landroid/media/AudioSystem;->DEVICE_OUT_ANLG_DOCK_HEADSET:I
-Landroid/media/AudioSystem;->DEVICE_OUT_AUX_DIGITAL:I
-Landroid/media/AudioSystem;->DEVICE_OUT_BLUETOOTH_A2DP:I
-Landroid/media/AudioSystem;->DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES:I
-Landroid/media/AudioSystem;->DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER:I
-Landroid/media/AudioSystem;->DEVICE_OUT_BLUETOOTH_SCO:I
-Landroid/media/AudioSystem;->DEVICE_OUT_BLUETOOTH_SCO_CARKIT:I
-Landroid/media/AudioSystem;->DEVICE_OUT_BLUETOOTH_SCO_HEADSET:I
-Landroid/media/AudioSystem;->DEVICE_OUT_DGTL_DOCK_HEADSET:I
-Landroid/media/AudioSystem;->DEVICE_OUT_EARPIECE:I
-Landroid/media/AudioSystem;->DEVICE_OUT_FM:I
-Landroid/media/AudioSystem;->DEVICE_OUT_REMOTE_SUBMIX:I
-Landroid/media/AudioSystem;->DEVICE_OUT_SPEAKER:I
-Landroid/media/AudioSystem;->DEVICE_OUT_TELEPHONY_TX:I
-Landroid/media/AudioSystem;->DEVICE_OUT_USB_ACCESSORY:I
-Landroid/media/AudioSystem;->DEVICE_OUT_USB_DEVICE:I
-Landroid/media/AudioSystem;->DEVICE_OUT_WIRED_HEADPHONE:I
-Landroid/media/AudioSystem;->DEVICE_OUT_WIRED_HEADSET:I
-Landroid/media/AudioSystem;->DEVICE_STATE_AVAILABLE:I
-Landroid/media/AudioSystem;->DEVICE_STATE_UNAVAILABLE:I
-Landroid/media/AudioSystem;->dynamicPolicyCallbackFromNative(ILjava/lang/String;I)V
-Landroid/media/AudioSystem;->errorCallbackFromNative(I)V
-Landroid/media/AudioSystem;->FORCE_ANALOG_DOCK:I
-Landroid/media/AudioSystem;->FORCE_BT_CAR_DOCK:I
-Landroid/media/AudioSystem;->FORCE_BT_DESK_DOCK:I
-Landroid/media/AudioSystem;->FORCE_DIGITAL_DOCK:I
-Landroid/media/AudioSystem;->FORCE_NONE:I
-Landroid/media/AudioSystem;->getDeviceConnectionState(ILjava/lang/String;)I
-Landroid/media/AudioSystem;->getDevicesForStream(I)I
-Landroid/media/AudioSystem;->getMasterMute()Z
-Landroid/media/AudioSystem;->getNumStreamTypes()I
-Landroid/media/AudioSystem;->getOutputDeviceName(I)Ljava/lang/String;
-Landroid/media/AudioSystem;->getOutputLatency(I)I
-Landroid/media/AudioSystem;->getPrimaryOutputFrameCount()I
-Landroid/media/AudioSystem;->getPrimaryOutputSamplingRate()I
-Landroid/media/AudioSystem;->initStreamVolume(III)I
-Landroid/media/AudioSystem;->isMicrophoneMuted()Z
-Landroid/media/AudioSystem;->isSourceActive(I)Z
-Landroid/media/AudioSystem;->isStreamActive(II)Z
-Landroid/media/AudioSystem;->muteMicrophone(Z)I
-Landroid/media/AudioSystem;->recordingCallbackFromNative(IIII[I)V
-Landroid/media/AudioSystem;->setDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;)I
-Landroid/media/AudioSystem;->setErrorCallback(Landroid/media/AudioSystem$ErrorCallback;)V
-Landroid/media/AudioSystem;->setMasterMute(Z)I
-Landroid/media/AudioSystem;->setPhoneState(I)I
-Landroid/media/AudioSystem;->setStreamVolumeIndex(III)I
-Landroid/media/AudioSystem;->STREAM_SYSTEM_ENFORCED:I
-Landroid/media/AudioTrack;->deferred_connect(J)V
-Landroid/media/AudioTrack;->getLatency()I
-Landroid/media/AudioTrack;->mJniData:J
-Landroid/media/AudioTrack;->mNativeTrackInJavaObj:J
-Landroid/media/AudioTrack;->mStreamType:I
-Landroid/media/AudioTrack;->native_release()V
-Landroid/media/AudioTrack;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
-Landroid/media/CamcorderProfile;->native_get_camcorder_profile(II)Landroid/media/CamcorderProfile;
-Landroid/media/CamcorderProfile;->native_init()V
-Landroid/media/DecoderCapabilities$AudioDecoder;->AUDIO_DECODER_WMA:Landroid/media/DecoderCapabilities$AudioDecoder;
-Landroid/media/DecoderCapabilities$VideoDecoder;->VIDEO_DECODER_WMV:Landroid/media/DecoderCapabilities$VideoDecoder;
-Landroid/media/DecoderCapabilities;->getAudioDecoders()Ljava/util/List;
-Landroid/media/DecoderCapabilities;->getVideoDecoders()Ljava/util/List;
-Landroid/media/EncoderCapabilities$VideoEncoderCap;->mCodec:I
-Landroid/media/EncoderCapabilities$VideoEncoderCap;->mMaxFrameHeight:I
-Landroid/media/EncoderCapabilities$VideoEncoderCap;->mMaxFrameWidth:I
-Landroid/media/EncoderCapabilities$VideoEncoderCap;->mMinFrameHeight:I
-Landroid/media/EncoderCapabilities$VideoEncoderCap;->mMinFrameWidth:I
-Landroid/media/EncoderCapabilities;->getVideoEncoders()Ljava/util/List;
-Landroid/media/ExifInterface;->convertRationalLatLonToFloat(Ljava/lang/String;Ljava/lang/String;)F
-Landroid/media/ExifInterface;->getDateTime()J
-Landroid/media/ExifInterface;->getGpsDateTime()J
-Landroid/media/ExifInterface;->mAttributes:[Ljava/util/HashMap;
-Landroid/media/ExifInterface;->mFilename:Ljava/lang/String;
-Landroid/media/ExifInterface;->mHasThumbnail:Z
-Landroid/media/ExifInterface;->sFormatter:Ljava/text/SimpleDateFormat;
 Landroid/media/IAudioFocusDispatcher;->dispatchAudioFocusChange(ILjava/lang/String;)V
 Landroid/media/IAudioRoutesObserver$Stub;-><init>()V
 Landroid/media/IAudioService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
@@ -735,8 +526,6 @@
 Landroid/media/IAudioService;->getStreamVolume(I)I
 Landroid/media/IAudioService;->setStreamVolume(IIILjava/lang/String;)V
 Landroid/media/IAudioService;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
-Landroid/media/Image$Plane;-><init>()V
-Landroid/media/Image;-><init>()V
 Landroid/media/IMediaRouterService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaRouterService;
 Landroid/media/IMediaScannerListener$Stub;-><init>()V
 Landroid/media/IMediaScannerService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaScannerService;
@@ -745,246 +534,9 @@
 Landroid/media/IRemoteDisplayCallback;->onStateChanged(Landroid/media/RemoteDisplayState;)V
 Landroid/media/IRingtonePlayer;->play(Landroid/os/IBinder;Landroid/net/Uri;Landroid/media/AudioAttributes;FZ)V
 Landroid/media/IVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IVolumeController;
-Landroid/media/JetPlayer;->mNativePlayerInJavaObj:J
-Landroid/media/JetPlayer;->postEventFromNative(Ljava/lang/Object;III)V
-Landroid/media/MediaCodec$CodecException;-><init>(IILjava/lang/String;)V
-Landroid/media/MediaCodec;->getBuffers(Z)[Ljava/nio/ByteBuffer;
-Landroid/media/MediaCodec;->mNativeContext:J
-Landroid/media/MediaCodec;->releaseOutputBuffer(IZZJ)V
-Landroid/media/MediaCodec;->setParameters([Ljava/lang/String;[Ljava/lang/Object;)V
-Landroid/media/MediaCodecInfo$VideoCapabilities;->create(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)Landroid/media/MediaCodecInfo$VideoCapabilities;
-Landroid/media/MediaFile$MediaFileType;->fileType:I
-Landroid/media/MediaFile$MediaFileType;->mimeType:Ljava/lang/String;
 Landroid/media/MediaFile;-><init>()V
-Landroid/media/MediaFile;->addFileType(Ljava/lang/String;ILjava/lang/String;)V
-Landroid/media/MediaFile;->FIRST_AUDIO_FILE_TYPE:I
-Landroid/media/MediaFile;->getFileTitle(Ljava/lang/String;)Ljava/lang/String;
-Landroid/media/MediaFile;->getFileType(Ljava/lang/String;)Landroid/media/MediaFile$MediaFileType;
-Landroid/media/MediaFile;->getFileTypeForMimeType(Ljava/lang/String;)I
-Landroid/media/MediaFile;->getMimeTypeForFile(Ljava/lang/String;)Ljava/lang/String;
-Landroid/media/MediaFile;->isAudioFileType(I)Z
-Landroid/media/MediaFile;->isDrmFileType(I)Z
-Landroid/media/MediaFile;->isImageFileType(I)Z
-Landroid/media/MediaFile;->isPlayListFileType(I)Z
-Landroid/media/MediaFile;->isVideoFileType(I)Z
-Landroid/media/MediaFile;->LAST_AUDIO_FILE_TYPE:I
-Landroid/media/MediaFile;->sFileTypeMap:Ljava/util/HashMap;
-Landroid/media/MediaFile;->sFileTypeToFormatMap:Ljava/util/HashMap;
-Landroid/media/MediaFile;->sFormatToMimeTypeMap:Ljava/util/HashMap;
-Landroid/media/MediaFile;->sMimeTypeToFormatMap:Ljava/util/HashMap;
-Landroid/media/MediaFormat;->getMap()Ljava/util/Map;
-Landroid/media/MediaFormat;->mMap:Ljava/util/Map;
-Landroid/media/MediaHTTPConnection;-><init>()V
-Landroid/media/MediaHTTPConnection;->connect(Ljava/lang/String;Ljava/lang/String;)Landroid/os/IBinder;
-Landroid/media/MediaHTTPConnection;->disconnect()V
-Landroid/media/MediaHTTPConnection;->getMIMEType()Ljava/lang/String;
-Landroid/media/MediaHTTPConnection;->getUri()Ljava/lang/String;
-Landroid/media/MediaHTTPConnection;->mAllowCrossDomainRedirect:Z
-Landroid/media/MediaHTTPConnection;->mAllowCrossProtocolRedirect:Z
-Landroid/media/MediaHTTPConnection;->mConnection:Ljava/net/HttpURLConnection;
-Landroid/media/MediaHTTPConnection;->mCurrentOffset:J
-Landroid/media/MediaHTTPConnection;->mHeaders:Ljava/util/Map;
-Landroid/media/MediaHTTPConnection;->mTotalSize:J
-Landroid/media/MediaHTTPConnection;->mURL:Ljava/net/URL;
-Landroid/media/MediaHTTPConnection;->readAt(JI)I
-Landroid/media/MediaHTTPService;->createHttpServiceBinderIfNecessary(Ljava/lang/String;)Landroid/os/IBinder;
-Landroid/media/MediaInserter;->flushAll()V
-Landroid/media/MediaMetadata;->getKeyFromMetadataEditorKey(I)Ljava/lang/String;
-Landroid/media/MediaMetadataRetriever;->getEmbeddedPicture(I)[B
-Landroid/media/MediaMetadataRetriever;->native_finalize()V
-Landroid/media/MediaMetadataRetriever;->native_init()V
-Landroid/media/MediaMetadataRetriever;->native_setup()V
-Landroid/media/MediaMuxer;->mCloseGuard:Ldalvik/system/CloseGuard;
-Landroid/media/MediaMuxer;->mNativeObject:J
-Landroid/media/MediaMuxer;->mState:I
-Landroid/media/MediaMuxer;->MUXER_STATE_STARTED:I
-Landroid/media/MediaMuxer;->MUXER_STATE_STOPPED:I
-Landroid/media/MediaMuxer;->MUXER_STATE_UNINITIALIZED:I
-Landroid/media/MediaMuxer;->nativeRelease(J)V
-Landroid/media/MediaMuxer;->nativeSetup(Ljava/io/FileDescriptor;I)J
-Landroid/media/MediaPlayer$TrackInfo;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/media/MediaPlayer2$TrackInfo;->getLanguage()Ljava/lang/String;
-Landroid/media/MediaPlayer2$TrackInfo;->getTrackType()I
-Landroid/media/MediaPlayer;->addSubtitleSource(Ljava/io/InputStream;Landroid/media/MediaFormat;)V
-Landroid/media/MediaPlayer;->BYPASS_METADATA_FILTER:Z
-Landroid/media/MediaPlayer;->getMediaTimeProvider()Landroid/media/MediaTimeProvider;
-Landroid/media/MediaPlayer;->getMetadata(ZZ)Landroid/media/Metadata;
-Landroid/media/MediaPlayer;->invoke(Landroid/os/Parcel;Landroid/os/Parcel;)V
-Landroid/media/MediaPlayer;->MEDIA_INFO_EXTERNAL_METADATA_UPDATE:I
-Landroid/media/MediaPlayer;->MEDIA_INFO_TIMED_TEXT_ERROR:I
-Landroid/media/MediaPlayer;->METADATA_ALL:Z
-Landroid/media/MediaPlayer;->mEventHandler:Landroid/media/MediaPlayer$EventHandler;
-Landroid/media/MediaPlayer;->mOnCompletionListener:Landroid/media/MediaPlayer$OnCompletionListener;
-Landroid/media/MediaPlayer;->mOnErrorListener:Landroid/media/MediaPlayer$OnErrorListener;
-Landroid/media/MediaPlayer;->mOnInfoListener:Landroid/media/MediaPlayer$OnInfoListener;
-Landroid/media/MediaPlayer;->mOnPreparedListener:Landroid/media/MediaPlayer$OnPreparedListener;
-Landroid/media/MediaPlayer;->mOnSeekCompleteListener:Landroid/media/MediaPlayer$OnSeekCompleteListener;
-Landroid/media/MediaPlayer;->mOnTimedTextListener:Landroid/media/MediaPlayer$OnTimedTextListener;
-Landroid/media/MediaPlayer;->newRequest()Landroid/os/Parcel;
-Landroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;Ljava/util/Map;)V
-Landroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;Ljava/util/Map;Ljava/util/List;)V
-Landroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;Ljava/util/List;)V
-Landroid/media/MediaPlayer;->setParameter(ILandroid/os/Parcel;)Z
-Landroid/media/MediaPlayer;->setRetransmitEndpoint(Ljava/net/InetSocketAddress;)V
-Landroid/media/MediaPlayer;->setSubtitleAnchor(Landroid/media/SubtitleController;Landroid/media/SubtitleController$Anchor;)V
-Landroid/media/MediaRecorder;->mEventHandler:Landroid/media/MediaRecorder$EventHandler;
-Landroid/media/MediaRecorder;->mFd:Ljava/io/FileDescriptor;
-Landroid/media/MediaRecorder;->mOnErrorListener:Landroid/media/MediaRecorder$OnErrorListener;
-Landroid/media/MediaRecorder;->mOnInfoListener:Landroid/media/MediaRecorder$OnInfoListener;
-Landroid/media/MediaRecorder;->mPath:Ljava/lang/String;
-Landroid/media/MediaRecorder;->mSurface:Landroid/view/Surface;
-Landroid/media/MediaRecorder;->native_finalize()V
-Landroid/media/MediaRecorder;->native_init()V
-Landroid/media/MediaRecorder;->native_reset()V
-Landroid/media/MediaRecorder;->native_setup(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/String;)V
-Landroid/media/MediaRecorder;->setParameter(Ljava/lang/String;)V
-Landroid/media/MediaRecorder;->_prepare()V
-Landroid/media/MediaRouter$RouteInfo;->getDeviceAddress()Ljava/lang/String;
-Landroid/media/MediaRouter$RouteInfo;->getName(Landroid/content/res/Resources;)Ljava/lang/CharSequence;
-Landroid/media/MediaRouter$RouteInfo;->getStatusCode()I
-Landroid/media/MediaRouter$RouteInfo;->isDefault()Z
-Landroid/media/MediaRouter$RouteInfo;->isSelected()Z
-Landroid/media/MediaRouter$RouteInfo;->matchesTypes(I)Z
-Landroid/media/MediaRouter$RouteInfo;->mNameResId:I
-Landroid/media/MediaRouter$RouteInfo;->select()V
-Landroid/media/MediaRouter$RouteInfo;->STATUS_CONNECTING:I
-Landroid/media/MediaRouter;->getSelectedRoute()Landroid/media/MediaRouter$RouteInfo;
-Landroid/media/MediaRouter;->selectRouteInt(ILandroid/media/MediaRouter$RouteInfo;Z)V
-Landroid/media/MediaScanner$FileEntry;-><init>(JLjava/lang/String;JI)V
-Landroid/media/MediaScanner$FileEntry;->mLastModifiedChanged:Z
-Landroid/media/MediaScanner$FileEntry;->mRowId:J
-Landroid/media/MediaScanner$MyMediaScannerClient;->beginFile(Ljava/lang/String;Ljava/lang/String;JJZZ)Landroid/media/MediaScanner$FileEntry;
-Landroid/media/MediaScanner$MyMediaScannerClient;->doScanFile(Ljava/lang/String;Ljava/lang/String;JJZZZ)Landroid/net/Uri;
-Landroid/media/MediaScanner$MyMediaScannerClient;->endFile(Landroid/media/MediaScanner$FileEntry;ZZZZZ)Landroid/net/Uri;
-Landroid/media/MediaScanner$MyMediaScannerClient;->getFileTypeFromDrm(Ljava/lang/String;)I
-Landroid/media/MediaScanner$MyMediaScannerClient;->handleStringTag(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/media/MediaScanner$MyMediaScannerClient;->mFileType:I
-Landroid/media/MediaScanner$MyMediaScannerClient;->mIsDrm:Z
-Landroid/media/MediaScanner$MyMediaScannerClient;->mMimeType:Ljava/lang/String;
-Landroid/media/MediaScanner$MyMediaScannerClient;->mNoMedia:Z
-Landroid/media/MediaScanner$MyMediaScannerClient;->mPath:Ljava/lang/String;
-Landroid/media/MediaScanner$MyMediaScannerClient;->scanFile(Ljava/lang/String;JJZZ)V
-Landroid/media/MediaScanner$MyMediaScannerClient;->setMimeType(Ljava/lang/String;)V
-Landroid/media/MediaScanner$MyMediaScannerClient;->toValues()Landroid/content/ContentValues;
-Landroid/media/MediaScanner;-><init>(Landroid/content/Context;Ljava/lang/String;)V
-Landroid/media/MediaScanner;->FILES_PRESCAN_PROJECTION:[Ljava/lang/String;
-Landroid/media/MediaScanner;->isDrmEnabled()Z
-Landroid/media/MediaScanner;->isNoMediaPath(Ljava/lang/String;)Z
-Landroid/media/MediaScanner;->makeEntryFor(Ljava/lang/String;)Landroid/media/MediaScanner$FileEntry;
-Landroid/media/MediaScanner;->mAudioUri:Landroid/net/Uri;
-Landroid/media/MediaScanner;->mClient:Landroid/media/MediaScanner$MyMediaScannerClient;
-Landroid/media/MediaScanner;->mContext:Landroid/content/Context;
-Landroid/media/MediaScanner;->mDefaultAlarmAlertFilename:Ljava/lang/String;
-Landroid/media/MediaScanner;->mDefaultNotificationFilename:Ljava/lang/String;
-Landroid/media/MediaScanner;->mDefaultRingtoneFilename:Ljava/lang/String;
-Landroid/media/MediaScanner;->mFilesUri:Landroid/net/Uri;
-Landroid/media/MediaScanner;->mMediaInserter:Landroid/media/MediaInserter;
-Landroid/media/MediaScanner;->mPackageName:Ljava/lang/String;
-Landroid/media/MediaScanner;->postscan([Ljava/lang/String;)V
-Landroid/media/MediaScanner;->prescan(Ljava/lang/String;Z)V
-Landroid/media/MediaScanner;->scanSingleFile(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
-Landroid/media/MediaScanner;->setLocale(Ljava/lang/String;)V
-Landroid/media/Metadata;-><init>()V
-Landroid/media/Metadata;->getBoolean(I)Z
-Landroid/media/Metadata;->getByteArray(I)[B
-Landroid/media/Metadata;->getDate(I)Ljava/util/Date;
-Landroid/media/Metadata;->getDouble(I)D
-Landroid/media/Metadata;->getInt(I)I
-Landroid/media/Metadata;->getLong(I)J
-Landroid/media/Metadata;->getString(I)Ljava/lang/String;
-Landroid/media/Metadata;->has(I)Z
-Landroid/media/Metadata;->keySet()Ljava/util/Set;
-Landroid/media/Metadata;->parse(Landroid/os/Parcel;)Z
-Landroid/media/Metadata;->PAUSE_AVAILABLE:I
-Landroid/media/Metadata;->SEEK_AVAILABLE:I
-Landroid/media/Metadata;->SEEK_BACKWARD_AVAILABLE:I
-Landroid/media/Metadata;->SEEK_FORWARD_AVAILABLE:I
-Landroid/media/MicrophoneInfo;-><init>(Ljava/lang/String;ILjava/lang/String;IIILandroid/media/MicrophoneInfo$Coordinate3F;Landroid/media/MicrophoneInfo$Coordinate3F;Ljava/util/List;Ljava/util/List;FFFI)V
-Landroid/media/MiniThumbFile;->reset()V
-Landroid/media/PlaybackParams;->mAudioFallbackMode:I
-Landroid/media/PlaybackParams;->mAudioStretchMode:I
-Landroid/media/PlaybackParams;->mPitch:F
-Landroid/media/PlaybackParams;->mSet:I
-Landroid/media/PlaybackParams;->mSpeed:F
-Landroid/media/PlaybackParams;->SET_AUDIO_FALLBACK_MODE:I
-Landroid/media/PlaybackParams;->SET_AUDIO_STRETCH_MODE:I
-Landroid/media/PlaybackParams;->SET_PITCH:I
-Landroid/media/PlaybackParams;->SET_SPEED:I
 Landroid/media/projection/IMediaProjectionManager;->hasProjectionPermission(ILjava/lang/String;)Z
-Landroid/media/RemoteControlClient;->MEDIA_POSITION_READABLE:I
-Landroid/media/RemoteControlClient;->MEDIA_POSITION_WRITABLE:I
-Landroid/media/RemoteController;->getUpdateListener()Landroid/media/RemoteController$OnClientUpdateListener;
-Landroid/media/RemoteController;->mCurrentSession:Landroid/media/session/MediaController;
-Landroid/media/RemoteController;->setArtworkConfiguration(ZII)Z
-Landroid/media/RemoteDisplay;->dispose()V
-Landroid/media/RemoteDisplay;->notifyDisplayConnected(Landroid/view/Surface;IIII)V
-Landroid/media/RemoteDisplay;->notifyDisplayDisconnected()V
-Landroid/media/RemoteDisplay;->notifyDisplayError(I)V
-Landroid/media/RemoteDisplayState;-><init>()V
-Landroid/media/RemoteDisplayState;->displays:Ljava/util/ArrayList;
-Landroid/media/Ringtone;-><init>(Landroid/content/Context;Z)V
-Landroid/media/Ringtone;->getUri()Landroid/net/Uri;
-Landroid/media/Ringtone;->mLocalPlayer:Landroid/media/MediaPlayer;
-Landroid/media/Ringtone;->mUri:Landroid/net/Uri;
-Landroid/media/Ringtone;->setUri(Landroid/net/Uri;)V
-Landroid/media/RingtoneManager;->getInternalRingtones()Landroid/database/Cursor;
-Landroid/media/RingtoneManager;->getMediaRingtones(Landroid/content/Context;)Landroid/database/Cursor;
-Landroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;I)Landroid/media/Ringtone;
-Landroid/media/RingtoneManager;->mCursor:Landroid/database/Cursor;
 Landroid/media/session/ISessionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionManager;
-Landroid/media/session/MediaController;->controlsSameSession(Landroid/media/session/MediaController;)Z
-Landroid/media/session/MediaSession$QueueItem;->mId:J
-Landroid/media/session/MediaSession;->getCallingPackage()Ljava/lang/String;
-Landroid/media/session/MediaSession;->mCallback:Landroid/media/session/MediaSession$CallbackMessageHandler;
-Landroid/media/session/MediaSessionLegacyHelper;->getHelper(Landroid/content/Context;)Landroid/media/session/MediaSessionLegacyHelper;
-Landroid/media/session/MediaSessionManager;->getActiveSessionsForUser(Landroid/content/ComponentName;I)Ljava/util/List;
-Landroid/media/soundtrigger/SoundTriggerDetector$EventPayload;->getCaptureSession()Ljava/lang/Integer;
-Landroid/media/soundtrigger/SoundTriggerDetector$EventPayload;->getData()[B
-Landroid/media/soundtrigger/SoundTriggerManager;->isRecognitionActive(Ljava/util/UUID;)Z
-Landroid/media/soundtrigger/SoundTriggerManager;->loadSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;)I
-Landroid/media/soundtrigger/SoundTriggerManager;->startRecognition(Ljava/util/UUID;Landroid/os/Bundle;Landroid/content/ComponentName;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
-Landroid/media/soundtrigger/SoundTriggerManager;->stopRecognition(Ljava/util/UUID;)I
-Landroid/media/soundtrigger/SoundTriggerManager;->unloadSoundModel(Ljava/util/UUID;)I
-Landroid/media/SubtitleController;-><init>(Landroid/content/Context;Landroid/media/MediaTimeProvider;Landroid/media/SubtitleController$Listener;)V
-Landroid/media/SubtitleController;->hide()V
-Landroid/media/SubtitleController;->mHandler:Landroid/os/Handler;
-Landroid/media/SubtitleController;->registerRenderer(Landroid/media/SubtitleController$Renderer;)V
-Landroid/media/SubtitleController;->reset()V
-Landroid/media/SubtitleController;->show()V
-Landroid/media/SubtitleTrack$RenderingWidget;->draw(Landroid/graphics/Canvas;)V
-Landroid/media/SubtitleTrack$RenderingWidget;->onAttachedToWindow()V
-Landroid/media/SubtitleTrack$RenderingWidget;->onDetachedFromWindow()V
-Landroid/media/SubtitleTrack$RenderingWidget;->setOnChangedListener(Landroid/media/SubtitleTrack$RenderingWidget$OnChangedListener;)V
-Landroid/media/SubtitleTrack$RenderingWidget;->setSize(II)V
-Landroid/media/ThumbnailUtils;->closeSilently(Landroid/os/ParcelFileDescriptor;)V
-Landroid/media/ThumbnailUtils;->computeInitialSampleSize(Landroid/graphics/BitmapFactory$Options;II)I
-Landroid/media/ThumbnailUtils;->computeSampleSize(Landroid/graphics/BitmapFactory$Options;II)I
-Landroid/media/ThumbnailUtils;->createImageThumbnail(Ljava/lang/String;I)Landroid/graphics/Bitmap;
-Landroid/media/ThumbnailUtils;->createThumbnailFromEXIF(Ljava/lang/String;IILandroid/media/ThumbnailUtils$SizedThumbnailBitmap;)V
-Landroid/media/ThumbnailUtils;->makeInputStream(Landroid/net/Uri;Landroid/content/ContentResolver;)Landroid/os/ParcelFileDescriptor;
-Landroid/media/ThumbnailUtils;->TARGET_SIZE_MICRO_THUMBNAIL:I
-Landroid/media/ThumbnailUtils;->transform(Landroid/graphics/Matrix;Landroid/graphics/Bitmap;III)Landroid/graphics/Bitmap;
-Landroid/media/TimedText;->getObject(I)Ljava/lang/Object;
-Landroid/media/ToneGenerator;->mNativeContext:J
-Landroid/media/TtmlRenderer;-><init>(Landroid/content/Context;)V
-Landroid/media/tv/TvInputInfo;->getComponent()Landroid/content/ComponentName;
-Landroid/media/tv/TvInputService$Session;->mOverlayFrame:Landroid/graphics/Rect;
-Landroid/media/VolumeShaper$Configuration;-><init>(IIIDI[F[F)V
-Landroid/media/VolumeShaper$Configuration;->mDurationMs:D
-Landroid/media/VolumeShaper$Configuration;->mId:I
-Landroid/media/VolumeShaper$Configuration;->mInterpolatorType:I
-Landroid/media/VolumeShaper$Configuration;->mOptionFlags:I
-Landroid/media/VolumeShaper$Configuration;->mTimes:[F
-Landroid/media/VolumeShaper$Configuration;->mType:I
-Landroid/media/VolumeShaper$Configuration;->mVolumes:[F
-Landroid/media/VolumeShaper$Operation;-><init>(IIF)V
-Landroid/media/VolumeShaper$Operation;->mFlags:I
-Landroid/media/VolumeShaper$Operation;->mReplaceId:I
-Landroid/media/VolumeShaper$Operation;->mXOffset:F
-Landroid/media/VolumeShaper$State;-><init>(FF)V
-Landroid/media/VolumeShaper$State;->mVolume:F
-Landroid/media/VolumeShaper$State;->mXOffset:F
-Landroid/media/WebVttRenderer;-><init>(Landroid/content/Context;)V
 Landroid/net/IConnectivityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveLinkProperties()Landroid/net/LinkProperties;
 Landroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetworkInfo()Landroid/net/NetworkInfo;
@@ -1648,80 +1200,6 @@
 Landroid/os/WorkSource;->updateLocked(Landroid/os/WorkSource;ZZ)Z
 Landroid/os/ZygoteStartFailedEx;-><init>(Ljava/lang/String;)V
 Landroid/os/ZygoteStartFailedEx;-><init>(Ljava/lang/Throwable;)V
-Landroid/preference/DialogPreference;->mBuilder:Landroid/app/AlertDialog$Builder;
-Landroid/preference/DialogPreference;->mDialog:Landroid/app/Dialog;
-Landroid/preference/DialogPreference;->mDialogIcon:Landroid/graphics/drawable/Drawable;
-Landroid/preference/DialogPreference;->mDialogMessage:Ljava/lang/CharSequence;
-Landroid/preference/DialogPreference;->mDialogTitle:Ljava/lang/CharSequence;
-Landroid/preference/DialogPreference;->mNegativeButtonText:Ljava/lang/CharSequence;
-Landroid/preference/DialogPreference;->mPositiveButtonText:Ljava/lang/CharSequence;
-Landroid/preference/DialogPreference;->mWhichButtonClicked:I
-Landroid/preference/EditTextPreference;->mEditText:Landroid/widget/EditText;
-Landroid/preference/ListPreference;->mClickedDialogEntryIndex:I
-Landroid/preference/Preference;->getId()J
-Landroid/preference/Preference;->mLayoutResId:I
-Landroid/preference/Preference;->mSummary:Ljava/lang/CharSequence;
-Landroid/preference/Preference;->mWidgetLayoutResId:I
-Landroid/preference/Preference;->onKey(Landroid/view/View;ILandroid/view/KeyEvent;)Z
-Landroid/preference/Preference;->performClick(Landroid/preference/PreferenceScreen;)V
-Landroid/preference/Preference;->registerDependent(Landroid/preference/Preference;)V
-Landroid/preference/Preference;->setOnPreferenceChangeInternalListener(Landroid/preference/Preference$OnPreferenceChangeInternalListener;)V
-Landroid/preference/PreferenceActivity;->getHeaders()Ljava/util/List;
-Landroid/preference/PreferenceActivity;->mPreferenceManager:Landroid/preference/PreferenceManager;
-Landroid/preference/PreferenceActivity;->mPrefsContainer:Landroid/view/ViewGroup;
-Landroid/preference/PreferenceActivity;->postBindPreferences()V
-Landroid/preference/PreferenceActivity;->requirePreferenceManager()V
-Landroid/preference/PreferenceFragment;->getListView()Landroid/widget/ListView;
-Landroid/preference/PreferenceFragment;->mPreferenceManager:Landroid/preference/PreferenceManager;
-Landroid/preference/PreferenceManager;-><init>(Landroid/app/Activity;I)V
-Landroid/preference/PreferenceManager;-><init>(Landroid/content/Context;)V
-Landroid/preference/PreferenceManager;->dispatchActivityDestroy()V
-Landroid/preference/PreferenceManager;->dispatchActivityResult(IILandroid/content/Intent;)V
-Landroid/preference/PreferenceManager;->dispatchActivityStop()V
-Landroid/preference/PreferenceManager;->getActivity()Landroid/app/Activity;
-Landroid/preference/PreferenceManager;->getEditor()Landroid/content/SharedPreferences$Editor;
-Landroid/preference/PreferenceManager;->getFragment()Landroid/preference/PreferenceFragment;
-Landroid/preference/PreferenceManager;->getNextRequestCode()I
-Landroid/preference/PreferenceManager;->getPreferenceScreen()Landroid/preference/PreferenceScreen;
-Landroid/preference/PreferenceManager;->inflateFromIntent(Landroid/content/Intent;Landroid/preference/PreferenceScreen;)Landroid/preference/PreferenceScreen;
-Landroid/preference/PreferenceManager;->inflateFromResource(Landroid/content/Context;ILandroid/preference/PreferenceScreen;)Landroid/preference/PreferenceScreen;
-Landroid/preference/PreferenceManager;->mActivityDestroyListeners:Ljava/util/List;
-Landroid/preference/PreferenceManager;->mFragment:Landroid/preference/PreferenceFragment;
-Landroid/preference/PreferenceManager;->mOnPreferenceTreeClickListener:Landroid/preference/PreferenceManager$OnPreferenceTreeClickListener;
-Landroid/preference/PreferenceManager;->mSharedPreferences:Landroid/content/SharedPreferences;
-Landroid/preference/PreferenceManager;->registerOnActivityDestroyListener(Landroid/preference/PreferenceManager$OnActivityDestroyListener;)V
-Landroid/preference/PreferenceManager;->registerOnActivityResultListener(Landroid/preference/PreferenceManager$OnActivityResultListener;)V
-Landroid/preference/PreferenceManager;->registerOnActivityStopListener(Landroid/preference/PreferenceManager$OnActivityStopListener;)V
-Landroid/preference/PreferenceManager;->setFragment(Landroid/preference/PreferenceFragment;)V
-Landroid/preference/PreferenceManager;->setNoCommit(Z)V
-Landroid/preference/PreferenceManager;->setPreferences(Landroid/preference/PreferenceScreen;)Z
-Landroid/preference/PreferenceManager;->shouldCommit()Z
-Landroid/preference/PreferenceManager;->unregisterOnActivityDestroyListener(Landroid/preference/PreferenceManager$OnActivityDestroyListener;)V
-Landroid/preference/PreferenceManager;->unregisterOnActivityResultListener(Landroid/preference/PreferenceManager$OnActivityResultListener;)V
-Landroid/preference/PreferenceManager;->unregisterOnActivityStopListener(Landroid/preference/PreferenceManager$OnActivityStopListener;)V
-Landroid/preference/PreferenceScreen;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-Landroid/preference/PreferenceScreen;->mListView:Landroid/widget/ListView;
-Landroid/preference/PreferenceScreen;->mRootAdapter:Landroid/widget/ListAdapter;
-Landroid/preference/RingtonePreference;->mRequestCode:I
-Landroid/preference/SeekBarDialogPreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-Landroid/preference/SeekBarPreference;-><init>(Landroid/content/Context;)V
-Landroid/preference/SeekBarPreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-Landroid/preference/SeekBarPreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-Landroid/preference/SeekBarVolumizer;-><init>(Landroid/content/Context;ILandroid/net/Uri;Landroid/preference/SeekBarVolumizer$Callback;)V
-Landroid/preference/SeekBarVolumizer;->mAudioManager:Landroid/media/AudioManager;
-Landroid/preference/SeekBarVolumizer;->mContext:Landroid/content/Context;
-Landroid/preference/SeekBarVolumizer;->mLastProgress:I
-Landroid/preference/SeekBarVolumizer;->mOriginalStreamVolume:I
-Landroid/preference/SeekBarVolumizer;->mRingtone:Landroid/media/Ringtone;
-Landroid/preference/SeekBarVolumizer;->mSeekBar:Landroid/widget/SeekBar;
-Landroid/preference/SeekBarVolumizer;->mStreamType:I
-Landroid/preference/SeekBarVolumizer;->stop()V
-Landroid/preference/SwitchPreference;->mListener:Landroid/preference/SwitchPreference$Listener;
-Landroid/preference/TwoStatePreference;->syncSummaryView(Landroid/view/View;)V
-Landroid/preference/VolumePreference$VolumeStore;->originalVolume:I
-Landroid/preference/VolumePreference$VolumeStore;->volume:I
-Landroid/preference/VolumePreference;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-Landroid/preference/VolumePreference;->mStreamType:I
 Landroid/R$styleable;->ActionBar:[I
 Landroid/R$styleable;->ActionBar_background:I
 Landroid/R$styleable;->ActionBar_backgroundSplit:I
@@ -2098,348 +1576,8 @@
 Landroid/system/OsConstants;->XATTR_REPLACE:I
 Landroid/system/OsConstants;->_LINUX_CAPABILITY_VERSION_3:I
 Landroid/system/StructTimeval;->fromMillis(J)Landroid/system/StructTimeval;
-Landroid/telephony/CarrierConfigManager;->KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY:Ljava/lang/String;
-Landroid/telephony/CarrierConfigManager;->KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL:Ljava/lang/String;
 Landroid/telephony/CarrierMessagingServiceManager;-><init>()V
-Landroid/telephony/cdma/CdmaCellLocation;->equalsHandlesNulls(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/telephony/cdma/CdmaCellLocation;->mBaseStationId:I
-Landroid/telephony/cdma/CdmaCellLocation;->mBaseStationLatitude:I
-Landroid/telephony/cdma/CdmaCellLocation;->mBaseStationLongitude:I
-Landroid/telephony/cdma/CdmaCellLocation;->mNetworkId:I
-Landroid/telephony/cdma/CdmaCellLocation;->mSystemId:I
-Landroid/telephony/CellBroadcastMessage;-><init>(Landroid/telephony/SmsCbMessage;)V
-Landroid/telephony/CellBroadcastMessage;->createFromCursor(Landroid/database/Cursor;)Landroid/telephony/CellBroadcastMessage;
-Landroid/telephony/CellBroadcastMessage;->getContentValues()Landroid/content/ContentValues;
-Landroid/telephony/CellBroadcastMessage;->getDeliveryTime()J
-Landroid/telephony/CellBroadcastMessage;->getEtwsWarningInfo()Landroid/telephony/SmsCbEtwsInfo;
-Landroid/telephony/CellBroadcastMessage;->getLanguageCode()Ljava/lang/String;
-Landroid/telephony/CellBroadcastMessage;->getMessageBody()Ljava/lang/String;
-Landroid/telephony/CellBroadcastMessage;->getSerialNumber()I
-Landroid/telephony/CellBroadcastMessage;->getServiceCategory()I
-Landroid/telephony/CellBroadcastMessage;->getSpokenDateString(Landroid/content/Context;)Ljava/lang/String;
-Landroid/telephony/CellBroadcastMessage;->isCmasMessage()Z
-Landroid/telephony/CellBroadcastMessage;->isEmergencyAlertMessage()Z
-Landroid/telephony/CellBroadcastMessage;->isEtwsMessage()Z
-Landroid/telephony/CellBroadcastMessage;->isRead()Z
-Landroid/telephony/CellIdentityCdma;-><init>(IIIII)V
-Landroid/telephony/CellIdentityGsm;-><init>()V
-Landroid/telephony/CellIdentityGsm;->mArfcn:I
-Landroid/telephony/CellIdentityGsm;->mBsic:I
-Landroid/telephony/CellIdentityLte;-><init>()V
-Landroid/telephony/CellIdentityLte;-><init>(IIIII)V
-Landroid/telephony/CellIdentityLte;->mEarfcn:I
-Landroid/telephony/CellIdentityWcdma;->mUarfcn:I
-Landroid/telephony/CellInfo;->getTimeStampType()I
-Landroid/telephony/CellInfo;->timeStampTypeToString(I)Ljava/lang/String;
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_ANTENNA:I
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_JAVA_RIL:I
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_MODEM:I
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_OEM_RIL:I
-Landroid/telephony/CellInfo;->TIMESTAMP_TYPE_UNKNOWN:I
-Landroid/telephony/CellInfoCdma;-><init>()V
-Landroid/telephony/CellInfoCdma;-><init>(Landroid/telephony/CellInfoCdma;)V
-Landroid/telephony/CellInfoCdma;->setCellIdentity(Landroid/telephony/CellIdentityCdma;)V
-Landroid/telephony/CellInfoGsm;-><init>()V
-Landroid/telephony/CellInfoLte;-><init>()V
-Landroid/telephony/CellInfoLte;->setCellIdentity(Landroid/telephony/CellIdentityLte;)V
-Landroid/telephony/CellInfoLte;->setCellSignalStrength(Landroid/telephony/CellSignalStrengthLte;)V
-Landroid/telephony/CellLocation;->fillInNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/CellLocation;->isEmpty()Z
-Landroid/telephony/CellLocation;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/CellLocation;
-Landroid/telephony/CellSignalStrengthGsm;-><init>()V
-Landroid/telephony/CellSignalStrengthGsm;->mBitErrorRate:I
-Landroid/telephony/CellSignalStrengthGsm;->mSignalStrength:I
-Landroid/telephony/CellSignalStrengthGsm;->mTimingAdvance:I
-Landroid/telephony/CellSignalStrengthLte;-><init>()V
-Landroid/telephony/CellSignalStrengthLte;->mCqi:I
-Landroid/telephony/CellSignalStrengthLte;->mRsrp:I
-Landroid/telephony/CellSignalStrengthLte;->mRsrq:I
-Landroid/telephony/CellSignalStrengthLte;->mRssnr:I
-Landroid/telephony/CellSignalStrengthLte;->mSignalStrength:I
-Landroid/telephony/CellSignalStrengthLte;->mTimingAdvance:I
-Landroid/telephony/CellSignalStrengthWcdma;->mBitErrorRate:I
-Landroid/telephony/CellSignalStrengthWcdma;->mSignalStrength:I
-Landroid/telephony/DisconnectCause;->toString(I)Ljava/lang/String;
-Landroid/telephony/euicc/EuiccInfo;->osVersion:Ljava/lang/String;
-Landroid/telephony/gsm/GsmCellLocation;->setPsc(I)V
-Landroid/telephony/ims/ImsSsInfo;-><init>()V
-Landroid/telephony/NeighboringCellInfo;->mCid:I
-Landroid/telephony/NeighboringCellInfo;->mLac:I
-Landroid/telephony/NeighboringCellInfo;->mNetworkType:I
-Landroid/telephony/NeighboringCellInfo;->mPsc:I
-Landroid/telephony/NeighboringCellInfo;->mRssi:I
-Landroid/telephony/PhoneNumberFormattingTextWatcher;->mFormatter:Lcom/android/i18n/phonenumbers/AsYouTypeFormatter;
-Landroid/telephony/PhoneNumberUtils;->cdmaCheckAndProcessPlusCode(Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->compare(Ljava/lang/String;Ljava/lang/String;Z)Z
-Landroid/telephony/PhoneNumberUtils;->compareLoosely(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->compareStrictly(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->compareStrictly(Ljava/lang/String;Ljava/lang/String;Z)Z
-Landroid/telephony/PhoneNumberUtils;->convertPreDial(Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->extractNetworkPortionAlt(Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->getUsernameFromUriNumber(Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->isEmergencyNumber(Ljava/lang/String;Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumber(Landroid/content/Context;ILjava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isNanp(Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isPotentialLocalEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isUriNumber(Ljava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isVoiceMailNumber(Landroid/content/Context;ILjava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->MIN_MATCH:I
-Landroid/telephony/PhoneNumberUtils;->ttsSpanAsPhoneNumber(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-Landroid/telephony/PhoneStateListener;-><init>(Landroid/os/Looper;)V
-Landroid/telephony/PhoneStateListener;->callback:Lcom/android/internal/telephony/IPhoneStateListener;
-Landroid/telephony/PhoneStateListener;->LISTEN_PRECISE_CALL_STATE:I
-Landroid/telephony/PhoneStateListener;->mSubId:Ljava/lang/Integer;
-Landroid/telephony/PhoneStateListener;->onDataConnectionRealTimeInfoChanged(Landroid/telephony/DataConnectionRealTimeInfo;)V
-Landroid/telephony/PhoneStateListener;->onOemHookRawEvent([B)V
-Landroid/telephony/PhoneStateListener;->onOtaspChanged(I)V
-Landroid/telephony/PhoneStateListener;->onPreciseCallStateChanged(Landroid/telephony/PreciseCallState;)V
-Landroid/telephony/PhoneStateListener;->onPreciseDataConnectionStateChanged(Landroid/telephony/PreciseDataConnectionState;)V
-Landroid/telephony/PhoneStateListener;->onVoLteServiceStateChanged(Landroid/telephony/VoLteServiceState;)V
-Landroid/telephony/PreciseCallState;-><init>(IIIII)V
-Landroid/telephony/PreciseCallState;->getDisconnectCause()I
-Landroid/telephony/PreciseCallState;->getPreciseDisconnectCause()I
-Landroid/telephony/PreciseCallState;->getRingingCallState()I
-Landroid/telephony/PreciseDataConnectionState;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Ljava/lang/String;)V
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionAPN()Ljava/lang/String;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionAPNType()Ljava/lang/String;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionChangeReason()Ljava/lang/String;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionFailCause()Ljava/lang/String;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionLinkProperties()Landroid/net/LinkProperties;
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionNetworkType()I
-Landroid/telephony/PreciseDataConnectionState;->getDataConnectionState()I
-Landroid/telephony/RadioAccessFamily;->getNetworkTypeFromRaf(I)I
-Landroid/telephony/RadioAccessFamily;->getPhoneId()I
-Landroid/telephony/RadioAccessFamily;->getRadioAccessFamily()I
-Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/Rlog;->v(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/ServiceState;->bearerBitmapHasCdma(I)Z
-Landroid/telephony/ServiceState;->equalsHandlesNulls(Ljava/lang/Object;Ljava/lang/Object;)Z
-Landroid/telephony/ServiceState;->fillInNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/ServiceState;->getCdmaDefaultRoamingIndicator()I
-Landroid/telephony/ServiceState;->getCdmaEriIconIndex()I
-Landroid/telephony/ServiceState;->getCdmaEriIconMode()I
-Landroid/telephony/ServiceState;->getCdmaRoamingIndicator()I
-Landroid/telephony/ServiceState;->getCssIndicator()I
-Landroid/telephony/ServiceState;->getDataNetworkType()I
-Landroid/telephony/ServiceState;->getDataOperatorAlphaShort()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getDataOperatorNumeric()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getDataRoamingType()I
-Landroid/telephony/ServiceState;->getRadioTechnology()I
-Landroid/telephony/ServiceState;->getRilVoiceRadioTechnology()I
-Landroid/telephony/ServiceState;->getVoiceOperatorAlphaLong()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getVoiceOperatorAlphaShort()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getVoiceOperatorNumeric()Ljava/lang/String;
-Landroid/telephony/ServiceState;->getVoiceRoaming()Z
-Landroid/telephony/ServiceState;->getVoiceRoamingType()I
-Landroid/telephony/ServiceState;->mCdmaDefaultRoamingIndicator:I
-Landroid/telephony/ServiceState;->mCdmaEriIconIndex:I
-Landroid/telephony/ServiceState;->mCdmaEriIconMode:I
-Landroid/telephony/ServiceState;->mCdmaRoamingIndicator:I
-Landroid/telephony/ServiceState;->mCssIndicator:Z
-Landroid/telephony/ServiceState;->mIsManualNetworkSelection:Z
-Landroid/telephony/ServiceState;->mIsUsingCarrierAggregation:Z
-Landroid/telephony/ServiceState;->mNetworkId:I
-Landroid/telephony/ServiceState;->mSystemId:I
-Landroid/telephony/ServiceState;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/ServiceState;
-Landroid/telephony/ServiceState;->RIL_RADIO_TECHNOLOGY_IWLAN:I
-Landroid/telephony/ServiceState;->setCdmaDefaultRoamingIndicator(I)V
-Landroid/telephony/ServiceState;->setCdmaEriIconIndex(I)V
-Landroid/telephony/ServiceState;->setCdmaEriIconMode(I)V
-Landroid/telephony/ServiceState;->setCdmaRoamingIndicator(I)V
-Landroid/telephony/ServiceState;->setCssIndicator(I)V
-Landroid/telephony/ServiceState;->setDataRegState(I)V
-Landroid/telephony/ServiceState;->setDataRoaming(Z)V
-Landroid/telephony/ServiceState;->setDataRoamingFromRegistration(Z)V
-Landroid/telephony/ServiceState;->setDataRoamingType(I)V
-Landroid/telephony/ServiceState;->setEmergencyOnly(Z)V
-Landroid/telephony/ServiceState;->setFromNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/ServiceState;->setOperatorAlphaLong(Ljava/lang/String;)V
-Landroid/telephony/ServiceState;->setVoiceRegState(I)V
-Landroid/telephony/ServiceState;->setVoiceRoaming(Z)V
-Landroid/telephony/ServiceState;->setVoiceRoamingType(I)V
-Landroid/telephony/SignalStrength;-><init>()V
-Landroid/telephony/SignalStrength;-><init>(Landroid/os/Parcel;)V
-Landroid/telephony/SignalStrength;-><init>(Landroid/telephony/SignalStrength;)V
-Landroid/telephony/SignalStrength;-><init>(Z)V
-Landroid/telephony/SignalStrength;->copyFrom(Landroid/telephony/SignalStrength;)V
-Landroid/telephony/SignalStrength;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/telephony/SignalStrength;->fillInNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/SignalStrength;->getAsuLevel()I
-Landroid/telephony/SignalStrength;->getCdmaAsuLevel()I
-Landroid/telephony/SignalStrength;->getCdmaLevel()I
-Landroid/telephony/SignalStrength;->getDbm()I
-Landroid/telephony/SignalStrength;->getEvdoAsuLevel()I
-Landroid/telephony/SignalStrength;->getEvdoLevel()I
-Landroid/telephony/SignalStrength;->getGsmAsuLevel()I
-Landroid/telephony/SignalStrength;->getGsmDbm()I
-Landroid/telephony/SignalStrength;->getGsmLevel()I
-Landroid/telephony/SignalStrength;->getLteAsuLevel()I
-Landroid/telephony/SignalStrength;->getLteCqi()I
-Landroid/telephony/SignalStrength;->getLteDbm()I
-Landroid/telephony/SignalStrength;->getLteLevel()I
-Landroid/telephony/SignalStrength;->getLteRsrp()I
-Landroid/telephony/SignalStrength;->getLteRsrq()I
-Landroid/telephony/SignalStrength;->getLteRssnr()I
-Landroid/telephony/SignalStrength;->getLteSignalStrength()I
-Landroid/telephony/SignalStrength;->getTdScdmaAsuLevel()I
-Landroid/telephony/SignalStrength;->getTdScdmaDbm()I
-Landroid/telephony/SignalStrength;->getTdScdmaLevel()I
-Landroid/telephony/SignalStrength;->mCdmaDbm:I
-Landroid/telephony/SignalStrength;->mCdmaEcio:I
-Landroid/telephony/SignalStrength;->mEvdoDbm:I
-Landroid/telephony/SignalStrength;->mEvdoEcio:I
-Landroid/telephony/SignalStrength;->mEvdoSnr:I
-Landroid/telephony/SignalStrength;->mGsmBitErrorRate:I
-Landroid/telephony/SignalStrength;->mGsmSignalStrength:I
-Landroid/telephony/SignalStrength;->mLteCqi:I
-Landroid/telephony/SignalStrength;->mLteRsrp:I
-Landroid/telephony/SignalStrength;->mLteRsrpBoost:I
-Landroid/telephony/SignalStrength;->mLteRsrq:I
-Landroid/telephony/SignalStrength;->mLteRssnr:I
-Landroid/telephony/SignalStrength;->mLteSignalStrength:I
-Landroid/telephony/SignalStrength;->mTdScdmaRscp:I
-Landroid/telephony/SignalStrength;->mWcdmaRscp:I
-Landroid/telephony/SignalStrength;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/SignalStrength;
-Landroid/telephony/SignalStrength;->NUM_SIGNAL_STRENGTH_BINS:I
-Landroid/telephony/SignalStrength;->setFromNotifierBundle(Landroid/os/Bundle;)V
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_GOOD:I
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_GREAT:I
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_MODERATE:I
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_NONE_OR_UNKNOWN:I
-Landroid/telephony/SignalStrength;->SIGNAL_STRENGTH_POOR:I
-Landroid/telephony/SignalStrength;->validateInput()V
-Landroid/telephony/SmsManager;->copyMessageToIcc([B[BI)Z
-Landroid/telephony/SmsManager;->deleteMessageFromIcc(I)Z
-Landroid/telephony/SmsManager;->disableCellBroadcastRange(III)Z
-Landroid/telephony/SmsManager;->enableCellBroadcastRange(III)Z
-Landroid/telephony/SmsManager;->getAllMessagesFromIcc()Ljava/util/ArrayList;
-Landroid/telephony/SmsManager;->isSMSPromptEnabled()Z
-Landroid/telephony/SmsManager;->mSubId:I
-Landroid/telephony/SmsManager;->sendMultipartTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;IZI)V
-Landroid/telephony/SmsManager;->sendTextMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;IZI)V
-Landroid/telephony/SmsManager;->sendTextMessageWithoutPersisting(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;Landroid/app/PendingIntent;IZI)V
-Landroid/telephony/SmsManager;->updateMessageOnIcc(II[B)Z
-Landroid/telephony/SmsMessage;->fragmentText(Ljava/lang/String;)Ljava/util/ArrayList;
-Landroid/telephony/SmsMessage;->getSubId()I
-Landroid/telephony/SmsMessage;->mSubId:I
-Landroid/telephony/SmsMessage;->mWrappedSmsMessage:Lcom/android/internal/telephony/SmsMessageBase;
-Landroid/telephony/SmsMessage;->setSubId(I)V
-Landroid/telephony/SmsMessage;->useCdmaFormatForMoSms()Z
-Landroid/telephony/SmsMessage;->useCdmaFormatForMoSms(I)Z
-Landroid/telephony/SubscriptionInfo;->getNameSource()I
-Landroid/telephony/SubscriptionManager;-><init>(Landroid/content/Context;)V
-Landroid/telephony/SubscriptionManager;->CONTENT_URI:Landroid/net/Uri;
-Landroid/telephony/SubscriptionManager;->DEFAULT_SUBSCRIPTION_ID:I
-Landroid/telephony/SubscriptionManager;->getActiveSubscriptionIdList()[I
-Landroid/telephony/SubscriptionManager;->getAllSubscriptionInfoCount()I
-Landroid/telephony/SubscriptionManager;->getAllSubscriptionInfoList()Ljava/util/List;
-Landroid/telephony/SubscriptionManager;->getDefaultDataPhoneId()I
-Landroid/telephony/SubscriptionManager;->getDefaultDataSubscriptionInfo()Landroid/telephony/SubscriptionInfo;
-Landroid/telephony/SubscriptionManager;->getDefaultSmsPhoneId()I
-Landroid/telephony/SubscriptionManager;->getDefaultVoiceSubscriptionInfo()Landroid/telephony/SubscriptionInfo;
-Landroid/telephony/SubscriptionManager;->getPhoneId(I)I
-Landroid/telephony/SubscriptionManager;->getSlotIndex(I)I
-Landroid/telephony/SubscriptionManager;->getSubId(I)[I
-Landroid/telephony/SubscriptionManager;->NAME_SOURCE_USER_INPUT:I
-Landroid/telephony/SubscriptionManager;->setDataRoaming(II)I
-Landroid/telephony/SubscriptionManager;->setDefaultDataSubId(I)V
-Landroid/telephony/SubscriptionManager;->setDefaultSmsSubId(I)V
-Landroid/telephony/SubscriptionManager;->setDisplayNumber(Ljava/lang/String;I)I
-Landroid/telephony/TelephonyManager$MultiSimVariants;->TSTS:Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager$MultiSimVariants;->UNKNOWN:Landroid/telephony/TelephonyManager$MultiSimVariants;
 Landroid/telephony/TelephonyManager$MultiSimVariants;->values()[Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager;-><init>()V
-Landroid/telephony/TelephonyManager;-><init>(Landroid/content/Context;)V
-Landroid/telephony/TelephonyManager;-><init>(Landroid/content/Context;I)V
-Landroid/telephony/TelephonyManager;->ACTION_PRECISE_DATA_CONNECTION_STATE_CHANGED:Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->from(Landroid/content/Context;)Landroid/telephony/TelephonyManager;
-Landroid/telephony/TelephonyManager;->getCallState(I)I
-Landroid/telephony/TelephonyManager;->getCdmaEriIconIndex(I)I
-Landroid/telephony/TelephonyManager;->getCdmaEriIconMode(I)I
-Landroid/telephony/TelephonyManager;->getCdmaEriText(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getDataNetworkType(I)I
-Landroid/telephony/TelephonyManager;->getDefault()Landroid/telephony/TelephonyManager;
-Landroid/telephony/TelephonyManager;->getDeviceSoftwareVersion(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getGroupIdLevel1(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getIccAuthentication(IIILjava/lang/String;)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getImsConfig(II)Landroid/telephony/ims/aidl/IImsConfig;
-Landroid/telephony/TelephonyManager;->getImsRegistration(II)Landroid/telephony/ims/aidl/IImsRegistration;
-Landroid/telephony/TelephonyManager;->getIsimImpi()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getIsimImpu()[Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getIsimPcscf()[Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getITelephony()Lcom/android/internal/telephony/ITelephony;
-Landroid/telephony/TelephonyManager;->getLine1AlphaTag(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getLine1Number(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getLteOnCdmaMode()I
-Landroid/telephony/TelephonyManager;->getLteOnCdmaMode(I)I
-Landroid/telephony/TelephonyManager;->getLteOnCdmaModeStatic()I
-Landroid/telephony/TelephonyManager;->getMergedSubscriberIds()[Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getMsisdn()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getMsisdn(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getMultiSimConfiguration()Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager;->getNai(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkClass(I)I
-Landroid/telephony/TelephonyManager;->getNetworkCountryIso(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkCountryIsoForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkOperator(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkOperatorForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkOperatorName(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkType(I)I
-Landroid/telephony/TelephonyManager;->getNetworkTypeName(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getOtaSpNumberSchemaForPhone(ILjava/lang/String;)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getPhoneId(I)I
-Landroid/telephony/TelephonyManager;->getPhoneType(I)I
-Landroid/telephony/TelephonyManager;->getPhoneTypeFromProperty(I)I
-Landroid/telephony/TelephonyManager;->getProcCmdLine()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimCount()I
-Landroid/telephony/TelephonyManager;->getSimCountryIso(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimCountryIsoForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperator(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorName(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorNameForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorNumeric()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorNumeric(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimOperatorNumericForPhone(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSimSerialNumber(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSlotIndex()I
-Landroid/telephony/TelephonyManager;->getSubId(I)I
-Landroid/telephony/TelephonyManager;->getSubIdForPhoneAccount(Landroid/telecom/PhoneAccount;)I
-Landroid/telephony/TelephonyManager;->getSubscriberId(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getSubscriberInfo()Lcom/android/internal/telephony/IPhoneSubInfo;
-Landroid/telephony/TelephonyManager;->getTelephonyProperty(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getTelephonyProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getVoiceMailAlphaTag(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getVoiceMailNumber(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getVoiceMessageCount(I)I
-Landroid/telephony/TelephonyManager;->hasIccCard(I)Z
-Landroid/telephony/TelephonyManager;->isMultiSimEnabled()Z
-Landroid/telephony/TelephonyManager;->isNetworkRoaming(I)Z
-Landroid/telephony/TelephonyManager;->isVideoTelephonyAvailable()Z
-Landroid/telephony/TelephonyManager;->isVolteAvailable()Z
-Landroid/telephony/TelephonyManager;->isWifiCallingAvailable()Z
-Landroid/telephony/TelephonyManager;->mSubscriptionManager:Landroid/telephony/SubscriptionManager;
-Landroid/telephony/TelephonyManager;->NETWORK_CLASS_2_G:I
-Landroid/telephony/TelephonyManager;->NETWORK_CLASS_3_G:I
-Landroid/telephony/TelephonyManager;->NETWORK_CLASS_4_G:I
-Landroid/telephony/TelephonyManager;->NETWORK_TYPE_LTE_CA:I
-Landroid/telephony/TelephonyManager;->nvReadItem(I)Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->setBasebandVersionForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setDataNetworkTypeForPhone(II)V
-Landroid/telephony/TelephonyManager;->setImsRegistrationState(Z)V
-Landroid/telephony/TelephonyManager;->setNetworkOperatorNameForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setNetworkOperatorNumericForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setNetworkRoamingForPhone(IZ)V
-Landroid/telephony/TelephonyManager;->setPhoneType(II)V
-Landroid/telephony/TelephonyManager;->setRoamingOverride(Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Z
-Landroid/telephony/TelephonyManager;->setSimCountryIsoForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setSimOperatorNameForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setSimOperatorNumericForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setSimStateForPhone(ILjava/lang/String;)V
-Landroid/telephony/TelephonyManager;->setTelephonyProperty(ILjava/lang/String;Ljava/lang/String;)V
-Landroid/telephony/VoLteServiceState;-><init>(I)V
 Landroid/transition/ChangeBounds;->BOTTOM_RIGHT_ONLY_PROPERTY:Landroid/util/Property;
 Landroid/transition/ChangeBounds;->POSITION_PROPERTY:Landroid/util/Property;
 Landroid/transition/Scene;->mEnterAction:Ljava/lang/Runnable;
@@ -2452,37 +1590,6 @@
 Landroid/transition/TransitionManager;->sPendingTransitions:Ljava/util/ArrayList;
 Landroid/transition/TransitionManager;->sRunningTransitions:Ljava/lang/ThreadLocal;
 Landroid/util/Singleton;-><init>()V
-Landroid/view/accessibility/AccessibilityEvent;->mAction:I
-Landroid/view/accessibility/AccessibilityEvent;->mEventType:I
-Landroid/view/accessibility/AccessibilityInteractionClient;->clearCache()V
-Landroid/view/accessibility/AccessibilityInteractionClient;->getInstance()Landroid/view/accessibility/AccessibilityInteractionClient;
-Landroid/view/accessibility/AccessibilityInteractionClient;->setSameThreadMessage(Landroid/os/Message;)V
-Landroid/view/accessibility/AccessibilityManager;->DALTONIZER_SIMULATE_MONOCHROMACY:I
-Landroid/view/accessibility/AccessibilityManager;->getInstance(Landroid/content/Context;)Landroid/view/accessibility/AccessibilityManager;
-Landroid/view/accessibility/AccessibilityManager;->isHighTextContrastEnabled()Z
-Landroid/view/accessibility/AccessibilityManager;->mAccessibilityStateChangeListeners:Landroid/util/ArrayMap;
-Landroid/view/accessibility/AccessibilityManager;->mHandler:Landroid/os/Handler;
-Landroid/view/accessibility/AccessibilityManager;->mIsEnabled:Z
-Landroid/view/accessibility/AccessibilityManager;->mIsHighTextContrastEnabled:Z
-Landroid/view/accessibility/AccessibilityManager;->mLock:Ljava/lang/Object;
-Landroid/view/accessibility/AccessibilityManager;->mService:Landroid/view/accessibility/IAccessibilityManager;
-Landroid/view/accessibility/AccessibilityManager;->mUserId:I
-Landroid/view/accessibility/AccessibilityManager;->setStateLocked(I)V
-Landroid/view/accessibility/AccessibilityManager;->sInstance:Landroid/view/accessibility/AccessibilityManager;
-Landroid/view/accessibility/AccessibilityManager;->sInstanceSync:Ljava/lang/Object;
-Landroid/view/accessibility/AccessibilityNodeInfo;->getAccessibilityViewId(J)I
-Landroid/view/accessibility/AccessibilityNodeInfo;->getSourceNodeId()J
-Landroid/view/accessibility/AccessibilityNodeInfo;->getVirtualDescendantId(J)I
-Landroid/view/accessibility/AccessibilityNodeInfo;->isSealed()Z
-Landroid/view/accessibility/AccessibilityNodeInfo;->mChildNodeIds:Landroid/util/LongArray;
-Landroid/view/accessibility/AccessibilityNodeInfo;->mSealed:Z
-Landroid/view/accessibility/AccessibilityNodeInfo;->mSourceNodeId:J
-Landroid/view/accessibility/AccessibilityNodeInfo;->refresh(Landroid/os/Bundle;Z)Z
-Landroid/view/accessibility/AccessibilityNodeInfo;->setSealed(Z)V
-Landroid/view/accessibility/AccessibilityRecord;->getSourceNodeId()J
-Landroid/view/accessibility/AccessibilityRecord;->mSealed:Z
-Landroid/view/accessibility/AccessibilityRecord;->mSourceNodeId:J
-Landroid/view/accessibility/CaptioningManager$CaptionStyle;->PRESETS:[Landroid/view/accessibility/CaptioningManager$CaptionStyle;
 Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;->setFindAccessibilityNodeInfoResult(Landroid/view/accessibility/AccessibilityNodeInfo;I)V
 Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;->setFindAccessibilityNodeInfosResult(Ljava/util/List;I)V
 Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;->setPerformAccessibilityActionResult(ZI)V
@@ -2491,129 +1598,12 @@
 Landroid/view/accessibility/IAccessibilityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityManager;
 Landroid/view/accessibility/IAccessibilityManager;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
 Landroid/view/AccessibilityIterators$AbstractTextSegmentIterator;-><init>()V
-Landroid/view/AccessibilityIterators$AbstractTextSegmentIterator;->mText:Ljava/lang/String;
-Landroid/view/ActionProvider;->reset()V
-Landroid/view/ActionProvider;->setSubUiVisibilityListener(Landroid/view/ActionProvider$SubUiVisibilityListener;)V
 Landroid/view/autofill/IAutoFillManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/view/autofill/IAutoFillManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManager;
-Landroid/view/Choreographer$CallbackQueue;->addCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)V
-Landroid/view/Choreographer$CallbackRecord;->run(J)V
-Landroid/view/Choreographer;->doFrame(JI)V
-Landroid/view/Choreographer;->getFrameTime()J
-Landroid/view/Choreographer;->getFrameTimeNanos()J
-Landroid/view/Choreographer;->mCallbackQueues:[Landroid/view/Choreographer$CallbackQueue;
-Landroid/view/Choreographer;->mDisplayEventReceiver:Landroid/view/Choreographer$FrameDisplayEventReceiver;
-Landroid/view/Choreographer;->mFrameIntervalNanos:J
-Landroid/view/Choreographer;->mLastFrameTimeNanos:J
-Landroid/view/Choreographer;->mLock:Ljava/lang/Object;
-Landroid/view/Choreographer;->scheduleVsyncLocked()V
-Landroid/view/Choreographer;->USE_VSYNC:Z
-Landroid/view/ContextThemeWrapper;->getThemeResId()I
-Landroid/view/ContextThemeWrapper;->initializeTheme()V
-Landroid/view/ContextThemeWrapper;->mInflater:Landroid/view/LayoutInflater;
-Landroid/view/ContextThemeWrapper;->mResources:Landroid/content/res/Resources;
-Landroid/view/ContextThemeWrapper;->mTheme:Landroid/content/res/Resources$Theme;
-Landroid/view/ContextThemeWrapper;->mThemeResource:I
-Landroid/view/Display$HdrCapabilities;-><init>([IFFF)V
-Landroid/view/Display$Mode;-><init>(IIIF)V
-Landroid/view/Display;->getAddress()Ljava/lang/String;
-Landroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments;
-Landroid/view/Display;->getDisplayInfo(Landroid/view/DisplayInfo;)Z
-Landroid/view/Display;->getMaximumSizeDimension()I
-Landroid/view/Display;->getOwnerPackageName()Ljava/lang/String;
-Landroid/view/Display;->getType()I
-Landroid/view/Display;->mDisplayInfo:Landroid/view/DisplayInfo;
-Landroid/view/Display;->TYPE_HDMI:I
-Landroid/view/Display;->TYPE_UNKNOWN:I
-Landroid/view/Display;->TYPE_VIRTUAL:I
-Landroid/view/Display;->TYPE_WIFI:I
-Landroid/view/DisplayAdjustments;-><init>()V
-Landroid/view/DisplayAdjustments;->getConfiguration()Landroid/content/res/Configuration;
-Landroid/view/DisplayAdjustments;->setCompatibilityInfo(Landroid/content/res/CompatibilityInfo;)V
-Landroid/view/DisplayEventReceiver;-><init>(Landroid/os/Looper;)V
-Landroid/view/DisplayEventReceiver;->dispatchHotplug(JIZ)V
-Landroid/view/DisplayEventReceiver;->dispatchVsync(JII)V
-Landroid/view/DisplayEventReceiver;->mReceiverPtr:J
-Landroid/view/DisplayEventReceiver;->onHotplug(JIZ)V
-Landroid/view/DisplayEventReceiver;->onVsync(JII)V
-Landroid/view/DisplayEventReceiver;->scheduleVsync()V
-Landroid/view/DisplayInfo;-><init>()V
-Landroid/view/DisplayInfo;->displayCutout:Landroid/view/DisplayCutout;
-Landroid/view/DisplayInfo;->logicalHeight:I
-Landroid/view/DisplayInfo;->logicalWidth:I
-Landroid/view/DisplayInfo;->rotation:I
-Landroid/view/DisplayListCanvas;->callDrawGLFunction2(J)V
-Landroid/view/DisplayListCanvas;->drawCircle(Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;)V
-Landroid/view/DisplayListCanvas;->drawGLFunctor2(JLjava/lang/Runnable;)V
-Landroid/view/DragEvent;->mClipData:Landroid/content/ClipData;
-Landroid/view/DragEvent;->mClipDescription:Landroid/content/ClipDescription;
-Landroid/view/DragEvent;->obtain(Landroid/view/DragEvent;)Landroid/view/DragEvent;
-Landroid/view/FrameMetrics;->mTimingData:[J
-Landroid/view/FrameMetricsObserver;->mFrameMetrics:Landroid/view/FrameMetrics;
-Landroid/view/FrameMetricsObserver;->mMessageQueue:Landroid/os/MessageQueue;
-Landroid/view/FrameMetricsObserver;->notifyDataAvailable(I)V
-Landroid/view/GestureDetector;->LONGPRESS_TIMEOUT:I
-Landroid/view/GestureDetector;->mAlwaysInTapRegion:Z
-Landroid/view/GestureDetector;->mListener:Landroid/view/GestureDetector$OnGestureListener;
-Landroid/view/GestureDetector;->mMinimumFlingVelocity:I
-Landroid/view/GestureDetector;->mTouchSlopSquare:I
-Landroid/view/GhostView;->addGhost(Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/GhostView;
-Landroid/view/GhostView;->addGhost(Landroid/view/View;Landroid/view/ViewGroup;Landroid/graphics/Matrix;)Landroid/view/GhostView;
-Landroid/view/GhostView;->removeGhost(Landroid/view/View;)V
 Landroid/view/IApplicationToken$Stub;-><init>()V
 Landroid/view/IDockedStackListener$Stub;-><init>()V
 Landroid/view/IGraphicsStats$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/view/IGraphicsStats$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IGraphicsStats;
-Landroid/view/InputChannel;-><init>()V
-Landroid/view/InputChannel;->CREATOR:Landroid/os/Parcelable$Creator;
-Landroid/view/InputChannel;->mPtr:J
-Landroid/view/InputDevice;-><init>(IIILjava/lang/String;IILjava/lang/String;ZIILandroid/view/KeyCharacterMap;ZZZ)V
-Landroid/view/InputDevice;->addMotionRange(IIFFFFF)V
-Landroid/view/InputDevice;->isExternal()Z
-Landroid/view/InputDevice;->mIsExternal:Z
-Landroid/view/InputEvent;->getSequenceNumber()I
-Landroid/view/InputEventConsistencyVerifier;-><init>(Ljava/lang/Object;I)V
-Landroid/view/InputEventConsistencyVerifier;->isInstrumentationEnabled()Z
-Landroid/view/InputEventConsistencyVerifier;->onTouchEvent(Landroid/view/MotionEvent;I)V
-Landroid/view/InputEventConsistencyVerifier;->onUnhandledEvent(Landroid/view/InputEvent;I)V
-Landroid/view/InputEventReceiver;->dispatchBatchedInputEventPending()V
-Landroid/view/InputEventReceiver;->dispatchInputEvent(ILandroid/view/InputEvent;)V
-Landroid/view/InputEventSender;->dispatchInputEventFinished(IZ)V
-Landroid/view/InputFilter;-><init>(Landroid/os/Looper;)V
-Landroid/view/InputFilter;->onInputEvent(Landroid/view/InputEvent;I)V
-Landroid/view/inputmethod/InputMethodInfo;->isDefault(Landroid/content/Context;)Z
-Landroid/view/inputmethod/InputMethodInfo;->mSubtypes:Landroid/view/inputmethod/InputMethodSubtypeArray;
-Landroid/view/inputmethod/InputMethodManager;->checkFocus()V
-Landroid/view/inputmethod/InputMethodManager;->closeCurrentInput()V
-Landroid/view/inputmethod/InputMethodManager;->finishInputLocked()V
-Landroid/view/inputmethod/InputMethodManager;->focusIn(Landroid/view/View;)V
-Landroid/view/inputmethod/InputMethodManager;->focusOut(Landroid/view/View;)V
-Landroid/view/inputmethod/InputMethodManager;->getClient()Lcom/android/internal/view/IInputMethodClient;
-Landroid/view/inputmethod/InputMethodManager;->getInputContext()Lcom/android/internal/view/IInputContext;
-Landroid/view/inputmethod/InputMethodManager;->getInputMethodWindowVisibleHeight()I
-Landroid/view/inputmethod/InputMethodManager;->getInstance()Landroid/view/inputmethod/InputMethodManager;
-Landroid/view/inputmethod/InputMethodManager;->isCursorAnchorInfoEnabled()Z
-Landroid/view/inputmethod/InputMethodManager;->mCurId:Ljava/lang/String;
-Landroid/view/inputmethod/InputMethodManager;->mCurMethod:Lcom/android/internal/view/IInputMethodSession;
-Landroid/view/inputmethod/InputMethodManager;->mCurRootView:Landroid/view/View;
-Landroid/view/inputmethod/InputMethodManager;->mCursorRect:Landroid/graphics/Rect;
-Landroid/view/inputmethod/InputMethodManager;->mH:Landroid/view/inputmethod/InputMethodManager$H;
-Landroid/view/inputmethod/InputMethodManager;->mNextServedView:Landroid/view/View;
-Landroid/view/inputmethod/InputMethodManager;->mServedInputConnectionWrapper:Landroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;
-Landroid/view/inputmethod/InputMethodManager;->mServedView:Landroid/view/View;
-Landroid/view/inputmethod/InputMethodManager;->mService:Lcom/android/internal/view/IInputMethodManager;
-Landroid/view/inputmethod/InputMethodManager;->mTmpCursorRect:Landroid/graphics/Rect;
-Landroid/view/inputmethod/InputMethodManager;->notifySuggestionPicked(Landroid/text/style/SuggestionSpan;Ljava/lang/String;I)V
-Landroid/view/inputmethod/InputMethodManager;->notifyUserAction()V
-Landroid/view/inputmethod/InputMethodManager;->onPreWindowFocus(Landroid/view/View;Z)V
-Landroid/view/inputmethod/InputMethodManager;->peekInstance()Landroid/view/inputmethod/InputMethodManager;
-Landroid/view/inputmethod/InputMethodManager;->registerSuggestionSpansForNotification([Landroid/text/style/SuggestionSpan;)V
-Landroid/view/inputmethod/InputMethodManager;->setUpdateCursorAnchorInfoMode(I)V
-Landroid/view/inputmethod/InputMethodManager;->showSoftInputUnchecked(ILandroid/os/ResultReceiver;)V
-Landroid/view/inputmethod/InputMethodManager;->sInstance:Landroid/view/inputmethod/InputMethodManager;
-Landroid/view/inputmethod/InputMethodManager;->windowDismissed(Landroid/os/IBinder;)V
-Landroid/view/inputmethod/InputMethodSubtypeArray;-><init>(Ljava/util/List;)V
-Landroid/view/InputQueue;->finishInputEvent(JZ)V
 Landroid/view/IOnKeyguardExitResult;->onKeyguardExitResult(Z)V
 Landroid/view/IRecentsAnimationController;->setAnimationTargetsBehindSystemBars(Z)V
 Landroid/view/IRotationWatcher$Stub;-><init>()V
@@ -2670,643 +1660,16 @@
 Landroid/view/IWindowSession;->setTransparentRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V
 Landroid/view/IWindowSession;->wallpaperCommandComplete(Landroid/os/IBinder;Landroid/os/Bundle;)V
 Landroid/view/IWindowSession;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V
-Landroid/view/KeyCharacterMap$FallbackAction;->keyCode:I
-Landroid/view/KeyCharacterMap$FallbackAction;->metaState:I
-Landroid/view/KeyCharacterMap;-><init>(J)V
-Landroid/view/KeyEvent;->isConfirmKey(I)Z
-Landroid/view/KeyEvent;->isDown()Z
-Landroid/view/KeyEvent;->mAction:I
-Landroid/view/KeyEvent;->mCharacters:Ljava/lang/String;
-Landroid/view/KeyEvent;->mDeviceId:I
-Landroid/view/KeyEvent;->mDownTime:J
-Landroid/view/KeyEvent;->META_ALL_MASK:I
-Landroid/view/KeyEvent;->META_ALT_LOCKED:I
-Landroid/view/KeyEvent;->META_CAP_LOCKED:I
-Landroid/view/KeyEvent;->META_INVALID_MODIFIER_MASK:I
-Landroid/view/KeyEvent;->META_LOCK_MASK:I
-Landroid/view/KeyEvent;->META_MODIFIER_MASK:I
-Landroid/view/KeyEvent;->META_SELECTING:I
-Landroid/view/KeyEvent;->META_SYMBOLIC_NAMES:[Ljava/lang/String;
-Landroid/view/KeyEvent;->META_SYM_LOCKED:I
-Landroid/view/KeyEvent;->META_SYNTHETIC_MASK:I
-Landroid/view/KeyEvent;->mEventTime:J
-Landroid/view/KeyEvent;->mFlags:I
-Landroid/view/KeyEvent;->mKeyCode:I
-Landroid/view/KeyEvent;->mMetaState:I
-Landroid/view/KeyEvent;->mRepeatCount:I
-Landroid/view/KeyEvent;->mScanCode:I
-Landroid/view/KeyEvent;->mSource:I
-Landroid/view/KeyEvent;->obtain(JJIIIIIIIILjava/lang/String;)Landroid/view/KeyEvent;
-Landroid/view/KeyEvent;->recycle()V
-Landroid/view/LayoutInflater;->ATTRS_THEME:[I
-Landroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
-Landroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View;
-Landroid/view/LayoutInflater;->mConstructorArgs:[Ljava/lang/Object;
-Landroid/view/LayoutInflater;->mConstructorSignature:[Ljava/lang/Class;
-Landroid/view/LayoutInflater;->mContext:Landroid/content/Context;
-Landroid/view/LayoutInflater;->mFactory2:Landroid/view/LayoutInflater$Factory2;
-Landroid/view/LayoutInflater;->mFactory:Landroid/view/LayoutInflater$Factory;
-Landroid/view/LayoutInflater;->mFactorySet:Z
-Landroid/view/LayoutInflater;->mPrivateFactory:Landroid/view/LayoutInflater$Factory2;
-Landroid/view/LayoutInflater;->parseInclude(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/Context;Landroid/view/View;Landroid/util/AttributeSet;)V
-Landroid/view/LayoutInflater;->sConstructorMap:Ljava/util/HashMap;
-Landroid/view/LayoutInflater;->setPrivateFactory(Landroid/view/LayoutInflater$Factory2;)V
-Landroid/view/MotionEvent$PointerCoords;->createArray(I)[Landroid/view/MotionEvent$PointerCoords;
-Landroid/view/MotionEvent$PointerCoords;->mPackedAxisBits:J
-Landroid/view/MotionEvent$PointerCoords;->mPackedAxisValues:[F
-Landroid/view/MotionEvent$PointerProperties;->createArray(I)[Landroid/view/MotionEvent$PointerProperties;
-Landroid/view/MotionEvent;->addBatch(Landroid/view/MotionEvent;)Z
-Landroid/view/MotionEvent;->copy()Landroid/view/MotionEvent;
-Landroid/view/MotionEvent;->getEventTimeNano()J
-Landroid/view/MotionEvent;->getPointerIdBits()I
-Landroid/view/MotionEvent;->HISTORY_CURRENT:I
-Landroid/view/MotionEvent;->mNativePtr:J
-Landroid/view/MotionEvent;->nativeGetRawAxisValue(JIII)F
-Landroid/view/MotionEvent;->obtain()Landroid/view/MotionEvent;
-Landroid/view/MotionEvent;->scale(F)V
-Landroid/view/MotionEvent;->setDownTime(J)V
-Landroid/view/MotionEvent;->split(I)Landroid/view/MotionEvent;
-Landroid/view/NotificationHeaderView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-Landroid/view/PointerIcon;->load(Landroid/content/Context;)Landroid/view/PointerIcon;
-Landroid/view/PointerIcon;->mBitmap:Landroid/graphics/Bitmap;
-Landroid/view/PointerIcon;->mBitmapFrames:[Landroid/graphics/Bitmap;
-Landroid/view/PointerIcon;->mDurationPerFrame:I
-Landroid/view/PointerIcon;->mHotSpotX:F
-Landroid/view/PointerIcon;->mHotSpotY:F
-Landroid/view/PointerIcon;->mType:I
-Landroid/view/RemoteAnimationDefinition;->addRemoteAnimation(IILandroid/view/RemoteAnimationAdapter;)V
-Landroid/view/RemoteAnimationTarget;->clipRect:Landroid/graphics/Rect;
-Landroid/view/RemoteAnimationTarget;->contentInsets:Landroid/graphics/Rect;
-Landroid/view/RemoteAnimationTarget;->isNotInRecents:Z
-Landroid/view/RemoteAnimationTarget;->isTranslucent:Z
-Landroid/view/RemoteAnimationTarget;->leash:Landroid/view/SurfaceControl;
-Landroid/view/RemoteAnimationTarget;->mode:I
-Landroid/view/RemoteAnimationTarget;->position:Landroid/graphics/Point;
-Landroid/view/RemoteAnimationTarget;->prefixOrderIndex:I
-Landroid/view/RemoteAnimationTarget;->sourceContainerBounds:Landroid/graphics/Rect;
-Landroid/view/RemoteAnimationTarget;->taskId:I
-Landroid/view/RemoteAnimationTarget;->windowConfiguration:Landroid/app/WindowConfiguration;
-Landroid/view/RenderNode;->discardDisplayList()V
-Landroid/view/RenderNode;->offsetLeftAndRight(I)Z
-Landroid/view/RenderNode;->output()V
-Landroid/view/RenderNode;->setHasOverlappingRendering(Z)Z
-Landroid/view/RenderNode;->setProjectBackwards(Z)Z
-Landroid/view/RenderNodeAnimator;-><init>(IF)V
-Landroid/view/RenderNodeAnimator;-><init>(Landroid/graphics/CanvasProperty;F)V
-Landroid/view/RenderNodeAnimator;-><init>(Landroid/graphics/CanvasProperty;IF)V
-Landroid/view/RenderNodeAnimator;->callOnFinished(Landroid/view/RenderNodeAnimator;)V
-Landroid/view/RenderNodeAnimator;->mapViewPropertyToRenderProperty(I)I
-Landroid/view/RenderNodeAnimator;->setStartValue(F)V
-Landroid/view/RenderNodeAnimator;->setTarget(Landroid/view/View;)V
-Landroid/view/ScaleGestureDetector;->mListener:Landroid/view/ScaleGestureDetector$OnScaleGestureListener;
-Landroid/view/ScaleGestureDetector;->mMinSpan:I
-Landroid/view/ScaleGestureDetector;->mSpanSlop:I
-Landroid/view/Surface;-><init>()V
-Landroid/view/Surface;-><init>(J)V
-Landroid/view/Surface;->copyFrom(Landroid/view/SurfaceControl;)V
-Landroid/view/Surface;->destroy()V
-Landroid/view/Surface;->mLock:Ljava/lang/Object;
-Landroid/view/Surface;->mLockedObject:J
-Landroid/view/Surface;->mName:Ljava/lang/String;
-Landroid/view/Surface;->mNativeObject:J
-Landroid/view/Surface;->nativeRelease(J)V
-Landroid/view/Surface;->transferFrom(Landroid/view/Surface;)V
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;-><init>()V
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->appVsyncOffsetNanos:J
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->density:F
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->height:I
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->presentationDeadlineNanos:J
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->refreshRate:F
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->secure:Z
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->width:I
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->xDpi:F
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;->yDpi:F
-Landroid/view/SurfaceControl;->closeTransaction()V
-Landroid/view/SurfaceControl;->createDisplay(Ljava/lang/String;Z)Landroid/os/IBinder;
-Landroid/view/SurfaceControl;->destroyDisplay(Landroid/os/IBinder;)V
-Landroid/view/SurfaceControl;->getBuiltInDisplay(I)Landroid/os/IBinder;
-Landroid/view/SurfaceControl;->getDisplayConfigs(Landroid/os/IBinder;)[Landroid/view/SurfaceControl$PhysicalDisplayInfo;
-Landroid/view/SurfaceControl;->HIDDEN:I
-Landroid/view/SurfaceControl;->hide()V
-Landroid/view/SurfaceControl;->openTransaction()V
-Landroid/view/SurfaceControl;->screenshot(Landroid/graphics/Rect;III)Landroid/graphics/Bitmap;
-Landroid/view/SurfaceControl;->screenshot(Landroid/graphics/Rect;IIIIZI)Landroid/graphics/Bitmap;
-Landroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;Landroid/graphics/Rect;IIIIZZ)V
-Landroid/view/SurfaceControl;->setDisplayLayerStack(Landroid/os/IBinder;I)V
-Landroid/view/SurfaceControl;->setDisplayProjection(Landroid/os/IBinder;ILandroid/graphics/Rect;Landroid/graphics/Rect;)V
-Landroid/view/SurfaceControl;->setDisplaySurface(Landroid/os/IBinder;Landroid/view/Surface;)V
-Landroid/view/SurfaceControl;->setLayer(I)V
-Landroid/view/SurfaceControl;->setPosition(FF)V
-Landroid/view/SurfaceControl;->show()V
-Landroid/view/SurfaceSession;-><init>()V
-Landroid/view/SurfaceSession;->kill()V
-Landroid/view/SurfaceSession;->mNativeClient:J
-Landroid/view/SurfaceView;->isFixedSize()Z
-Landroid/view/SurfaceView;->mCallbacks:Ljava/util/ArrayList;
-Landroid/view/SurfaceView;->mDrawingStopped:Z
-Landroid/view/SurfaceView;->mDrawListener:Landroid/view/ViewTreeObserver$OnPreDrawListener;
-Landroid/view/SurfaceView;->mFormat:I
-Landroid/view/SurfaceView;->mHaveFrame:Z
-Landroid/view/SurfaceView;->mIsCreating:Z
-Landroid/view/SurfaceView;->mLastLockTime:J
-Landroid/view/SurfaceView;->mRequestedFormat:I
-Landroid/view/SurfaceView;->mRequestedHeight:I
-Landroid/view/SurfaceView;->mRequestedWidth:I
-Landroid/view/SurfaceView;->mSurface:Landroid/view/Surface;
-Landroid/view/SurfaceView;->mSurfaceFrame:Landroid/graphics/Rect;
-Landroid/view/SurfaceView;->mSurfaceHolder:Landroid/view/SurfaceHolder;
-Landroid/view/SurfaceView;->mSurfaceLock:Ljava/util/concurrent/locks/ReentrantLock;
-Landroid/view/SurfaceView;->setFrame(IIII)Z
-Landroid/view/SurfaceView;->surfacePositionLost_uiRtSync(J)V
-Landroid/view/SurfaceView;->updateSurfacePosition_renderWorker(JIIII)V
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(III)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionAction(IIILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(II)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextClassification;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionModified(IILandroid/view/textclassifier/TextSelection;)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;->selectionStarted(I)Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker;-><init>(Landroid/content/Context;I)V
-Landroid/view/textclassifier/logging/SmartSelectionEventTracker;->logEvent(Landroid/view/textclassifier/logging/SmartSelectionEventTracker$SelectionEvent;)V
-Landroid/view/textclassifier/TextClassificationManager;->getTextClassifier(I)Landroid/view/textclassifier/TextClassifier;
-Landroid/view/textclassifier/TextClassifier;->classifyText(Ljava/lang/CharSequence;IILandroid/view/textclassifier/TextClassification$Options;)Landroid/view/textclassifier/TextClassification;
-Landroid/view/textclassifier/TextClassifier;->generateLinks(Ljava/lang/CharSequence;Landroid/view/textclassifier/TextLinks$Options;)Landroid/view/textclassifier/TextLinks;
-Landroid/view/textclassifier/TextClassifier;->suggestSelection(Ljava/lang/CharSequence;IILandroid/view/textclassifier/TextSelection$Options;)Landroid/view/textclassifier/TextSelection;
-Landroid/view/textclassifier/TextLinks$Options;-><init>()V
-Landroid/view/textservice/SpellCheckerSession;->mSpellCheckerSessionListener:Landroid/view/textservice/SpellCheckerSession$SpellCheckerSessionListener;
-Landroid/view/textservice/TextServicesManager;->getCurrentSpellChecker()Landroid/view/textservice/SpellCheckerInfo;
-Landroid/view/textservice/TextServicesManager;->getCurrentSpellCheckerSubtype(Z)Landroid/view/textservice/SpellCheckerSubtype;
-Landroid/view/textservice/TextServicesManager;->getEnabledSpellCheckers()[Landroid/view/textservice/SpellCheckerInfo;
-Landroid/view/textservice/TextServicesManager;->getInstance()Landroid/view/textservice/TextServicesManager;
-Landroid/view/textservice/TextServicesManager;->isSpellCheckerEnabled()Z
-Landroid/view/TextureView;->destroyHardwareLayer()V
-Landroid/view/TextureView;->destroyHardwareResources()V
-Landroid/view/TextureView;->mLayer:Landroid/view/TextureLayer;
-Landroid/view/TextureView;->mNativeWindow:J
-Landroid/view/TextureView;->mOpaque:Z
-Landroid/view/TextureView;->mSurface:Landroid/graphics/SurfaceTexture;
-Landroid/view/TextureView;->mUpdateListener:Landroid/graphics/SurfaceTexture$OnFrameAvailableListener;
-Landroid/view/TextureView;->mUpdateSurface:Z
-Landroid/view/TextureView;->nCreateNativeWindow(Landroid/graphics/SurfaceTexture;)V
-Landroid/view/TextureView;->nDestroyNativeWindow()V
-Landroid/view/TextureView;->onDetachedFromWindowInternal()V
-Landroid/view/ThreadedRenderer;->addRenderNode(Landroid/view/RenderNode;Z)V
-Landroid/view/ThreadedRenderer;->drawRenderNode(Landroid/view/RenderNode;)V
-Landroid/view/ThreadedRenderer;->removeRenderNode(Landroid/view/RenderNode;)V
-Landroid/view/ThreadedRenderer;->setContentDrawBounds(IIII)V
-Landroid/view/ThreadedRenderer;->setupDiskCache(Ljava/io/File;)V
-Landroid/view/TouchDelegate;->mDelegateTargeted:Z
-Landroid/view/VelocityTracker$Estimator;->confidence:F
-Landroid/view/VelocityTracker$Estimator;->degree:I
-Landroid/view/VelocityTracker$Estimator;->xCoeff:[F
-Landroid/view/VelocityTracker$Estimator;->yCoeff:[F
-Landroid/view/VelocityTracker;->obtain(Ljava/lang/String;)Landroid/view/VelocityTracker;
-Landroid/view/View$AccessibilityDelegate;->createAccessibilityNodeInfo(Landroid/view/View;)Landroid/view/accessibility/AccessibilityNodeInfo;
 Landroid/view/View$AttachInfo$InvalidateInfo;-><init>()V
-Landroid/view/View$AttachInfo$InvalidateInfo;->bottom:I
-Landroid/view/View$AttachInfo$InvalidateInfo;->left:I
-Landroid/view/View$AttachInfo$InvalidateInfo;->right:I
-Landroid/view/View$AttachInfo$InvalidateInfo;->target:Landroid/view/View;
-Landroid/view/View$AttachInfo$InvalidateInfo;->top:I
-Landroid/view/View$AttachInfo;->mApplicationScale:F
-Landroid/view/View$AttachInfo;->mContentInsets:Landroid/graphics/Rect;
-Landroid/view/View$AttachInfo;->mDisplayState:I
-Landroid/view/View$AttachInfo;->mDrawingTime:J
-Landroid/view/View$AttachInfo;->mGivenInternalInsets:Landroid/view/ViewTreeObserver$InternalInsetsInfo;
-Landroid/view/View$AttachInfo;->mHandler:Landroid/os/Handler;
-Landroid/view/View$AttachInfo;->mHasWindowFocus:Z
-Landroid/view/View$AttachInfo;->mInTouchMode:Z
-Landroid/view/View$AttachInfo;->mKeepScreenOn:Z
-Landroid/view/View$AttachInfo;->mKeyDispatchState:Landroid/view/KeyEvent$DispatcherState;
-Landroid/view/View$AttachInfo;->mRecomputeGlobalAttributes:Z
-Landroid/view/View$AttachInfo;->mScalingRequired:Z
-Landroid/view/View$AttachInfo;->mScrollContainers:Ljava/util/ArrayList;
-Landroid/view/View$AttachInfo;->mSession:Landroid/view/IWindowSession;
-Landroid/view/View$AttachInfo;->mStableInsets:Landroid/graphics/Rect;
-Landroid/view/View$AttachInfo;->mTreeObserver:Landroid/view/ViewTreeObserver;
-Landroid/view/View$AttachInfo;->mViewScrollChanged:Z
-Landroid/view/View$AttachInfo;->mViewVisibilityChanged:Z
-Landroid/view/View$AttachInfo;->mVisibleInsets:Landroid/graphics/Rect;
-Landroid/view/View$AttachInfo;->mWindow:Landroid/view/IWindow;
-Landroid/view/View$DragShadowBuilder;->mView:Ljava/lang/ref/WeakReference;
 Landroid/view/View$ListenerInfo;-><init>()V
-Landroid/view/View$ListenerInfo;->mOnClickListener:Landroid/view/View$OnClickListener;
-Landroid/view/View$ListenerInfo;->mOnCreateContextMenuListener:Landroid/view/View$OnCreateContextMenuListener;
-Landroid/view/View$ListenerInfo;->mOnDragListener:Landroid/view/View$OnDragListener;
-Landroid/view/View$ListenerInfo;->mOnFocusChangeListener:Landroid/view/View$OnFocusChangeListener;
-Landroid/view/View$ListenerInfo;->mOnGenericMotionListener:Landroid/view/View$OnGenericMotionListener;
-Landroid/view/View$ListenerInfo;->mOnHoverListener:Landroid/view/View$OnHoverListener;
-Landroid/view/View$ListenerInfo;->mOnKeyListener:Landroid/view/View$OnKeyListener;
-Landroid/view/View$ListenerInfo;->mOnLongClickListener:Landroid/view/View$OnLongClickListener;
-Landroid/view/View$ListenerInfo;->mOnTouchListener:Landroid/view/View$OnTouchListener;
-Landroid/view/View$MeasureSpec;->makeSafeMeasureSpec(II)I
-Landroid/view/View$ScrollabilityCache;->host:Landroid/view/View;
-Landroid/view/View$ScrollabilityCache;->scrollBar:Landroid/widget/ScrollBarDrawable;
-Landroid/view/View$ScrollabilityCache;->state:I
-Landroid/view/View;-><init>()V
-Landroid/view/View;->applyDrawableToTransparentRegion(Landroid/graphics/drawable/Drawable;Landroid/graphics/Region;)V
-Landroid/view/View;->assignParent(Landroid/view/ViewParent;)V
-Landroid/view/View;->cancel(Landroid/view/View$SendViewScrolledAccessibilityEvent;)V
-Landroid/view/View;->clearAccessibilityFocus()V
-Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-Landroid/view/View;->computeOpaqueFlags()V
-Landroid/view/View;->createSnapshot(Landroid/view/ViewDebug$CanvasProvider;Z)Landroid/graphics/Bitmap;
-Landroid/view/View;->DBG:Z
-Landroid/view/View;->debug()V
-Landroid/view/View;->debug(I)V
-Landroid/view/View;->DEBUG_LAYOUT_PROPERTY:Ljava/lang/String;
-Landroid/view/View;->destroyHardwareResources()V
-Landroid/view/View;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V
-Landroid/view/View;->dispatchDetachedFromWindow()V
-Landroid/view/View;->dispatchPointerEvent(Landroid/view/MotionEvent;)Z
-Landroid/view/View;->drawBackground(Landroid/graphics/Canvas;)V
-Landroid/view/View;->ensureTransformationInfo()V
-Landroid/view/View;->findViewByAccessibilityId(I)Landroid/view/View;
-Landroid/view/View;->fitsSystemWindows()Z
-Landroid/view/View;->gatherTransparentRegion(Landroid/graphics/Region;)Z
-Landroid/view/View;->getAccessibilityViewId()I
-Landroid/view/View;->getBoundsOnScreen(Landroid/graphics/Rect;)V
-Landroid/view/View;->getBoundsOnScreen(Landroid/graphics/Rect;Z)V
-Landroid/view/View;->getHorizontalScrollFactor()F
-Landroid/view/View;->getInverseMatrix()Landroid/graphics/Matrix;
-Landroid/view/View;->getIterableTextForAccessibility()Ljava/lang/CharSequence;
-Landroid/view/View;->getIteratorForGranularity(I)Landroid/view/AccessibilityIterators$TextSegmentIterator;
-Landroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo;
-Landroid/view/View;->getLocationInSurface([I)V
-Landroid/view/View;->getLocationOnScreen()[I
-Landroid/view/View;->getRawTextAlignment()I
-Landroid/view/View;->getRawTextDirection()I
-Landroid/view/View;->getScrollCache()Landroid/view/View$ScrollabilityCache;
-Landroid/view/View;->getThreadedRenderer()Landroid/view/ThreadedRenderer;
-Landroid/view/View;->getTransitionAlpha()F
-Landroid/view/View;->getVerticalScrollFactor()F
-Landroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl;
-Landroid/view/View;->getWindowDisplayFrame(Landroid/graphics/Rect;)V
-Landroid/view/View;->getWindowSession()Landroid/view/IWindowSession;
-Landroid/view/View;->hasIdentityMatrix()Z
-Landroid/view/View;->hasRtlSupport()Z
-Landroid/view/View;->includeForAccessibility()Z
-Landroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V
-Landroid/view/View;->internalSetPadding(IIII)V
-Landroid/view/View;->invalidate(Z)V
-Landroid/view/View;->invalidateParentCaches()V
-Landroid/view/View;->invalidateParentIfNeeded()V
-Landroid/view/View;->invalidateViewProperty(ZZ)V
-Landroid/view/View;->isDraggingScrollBar()Z
-Landroid/view/View;->isInScrollingContainer()Z
-Landroid/view/View;->isLayoutRtl()Z
-Landroid/view/View;->isOnScrollbarThumb(FF)Z
-Landroid/view/View;->isPaddingResolved()Z
-Landroid/view/View;->isRootNamespace()Z
-Landroid/view/View;->isVisibleToUser()Z
-Landroid/view/View;->isVisibleToUser(Landroid/graphics/Rect;)Z
-Landroid/view/View;->mAccessibilityDelegate:Landroid/view/View$AccessibilityDelegate;
-Landroid/view/View;->mAccessibilityViewId:I
-Landroid/view/View;->makeOptionalFitsSystemWindows()V
-Landroid/view/View;->mAnimator:Landroid/view/ViewPropertyAnimator;
-Landroid/view/View;->mAttachInfo:Landroid/view/View$AttachInfo;
-Landroid/view/View;->mBackground:Landroid/graphics/drawable/Drawable;
-Landroid/view/View;->mBackgroundResource:I
-Landroid/view/View;->mBottom:I
-Landroid/view/View;->mCachingFailed:Z
-Landroid/view/View;->mContext:Landroid/content/Context;
-Landroid/view/View;->mDrawingCache:Landroid/graphics/Bitmap;
-Landroid/view/View;->mHasPerformedLongPress:Z
-Landroid/view/View;->mKeyedTags:Landroid/util/SparseArray;
-Landroid/view/View;->mLayoutParams:Landroid/view/ViewGroup$LayoutParams;
-Landroid/view/View;->mLeft:I
-Landroid/view/View;->mListenerInfo:Landroid/view/View$ListenerInfo;
-Landroid/view/View;->mMeasuredHeight:I
-Landroid/view/View;->mMeasuredWidth:I
-Landroid/view/View;->mMinHeight:I
-Landroid/view/View;->mMinWidth:I
-Landroid/view/View;->mPaddingBottom:I
-Landroid/view/View;->mPaddingLeft:I
-Landroid/view/View;->mPaddingRight:I
-Landroid/view/View;->mPaddingTop:I
-Landroid/view/View;->mParent:Landroid/view/ViewParent;
-Landroid/view/View;->mPendingCheckForTap:Landroid/view/View$CheckForTap;
-Landroid/view/View;->mPrivateFlags2:I
-Landroid/view/View;->mPrivateFlags3:I
-Landroid/view/View;->mPrivateFlags:I
-Landroid/view/View;->mRecreateDisplayList:Z
-Landroid/view/View;->mRenderNode:Landroid/view/RenderNode;
-Landroid/view/View;->mResources:Landroid/content/res/Resources;
-Landroid/view/View;->mRight:I
-Landroid/view/View;->mScrollCache:Landroid/view/View$ScrollabilityCache;
-Landroid/view/View;->mScrollX:I
-Landroid/view/View;->mScrollY:I
-Landroid/view/View;->mStartActivityRequestWho:Ljava/lang/String;
-Landroid/view/View;->mTag:Ljava/lang/Object;
-Landroid/view/View;->mTop:I
-Landroid/view/View;->mTransformationInfo:Landroid/view/View$TransformationInfo;
-Landroid/view/View;->mUnscaledDrawingCache:Landroid/graphics/Bitmap;
-Landroid/view/View;->mVerticalScrollbarPosition:I
-Landroid/view/View;->mViewFlags:I
-Landroid/view/View;->NAVIGATION_BAR_TRANSIENT:I
-Landroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V
-Landroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V
-Landroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V
-Landroid/view/View;->onDetachedFromWindowInternal()V
-Landroid/view/View;->onDrawHorizontalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V
-Landroid/view/View;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V
-Landroid/view/View;->onFocusLost()V
-Landroid/view/View;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V
-Landroid/view/View;->performAccessibilityActionInternal(ILandroid/os/Bundle;)Z
-Landroid/view/View;->pointInView(FFF)Z
-Landroid/view/View;->recomputePadding()V
-Landroid/view/View;->removePerformClickCallback()V
-Landroid/view/View;->requestAccessibilityFocus()Z
-Landroid/view/View;->resetDisplayList()V
-Landroid/view/View;->resetPaddingToInitialValues()V
-Landroid/view/View;->resolvePadding()V
-Landroid/view/View;->setAlphaNoInvalidation(F)Z
-Landroid/view/View;->setAnimationMatrix(Landroid/graphics/Matrix;)V
-Landroid/view/View;->setAssistBlocked(Z)V
-Landroid/view/View;->setDisabledSystemUiVisibility(I)V
-Landroid/view/View;->setFlags(II)V
-Landroid/view/View;->setFrame(IIII)Z
-Landroid/view/View;->setLeftTopRightBottom(IIII)V
-Landroid/view/View;->setTagInternal(ILjava/lang/Object;)V
-Landroid/view/View;->setTransitionAlpha(F)V
-Landroid/view/View;->startActivityForResult(Landroid/content/Intent;I)V
-Landroid/view/View;->STATUS_BAR_DISABLE_BACK:I
-Landroid/view/View;->STATUS_BAR_DISABLE_EXPAND:I
-Landroid/view/View;->STATUS_BAR_DISABLE_HOME:I
-Landroid/view/View;->STATUS_BAR_DISABLE_RECENT:I
-Landroid/view/View;->toGlobalMotionEvent(Landroid/view/MotionEvent;)Z
-Landroid/view/View;->toLocalMotionEvent(Landroid/view/MotionEvent;)Z
-Landroid/view/View;->transformMatrixToGlobal(Landroid/graphics/Matrix;)V
-Landroid/view/View;->transformMatrixToLocal(Landroid/graphics/Matrix;)V
-Landroid/view/View;->updateDisplayListIfDirty()Landroid/view/RenderNode;
-Landroid/view/ViewConfiguration;->getDoubleTapMinTime()I
-Landroid/view/ViewConfiguration;->getDoubleTapSlop()I
-Landroid/view/ViewConfiguration;->getHoverTapSlop()I
-Landroid/view/ViewConfiguration;->getScaledDoubleTapTouchSlop()I
-Landroid/view/ViewConfiguration;->isFadingMarqueeEnabled()Z
-Landroid/view/ViewConfiguration;->mFadingMarqueeEnabled:Z
-Landroid/view/ViewConfiguration;->sConfigurations:Landroid/util/SparseArray;
-Landroid/view/ViewConfiguration;->SCROLL_FRICTION:F
-Landroid/view/ViewConfiguration;->sHasPermanentMenuKey:Z
-Landroid/view/ViewConfiguration;->sHasPermanentMenuKeySet:Z
-Landroid/view/ViewDebug;->dispatchCommand(Landroid/view/View;Ljava/lang/String;Ljava/lang/String;Ljava/io/OutputStream;)V
-Landroid/view/ViewDebug;->dump(Landroid/view/View;ZZLjava/io/OutputStream;)V
-Landroid/view/ViewDebug;->getViewInstanceCount()J
-Landroid/view/ViewDebug;->getViewRootImplCount()J
-Landroid/view/ViewGroup$LayoutParams;-><init>()V
-Landroid/view/ViewGroup$MarginLayoutParams;->endMargin:I
-Landroid/view/ViewGroup$MarginLayoutParams;->setMarginsRelative(IIII)V
-Landroid/view/ViewGroup$MarginLayoutParams;->startMargin:I
-Landroid/view/ViewGroup$TouchTarget;-><init>()V
-Landroid/view/ViewGroup$TouchTarget;->child:Landroid/view/View;
-Landroid/view/ViewGroup;->addTransientView(Landroid/view/View;I)V
-Landroid/view/ViewGroup;->cancelTouchTarget(Landroid/view/View;)V
-Landroid/view/ViewGroup;->DBG:Z
-Landroid/view/ViewGroup;->dispatchAttachedToWindow(Landroid/view/View$AttachInfo;I)V
-Landroid/view/ViewGroup;->dispatchDetachedFromWindow()V
-Landroid/view/ViewGroup;->dispatchGetDisplayList()V
-Landroid/view/ViewGroup;->dispatchViewAdded(Landroid/view/View;)V
-Landroid/view/ViewGroup;->dispatchViewRemoved(Landroid/view/View;)V
-Landroid/view/ViewGroup;->encodeProperties(Landroid/view/ViewHierarchyEncoder;)V
-Landroid/view/ViewGroup;->FLAG_DISALLOW_INTERCEPT:I
-Landroid/view/ViewGroup;->FLAG_SUPPORT_STATIC_TRANSFORMATIONS:I
-Landroid/view/ViewGroup;->FLAG_USE_CHILD_DRAWING_ORDER:I
-Landroid/view/ViewGroup;->getTransientView(I)Landroid/view/View;
-Landroid/view/ViewGroup;->getTransientViewCount()I
-Landroid/view/ViewGroup;->isTransformedTouchPointInView(FFLandroid/view/View;Landroid/graphics/PointF;)Z
-Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V
-Landroid/view/ViewGroup;->mChildren:[Landroid/view/View;
-Landroid/view/ViewGroup;->mChildrenCount:I
-Landroid/view/ViewGroup;->mDisappearingChildren:Ljava/util/ArrayList;
-Landroid/view/ViewGroup;->mFirstTouchTarget:Landroid/view/ViewGroup$TouchTarget;
-Landroid/view/ViewGroup;->mFocused:Landroid/view/View;
-Landroid/view/ViewGroup;->mGroupFlags:I
-Landroid/view/ViewGroup;->mOnHierarchyChangeListener:Landroid/view/ViewGroup$OnHierarchyChangeListener;
-Landroid/view/ViewGroup;->mPersistentDrawingCache:I
-Landroid/view/ViewGroup;->offsetChildrenTopAndBottom(I)V
-Landroid/view/ViewGroup;->onChildVisibilityChanged(Landroid/view/View;II)V
-Landroid/view/ViewGroup;->onInitializeAccessibilityNodeInfoInternal(Landroid/view/accessibility/AccessibilityNodeInfo;)V
-Landroid/view/ViewGroup;->removeTransientView(Landroid/view/View;)V
-Landroid/view/ViewGroup;->resolvePadding()V
-Landroid/view/ViewGroup;->suppressLayout(Z)V
-Landroid/view/ViewGroup;->transformPointToViewLocal([FLandroid/view/View;)V
-Landroid/view/ViewHierarchyEncoder;->addProperty(Ljava/lang/String;F)V
-Landroid/view/ViewHierarchyEncoder;->addProperty(Ljava/lang/String;I)V
-Landroid/view/ViewHierarchyEncoder;->addProperty(Ljava/lang/String;Ljava/lang/String;)V
-Landroid/view/ViewHierarchyEncoder;->addProperty(Ljava/lang/String;Z)V
-Landroid/view/ViewOverlay;->getOverlayView()Landroid/view/ViewGroup;
-Landroid/view/ViewOverlay;->isEmpty()Z
-Landroid/view/ViewRootImpl$CalledFromWrongThreadException;-><init>(Ljava/lang/String;)V
-Landroid/view/ViewRootImpl;->addConfigCallback(Landroid/view/ViewRootImpl$ConfigChangedCallback;)V
-Landroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V
-Landroid/view/ViewRootImpl;->detachFunctor(J)V
-Landroid/view/ViewRootImpl;->dispatchInputEvent(Landroid/view/InputEvent;)V
-Landroid/view/ViewRootImpl;->dispatchInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;)V
-Landroid/view/ViewRootImpl;->dispatchKeyFromIme(Landroid/view/KeyEvent;)V
-Landroid/view/ViewRootImpl;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
-Landroid/view/ViewRootImpl;->dispatchUnhandledInputEvent(Landroid/view/InputEvent;)V
-Landroid/view/ViewRootImpl;->enableHardwareAcceleration(Landroid/view/WindowManager$LayoutParams;)V
-Landroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;)V
-Landroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)V
-Landroid/view/ViewRootImpl;->ensureTouchMode(Z)Z
-Landroid/view/ViewRootImpl;->getAccessibilityFocusedHost()Landroid/view/View;
-Landroid/view/ViewRootImpl;->getAccessibilityFocusedVirtualView()Landroid/view/accessibility/AccessibilityNodeInfo;
-Landroid/view/ViewRootImpl;->getLastTouchPoint(Landroid/graphics/Point;)V
-Landroid/view/ViewRootImpl;->getView()Landroid/view/View;
-Landroid/view/ViewRootImpl;->getWindowFlags()I
-Landroid/view/ViewRootImpl;->invalidate()V
-Landroid/view/ViewRootImpl;->invokeFunctor(JZ)V
-Landroid/view/ViewRootImpl;->mAdded:Z
-Landroid/view/ViewRootImpl;->mAttachInfo:Landroid/view/View$AttachInfo;
-Landroid/view/ViewRootImpl;->mContext:Landroid/content/Context;
-Landroid/view/ViewRootImpl;->mDirty:Landroid/graphics/Rect;
-Landroid/view/ViewRootImpl;->mFallbackEventHandler:Landroid/view/FallbackEventHandler;
-Landroid/view/ViewRootImpl;->mHeight:I
-Landroid/view/ViewRootImpl;->mLastScrolledFocus:Ljava/lang/ref/WeakReference;
-Landroid/view/ViewRootImpl;->mStopped:Z
-Landroid/view/ViewRootImpl;->mSurface:Landroid/view/Surface;
-Landroid/view/ViewRootImpl;->mView:Landroid/view/View;
-Landroid/view/ViewRootImpl;->mWidth:I
-Landroid/view/ViewRootImpl;->mWindowSession:Landroid/view/IWindowSession;
-Landroid/view/ViewRootImpl;->scheduleTraversals()V
-Landroid/view/ViewRootImpl;->setLocalDragState(Ljava/lang/Object;)V
-Landroid/view/ViewRootImpl;->sRunQueues:Ljava/lang/ThreadLocal;
 Landroid/view/ViewTreeObserver$InternalInsetsInfo;-><init>()V
-Landroid/view/ViewTreeObserver$InternalInsetsInfo;->contentInsets:Landroid/graphics/Rect;
-Landroid/view/ViewTreeObserver$InternalInsetsInfo;->mTouchableInsets:I
-Landroid/view/ViewTreeObserver$InternalInsetsInfo;->set(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V
-Landroid/view/ViewTreeObserver$InternalInsetsInfo;->setTouchableInsets(I)V
-Landroid/view/ViewTreeObserver$InternalInsetsInfo;->touchableRegion:Landroid/graphics/Region;
-Landroid/view/ViewTreeObserver$InternalInsetsInfo;->TOUCHABLE_INSETS_REGION:I
-Landroid/view/ViewTreeObserver$InternalInsetsInfo;->visibleInsets:Landroid/graphics/Rect;
-Landroid/view/ViewTreeObserver;->addOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V
-Landroid/view/ViewTreeObserver;->dispatchOnComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V
-Landroid/view/ViewTreeObserver;->dispatchOnGlobalFocusChange(Landroid/view/View;Landroid/view/View;)V
-Landroid/view/ViewTreeObserver;->dispatchOnScrollChanged()V
-Landroid/view/ViewTreeObserver;->dispatchOnTouchModeChanged(Z)V
-Landroid/view/ViewTreeObserver;->hasComputeInternalInsetsListeners()Z
-Landroid/view/ViewTreeObserver;->mOnComputeInternalInsetsListeners:Landroid/view/ViewTreeObserver$CopyOnWriteArray;
-Landroid/view/ViewTreeObserver;->mOnGlobalLayoutListeners:Landroid/view/ViewTreeObserver$CopyOnWriteArray;
-Landroid/view/ViewTreeObserver;->mOnScrollChangedListeners:Landroid/view/ViewTreeObserver$CopyOnWriteArray;
-Landroid/view/ViewTreeObserver;->mOnTouchModeChangeListeners:Ljava/util/concurrent/CopyOnWriteArrayList;
-Landroid/view/ViewTreeObserver;->removeOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V
-Landroid/view/Window;->addPrivateFlags(I)V
-Landroid/view/Window;->alwaysReadCloseOnTouchAttr()V
-Landroid/view/Window;->FEATURE_MAX:I
-Landroid/view/Window;->isDestroyed()Z
-Landroid/view/Window;->mAppName:Ljava/lang/String;
-Landroid/view/Window;->mAppToken:Landroid/os/IBinder;
-Landroid/view/Window;->mCallback:Landroid/view/Window$Callback;
-Landroid/view/Window;->mContext:Landroid/content/Context;
-Landroid/view/Window;->mDestroyed:Z
-Landroid/view/Window;->mFeatures:I
-Landroid/view/Window;->mHardwareAccelerated:Z
-Landroid/view/Window;->mLocalFeatures:I
-Landroid/view/Window;->mWindowAttributes:Landroid/view/WindowManager$LayoutParams;
-Landroid/view/Window;->mWindowManager:Landroid/view/WindowManager;
-Landroid/view/Window;->mWindowStyle:Landroid/content/res/TypedArray;
-Landroid/view/Window;->setCloseOnTouchOutside(Z)V
-Landroid/view/Window;->setCloseOnTouchOutsideIfNotSet(Z)V
-Landroid/view/Window;->setNeedsMenuKey(I)V
-Landroid/view/Window;->shouldCloseOnTouch(Landroid/content/Context;Landroid/view/MotionEvent;)Z
-Landroid/view/WindowAnimationFrameStats;->init(J[J)V
-Landroid/view/WindowContentFrameStats;->init(J[J[J[J)V
-Landroid/view/WindowInsets;-><init>(Landroid/graphics/Rect;)V
-Landroid/view/WindowInsets;->CONSUMED:Landroid/view/WindowInsets;
-Landroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Rect;
-Landroid/view/WindowInsets;->inset(IIII)Landroid/view/WindowInsets;
-Landroid/view/WindowLeaked;-><init>(Ljava/lang/String;)V
-Landroid/view/WindowManager$LayoutParams;->backup()V
-Landroid/view/WindowManager$LayoutParams;->FLAG_SLIPPERY:I
-Landroid/view/WindowManager$LayoutParams;->hasSystemUiListeners:Z
-Landroid/view/WindowManager$LayoutParams;->hideTimeoutMilliseconds:J
-Landroid/view/WindowManager$LayoutParams;->inputFeatures:I
-Landroid/view/WindowManager$LayoutParams;->INPUT_FEATURE_DISABLE_USER_ACTIVITY:I
-Landroid/view/WindowManager$LayoutParams;->needsMenuKey:I
-Landroid/view/WindowManager$LayoutParams;->NEEDS_MENU_SET_FALSE:I
-Landroid/view/WindowManager$LayoutParams;->NEEDS_MENU_SET_TRUE:I
-Landroid/view/WindowManager$LayoutParams;->PRIVATE_FLAG_SHOW_FOR_ALL_USERS:I
-Landroid/view/WindowManager$LayoutParams;->restore()V
-Landroid/view/WindowManager$LayoutParams;->subtreeSystemUiVisibility:I
-Landroid/view/WindowManager$LayoutParams;->TYPE_APPLICATION_MEDIA_OVERLAY:I
-Landroid/view/WindowManager$LayoutParams;->TYPE_DISPLAY_OVERLAY:I
-Landroid/view/WindowManager$LayoutParams;->TYPE_SECURE_SYSTEM_OVERLAY:I
-Landroid/view/WindowManager$LayoutParams;->userActivityTimeout:J
-Landroid/view/WindowManagerGlobal;->getInstance()Landroid/view/WindowManagerGlobal;
-Landroid/view/WindowManagerGlobal;->getRootView(Ljava/lang/String;)Landroid/view/View;
-Landroid/view/WindowManagerGlobal;->getRootViews(Landroid/os/IBinder;)Ljava/util/ArrayList;
-Landroid/view/WindowManagerGlobal;->getViewRootNames()[Ljava/lang/String;
-Landroid/view/WindowManagerGlobal;->getWindowManagerService()Landroid/view/IWindowManager;
-Landroid/view/WindowManagerGlobal;->getWindowSession()Landroid/view/IWindowSession;
-Landroid/view/WindowManagerGlobal;->initialize()V
-Landroid/view/WindowManagerGlobal;->mLock:Ljava/lang/Object;
-Landroid/view/WindowManagerGlobal;->mParams:Ljava/util/ArrayList;
-Landroid/view/WindowManagerGlobal;->mRoots:Ljava/util/ArrayList;
-Landroid/view/WindowManagerGlobal;->mViews:Ljava/util/ArrayList;
-Landroid/view/WindowManagerGlobal;->peekWindowSession()Landroid/view/IWindowSession;
-Landroid/view/WindowManagerGlobal;->removeView(Landroid/view/View;Z)V
-Landroid/view/WindowManagerGlobal;->sDefaultWindowManager:Landroid/view/WindowManagerGlobal;
-Landroid/view/WindowManagerGlobal;->sWindowManagerService:Landroid/view/IWindowManager;
-Landroid/view/WindowManagerGlobal;->sWindowSession:Landroid/view/IWindowSession;
-Landroid/view/WindowManagerGlobal;->trimMemory(I)V
-Landroid/view/WindowManagerImpl;->mGlobal:Landroid/view/WindowManagerGlobal;
 Landroid/webkit/CacheManager$CacheResult;-><init>()V
-Landroid/webkit/CacheManager$CacheResult;->contentdisposition:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->contentLength:J
-Landroid/webkit/CacheManager$CacheResult;->crossDomain:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->encoding:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->etag:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->expires:J
-Landroid/webkit/CacheManager$CacheResult;->expiresString:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getContentDisposition()Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getContentLength()J
-Landroid/webkit/CacheManager$CacheResult;->getEncoding()Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getETag()Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getExpires()J
-Landroid/webkit/CacheManager$CacheResult;->getExpiresString()Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getHttpStatusCode()I
-Landroid/webkit/CacheManager$CacheResult;->getInputStream()Ljava/io/InputStream;
-Landroid/webkit/CacheManager$CacheResult;->getLastModified()Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getLocalPath()Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getLocation()Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getMimeType()Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->getOutputStream()Ljava/io/OutputStream;
-Landroid/webkit/CacheManager$CacheResult;->httpStatusCode:I
-Landroid/webkit/CacheManager$CacheResult;->inStream:Ljava/io/InputStream;
-Landroid/webkit/CacheManager$CacheResult;->lastModified:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->localPath:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->location:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->mimeType:Ljava/lang/String;
-Landroid/webkit/CacheManager$CacheResult;->outFile:Ljava/io/File;
-Landroid/webkit/CacheManager$CacheResult;->outStream:Ljava/io/OutputStream;
-Landroid/webkit/CacheManager$CacheResult;->setEncoding(Ljava/lang/String;)V
-Landroid/webkit/CacheManager$CacheResult;->setInputStream(Ljava/io/InputStream;)V
-Landroid/webkit/CacheManager;->cacheDisabled()Z
-Landroid/webkit/CacheManager;->endCacheTransaction()Z
-Landroid/webkit/CacheManager;->getCacheFile(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;
-Landroid/webkit/CacheManager;->getCacheFileBaseDir()Ljava/io/File;
-Landroid/webkit/CacheManager;->saveCacheFile(Ljava/lang/String;JLandroid/webkit/CacheManager$CacheResult;)V
-Landroid/webkit/CacheManager;->saveCacheFile(Ljava/lang/String;Landroid/webkit/CacheManager$CacheResult;)V
-Landroid/webkit/CacheManager;->startCacheTransaction()Z
-Landroid/webkit/ConsoleMessage;->mLevel:Landroid/webkit/ConsoleMessage$MessageLevel;
-Landroid/webkit/ConsoleMessage;->mLineNumber:I
-Landroid/webkit/ConsoleMessage;->mMessage:Ljava/lang/String;
-Landroid/webkit/ConsoleMessage;->mSourceId:Ljava/lang/String;
 Landroid/webkit/IWebViewUpdateService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 Landroid/webkit/IWebViewUpdateService$Stub$Proxy;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
 Landroid/webkit/IWebViewUpdateService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/webkit/IWebViewUpdateService;
 Landroid/webkit/IWebViewUpdateService;->getCurrentWebViewPackageName()Ljava/lang/String;
 Landroid/webkit/IWebViewUpdateService;->getValidWebViewPackages()[Landroid/webkit/WebViewProviderInfo;
 Landroid/webkit/IWebViewUpdateService;->isFallbackPackage(Ljava/lang/String;)Z
-Landroid/webkit/JsResult;->mReceiver:Landroid/webkit/JsResult$ResultReceiver;
-Landroid/webkit/PluginData;-><init>(Ljava/io/InputStream;JLjava/util/Map;I)V
-Landroid/webkit/PluginData;->getContentLength()J
-Landroid/webkit/PluginData;->getHeaders()Ljava/util/Map;
-Landroid/webkit/PluginData;->getInputStream()Ljava/io/InputStream;
-Landroid/webkit/PluginData;->getStatusCode()I
-Landroid/webkit/UrlInterceptHandler;->getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;
-Landroid/webkit/UrlInterceptHandler;->service(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/CacheManager$CacheResult;
-Landroid/webkit/UrlInterceptRegistry;->getPluginData(Ljava/lang/String;Ljava/util/Map;)Landroid/webkit/PluginData;
-Landroid/webkit/UrlInterceptRegistry;->registerHandler(Landroid/webkit/UrlInterceptHandler;)Z
-Landroid/webkit/UrlInterceptRegistry;->setUrlInterceptDisabled(Z)V
-Landroid/webkit/UrlInterceptRegistry;->unregisterHandler(Landroid/webkit/UrlInterceptHandler;)Z
-Landroid/webkit/URLUtil;->isResourceUrl(Ljava/lang/String;)Z
-Landroid/webkit/URLUtil;->parseContentDisposition(Ljava/lang/String;)Ljava/lang/String;
-Landroid/webkit/URLUtil;->verifyURLEncoding(Ljava/lang/String;)Z
-Landroid/webkit/WebResourceResponse;->mImmutable:Z
-Landroid/webkit/WebResourceResponse;->mStatusCode:I
-Landroid/webkit/WebSettings$TextSize;->value:I
-Landroid/webkit/WebSyncManager;->syncFromRamToFlash()V
-Landroid/webkit/WebView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;IILjava/util/Map;Z)V
-Landroid/webkit/WebView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;ILjava/util/Map;Z)V
-Landroid/webkit/WebView;->checkThread()V
-Landroid/webkit/WebView;->debugDump()V
-Landroid/webkit/WebView;->disablePlatformNotifications()V
-Landroid/webkit/WebView;->emulateShiftHeld()V
-Landroid/webkit/WebView;->enablePlatformNotifications()V
-Landroid/webkit/WebView;->freeMemoryForTests()V
-Landroid/webkit/WebView;->getContentWidth()I
-Landroid/webkit/WebView;->getFactory()Landroid/webkit/WebViewFactoryProvider;
-Landroid/webkit/WebView;->getTouchIconUrl()Ljava/lang/String;
-Landroid/webkit/WebView;->getVisibleTitleHeight()I
-Landroid/webkit/WebView;->isPaused()Z
-Landroid/webkit/WebView;->mProvider:Landroid/webkit/WebViewProvider;
-Landroid/webkit/WebView;->mWebViewThread:Landroid/os/Looper;
-Landroid/webkit/WebView;->notifyFindDialogDismissed()V
-Landroid/webkit/WebView;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V
-Landroid/webkit/WebView;->restorePicture(Landroid/os/Bundle;Ljava/io/File;)Z
-Landroid/webkit/WebView;->savePicture(Landroid/os/Bundle;Ljava/io/File;)Z
-Landroid/webkit/WebView;->sEnforceThreadChecking:Z
-Landroid/webkit/WebView;->setFrame(IIII)Z
-Landroid/webkit/WebViewDelegate;-><init>()V
-Landroid/webkit/WebViewFactory;->getProvider()Landroid/webkit/WebViewFactoryProvider;
-Landroid/webkit/WebViewFactory;->getProviderClass()Ljava/lang/Class;
-Landroid/webkit/WebViewFactory;->getUpdateService()Landroid/webkit/IWebViewUpdateService;
-Landroid/webkit/WebViewFactory;->getWebViewContextAndSetProvider()Landroid/content/Context;
-Landroid/webkit/WebViewFactory;->sPackageInfo:Landroid/content/pm/PackageInfo;
-Landroid/webkit/WebViewFactory;->sProviderInstance:Landroid/webkit/WebViewFactoryProvider;
-Landroid/webkit/WebViewProviderInfo;-><init>(Landroid/os/Parcel;)V
-Landroid/webkit/WebViewProviderResponse;->packageInfo:Landroid/content/pm/PackageInfo;
-Landroid/webkit/WebViewUpdateService;-><init>()V
 Landroid/widget/AbsListView$FlingRunnable;->endFling()V
 Landroid/widget/AbsListView$FlingRunnable;->mScroller:Landroid/widget/OverScroller;
 Landroid/widget/AbsListView$FlingRunnable;->start(I)V
@@ -5552,7 +3915,6 @@
 Ljava/util/zip/ZipOutputStream;->method:I
 Ljava/util/zip/ZipOutputStream;->names:Ljava/util/HashSet;
 Ljava/util/zip/ZipOutputStream;->written:J
-Ljavax/microedition/khronos/egl/EGL10;->eglReleaseThread()Z
 Ljavax/net/ssl/SSLServerSocketFactory;->defaultServerSocketFactory:Ljavax/net/ssl/SSLServerSocketFactory;
 Ljavax/net/ssl/SSLSocketFactory;->createSocket(Ljava/net/Socket;Ljava/io/InputStream;Z)Ljava/net/Socket;
 Ljavax/net/ssl/SSLSocketFactory;->defaultSocketFactory:Ljavax/net/ssl/SSLSocketFactory;
diff --git a/config/hiddenapi-vendor-list.txt b/config/hiddenapi-vendor-list.txt
index 95d589a..435f9bb 100644
--- a/config/hiddenapi-vendor-list.txt
+++ b/config/hiddenapi-vendor-list.txt
@@ -40,20 +40,6 @@
 Landroid/location/ILocationManager;->reportLocation(Landroid/location/Location;Z)V
 Landroid/location/INetInitiatedListener$Stub;-><init>()V
 Landroid/location/INetInitiatedListener;->sendNiResponse(II)Z
-Landroid/media/AudioManager;->registerAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V
-Landroid/media/AudioManager;->unregisterAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V
-Landroid/media/AudioSystem;->checkAudioFlinger()I
-Landroid/media/AudioSystem;->getForceUse(I)I
-Landroid/media/AudioSystem;->getParameters(Ljava/lang/String;)Ljava/lang/String;
-Landroid/media/AudioSystem;->setForceUse(II)I
-Landroid/media/AudioSystem;->setParameters(Ljava/lang/String;)I
-Landroid/media/MediaDrm$Certificate;->getContent()[B
-Landroid/media/MediaDrm$Certificate;->getWrappedPrivateKey()[B
-Landroid/media/MediaDrm$CertificateRequest;->getData()[B
-Landroid/media/MediaDrm$CertificateRequest;->getDefaultUrl()Ljava/lang/String;
-Landroid/media/MediaDrm;->getCertificateRequest(ILjava/lang/String;)Landroid/media/MediaDrm$CertificateRequest;
-Landroid/media/MediaDrm;->provideCertificateResponse([B)Landroid/media/MediaDrm$Certificate;
-Landroid/media/MediaDrm;->signRSA([BLjava/lang/String;[B[B)[B
 Landroid/media/tv/ITvRemoteProvider$Stub;-><init>()V
 Landroid/media/tv/ITvRemoteServiceInput;->clearInputBridge(Landroid/os/IBinder;)V
 Landroid/media/tv/ITvRemoteServiceInput;->closeInputBridge(Landroid/os/IBinder;)V
@@ -151,42 +137,10 @@
 Landroid/system/Os;->setsockoptTimeval(Ljava/io/FileDescriptor;IILandroid/system/StructTimeval;)V
 Landroid/system/PacketSocketAddress;-><init>(I[B)V
 Landroid/system/PacketSocketAddress;-><init>(SI)V
-Landroid/telephony/euicc/DownloadableSubscription;->encodedActivationCode:Ljava/lang/String;
-Landroid/telephony/euicc/DownloadableSubscription;->setAccessRules([Landroid/telephony/UiccAccessRule;)V
-Landroid/telephony/euicc/DownloadableSubscription;->setCarrierName(Ljava/lang/String;)V
-Landroid/telephony/ims/compat/feature/ImsFeature;->getFeatureState()I
-Landroid/telephony/ims/compat/feature/ImsFeature;->setFeatureState(I)V
 Landroid/telephony/ims/compat/feature/MMTelFeature;-><init>()V
 Landroid/telephony/ims/compat/ImsService;-><init>()V
-Landroid/telephony/ims/compat/ImsService;->mImsServiceController:Landroid/os/IBinder;
 Landroid/telephony/ims/compat/stub/ImsCallSessionImplBase;-><init>()V
-Landroid/telephony/ims/compat/stub/ImsConfigImplBase;-><init>(Landroid/content/Context;)V
-Landroid/telephony/ims/compat/stub/ImsConfigImplBase;->getIImsConfig()Lcom/android/ims/internal/IImsConfig;
 Landroid/telephony/ims/compat/stub/ImsUtListenerImplBase;-><init>()V
-Landroid/telephony/ims/ImsCallForwardInfo;-><init>()V
-Landroid/telephony/ims/ImsCallForwardInfo;->mCondition:I
-Landroid/telephony/ims/ImsCallForwardInfo;->mNumber:Ljava/lang/String;
-Landroid/telephony/ims/ImsCallForwardInfo;->mServiceClass:I
-Landroid/telephony/ims/ImsCallForwardInfo;->mStatus:I
-Landroid/telephony/ims/ImsCallForwardInfo;->mTimeSeconds:I
-Landroid/telephony/ims/ImsCallForwardInfo;->mToA:I
-Landroid/telephony/ims/ImsCallProfile;->mCallExtras:Landroid/os/Bundle;
-Landroid/telephony/ims/ImsCallProfile;->mCallType:I
-Landroid/telephony/ims/ImsCallProfile;->mMediaProfile:Landroid/telephony/ims/ImsStreamMediaProfile;
-Landroid/telephony/ims/ImsCallProfile;->mRestrictCause:I
-Landroid/telephony/ims/ImsCallProfile;->presentationToOIR(I)I
-Landroid/telephony/ims/ImsExternalCallState;-><init>(ILandroid/net/Uri;ZIIZ)V
-Landroid/telephony/ims/ImsReasonInfo;-><init>(II)V
-Landroid/telephony/ims/ImsReasonInfo;->mCode:I
-Landroid/telephony/ims/ImsReasonInfo;->mExtraCode:I
-Landroid/telephony/ims/ImsReasonInfo;->mExtraMessage:Ljava/lang/String;
-Landroid/telephony/ims/ImsSsInfo;->mIcbNum:Ljava/lang/String;
-Landroid/telephony/ims/ImsSsInfo;->mStatus:I
-Landroid/telephony/ims/ImsStreamMediaProfile;-><init>()V
-Landroid/telephony/ims/ImsStreamMediaProfile;->mAudioDirection:I
-Landroid/telephony/ims/ImsStreamMediaProfile;->mAudioQuality:I
-Landroid/telephony/ims/ImsStreamMediaProfile;->mVideoDirection:I
-Landroid/telephony/ims/ImsVideoCallProvider;->getInterface()Lcom/android/ims/internal/IImsVideoCallProvider;
 Landroid/telephony/mbms/IMbmsStreamingSessionCallback$Stub;-><init>()V
 Landroid/telephony/mbms/IStreamingServiceCallback$Stub;-><init>()V
 Landroid/telephony/mbms/vendor/IMbmsStreamingService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/mbms/vendor/IMbmsStreamingService;
@@ -194,64 +148,7 @@
 Landroid/telephony/mbms/vendor/IMbmsStreamingService;->initialize(Landroid/telephony/mbms/IMbmsStreamingSessionCallback;I)I
 Landroid/telephony/mbms/vendor/IMbmsStreamingService;->requestUpdateStreamingServices(ILjava/util/List;)I
 Landroid/telephony/mbms/vendor/IMbmsStreamingService;->startStreaming(ILjava/lang/String;Landroid/telephony/mbms/IStreamingServiceCallback;)I
-Landroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;I)Ljava/lang/String;
-Landroid/telephony/PhoneNumberUtils;->isEmergencyNumber(ILjava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isPotentialEmergencyNumber(ILjava/lang/String;)Z
-Landroid/telephony/PhoneNumberUtils;->isPotentialLocalEmergencyNumber(Landroid/content/Context;ILjava/lang/String;)Z
-Landroid/telephony/PhoneStateListener;-><init>(Ljava/lang/Integer;)V
-Landroid/telephony/PhoneStateListener;-><init>(Ljava/lang/Integer;Landroid/os/Looper;)V
-Landroid/telephony/PreciseCallState;->getBackgroundCallState()I
-Landroid/telephony/PreciseCallState;->getForegroundCallState()I
-Landroid/telephony/RadioAccessFamily;-><init>(II)V
-Landroid/telephony/RadioAccessFamily;->getRafFromNetworkType(I)I
-Landroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-Landroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I
-Landroid/telephony/ServiceState;->bitmaskHasTech(II)Z
-Landroid/telephony/ServiceState;->getDataRegState()I
-Landroid/telephony/ServiceState;->getDataRoaming()Z
-Landroid/telephony/ServiceState;->getRilDataRadioTechnology()I
-Landroid/telephony/ServiceState;->getVoiceNetworkType()I
-Landroid/telephony/ServiceState;->getVoiceRegState()I
-Landroid/telephony/ServiceState;->isCdma(I)Z
-Landroid/telephony/ServiceState;->isEmergencyOnly()Z
-Landroid/telephony/ServiceState;->isGsm(I)Z
-Landroid/telephony/ServiceState;->mergeServiceStates(Landroid/telephony/ServiceState;Landroid/telephony/ServiceState;)Landroid/telephony/ServiceState;
-Landroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String;
-Landroid/telephony/SubscriptionInfo;->setDisplayName(Ljava/lang/CharSequence;)V
-Landroid/telephony/SubscriptionInfo;->setIconTint(I)V
-Landroid/telephony/SubscriptionManager;->clearDefaultsForInactiveSubIds()V
-Landroid/telephony/SubscriptionManager;->getDefaultVoicePhoneId()I
-Landroid/telephony/SubscriptionManager;->getResourcesForSubId(Landroid/content/Context;I)Landroid/content/res/Resources;
-Landroid/telephony/SubscriptionManager;->isActiveSubId(I)Z
-Landroid/telephony/SubscriptionManager;->isUsableSubIdValue(I)Z
-Landroid/telephony/SubscriptionManager;->isValidPhoneId(I)Z
-Landroid/telephony/SubscriptionManager;->isValidSlotIndex(I)Z
-Landroid/telephony/SubscriptionManager;->isValidSubscriptionId(I)Z
-Landroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;I)V
-Landroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;II)V
-Landroid/telephony/SubscriptionManager;->setDisplayName(Ljava/lang/String;IJ)I
-Landroid/telephony/SubscriptionManager;->setIconTint(II)I
-Landroid/telephony/TelephonyManager$MultiSimVariants;->DSDA:Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager$MultiSimVariants;->DSDS:Landroid/telephony/TelephonyManager$MultiSimVariants;
-Landroid/telephony/TelephonyManager;->getIntAtIndex(Landroid/content/ContentResolver;Ljava/lang/String;I)I
-Landroid/telephony/TelephonyManager;->getIsimDomain()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getNetworkTypeName()Ljava/lang/String;
-Landroid/telephony/TelephonyManager;->getPreferredNetworkType(I)I
-Landroid/telephony/TelephonyManager;->getServiceStateForSubscriber(I)Landroid/telephony/ServiceState;
-Landroid/telephony/TelephonyManager;->getVoiceMessageCount()I
-Landroid/telephony/TelephonyManager;->getVoiceNetworkType(I)I
-Landroid/telephony/TelephonyManager;->isImsRegistered()Z
-Landroid/telephony/TelephonyManager;->nvResetConfig(I)Z
-Landroid/telephony/TelephonyManager;->putIntAtIndex(Landroid/content/ContentResolver;Ljava/lang/String;II)Z
-Landroid/telephony/TelephonyManager;->setPreferredNetworkType(II)Z
-Landroid/view/AppTransitionAnimationSpec;-><init>(ILandroid/graphics/GraphicBuffer;Landroid/graphics/Rect;)V
-Landroid/view/BatchedInputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;Landroid/view/Choreographer;)V
-Landroid/view/Choreographer;->getSfInstance()Landroid/view/Choreographer;
-Landroid/view/DisplayListCanvas;->drawRenderNode(Landroid/view/RenderNode;)V
 Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;-><init>()V
-Landroid/view/InputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
 Landroid/view/IRecentsAnimationController;->finish(Z)V
 Landroid/view/IRecentsAnimationController;->screenshotTask(I)Landroid/app/ActivityManager$TaskSnapshot;
 Landroid/view/IRecentsAnimationController;->setInputConsumerEnabled(Z)V
@@ -269,41 +166,6 @@
 Landroid/view/IWindowManager;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V
 Landroid/view/IWindowManager;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;)V
 Landroid/view/IWindowManager;->setNavBarVirtualKeyHapticFeedbackEnabled(Z)V
-Landroid/view/RemoteAnimationAdapter;-><init>(Landroid/view/IRemoteAnimationRunner;JJ)V
-Landroid/view/RemoteAnimationDefinition;-><init>()V
-Landroid/view/RemoteAnimationDefinition;->addRemoteAnimation(ILandroid/view/RemoteAnimationAdapter;)V
-Landroid/view/RenderNode;->create(Ljava/lang/String;Landroid/view/View;)Landroid/view/RenderNode;
-Landroid/view/RenderNode;->end(Landroid/view/DisplayListCanvas;)V
-Landroid/view/RenderNode;->isValid()Z
-Landroid/view/RenderNode;->setClipToBounds(Z)Z
-Landroid/view/RenderNode;->setLeftTopRightBottom(IIII)Z
-Landroid/view/RenderNode;->start(II)Landroid/view/DisplayListCanvas;
-Landroid/view/Surface;->getNextFrameNumber()J
-Landroid/view/SurfaceControl$Transaction;-><init>()V
-Landroid/view/SurfaceControl$Transaction;->apply()V
-Landroid/view/SurfaceControl$Transaction;->deferTransactionUntil(Landroid/view/SurfaceControl;Landroid/os/IBinder;J)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->deferTransactionUntilSurface(Landroid/view/SurfaceControl;Landroid/view/Surface;J)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->hide(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setAlpha(Landroid/view/SurfaceControl;F)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setColor(Landroid/view/SurfaceControl;[F)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setFinalCrop(Landroid/view/SurfaceControl;Landroid/graphics/Rect;)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setLayer(Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setMatrix(Landroid/view/SurfaceControl;FFFF)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setMatrix(Landroid/view/SurfaceControl;Landroid/graphics/Matrix;[F)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setPosition(Landroid/view/SurfaceControl;FF)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setSize(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->setWindowCrop(Landroid/view/SurfaceControl;Landroid/graphics/Rect;)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/SurfaceControl$Transaction;->show(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
-Landroid/view/ThreadedRenderer;->createHardwareBitmap(Landroid/view/RenderNode;II)Landroid/graphics/Bitmap;
-Landroid/view/View;->hideTooltip()V
-Landroid/view/View;->setTooltip(Ljava/lang/CharSequence;)V
-Landroid/webkit/WebSettings;->getPluginsPath()Ljava/lang/String;
-Landroid/webkit/WebSettings;->getUseDoubleTree()Z
-Landroid/webkit/WebSettings;->setPluginsPath(Ljava/lang/String;)V
-Landroid/webkit/WebSettings;->setUseDoubleTree(Z)V
-Landroid/webkit/WebView;->getPluginList()Landroid/webkit/PluginList;
-Landroid/webkit/WebView;->getZoomControls()Landroid/view/View;
-Landroid/webkit/WebView;->refreshPlugins(Z)V
 Landroid/widget/ListView;->lookForSelectablePosition(IZ)I
 Lcom/android/ims/ImsConfigListener;->onSetFeatureResponse(IIII)V
 Lcom/android/ims/internal/IImsCallSessionListener;->callSessionConferenceStateUpdated(Lcom/android/ims/internal/IImsCallSession;Landroid/telephony/ims/ImsConferenceState;)V
diff --git a/config/preloaded-classes b/config/preloaded-classes
index 0014793..63c583f 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -6236,9 +6236,9 @@
 org.json.JSONStringer
 org.json.JSONStringer$Scope
 org.json.JSONTokener
-org.kxml2.io.KXmlParser
-org.kxml2.io.KXmlParser$ValueContext
-org.kxml2.io.KXmlSerializer
+com.android.org.kxml2.io.KXmlParser
+com.android.org.kxml2.io.KXmlParser$ValueContext
+com.android.org.kxml2.io.KXmlSerializer
 org.w3c.dom.CharacterData
 org.w3c.dom.DOMImplementation
 org.w3c.dom.Document
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 63ffa8b..c12d8e2 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -3360,7 +3360,7 @@
      * @see #forceStopPackageAsUser(String, int)
      * @hide
      */
-    @SystemApi
+    @SystemApi @TestApi
     @RequiresPermission(Manifest.permission.FORCE_STOP_PACKAGES)
     public void forceStopPackage(String packageName) {
         forceStopPackageAsUser(packageName, mContext.getUserId());
@@ -3987,6 +3987,19 @@
     }
 
     /**
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(Manifest.permission.CHANGE_CONFIGURATION)
+    public void scheduleApplicationInfoChanged(List<String> packages, int userId) {
+        try {
+            getService().scheduleApplicationInfoChanged(packages, userId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * The AppTask allows you to manage your own application's tasks.
      * See {@link android.app.ActivityManager#getAppTasks()}
      */
diff --git a/core/java/android/app/ActivityTaskManager.java b/core/java/android/app/ActivityTaskManager.java
index 2f18b89..af8aa4e 100644
--- a/core/java/android/app/ActivityTaskManager.java
+++ b/core/java/android/app/ActivityTaskManager.java
@@ -29,6 +29,8 @@
 import android.os.ServiceManager;
 import android.util.Singleton;
 
+import java.util.List;
+
 /**
  * This class gives information about, and interacts with activities and their containers like task,
  * stacks, and displays.
@@ -263,4 +265,140 @@
                 && Resources.getSystem().getBoolean(
                 com.android.internal.R.bool.config_supportsSplitScreenMultiWindow);
     }
+
+    /**
+     * Moves the top activity in the input stackId to the pinned stack.
+     * @param stackId Id of stack to move the top activity to pinned stack.
+     * @param bounds Bounds to use for pinned stack.
+     * @return True if the top activity of stack was successfully moved to the pinned stack.
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public boolean moveTopActivityToPinnedStack(int stackId, Rect bounds) {
+        try {
+            return getService().moveTopActivityToPinnedStack(stackId, bounds);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Start to enter lock task mode for given task by system(UI).
+     * @param taskId Id of task to lock.
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public void startSystemLockTaskMode(int taskId) {
+        try {
+            getService().startSystemLockTaskMode(taskId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Stop lock task mode by system(UI).
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public void stopSystemLockTaskMode() {
+        try {
+            getService().stopSystemLockTaskMode();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Move task to stack with given id.
+     * @param taskId Id of the task to move.
+     * @param stackId Id of the stack for task moving.
+     * @param toTop Whether the given task should shown to top of stack.
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public void moveTaskToStack(int taskId, int stackId, boolean toTop) {
+        try {
+            getService().moveTaskToStack(taskId, stackId, toTop);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Resize the input stack id to the given bounds with animate setting.
+     * @param stackId Id of the stack to resize.
+     * @param bounds Bounds to resize the stack to or {@code null} for fullscreen.
+     * @param animate Whether we should play an animation for resizing stack.
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public void resizeStack(int stackId, Rect bounds, boolean animate) {
+        try {
+            getService().resizeStack(stackId, bounds, false, false, animate /* animate */,
+                    -1 /* animationDuration */);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Resize task to given bounds.
+     * @param taskId Id of task to resize.
+     * @param bounds Bounds to resize task.
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public void resizeTask(int taskId, Rect bounds) {
+        try {
+            getService().resizeTask(taskId, bounds, RESIZE_MODE_SYSTEM);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Resize docked stack & its task to given stack & task bounds.
+     * @param stackBounds Bounds to resize stack.
+     * @param taskBounds Bounds to resize task.
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public void resizeDockedStack(Rect stackBounds, Rect taskBounds) {
+        try {
+            getService().resizeDockedStack(stackBounds, taskBounds, null, null, null);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * List all activity stacks information.
+     * @hide
+     */
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public String listAllStacks() {
+        final List<ActivityManager.StackInfo> stacks;
+        try {
+            stacks = getService().getAllStackInfos();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+
+        final StringBuilder sb = new StringBuilder();
+        if (stacks != null) {
+            for (ActivityManager.StackInfo info : stacks) {
+                sb.append(info).append("\n");
+            }
+        }
+        return sb.toString();
+    }
 }
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java
index 6d1383a..2d9fbf9 100644
--- a/core/java/android/app/ResourcesManager.java
+++ b/core/java/android/app/ResourcesManager.java
@@ -125,7 +125,7 @@
         }
     }
 
-    private static final boolean ENABLE_APK_ASSETS_CACHE = true;
+    private static final boolean ENABLE_APK_ASSETS_CACHE = false;
 
     /**
      * The ApkAssets we are caching and intend to hold strong references to.
diff --git a/core/java/android/app/job/JobSnapshot.java b/core/java/android/app/job/JobSnapshot.java
index d6cc70d..ceeaab7 100644
--- a/core/java/android/app/job/JobSnapshot.java
+++ b/core/java/android/app/job/JobSnapshot.java
@@ -50,6 +50,14 @@
     }
 
     /**
+     * Returning JobInfo bound to this snapshot
+     * @return JobInfo of this snapshot
+     */
+    public JobInfo getJobInfo() {
+        return mJob;
+    }
+
+    /**
      * Is this job actually runnable at this moment?
      */
     public boolean isRunnable() {
@@ -77,7 +85,7 @@
      */
     public boolean isRequireDeviceIdleSatisfied() {
         return !mJob.isRequireDeviceIdle()
-                || satisfied(JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW);
+                || satisfied(JobInfo.CONSTRAINT_FLAG_DEVICE_IDLE);
     }
 
     public boolean isRequireStorageNotLowSatisfied() {
diff --git a/core/java/android/os/Debug.java b/core/java/android/os/Debug.java
index e606964..6ddcbe0 100644
--- a/core/java/android/os/Debug.java
+++ b/core/java/android/os/Debug.java
@@ -1752,13 +1752,13 @@
     public static native long getPss();
 
     /**
-     * Retrieves the PSS memory used by the process as given by the
-     * smaps.  Optionally supply a long array of 2 entries to also
-     * receive the Uss and SwapPss of the process, and another array to also
-     * retrieve the separate memtrack size.
+     * Retrieves the PSS memory used by the process as given by the smaps. Optionally supply a long
+     * array of up to 3 entries to also receive (up to 3 values in order): the Uss and SwapPss and
+     * Rss (only filled in as of {@link android.os.Build.VERSION_CODES#P}) of the process, and
+     * another array to also retrieve the separate memtrack size.
      * @hide
      */
-    public static native long getPss(int pid, long[] outUssSwapPss, long[] outMemtrack);
+    public static native long getPss(int pid, long[] outUssSwapPssRss, long[] outMemtrack);
 
     /** @hide */
     public static final int MEMINFO_TOTAL = 0;
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl
index 13e4e38..7ceeb52 100644
--- a/core/java/android/os/IPowerManager.aidl
+++ b/core/java/android/os/IPowerManager.aidl
@@ -56,6 +56,7 @@
     void shutdown(boolean confirm, String reason, boolean wait);
     void crash(String message);
     int getLastShutdownReason();
+    int getLastSleepReason();
 
     void setStayOnSetting(int val);
     void boostScreenBrightness(long time);
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index 463a6aa..89a5def 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -397,6 +397,23 @@
     public static final int GO_TO_SLEEP_REASON_ACCESSIBILITY = 7;
 
     /**
+     * @hide
+     */
+    public static String sleepReasonToString(int sleepReason) {
+        switch (sleepReason) {
+            case GO_TO_SLEEP_REASON_APPLICATION: return "application";
+            case GO_TO_SLEEP_REASON_DEVICE_ADMIN: return "device_admin";
+            case GO_TO_SLEEP_REASON_TIMEOUT: return "timeout";
+            case GO_TO_SLEEP_REASON_LID_SWITCH: return "lid_switch";
+            case GO_TO_SLEEP_REASON_POWER_BUTTON: return "power_button";
+            case GO_TO_SLEEP_REASON_HDMI: return "hdmi";
+            case GO_TO_SLEEP_REASON_SLEEP_BUTTON: return "sleep_button";
+            case GO_TO_SLEEP_REASON_ACCESSIBILITY: return "accessibility";
+            default: return Integer.toString(sleepReason);
+        }
+    }
+
+    /**
      * Go to sleep flag: Skip dozing state and directly go to full sleep.
      * @hide
      */
@@ -1310,6 +1327,22 @@
     }
 
     /**
+     * Returns the reason the device last went to sleep (i.e. the last value of
+     * the second argument of {@link #goToSleep(long, int, int) goToSleep}).
+     *
+     * @return One of the {@code GO_TO_SLEEP_REASON_*} constants.
+     *
+     * @hide
+     */
+    public int getLastSleepReason() {
+        try {
+            return mService.getLastSleepReason();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Intent that is broadcast when the state of {@link #isPowerSaveMode()} changes.
      * This broadcast is only sent to registered receivers.
      */
diff --git a/core/java/android/preference/DialogPreference.java b/core/java/android/preference/DialogPreference.java
index ed29f74..4b5a7b4 100644
--- a/core/java/android/preference/DialogPreference.java
+++ b/core/java/android/preference/DialogPreference.java
@@ -20,6 +20,7 @@
 import android.annotation.CallSuper;
 import android.annotation.DrawableRes;
 import android.annotation.StringRes;
+import android.annotation.UnsupportedAppUsage;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
@@ -53,19 +54,27 @@
 public abstract class DialogPreference extends Preference implements
         DialogInterface.OnClickListener, DialogInterface.OnDismissListener,
         PreferenceManager.OnActivityDestroyListener {
+    @UnsupportedAppUsage
     private AlertDialog.Builder mBuilder;
 
+    @UnsupportedAppUsage
     private CharSequence mDialogTitle;
+    @UnsupportedAppUsage
     private CharSequence mDialogMessage;
+    @UnsupportedAppUsage
     private Drawable mDialogIcon;
+    @UnsupportedAppUsage
     private CharSequence mPositiveButtonText;
+    @UnsupportedAppUsage
     private CharSequence mNegativeButtonText;
     private int mDialogLayoutResId;
 
     /** The dialog, if it is showing. */
+    @UnsupportedAppUsage
     private Dialog mDialog;
 
     /** Which button was clicked. */
+    @UnsupportedAppUsage
     private int mWhichButtonClicked;
 
     /** Dismiss the dialog on the UI thread, but not inline with handlers */
diff --git a/core/java/android/preference/EditTextPreference.java b/core/java/android/preference/EditTextPreference.java
index 9467c22..4d2ac67 100644
--- a/core/java/android/preference/EditTextPreference.java
+++ b/core/java/android/preference/EditTextPreference.java
@@ -17,6 +17,7 @@
 package android.preference;
 
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.res.TypedArray;
@@ -46,6 +47,7 @@
     /**
      * The edit text shown in the dialog.
      */
+    @UnsupportedAppUsage
     private EditText mEditText;
     
     private String mText;
diff --git a/core/java/android/preference/ListPreference.java b/core/java/android/preference/ListPreference.java
index f9323ed..c0c71af 100644
--- a/core/java/android/preference/ListPreference.java
+++ b/core/java/android/preference/ListPreference.java
@@ -17,6 +17,7 @@
 package android.preference;
 
 import android.annotation.ArrayRes;
+import android.annotation.UnsupportedAppUsage;
 import android.app.AlertDialog.Builder;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -41,6 +42,7 @@
     private CharSequence[] mEntryValues;
     private String mValue;
     private String mSummary;
+    @UnsupportedAppUsage
     private int mClickedDialogEntryIndex;
     private boolean mValueSet;
 
diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java
index 4306bc4..98b69a8 100644
--- a/core/java/android/preference/Preference.java
+++ b/core/java/android/preference/Preference.java
@@ -21,6 +21,7 @@
 import android.annotation.LayoutRes;
 import android.annotation.Nullable;
 import android.annotation.StringRes;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.Intent;
 import android.content.SharedPreferences;
@@ -116,6 +117,7 @@
     private int mOrder = DEFAULT_ORDER;
     private CharSequence mTitle;
     private int mTitleRes;
+    @UnsupportedAppUsage
     private CharSequence mSummary;
     /**
      * mIconResId is overridden by mIcon, if mIcon is specified.
@@ -144,7 +146,9 @@
      */
     private boolean mShouldDisableView = true;
 
+    @UnsupportedAppUsage
     private int mLayoutResId = com.android.internal.R.layout.preference;
+    @UnsupportedAppUsage
     private int mWidgetLayoutResId;
 
     private OnPreferenceChangeInternalListener mListener;
@@ -974,6 +978,7 @@
      *
      * @return A unique ID for this Preference.
      */
+    @UnsupportedAppUsage
     long getId() {
         return mId;
     }
@@ -1126,6 +1131,7 @@
      *            processing). May be {@code null}.
      * @hide
      */
+    @UnsupportedAppUsage
     public void performClick(PreferenceScreen preferenceScreen) {
 
         if (!isEnabled()) {
@@ -1161,6 +1167,7 @@
      * @return True if the Preference handled the key. Returns false by default.
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean onKey(View v, int keyCode, KeyEvent event) {
         return false;
     }
@@ -1281,6 +1288,7 @@
      * @param listener The listener.
      * @see #notifyChanged()
      */
+    @UnsupportedAppUsage
     final void setOnPreferenceChangeInternalListener(OnPreferenceChangeInternalListener listener) {
         mListener = listener;
     }
@@ -1399,6 +1407,7 @@
      * @param dependent The dependent Preference that will be enabled/disabled
      *            according to the state of this Preference.
      */
+    @UnsupportedAppUsage
     private void registerDependent(Preference dependent) {
         if (mDependents == null) {
             mDependents = new ArrayList<Preference>();
diff --git a/core/java/android/preference/PreferenceActivity.java b/core/java/android/preference/PreferenceActivity.java
index 257f2cf..8ed2605 100644
--- a/core/java/android/preference/PreferenceActivity.java
+++ b/core/java/android/preference/PreferenceActivity.java
@@ -19,6 +19,7 @@
 import android.animation.LayoutTransition;
 import android.annotation.Nullable;
 import android.annotation.StringRes;
+import android.annotation.UnsupportedAppUsage;
 import android.annotation.XmlRes;
 import android.app.Fragment;
 import android.app.FragmentBreadCrumbs;
@@ -198,6 +199,7 @@
 
     private FrameLayout mListFooter;
 
+    @UnsupportedAppUsage
     private ViewGroup mPrefsContainer;
 
     // Backup of the original activity title. This is used when navigating back to the headers list
@@ -215,6 +217,7 @@
 
     // --- State for old mode when showing a single preference list
 
+    @UnsupportedAppUsage
     private PreferenceManager mPreferenceManager;
 
     private Bundle mSavedInstanceState;
@@ -739,6 +742,7 @@
      * Returns the Header list
      * @hide
      */
+    @UnsupportedAppUsage
     public List<Header> getHeaders() {
         return mHeaders;
     }
@@ -1441,6 +1445,7 @@
      * Binding late is preferred as any custom preference types created in
      * {@link #onCreate(Bundle)} are able to have their views recycled.
      */
+    @UnsupportedAppUsage
     private void postBindPreferences() {
         if (mHandler.hasMessages(MSG_BIND_PREFERENCES)) return;
         mHandler.obtainMessage(MSG_BIND_PREFERENCES).sendToTarget();
@@ -1469,6 +1474,7 @@
         return mPreferenceManager;
     }
 
+    @UnsupportedAppUsage
     private void requirePreferenceManager() {
         if (mPreferenceManager == null) {
             if (mAdapter == null) {
diff --git a/core/java/android/preference/PreferenceFragment.java b/core/java/android/preference/PreferenceFragment.java
index 4c556ef..548895e 100644
--- a/core/java/android/preference/PreferenceFragment.java
+++ b/core/java/android/preference/PreferenceFragment.java
@@ -17,6 +17,7 @@
 package android.preference;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.annotation.XmlRes;
 import android.app.Activity;
 import android.app.Fragment;
@@ -113,6 +114,7 @@
 
     private static final String PREFERENCES_TAG = "android:preferences";
 
+    @UnsupportedAppUsage
     private PreferenceManager mPreferenceManager;
     private ListView mList;
     private boolean mHavePrefs;
@@ -402,6 +404,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public ListView getListView() {
         ensureList();
         return mList;
diff --git a/core/java/android/preference/PreferenceManager.java b/core/java/android/preference/PreferenceManager.java
index 6095e6f..c76c8d3 100644
--- a/core/java/android/preference/PreferenceManager.java
+++ b/core/java/android/preference/PreferenceManager.java
@@ -18,6 +18,7 @@
 
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.annotation.XmlRes;
 import android.app.Activity;
 import android.content.Context;
@@ -67,6 +68,7 @@
      * Fragment that owns this instance.
      */
     @Nullable
+    @UnsupportedAppUsage
     private PreferenceFragment mFragment;
 
     /**
@@ -90,6 +92,7 @@
      * Cached shared preferences.
      */
     @Nullable
+    @UnsupportedAppUsage
     private SharedPreferences mSharedPreferences;
 
     /**
@@ -152,6 +155,7 @@
      * List of activity destroy listeners.
      */
     @Nullable
+    @UnsupportedAppUsage
     private List<OnActivityDestroyListener> mActivityDestroyListeners;
 
     /**
@@ -161,11 +165,13 @@
     @Nullable
     private List<DialogInterface> mPreferencesScreens;
 
+    @UnsupportedAppUsage
     private OnPreferenceTreeClickListener mOnPreferenceTreeClickListener;
 
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public PreferenceManager(Activity activity, int firstRequestCode) {
         mActivity = activity;
         mNextRequestCode = firstRequestCode;
@@ -181,6 +187,7 @@
      * should be used ANY time a preference will be displayed, since some preference
      * types need an Activity for managed queries.
      */
+    @UnsupportedAppUsage
     /*package*/ PreferenceManager(Context context) {
         init(context);
     }
@@ -194,6 +201,7 @@
     /**
      * Sets the owning preference fragment
      */
+    @UnsupportedAppUsage
     void setFragment(PreferenceFragment fragment) {
         mFragment = fragment;
     }
@@ -202,6 +210,7 @@
      * Returns the owning preference fragment, if any.
      */
     @Nullable
+    @UnsupportedAppUsage
     PreferenceFragment getFragment() {
         return mFragment;
     }
@@ -260,6 +269,7 @@
      * @return The root hierarchy (if one was not provided, the new hierarchy's
      *         root).
      */
+    @UnsupportedAppUsage
     PreferenceScreen inflateFromIntent(Intent queryIntent, PreferenceScreen rootPreferences) {
         final List<ResolveInfo> activities = queryIntentActivities(queryIntent);
         final HashSet<String> inflatedRes = new HashSet<String>();
@@ -315,6 +325,7 @@
      *         root).
      * @hide
      */
+    @UnsupportedAppUsage
     public PreferenceScreen inflateFromResource(Context context, @XmlRes int resId,
             PreferenceScreen rootPreferences) {
         // Block commits
@@ -546,6 +557,7 @@
      * @return The {@link PreferenceScreen} object that is at the root of the hierarchy.
      */
     @Nullable
+    @UnsupportedAppUsage
     PreferenceScreen getPreferenceScreen() {
         return mPreferenceScreen;
     }
@@ -556,6 +568,7 @@
      * @param preferenceScreen The root {@link PreferenceScreen} of the preference hierarchy.
      * @return Whether the {@link PreferenceScreen} given is different than the previous.
      */
+    @UnsupportedAppUsage
     boolean setPreferences(PreferenceScreen preferenceScreen) {
         if (preferenceScreen != mPreferenceScreen) {
             mPreferenceScreen = preferenceScreen;
@@ -670,6 +683,7 @@
      *         has been set, this method returns {@code null}.
      * @see #shouldCommit()
      */
+    @UnsupportedAppUsage
     SharedPreferences.Editor getEditor() {
         if (mPreferenceDataStore != null) {
             return null;
@@ -695,10 +709,12 @@
      *
      * @return Whether the client should commit.
      */
+    @UnsupportedAppUsage
     boolean shouldCommit() {
         return !mNoCommit;
     }
 
+    @UnsupportedAppUsage
     private void setNoCommit(boolean noCommit) {
         if (!noCommit && mEditor != null) {
             try {
@@ -725,6 +741,7 @@
      * @see #mContext
      */
     @Nullable
+    @UnsupportedAppUsage
     Activity getActivity() {
         return mActivity;
     }
@@ -744,6 +761,7 @@
      *
      * @see OnActivityResultListener
      */
+    @UnsupportedAppUsage
     void registerOnActivityResultListener(OnActivityResultListener listener) {
         synchronized (this) {
             if (mActivityResultListeners == null) {
@@ -761,6 +779,7 @@
      *
      * @see OnActivityResultListener
      */
+    @UnsupportedAppUsage
     void unregisterOnActivityResultListener(OnActivityResultListener listener) {
         synchronized (this) {
             if (mActivityResultListeners != null) {
@@ -772,6 +791,7 @@
     /**
      * Called by the {@link PreferenceManager} to dispatch a subactivity result.
      */
+    @UnsupportedAppUsage
     void dispatchActivityResult(int requestCode, int resultCode, Intent data) {
         List<OnActivityResultListener> list;
 
@@ -794,6 +814,7 @@
      * @see OnActivityStopListener
      * @hide
      */
+    @UnsupportedAppUsage
     public void registerOnActivityStopListener(OnActivityStopListener listener) {
         synchronized (this) {
             if (mActivityStopListeners == null) {
@@ -812,6 +833,7 @@
      * @see OnActivityStopListener
      * @hide
      */
+    @UnsupportedAppUsage
     public void unregisterOnActivityStopListener(OnActivityStopListener listener) {
         synchronized (this) {
             if (mActivityStopListeners != null) {
@@ -824,6 +846,7 @@
      * Called by the {@link PreferenceManager} to dispatch the activity stop
      * event.
      */
+    @UnsupportedAppUsage
     void dispatchActivityStop() {
         List<OnActivityStopListener> list;
 
@@ -843,6 +866,7 @@
      *
      * @see OnActivityDestroyListener
      */
+    @UnsupportedAppUsage
     void registerOnActivityDestroyListener(OnActivityDestroyListener listener) {
         synchronized (this) {
             if (mActivityDestroyListeners == null) {
@@ -860,6 +884,7 @@
      *
      * @see OnActivityDestroyListener
      */
+    @UnsupportedAppUsage
     void unregisterOnActivityDestroyListener(OnActivityDestroyListener listener) {
         synchronized (this) {
             if (mActivityDestroyListeners != null) {
@@ -872,6 +897,7 @@
      * Called by the {@link PreferenceManager} to dispatch the activity destroy
      * event.
      */
+    @UnsupportedAppUsage
     void dispatchActivityDestroy() {
         List<OnActivityDestroyListener> list = null;
 
@@ -899,6 +925,7 @@
      * @return A unique request code that will never be used by anyone other
      *         than the caller of this method.
      */
+    @UnsupportedAppUsage
     int getNextRequestCode() {
         synchronized (this) {
             return mNextRequestCode++;
diff --git a/core/java/android/preference/PreferenceScreen.java b/core/java/android/preference/PreferenceScreen.java
index 2305b05..dd00a53 100644
--- a/core/java/android/preference/PreferenceScreen.java
+++ b/core/java/android/preference/PreferenceScreen.java
@@ -16,6 +16,7 @@
 
 package android.preference;
 
+import android.annotation.UnsupportedAppUsage;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -89,10 +90,12 @@
 public final class PreferenceScreen extends PreferenceGroup implements AdapterView.OnItemClickListener,
         DialogInterface.OnDismissListener {
 
+    @UnsupportedAppUsage
     private ListAdapter mRootAdapter;
     
     private Dialog mDialog;
 
+    @UnsupportedAppUsage
     private ListView mListView;
 
     private int mLayoutResId = com.android.internal.R.layout.preference_list_fragment;
@@ -103,6 +106,7 @@
      * Do NOT use this constructor, use {@link PreferenceManager#createPreferenceScreen(Context)}.
      * @hide-
      */
+    @UnsupportedAppUsage
     public PreferenceScreen(Context context, AttributeSet attrs) {
         super(context, attrs, com.android.internal.R.attr.preferenceScreenStyle);
 
diff --git a/core/java/android/preference/RingtonePreference.java b/core/java/android/preference/RingtonePreference.java
index a76bb09..cd751cd 100644
--- a/core/java/android/preference/RingtonePreference.java
+++ b/core/java/android/preference/RingtonePreference.java
@@ -16,6 +16,7 @@
 
 package android.preference;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.TypedArray;
@@ -49,6 +50,7 @@
     private boolean mShowDefault;
     private boolean mShowSilent;
     
+    @UnsupportedAppUsage
     private int mRequestCode;
 
     public RingtonePreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
diff --git a/core/java/android/preference/SeekBarDialogPreference.java b/core/java/android/preference/SeekBarDialogPreference.java
index eeb69a3..a8e5992 100644
--- a/core/java/android/preference/SeekBarDialogPreference.java
+++ b/core/java/android/preference/SeekBarDialogPreference.java
@@ -16,6 +16,7 @@
 
 package android.preference;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.util.AttributeSet;
@@ -47,6 +48,7 @@
         this(context, attrs, defStyleAttr, 0);
     }
 
+    @UnsupportedAppUsage
     public SeekBarDialogPreference(Context context, AttributeSet attrs) {
         this(context, attrs, R.attr.seekBarDialogPreferenceStyle);
     }
diff --git a/core/java/android/preference/SeekBarPreference.java b/core/java/android/preference/SeekBarPreference.java
index 1fabf3d..cd35f3d 100644
--- a/core/java/android/preference/SeekBarPreference.java
+++ b/core/java/android/preference/SeekBarPreference.java
@@ -16,6 +16,7 @@
 
 package android.preference;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.os.Parcel;
@@ -55,14 +56,17 @@
         setLayoutResource(layoutResId);
     }
 
+    @UnsupportedAppUsage
     public SeekBarPreference(Context context, AttributeSet attrs, int defStyleAttr) {
         this(context, attrs, defStyleAttr, 0);
     }
 
+    @UnsupportedAppUsage
     public SeekBarPreference(Context context, AttributeSet attrs) {
         this(context, attrs, com.android.internal.R.attr.seekBarPreferenceStyle);
     }
 
+    @UnsupportedAppUsage
     public SeekBarPreference(Context context) {
         this(context, null);
     }
diff --git a/core/java/android/preference/SeekBarVolumizer.java b/core/java/android/preference/SeekBarVolumizer.java
index 2a094bb..ad7b103 100644
--- a/core/java/android/preference/SeekBarVolumizer.java
+++ b/core/java/android/preference/SeekBarVolumizer.java
@@ -16,6 +16,7 @@
 
 package android.preference;
 
+import android.annotation.UnsupportedAppUsage;
 import android.app.NotificationManager;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -54,12 +55,15 @@
         void onMuted(boolean muted, boolean zenMuted);
     }
 
+    @UnsupportedAppUsage
     private final Context mContext;
     private final H mUiHandler = new H();
     private final Callback mCallback;
     private final Uri mDefaultUri;
+    @UnsupportedAppUsage
     private final AudioManager mAudioManager;
     private final NotificationManager mNotificationManager;
+    @UnsupportedAppUsage
     private final int mStreamType;
     private final int mMaxStreamVolume;
     private boolean mAffectedByRingerMode;
@@ -68,19 +72,24 @@
 
     private Handler mHandler;
     private Observer mVolumeObserver;
+    @UnsupportedAppUsage
     private int mOriginalStreamVolume;
     private int mLastAudibleStreamVolume;
     // When the old handler is destroyed and a new one is created, there could be a situation where
     // this is accessed at the same time in different handlers. So, access to this field needs to be
     // synchronized.
     @GuardedBy("this")
+    @UnsupportedAppUsage
     private Ringtone mRingtone;
+    @UnsupportedAppUsage
     private int mLastProgress = -1;
     private boolean mMuted;
+    @UnsupportedAppUsage
     private SeekBar mSeekBar;
     private int mVolumeBeforeMute = -1;
     private int mRingerMode;
     private int mZenMode;
+    private boolean mPlaySample;
 
     private static final int MSG_SET_STREAM_VOLUME = 0;
     private static final int MSG_START_SAMPLE = 1;
@@ -93,7 +102,17 @@
     private boolean mAllowMedia;
     private boolean mAllowRinger;
 
+    @UnsupportedAppUsage
     public SeekBarVolumizer(Context context, int streamType, Uri defaultUri, Callback callback) {
+        this(context, streamType, defaultUri, callback, true);
+    }
+
+    public SeekBarVolumizer(
+            Context context,
+            int streamType,
+            Uri defaultUri,
+            Callback callback,
+            boolean playSample) {
         mContext = context;
         mAudioManager = context.getSystemService(AudioManager.class);
         mNotificationManager = context.getSystemService(NotificationManager.class);
@@ -116,6 +135,7 @@
         mOriginalStreamVolume = mAudioManager.getStreamVolume(mStreamType);
         mLastAudibleStreamVolume = mAudioManager.getLastAudibleStreamVolume(mStreamType);
         mMuted = mAudioManager.isStreamMute(mStreamType);
+        mPlaySample = playSample;
         if (mCallback != null) {
             mCallback.onMuted(mMuted, isZenMuted());
         }
@@ -190,13 +210,19 @@
                         AudioManager.FLAG_SHOW_UI_WARNINGS);
                 break;
             case MSG_START_SAMPLE:
-                onStartSample();
+                if (mPlaySample) {
+                    onStartSample();
+                }
                 break;
             case MSG_STOP_SAMPLE:
-                onStopSample();
+                if (mPlaySample) {
+                    onStopSample();
+                }
                 break;
             case MSG_INIT_SAMPLE:
-                onInitSample();
+                if (mPlaySample) {
+                    onInitSample();
+                }
                 break;
             default:
                 Log.e(TAG, "invalid SeekBarVolumizer message: "+msg.what);
@@ -258,6 +284,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void stop() {
         if (mHandler == null) return;  // already stopped
         postStopSample();
diff --git a/core/java/android/preference/SwitchPreference.java b/core/java/android/preference/SwitchPreference.java
index aa8674e..1ec18bb 100644
--- a/core/java/android/preference/SwitchPreference.java
+++ b/core/java/android/preference/SwitchPreference.java
@@ -17,6 +17,7 @@
 package android.preference;
 
 import android.annotation.StringRes;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.TypedArray;
 import android.util.AttributeSet;
@@ -37,6 +38,7 @@
  * @attr ref android.R.styleable#SwitchPreference_disableDependentsState
  */
 public class SwitchPreference extends TwoStatePreference {
+    @UnsupportedAppUsage
     private final Listener mListener = new Listener();
 
     // Switch text for on and off states
diff --git a/core/java/android/preference/TwoStatePreference.java b/core/java/android/preference/TwoStatePreference.java
index 7037aca..2079a63 100644
--- a/core/java/android/preference/TwoStatePreference.java
+++ b/core/java/android/preference/TwoStatePreference.java
@@ -17,6 +17,7 @@
 package android.preference;
 
 import android.annotation.StringRes;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.content.res.TypedArray;
@@ -193,6 +194,7 @@
      * Sync a summary view contained within view's subhierarchy with the correct summary text.
      * @param view View where a summary should be located
      */
+    @UnsupportedAppUsage
     void syncSummaryView(View view) {
         // Sync the summary view
         TextView summaryView = (TextView) view.findViewById(com.android.internal.R.id.summary);
diff --git a/core/java/android/preference/VolumePreference.java b/core/java/android/preference/VolumePreference.java
index 8a66c24..ea1d1eb 100644
--- a/core/java/android/preference/VolumePreference.java
+++ b/core/java/android/preference/VolumePreference.java
@@ -16,6 +16,7 @@
 
 package android.preference;
 
+import android.annotation.UnsupportedAppUsage;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -33,6 +34,7 @@
  */
 public class VolumePreference extends SeekBarDialogPreference implements
         PreferenceManager.OnActivityStopListener, View.OnKeyListener, SeekBarVolumizer.Callback {
+    @UnsupportedAppUsage
     private int mStreamType;
 
     /** May be null if the dialog isn't visible. */
@@ -52,6 +54,7 @@
         this(context, attrs, defStyleAttr, 0);
     }
 
+    @UnsupportedAppUsage
     public VolumePreference(Context context, AttributeSet attrs) {
         this(context, attrs, R.attr.seekBarDialogPreferenceStyle);
     }
@@ -196,7 +199,9 @@
     }
 
     public static class VolumeStore {
+        @UnsupportedAppUsage
         public int volume = -1;
+        @UnsupportedAppUsage
         public int originalVolume = -1;
     }
 
diff --git a/core/java/android/service/autofill/UserData.java b/core/java/android/service/autofill/UserData.java
index 55aecdd..fccb85b 100644
--- a/core/java/android/service/autofill/UserData.java
+++ b/core/java/android/service/autofill/UserData.java
@@ -145,6 +145,9 @@
 
         // Non-persistent array used to limit the number of unique ids.
         private final ArraySet<String> mUniqueCategoryIds;
+        // Non-persistent array used to ignore duplaicated value/category pairs.
+        private final ArraySet<String> mUniqueValueCategoryPairs;
+
 
         /**
          * Creates a new builder for the user data used for <a href="#FieldClassification">field
@@ -185,6 +188,7 @@
             final int maxUserDataSize = getMaxUserDataSize();
             mCategoryIds = new ArrayList<>(maxUserDataSize);
             mValues = new ArrayList<>(maxUserDataSize);
+            mUniqueValueCategoryPairs = new ArraySet<>(maxUserDataSize);
             mUniqueCategoryIds = new ArraySet<>(getMaxCategoryCount());
 
             addMapping(value, categoryId);
@@ -222,7 +226,8 @@
          * @throws IllegalStateException if:
          * <ul>
          *   <li>{@link #build()} already called</li>
-         *   <li>the {@code value} has already been added</li>
+         *   <li>the {@code value} has already been added (<b>Note: </b> this restriction was
+         *   lifted on Android {@link android.os.Build.VERSION_CODES#Q} and later)</li>
          *   <li>the number of unique {@code categoryId} values added so far is more than
          *       {@link UserData#getMaxCategoryCount()}</li>
          *   <li>the number of {@code values} added so far is is more than
@@ -248,12 +253,8 @@
                 // New category - check size
                 Preconditions.checkState(mUniqueCategoryIds.size() < getMaxCategoryCount(),
                         "already added " + mUniqueCategoryIds.size() + " unique category ids");
-
             }
 
-            Preconditions.checkState(!mValues.contains(value),
-                    // Don't include value on message because it could contain PII
-                    "already has entry with same value");
             Preconditions.checkState(mValues.size() < getMaxUserDataSize(),
                     "already added " + mValues.size() + " elements");
             addMapping(value, categoryId);
@@ -262,9 +263,16 @@
         }
 
         private void addMapping(@NonNull String value, @NonNull String categoryId) {
+            final String pair = value + ":" + categoryId;
+            if (mUniqueValueCategoryPairs.contains(pair)) {
+                // Don't include value on message because it could contain PII
+                Log.w(TAG, "Ignoring entry with same value / category");
+                return;
+            }
             mCategoryIds.add(categoryId);
             mValues.add(value);
             mUniqueCategoryIds.add(categoryId);
+            mUniqueValueCategoryPairs.add(pair);
         }
 
         private String checkNotEmpty(@NonNull String name, @Nullable String value) {
diff --git a/core/java/android/service/notification/INotificationListener.aidl b/core/java/android/service/notification/INotificationListener.aidl
index 2dff716..d8bd002 100644
--- a/core/java/android/service/notification/INotificationListener.aidl
+++ b/core/java/android/service/notification/INotificationListener.aidl
@@ -18,6 +18,7 @@
 
 import android.app.NotificationChannel;
 import android.app.NotificationChannelGroup;
+import android.content.pm.ParceledListSlice;
 import android.os.UserHandle;
 import android.service.notification.NotificationStats;
 import android.service.notification.IStatusBarNotificationHolder;
@@ -45,4 +46,5 @@
     // assistants only
     void onNotificationEnqueuedWithChannel(in IStatusBarNotificationHolder notificationHolder, in NotificationChannel channel);
     void onNotificationSnoozedUntilContext(in IStatusBarNotificationHolder notificationHolder, String snoozeCriterionId);
+    void onNotificationsSeen(in List<String> keys);
 }
diff --git a/core/java/android/service/notification/NotificationAssistantService.java b/core/java/android/service/notification/NotificationAssistantService.java
index 3853fc5..3b820ca 100644
--- a/core/java/android/service/notification/NotificationAssistantService.java
+++ b/core/java/android/service/notification/NotificationAssistantService.java
@@ -149,6 +149,14 @@
     }
 
     /**
+     * Implement this to know when a user has seen notifications, as triggered by
+     * {@link #setNotificationsShown(String[])}.
+     */
+    public void onNotificationsSeen(List<String> keys) {
+
+    }
+
+    /**
      * Updates a notification.  N.B. this won’t cause
      * an existing notification to alert, but might allow a future update to
      * this notification to alert.
@@ -236,11 +244,20 @@
             mHandler.obtainMessage(MyHandler.MSG_ON_NOTIFICATION_SNOOZED,
                     args).sendToTarget();
         }
+
+        @Override
+        public void onNotificationsSeen(List<String> keys) {
+            SomeArgs args = SomeArgs.obtain();
+            args.arg1 = keys;
+            mHandler.obtainMessage(MyHandler.MSG_ON_NOTIFICATIONS_SEEN,
+                    args).sendToTarget();
+        }
     }
 
     private final class MyHandler extends Handler {
         public static final int MSG_ON_NOTIFICATION_ENQUEUED = 1;
         public static final int MSG_ON_NOTIFICATION_SNOOZED = 2;
+        public static final int MSG_ON_NOTIFICATIONS_SEEN = 3;
 
         public MyHandler(Looper looper) {
             super(looper, null, false);
@@ -275,6 +292,13 @@
                     onNotificationSnoozedUntilContext(sbn, snoozeCriterionId);
                     break;
                 }
+                case MSG_ON_NOTIFICATIONS_SEEN: {
+                    SomeArgs args = (SomeArgs) msg.obj;
+                    List<String> keys = (List<String>) args.arg1;
+                    args.recycle();
+                    onNotificationsSeen(keys);
+                    break;
+                }
             }
         }
     }
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index 98da569..1b588f4 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -1332,6 +1332,12 @@
         }
 
         @Override
+        public void onNotificationsSeen(List<String> keys)
+                throws RemoteException {
+            // no-op in the listener
+        }
+
+        @Override
         public void onNotificationSnoozedUntilContext(
                 IStatusBarNotificationHolder notificationHolder, String snoozeCriterionId)
                 throws RemoteException {
diff --git a/core/java/android/view/AccessibilityIterators.java b/core/java/android/view/AccessibilityIterators.java
index ca54bef..9f7560c 100644
--- a/core/java/android/view/AccessibilityIterators.java
+++ b/core/java/android/view/AccessibilityIterators.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.res.Configuration;
 
 import java.text.BreakIterator;
@@ -45,6 +46,7 @@
      */
     public static abstract class AbstractTextSegmentIterator implements TextSegmentIterator {
 
+        @UnsupportedAppUsage
         protected String mText;
 
         private final int[] mSegment = new int[2];
diff --git a/core/java/android/view/ActionProvider.java b/core/java/android/view/ActionProvider.java
index 353b4c2..cd7e67e 100644
--- a/core/java/android/view/ActionProvider.java
+++ b/core/java/android/view/ActionProvider.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.util.Log;
 
@@ -218,6 +219,7 @@
     /**
      * @hide Internal use only
      */
+    @UnsupportedAppUsage
     public void setSubUiVisibilityListener(SubUiVisibilityListener listener) {
         mSubUiVisibilityListener = listener;
     }
@@ -240,6 +242,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void reset() {
         mVisibilityListener = null;
         mSubUiVisibilityListener = null;
diff --git a/core/java/android/view/AppTransitionAnimationSpec.java b/core/java/android/view/AppTransitionAnimationSpec.java
index 86a5fb7..6585e40 100644
--- a/core/java/android/view/AppTransitionAnimationSpec.java
+++ b/core/java/android/view/AppTransitionAnimationSpec.java
@@ -1,5 +1,6 @@
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.GraphicBuffer;
 import android.graphics.Rect;
 import android.os.Parcel;
@@ -18,6 +19,7 @@
     public final GraphicBuffer buffer;
     public final Rect rect;
 
+    @UnsupportedAppUsage
     public AppTransitionAnimationSpec(int taskId, GraphicBuffer buffer, Rect rect) {
         this.taskId = taskId;
         this.rect = rect;
diff --git a/core/java/android/view/BatchedInputEventReceiver.java b/core/java/android/view/BatchedInputEventReceiver.java
index b1d28e0..61ccac9 100644
--- a/core/java/android/view/BatchedInputEventReceiver.java
+++ b/core/java/android/view/BatchedInputEventReceiver.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Looper;
 
 /**
@@ -26,6 +27,7 @@
     Choreographer mChoreographer;
     private boolean mBatchedInputScheduled;
 
+    @UnsupportedAppUsage
     public BatchedInputEventReceiver(
             InputChannel inputChannel, Looper looper, Choreographer choreographer) {
         super(inputChannel, looper);
diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java
index f8cfd0d..ce16ffc 100644
--- a/core/java/android/view/Choreographer.java
+++ b/core/java/android/view/Choreographer.java
@@ -20,6 +20,7 @@
 import static android.view.DisplayEventReceiver.VSYNC_SOURCE_SURFACE_FLINGER;
 
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.hardware.display.DisplayManagerGlobal;
 import android.os.Handler;
 import android.os.Looper;
@@ -130,6 +131,7 @@
             };
 
     // Enable/disable vsync for animations and drawing.
+    @UnsupportedAppUsage
     private static final boolean USE_VSYNC = SystemProperties.getBoolean(
             "debug.choreographer.vsync", true);
 
@@ -151,6 +153,7 @@
         public String toString() { return "FRAME_CALLBACK_TOKEN"; }
     };
 
+    @UnsupportedAppUsage
     private final Object mLock = new Object();
 
     private final Looper mLooper;
@@ -159,15 +162,19 @@
     // The display event receiver can only be accessed by the looper thread to which
     // it is attached.  We take care to ensure that we post message to the looper
     // if appropriate when interacting with the display event receiver.
+    @UnsupportedAppUsage
     private final FrameDisplayEventReceiver mDisplayEventReceiver;
 
     private CallbackRecord mCallbackPool;
 
+    @UnsupportedAppUsage
     private final CallbackQueue[] mCallbackQueues;
 
     private boolean mFrameScheduled;
     private boolean mCallbacksRunning;
+    @UnsupportedAppUsage
     private long mLastFrameTimeNanos;
+    @UnsupportedAppUsage
     private long mFrameIntervalNanos;
     private boolean mDebugPrintNextFrameTimeDelta;
     private int mFPSDivisor = 1;
@@ -265,6 +272,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public static Choreographer getSfInstance() {
         return sSfThreadInstance.get();
     }
@@ -556,6 +564,7 @@
      * @throws IllegalStateException if no frame is in progress.
      * @hide
      */
+    @UnsupportedAppUsage
     public long getFrameTime() {
         return getFrameTimeNanos() / TimeUtils.NANOS_PER_MS;
     }
@@ -568,6 +577,7 @@
      * @throws IllegalStateException if no frame is in progress.
      * @hide
      */
+    @UnsupportedAppUsage
     public long getFrameTimeNanos() {
         synchronized (mLock) {
             if (!mCallbacksRunning) {
@@ -627,6 +637,7 @@
         ThreadedRenderer.setFPSDivisor(divisor);
     }
 
+    @UnsupportedAppUsage
     void doFrame(long frameTimeNanos, int frame) {
         final long startNanos;
         synchronized (mLock) {
@@ -792,6 +803,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private void scheduleVsyncLocked() {
         mDisplayEventReceiver.scheduleVsync();
     }
@@ -942,6 +954,7 @@
         public Object action; // Runnable or FrameCallback
         public Object token;
 
+        @UnsupportedAppUsage
         public void run(long frameTimeNanos) {
             if (token == FRAME_CALLBACK_TOKEN) {
                 ((FrameCallback)action).doFrame(frameTimeNanos);
@@ -978,6 +991,7 @@
             return callbacks;
         }
 
+        @UnsupportedAppUsage
         public void addCallbackLocked(long dueTime, Object action, Object token) {
             CallbackRecord callback = obtainCallbackLocked(dueTime, action, token);
             CallbackRecord entry = mHead;
diff --git a/core/java/android/view/ContextThemeWrapper.java b/core/java/android/view/ContextThemeWrapper.java
index d3cc175..c77500a 100644
--- a/core/java/android/view/ContextThemeWrapper.java
+++ b/core/java/android/view/ContextThemeWrapper.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.StyleRes;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.ContextWrapper;
 import android.content.res.AssetManager;
@@ -28,10 +29,14 @@
  * wrapped context.
  */
 public class ContextThemeWrapper extends ContextWrapper {
+    @UnsupportedAppUsage
     private int mThemeResource;
+    @UnsupportedAppUsage
     private Resources.Theme mTheme;
+    @UnsupportedAppUsage
     private LayoutInflater mInflater;
     private Configuration mOverrideConfiguration;
+    @UnsupportedAppUsage
     private Resources mResources;
 
     /**
@@ -143,6 +148,7 @@
 
     /** @hide */
     @Override
+    @UnsupportedAppUsage
     public int getThemeResId() {
         return mThemeResource;
     }
@@ -186,6 +192,7 @@
         theme.applyStyle(resId, true);
     }
 
+    @UnsupportedAppUsage
     private void initializeTheme() {
         final boolean first = mTheme == null;
         if (first) {
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 20f8066..4d96fc3 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -21,6 +21,7 @@
 import android.annotation.IntDef;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
+import android.annotation.UnsupportedAppUsage;
 import android.app.KeyguardManager;
 import android.content.res.CompatibilityInfo;
 import android.content.res.Configuration;
@@ -79,6 +80,7 @@
     private final Resources mResources;
     private DisplayAdjustments mDisplayAdjustments;
 
+    @UnsupportedAppUsage
     private DisplayInfo mDisplayInfo; // never null
     private boolean mIsValid;
 
@@ -231,6 +233,7 @@
      * Display type: Unknown display type.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int TYPE_UNKNOWN = 0;
 
     /**
@@ -243,12 +246,14 @@
      * Display type: HDMI display.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int TYPE_HDMI = 2;
 
     /**
      * Display type: WiFi display.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int TYPE_WIFI = 3;
 
     /**
@@ -261,6 +266,7 @@
      * Display type: Virtual display.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int TYPE_VIRTUAL = 5;
 
     /**
@@ -459,6 +465,7 @@
      * @return True if the display is still valid.
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean getDisplayInfo(DisplayInfo outDisplayInfo) {
         synchronized (this) {
             updateDisplayInfoLocked();
@@ -506,6 +513,7 @@
      * @see #TYPE_VIRTUAL
      * @hide
      */
+    @UnsupportedAppUsage
     public int getType() {
         return mType;
     }
@@ -517,6 +525,7 @@
      * @return The display address.
      * @hide
      */
+    @UnsupportedAppUsage
     public String getAddress() {
         return mAddress;
     }
@@ -543,6 +552,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public String getOwnerPackageName() {
         return mOwnerPackageName;
     }
@@ -553,6 +563,7 @@
      * @return The display adjustments holder, or null if none is required.
      * @hide
      */
+    @UnsupportedAppUsage
     public DisplayAdjustments getDisplayAdjustments() {
         if (mResources != null) {
             final DisplayAdjustments currentAdjustements = mResources.getDisplayAdjustments();
@@ -676,6 +687,7 @@
      * mostly for wallpapers.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getMaximumSizeDimension() {
         synchronized (this) {
             updateDisplayInfoLocked();
@@ -1184,6 +1196,7 @@
         /**
          * @hide
          */
+        @UnsupportedAppUsage
         public Mode(int modeId, int width, int height, float refreshRate) {
             mModeId = modeId;
             mWidth = width;
@@ -1360,6 +1373,7 @@
         /**
          * @hide
          */
+        @UnsupportedAppUsage
         public HdrCapabilities(int[] supportedHdrTypes, float maxLuminance,
                 float maxAverageLuminance, float minLuminance) {
             mSupportedHdrTypes = supportedHdrTypes;
diff --git a/core/java/android/view/DisplayAdjustments.java b/core/java/android/view/DisplayAdjustments.java
index 790029b..da4d92fa 100644
--- a/core/java/android/view/DisplayAdjustments.java
+++ b/core/java/android/view/DisplayAdjustments.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.res.CompatibilityInfo;
 import android.content.res.Configuration;
 
@@ -28,6 +29,7 @@
     private volatile CompatibilityInfo mCompatInfo = CompatibilityInfo.DEFAULT_COMPATIBILITY_INFO;
     private Configuration mConfiguration;
 
+    @UnsupportedAppUsage
     public DisplayAdjustments() {
     }
 
@@ -42,6 +44,7 @@
                 ? daj.mConfiguration : Configuration.EMPTY);
     }
 
+    @UnsupportedAppUsage
     public void setCompatibilityInfo(CompatibilityInfo compatInfo) {
         if (this == DEFAULT_DISPLAY_ADJUSTMENTS) {
             throw new IllegalArgumentException(
@@ -67,6 +70,7 @@
         mConfiguration.setTo(configuration != null ? configuration : Configuration.EMPTY);
     }
 
+    @UnsupportedAppUsage
     public Configuration getConfiguration() {
         return mConfiguration;
     }
diff --git a/core/java/android/view/DisplayEventReceiver.java b/core/java/android/view/DisplayEventReceiver.java
index cb98c88..edd3f1a 100644
--- a/core/java/android/view/DisplayEventReceiver.java
+++ b/core/java/android/view/DisplayEventReceiver.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.Log;
@@ -56,6 +57,7 @@
 
     private final CloseGuard mCloseGuard = CloseGuard.get();
 
+    @UnsupportedAppUsage
     private long mReceiverPtr;
 
     // We keep a reference message queue object here so that it is not
@@ -73,6 +75,7 @@
      *
      * @param looper The looper to use when invoking callbacks.
      */
+    @UnsupportedAppUsage
     public DisplayEventReceiver(Looper looper) {
         this(looper, VSYNC_SOURCE_APP);
     }
@@ -137,6 +140,7 @@
      * {@link SurfaceControl#BUILT_IN_DISPLAY_ID_MAIN}.
      * @param frame The frame number.  Increases by one for each vertical sync interval.
      */
+    @UnsupportedAppUsage
     public void onVsync(long timestampNanos, int builtInDisplayId, int frame) {
     }
 
@@ -149,6 +153,7 @@
      * {@link SurfaceControl#BUILT_IN_DISPLAY_ID_HDMI}.
      * @param connected True if the display is connected, false if it disconnected.
      */
+    @UnsupportedAppUsage
     public void onHotplug(long timestampNanos, int builtInDisplayId, boolean connected) {
     }
 
@@ -156,6 +161,7 @@
      * Schedules a single vertical sync pulse to be delivered when the next
      * display frame begins.
      */
+    @UnsupportedAppUsage
     public void scheduleVsync() {
         if (mReceiverPtr == 0) {
             Log.w(TAG, "Attempted to schedule a vertical sync pulse but the display event "
@@ -167,12 +173,14 @@
 
     // Called from native code.
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private void dispatchVsync(long timestampNanos, int builtInDisplayId, int frame) {
         onVsync(timestampNanos, builtInDisplayId, frame);
     }
 
     // Called from native code.
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private void dispatchHotplug(long timestampNanos, int builtInDisplayId, boolean connected) {
         onHotplug(timestampNanos, builtInDisplayId, connected);
     }
diff --git a/core/java/android/view/DisplayInfo.java b/core/java/android/view/DisplayInfo.java
index 2421ba4..34bcbdd 100644
--- a/core/java/android/view/DisplayInfo.java
+++ b/core/java/android/view/DisplayInfo.java
@@ -23,6 +23,7 @@
 import static android.view.DisplayInfoProto.NAME;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.content.res.CompatibilityInfo;
 import android.content.res.Configuration;
 import android.graphics.Rect;
@@ -116,6 +117,7 @@
      * Represents the usable size of the display which may be smaller than the
      * physical size when the system is emulating a smaller display.
      */
+    @UnsupportedAppUsage
     public int logicalWidth;
 
     /**
@@ -123,6 +125,7 @@
      * Represents the usable size of the display which may be smaller than the
      * physical size when the system is emulating a smaller display.
      */
+    @UnsupportedAppUsage
     public int logicalHeight;
 
     /**
@@ -155,6 +158,7 @@
      * @hide
      */
     @Nullable
+    @UnsupportedAppUsage
     public DisplayCutout displayCutout;
 
     /**
@@ -168,6 +172,7 @@
      * </p>
      */
     @Surface.Rotation
+    @UnsupportedAppUsage
     public int rotation;
 
     /**
@@ -275,6 +280,7 @@
         }
     };
 
+    @UnsupportedAppUsage
     public DisplayInfo() {
     }
 
diff --git a/core/java/android/view/DisplayListCanvas.java b/core/java/android/view/DisplayListCanvas.java
index df4d5c4..a7755a2 100644
--- a/core/java/android/view/DisplayListCanvas.java
+++ b/core/java/android/view/DisplayListCanvas.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Bitmap;
 import android.graphics.CanvasProperty;
 import android.graphics.Paint;
@@ -155,6 +156,7 @@
      *
      * @param drawGLFunction A native function pointer
      */
+    @UnsupportedAppUsage
     public void callDrawGLFunction2(long drawGLFunction) {
         nCallDrawGLFunction(mNativeCanvasWrapper, drawGLFunction, null);
     }
@@ -171,6 +173,7 @@
      * any references to the functor, just that the reference from this specific
      * canvas's display list has been released.
      */
+    @UnsupportedAppUsage
     public void drawGLFunctor2(long drawGLFunctor, @Nullable Runnable releasedCallback) {
         nCallDrawGLFunction(mNativeCanvasWrapper, drawGLFunctor, releasedCallback);
     }
@@ -184,6 +187,7 @@
      *
      * @param renderNode The RenderNode to draw.
      */
+    @UnsupportedAppUsage
     public void drawRenderNode(RenderNode renderNode) {
         nDrawRenderNode(mNativeCanvasWrapper, renderNode.mNativeRenderNode);
     }
@@ -205,6 +209,7 @@
     // Drawing
     ///////////////////////////////////////////////////////////////////////////
 
+    @UnsupportedAppUsage
     public void drawCircle(CanvasProperty<Float> cx, CanvasProperty<Float> cy,
             CanvasProperty<Float> radius, CanvasProperty<Paint> paint) {
         nDrawCircle(mNativeCanvasWrapper, cx.getNativeContainer(), cy.getNativeContainer(),
diff --git a/core/java/android/view/DragEvent.java b/core/java/android/view/DragEvent.java
index 2c9f871..bd4dda2 100644
--- a/core/java/android/view/DragEvent.java
+++ b/core/java/android/view/DragEvent.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.ClipData;
 import android.content.ClipDescription;
 import android.os.Parcel;
@@ -129,7 +130,9 @@
 
     int mAction;
     float mX, mY;
+    @UnsupportedAppUsage
     ClipDescription mClipDescription;
+    @UnsupportedAppUsage
     ClipData mClipData;
     IDragAndDropPermissions mDragAndDropPermissions;
 
@@ -313,6 +316,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static DragEvent obtain(DragEvent source) {
         return obtain(source.mAction, source.mX, source.mY, source.mLocalState,
                 source.mClipDescription, source.mClipData, source.mDragAndDropPermissions,
diff --git a/core/java/android/view/FrameMetrics.java b/core/java/android/view/FrameMetrics.java
index 358a2d1..dcdef3e 100644
--- a/core/java/android/view/FrameMetrics.java
+++ b/core/java/android/view/FrameMetrics.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -249,6 +250,7 @@
         Index.INTENDED_VSYNC, Index.FRAME_COMPLETED,
     };
 
+    @UnsupportedAppUsage
     /* package */ final long[] mTimingData;
 
     /**
diff --git a/core/java/android/view/FrameMetricsObserver.java b/core/java/android/view/FrameMetricsObserver.java
index 9e81de0..597089b 100644
--- a/core/java/android/view/FrameMetricsObserver.java
+++ b/core/java/android/view/FrameMetricsObserver.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Looper;
 import android.os.MessageQueue;
 
@@ -31,10 +32,12 @@
  * @hide
  */
 public class FrameMetricsObserver {
+    @UnsupportedAppUsage
     private MessageQueue mMessageQueue;
 
     private WeakReference<Window> mWindow;
 
+    @UnsupportedAppUsage
     private FrameMetrics mFrameMetrics;
 
     /* package */ Window.OnFrameMetricsAvailableListener mListener;
@@ -63,6 +66,7 @@
 
     // Called by native on the provided Handler
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private void notifyDataAvailable(int dropCount) {
         final Window window = mWindow.get();
         if (window != null) {
diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java
index bc2953e..3ee5f1f 100644
--- a/core/java/android/view/GestureDetector.java
+++ b/core/java/android/view/GestureDetector.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Handler;
 import android.os.Message;
@@ -216,12 +217,15 @@
         }
     }
 
+    @UnsupportedAppUsage
     private int mTouchSlopSquare;
     private int mDoubleTapTouchSlopSquare;
     private int mDoubleTapSlopSquare;
+    @UnsupportedAppUsage
     private int mMinimumFlingVelocity;
     private int mMaximumFlingVelocity;
 
+    @UnsupportedAppUsage
     private static final int LONGPRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout();
     private static final int TAP_TIMEOUT = ViewConfiguration.getTapTimeout();
     private static final int DOUBLE_TAP_TIMEOUT = ViewConfiguration.getDoubleTapTimeout();
@@ -233,6 +237,7 @@
     private static final int TAP = 3;
 
     private final Handler mHandler;
+    @UnsupportedAppUsage
     private final OnGestureListener mListener;
     private OnDoubleTapListener mDoubleTapListener;
     private OnContextClickListener mContextClickListener;
@@ -241,6 +246,7 @@
     private boolean mDeferConfirmSingleTap;
     private boolean mInLongPress;
     private boolean mInContextClick;
+    @UnsupportedAppUsage
     private boolean mAlwaysInTapRegion;
     private boolean mAlwaysInBiggerTapRegion;
     private boolean mIgnoreNextUpEvent;
diff --git a/core/java/android/view/GhostView.java b/core/java/android/view/GhostView.java
index d1b96ba..fa7b067 100644
--- a/core/java/android/view/GhostView.java
+++ b/core/java/android/view/GhostView.java
@@ -15,6 +15,7 @@
  */
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Canvas;
 import android.graphics.Matrix;
 import android.widget.FrameLayout;
@@ -91,6 +92,7 @@
         host.transformMatrixToLocal(matrix);
     }
 
+    @UnsupportedAppUsage
     public static GhostView addGhost(View view, ViewGroup viewGroup, Matrix matrix) {
         if (!(view.getParent() instanceof ViewGroup)) {
             throw new IllegalArgumentException("Ghosted views must be parented by a ViewGroup");
@@ -131,10 +133,12 @@
         return ghostView;
     }
 
+    @UnsupportedAppUsage
     public static GhostView addGhost(View view, ViewGroup viewGroup) {
         return addGhost(view, viewGroup, null);
     }
 
+    @UnsupportedAppUsage
     public static void removeGhost(View view) {
         GhostView ghostView = view.mGhostView;
         if (ghostView != null) {
diff --git a/core/java/android/view/InputChannel.java b/core/java/android/view/InputChannel.java
index de195ae..b2dd6ac 100644
--- a/core/java/android/view/InputChannel.java
+++ b/core/java/android/view/InputChannel.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Slog;
@@ -32,6 +33,7 @@
     
     private static final boolean DEBUG = false;
     
+    @UnsupportedAppUsage
     public static final Parcelable.Creator<InputChannel> CREATOR
             = new Parcelable.Creator<InputChannel>() {
         public InputChannel createFromParcel(Parcel source) {
@@ -46,6 +48,7 @@
     };
     
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private long mPtr; // used by native code
     
     private static native InputChannel[] nativeOpenInputChannelPair(String name);
@@ -63,6 +66,7 @@
      * It can be initialized by reading from a Parcel or by transferring the state of
      * another input channel into this one.
      */
+    @UnsupportedAppUsage
     public InputChannel() {
     }
 
diff --git a/core/java/android/view/InputDevice.java b/core/java/android/view/InputDevice.java
index 8405d9e..7295259 100644
--- a/core/java/android/view/InputDevice.java
+++ b/core/java/android/view/InputDevice.java
@@ -18,6 +18,7 @@
 
 import android.annotation.RequiresPermission;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.hardware.input.InputDeviceIdentifier;
 import android.hardware.input.InputManager;
@@ -53,6 +54,7 @@
     private final int mProductId;
     private final String mDescriptor;
     private final InputDeviceIdentifier mIdentifier;
+    @UnsupportedAppUsage
     private final boolean mIsExternal;
     private final int mSources;
     private final int mKeyboardType;
@@ -405,6 +407,7 @@
     };
 
     // Called by native code.
+    @UnsupportedAppUsage
     private InputDevice(int id, int generation, int controllerNumber, String name, int vendorId,
             int productId, String descriptor, boolean isExternal, int sources, int keyboardType,
             KeyCharacterMap keyCharacterMap, boolean hasVibrator, boolean hasMicrophone,
@@ -608,6 +611,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isExternal() {
         return mIsExternal;
     }
@@ -739,6 +743,7 @@
     }
 
     // Called from native code.
+    @UnsupportedAppUsage
     private void addMotionRange(int axis, int source,
             float min, float max, float flat, float fuzz, float resolution) {
         mMotionRanges.add(new MotionRange(axis, source, min, max, flat, fuzz, resolution));
diff --git a/core/java/android/view/InputEvent.java b/core/java/android/view/InputEvent.java
index c257364..c2848d4 100644
--- a/core/java/android/view/InputEvent.java
+++ b/core/java/android/view/InputEvent.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -227,6 +228,7 @@
      * @return The unique sequence number of this event.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getSequenceNumber() {
         return mSeq;
     }
diff --git a/core/java/android/view/InputEventConsistencyVerifier.java b/core/java/android/view/InputEventConsistencyVerifier.java
index 7e8ec04..e4b1a8d 100644
--- a/core/java/android/view/InputEventConsistencyVerifier.java
+++ b/core/java/android/view/InputEventConsistencyVerifier.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Build;
 import android.util.Log;
 
@@ -115,6 +116,7 @@
      * @param caller The object to which the verifier is attached.
      * @param flags Flags to the verifier, or 0 if none.
      */
+    @UnsupportedAppUsage
     public InputEventConsistencyVerifier(Object caller, int flags) {
         this(caller, flags, null);
     }
@@ -135,6 +137,7 @@
      * Determines whether the instrumentation should be enabled.
      * @return True if it should be enabled.
      */
+    @UnsupportedAppUsage
     public static boolean isInstrumentationEnabled() {
         return IS_ENG_BUILD;
     }
@@ -319,6 +322,7 @@
      * where a subclass dispatching method delegates to its superclass's dispatching method
      * and both dispatching methods call into the consistency verifier.
      */
+    @UnsupportedAppUsage
     public void onTouchEvent(MotionEvent event, int nestingLevel) {
         if (!startEvent(event, nestingLevel, EVENT_TYPE_TOUCH)) {
             return;
@@ -579,6 +583,7 @@
      * where a subclass dispatching method delegates to its superclass's dispatching method
      * and both dispatching methods call into the consistency verifier.
      */
+    @UnsupportedAppUsage
     public void onUnhandledEvent(InputEvent event, int nestingLevel) {
         if (nestingLevel != mLastNestingLevel) {
             return;
diff --git a/core/java/android/view/InputEventReceiver.java b/core/java/android/view/InputEventReceiver.java
index 20ab539..7260a65 100644
--- a/core/java/android/view/InputEventReceiver.java
+++ b/core/java/android/view/InputEventReceiver.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.Log;
@@ -113,6 +114,7 @@
      *
      * @param event The input event that was received.
      */
+    @UnsupportedAppUsage
     public void onInputEvent(InputEvent event) {
         finishInputEvent(event, false);
     }
@@ -180,6 +182,7 @@
 
     // Called from native code.
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private void dispatchInputEvent(int seq, InputEvent event) {
         mSeqMap.put(event.getSequenceNumber(), seq);
         onInputEvent(event);
@@ -187,6 +190,7 @@
 
     // Called from native code.
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private void dispatchBatchedInputEventPending() {
         onBatchedInputEventPending();
     }
diff --git a/core/java/android/view/InputEventSender.java b/core/java/android/view/InputEventSender.java
index b25fb65..c5f4c23 100644
--- a/core/java/android/view/InputEventSender.java
+++ b/core/java/android/view/InputEventSender.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.Log;
@@ -137,6 +138,7 @@
 
     // Called from native code.
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private void dispatchInputEventFinished(int seq, boolean handled) {
         onInputEventFinished(seq, handled);
     }
diff --git a/core/java/android/view/InputFilter.java b/core/java/android/view/InputFilter.java
index 0ab4dc0..3aaf31e 100644
--- a/core/java/android/view/InputFilter.java
+++ b/core/java/android/view/InputFilter.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -117,6 +118,7 @@
      *
      * @param looper The looper to run callbacks on.
      */
+    @UnsupportedAppUsage
     public InputFilter(Looper looper) {
         mH = new H(looper);
     }
@@ -186,6 +188,7 @@
      * @param event The input event that was received.
      * @param policyFlags The input event policy flags.
      */
+    @UnsupportedAppUsage
     public void onInputEvent(InputEvent event, int policyFlags) {
         sendInputEvent(event, policyFlags);
     }
diff --git a/core/java/android/view/InputQueue.java b/core/java/android/view/InputQueue.java
index 582ae79..69ebc46 100644
--- a/core/java/android/view/InputQueue.java
+++ b/core/java/android/view/InputQueue.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Looper;
 import android.os.MessageQueue;
 import android.util.LongSparseArray;
@@ -100,6 +101,7 @@
         mActiveEventArray.put(id, event);
     }
 
+    @UnsupportedAppUsage
     private void finishInputEvent(long id, boolean handled) {
         int index = mActiveEventArray.indexOfKey(id);
         if (index >= 0) {
diff --git a/core/java/android/view/KeyCharacterMap.java b/core/java/android/view/KeyCharacterMap.java
index b7b56e8..989bf67 100644
--- a/core/java/android/view/KeyCharacterMap.java
+++ b/core/java/android/view/KeyCharacterMap.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.hardware.input.InputManager;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -307,6 +308,7 @@
     }
 
     // Called from native
+    @UnsupportedAppUsage
     private KeyCharacterMap(long ptr) {
         mPtr = ptr;
     }
@@ -748,7 +750,9 @@
 
         private FallbackAction next;
 
+        @UnsupportedAppUsage
         public int keyCode;
+        @UnsupportedAppUsage
         public int metaState;
 
         private FallbackAction() {
diff --git a/core/java/android/view/KeyEvent.java b/core/java/android/view/KeyEvent.java
index 715440c..8641d7f 100644
--- a/core/java/android/view/KeyEvent.java
+++ b/core/java/android/view/KeyEvent.java
@@ -20,6 +20,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.method.MetaKeyKeyListener;
@@ -837,6 +838,7 @@
 
     // Symbolic names of all metakeys in bit order from least significant to most significant.
     // Accordingly there are exactly 32 values in this table.
+    @UnsupportedAppUsage
     private static final String[] META_SYMBOLIC_NAMES = new String[] {
         "META_SHIFT_ON",
         "META_ALT_ON",
@@ -907,6 +909,7 @@
      * Reserved for use by {@link MetaKeyKeyListener} for a published constant in its API.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int META_CAP_LOCKED = 0x100;
 
     /**
@@ -914,6 +917,7 @@
      * Reserved for use by {@link MetaKeyKeyListener} for a published constant in its API.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int META_ALT_LOCKED = 0x200;
 
     /**
@@ -921,6 +925,7 @@
      * Reserved for use by {@link MetaKeyKeyListener} for a published constant in its API.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int META_SYM_LOCKED = 0x400;
 
     /**
@@ -929,6 +934,7 @@
      * in its API that is currently being retained for legacy reasons.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int META_SELECTING = 0x800;
 
     /**
@@ -1248,17 +1254,28 @@
 
     private KeyEvent mNext;
 
+    @UnsupportedAppUsage
     private int mDeviceId;
+    @UnsupportedAppUsage
     private int mSource;
     private int mDisplayId;
+    @UnsupportedAppUsage
     private int mMetaState;
+    @UnsupportedAppUsage
     private int mAction;
+    @UnsupportedAppUsage
     private int mKeyCode;
+    @UnsupportedAppUsage
     private int mScanCode;
+    @UnsupportedAppUsage
     private int mRepeatCount;
+    @UnsupportedAppUsage
     private int mFlags;
+    @UnsupportedAppUsage
     private long mDownTime;
+    @UnsupportedAppUsage
     private long mEventTime;
+    @UnsupportedAppUsage
     private String mCharacters;
 
     public interface Callback {
@@ -1595,6 +1612,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static KeyEvent obtain(long downTime, long eventTime, int action,
             int code, int repeat, int metaState,
             int deviceId, int scancode, int flags, int source, String characters) {
@@ -1640,6 +1658,7 @@
      * @hide
      */
     @Override
+    @UnsupportedAppUsage
     public final void recycle() {
         super.recycle();
         mCharacters = null;
@@ -1760,6 +1779,7 @@
      * @deprecated
      * @hide
      */
+    @UnsupportedAppUsage
     @Deprecated public final boolean isDown() {
         return mAction == ACTION_DOWN;
     }
@@ -1821,6 +1841,7 @@
     /** Whether key will, by default, trigger a click on the focused view.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final boolean isConfirmKey(int keyCode) {
         switch (keyCode) {
             case KeyEvent.KEYCODE_DPAD_CENTER:
@@ -2023,6 +2044,7 @@
     }
 
     // Mask of all modifier key meta states.  Specifically excludes locked keys like caps lock.
+    @UnsupportedAppUsage
     private static final int META_MODIFIER_MASK =
             META_SHIFT_ON | META_SHIFT_LEFT_ON | META_SHIFT_RIGHT_ON
             | META_ALT_ON | META_ALT_LEFT_ON | META_ALT_RIGHT_ON
@@ -2031,19 +2053,23 @@
             | META_SYM_ON | META_FUNCTION_ON;
 
     // Mask of all lock key meta states.
+    @UnsupportedAppUsage
     private static final int META_LOCK_MASK =
             META_CAPS_LOCK_ON | META_NUM_LOCK_ON | META_SCROLL_LOCK_ON;
 
     // Mask of all valid meta states.
+    @UnsupportedAppUsage
     private static final int META_ALL_MASK = META_MODIFIER_MASK | META_LOCK_MASK;
 
     // Mask of all synthetic meta states that are reserved for API compatibility with
     // historical uses in MetaKeyKeyListener.
+    @UnsupportedAppUsage
     private static final int META_SYNTHETIC_MASK =
             META_CAP_LOCKED | META_ALT_LOCKED | META_SYM_LOCKED | META_SELECTING;
 
     // Mask of all meta states that are not valid use in specifying a modifier key.
     // These bits are known to be used for purposes other than specifying modifiers.
+    @UnsupportedAppUsage
     private static final int META_INVALID_MODIFIER_MASK =
             META_LOCK_MASK | META_SYNTHETIC_MASK;
 
diff --git a/core/java/android/view/LayoutInflater.java b/core/java/android/view/LayoutInflater.java
index 47b8d92..c520a99 100644
--- a/core/java/android/view/LayoutInflater.java
+++ b/core/java/android/view/LayoutInflater.java
@@ -19,6 +19,7 @@
 import android.annotation.LayoutRes;
 import android.annotation.Nullable;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -76,20 +77,28 @@
      * This field should be made private, so it is hidden from the SDK.
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected final Context mContext;
 
     // these are optional, set by the caller
+    @UnsupportedAppUsage
     private boolean mFactorySet;
+    @UnsupportedAppUsage
     private Factory mFactory;
+    @UnsupportedAppUsage
     private Factory2 mFactory2;
+    @UnsupportedAppUsage
     private Factory2 mPrivateFactory;
     private Filter mFilter;
 
+    @UnsupportedAppUsage
     final Object[] mConstructorArgs = new Object[2];
 
+    @UnsupportedAppUsage
     static final Class<?>[] mConstructorSignature = new Class[] {
             Context.class, AttributeSet.class};
 
+    @UnsupportedAppUsage
     private static final HashMap<String, Constructor<? extends View>> sConstructorMap =
             new HashMap<String, Constructor<? extends View>>();
 
@@ -105,6 +114,7 @@
 
     private static final String ATTR_LAYOUT = "layout";
 
+    @UnsupportedAppUsage
     private static final int[] ATTRS_THEME = new int[] {
             com.android.internal.R.attr.theme };
 
@@ -327,6 +337,7 @@
     /**
      * @hide for use by framework
      */
+    @UnsupportedAppUsage
     public void setPrivateFactory(Factory2 factory) {
         if (mPrivateFactory == null) {
             mPrivateFactory = factory;
@@ -726,6 +737,7 @@
      * argument and should be used for everything except {@code &gt;include>}
      * tag parsing.
      */
+    @UnsupportedAppUsage
     private View createViewFromTag(View parent, String name, Context context, AttributeSet attrs) {
         return createViewFromTag(parent, name, context, attrs, false);
     }
@@ -745,6 +757,7 @@
      *                        attribute (if set) for the view being inflated,
      *                        {@code false} otherwise
      */
+    @UnsupportedAppUsage
     View createViewFromTag(View parent, String name, Context context, AttributeSet attrs,
             boolean ignoreThemeAttr) {
         if (name.equals("view")) {
@@ -893,6 +906,7 @@
         consumeChildElements(parser);
     }
 
+    @UnsupportedAppUsage
     private void parseInclude(XmlPullParser parser, Context context, View parent,
             AttributeSet attrs) throws XmlPullParserException, IOException {
         int type;
diff --git a/core/java/android/view/MotionEvent.java b/core/java/android/view/MotionEvent.java
index 344806a..29c58dc 100644
--- a/core/java/android/view/MotionEvent.java
+++ b/core/java/android/view/MotionEvent.java
@@ -19,6 +19,7 @@
 import static android.view.Display.DEFAULT_DISPLAY;
 
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Matrix;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -1441,6 +1442,7 @@
     }
 
     // Private value for history pos that obtains the current sample.
+    @UnsupportedAppUsage
     private static final int HISTORY_CURRENT = -0x80000000;
 
     private static final int MAX_RECYCLED = 10;
@@ -1469,6 +1471,7 @@
     }
 
     // Pointer to the native MotionEvent object that contains the actual data.
+    @UnsupportedAppUsage
     private long mNativePtr;
 
     private MotionEvent mNext;
@@ -1502,6 +1505,7 @@
     @FastNative
     private static native long nativeGetEventTimeNanos(long nativePtr, int historyPos);
     @FastNative
+    @UnsupportedAppUsage
     private static native float nativeGetRawAxisValue(long nativePtr,
             int axis, int pointerIndex, int historyPos);
     @FastNative
@@ -1590,6 +1594,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     static private MotionEvent obtain() {
         final MotionEvent ev;
         synchronized (gRecyclerLock) {
@@ -1886,6 +1891,7 @@
 
     /** @hide */
     @Override
+    @UnsupportedAppUsage
     public MotionEvent copy() {
         return obtain(this);
     }
@@ -1918,6 +1924,7 @@
      * @param scale The scale factor to apply.
      * @hide
      */
+    @UnsupportedAppUsage
     public final void scale(float scale) {
         if (scale != 1.0f) {
             nativeScale(mNativePtr, scale);
@@ -1949,6 +1956,7 @@
     }
 
     /** @hide */
+    @TestApi
     @Override
     public void setDisplayId(int displayId) {
         nativeSetDisplayId(mNativePtr, displayId);
@@ -2068,6 +2076,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public final void setDownTime(long downTime) {
         nativeSetDownTimeNanos(mNativePtr, downTime * NS_PER_MS);
     }
@@ -2099,6 +2108,7 @@
      * @hide
      */
     @Override
+    @UnsupportedAppUsage
     public final long getEventTimeNano() {
         return nativeGetEventTimeNanos(mNativePtr, HISTORY_CURRENT);
     }
@@ -3098,6 +3108,7 @@
      * @return True if batching was performed or false if batching was not possible.
      * @hide
      */
+    @UnsupportedAppUsage
     public final boolean addBatch(MotionEvent event) {
         final int action = nativeGetAction(mNativePtr);
         if (action != ACTION_MOVE && action != ACTION_HOVER_MOVE) {
@@ -3212,6 +3223,7 @@
      * Gets an integer where each pointer id present in the event is marked as a bit.
      * @hide
      */
+    @UnsupportedAppUsage
     public final int getPointerIdBits() {
         int idBits = 0;
         final int pointerCount = nativeGetPointerCount(mNativePtr);
@@ -3225,6 +3237,7 @@
      * Splits a motion event such that it includes only a subset of pointer ids.
      * @hide
      */
+    @UnsupportedAppUsage
     public final MotionEvent split(int idBits) {
         MotionEvent ev = obtain();
         synchronized (gSharedTempLock) {
@@ -3535,7 +3548,9 @@
      */
     public static final class PointerCoords {
         private static final int INITIAL_PACKED_AXIS_VALUES = 8;
+        @UnsupportedAppUsage
         private long mPackedAxisBits;
+        @UnsupportedAppUsage
         private float[] mPackedAxisValues;
 
         /**
@@ -3555,6 +3570,7 @@
         }
 
         /** @hide */
+        @UnsupportedAppUsage
         public static PointerCoords[] createArray(int size) {
             PointerCoords[] array = new PointerCoords[size];
             for (int i = 0; i < size; i++) {
@@ -3848,6 +3864,7 @@
         }
 
         /** @hide */
+        @UnsupportedAppUsage
         public static PointerProperties[] createArray(int size) {
             PointerProperties[] array = new PointerProperties[size];
             for (int i = 0; i < size; i++) {
diff --git a/core/java/android/view/NotificationHeaderView.java b/core/java/android/view/NotificationHeaderView.java
index a3676ba..81da76d 100644
--- a/core/java/android/view/NotificationHeaderView.java
+++ b/core/java/android/view/NotificationHeaderView.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.app.AppOpsManager;
 import android.app.Notification;
 import android.content.Context;
@@ -85,6 +86,7 @@
         this(context, null);
     }
 
+    @UnsupportedAppUsage
     public NotificationHeaderView(Context context, @Nullable AttributeSet attrs) {
         this(context, attrs, 0);
     }
diff --git a/core/java/android/view/PointerIcon.java b/core/java/android/view/PointerIcon.java
index 8cb46b7..dc097a1 100644
--- a/core/java/android/view/PointerIcon.java
+++ b/core/java/android/view/PointerIcon.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.annotation.XmlRes;
 import android.content.Context;
 import android.content.res.Resources;
@@ -145,14 +146,20 @@
     private static final SparseArray<PointerIcon> gSystemIcons = new SparseArray<PointerIcon>();
     private static boolean sUseLargeIcons = false;
 
+    @UnsupportedAppUsage
     private final int mType;
     private int mSystemIconResourceId;
+    @UnsupportedAppUsage
     private Bitmap mBitmap;
+    @UnsupportedAppUsage
     private float mHotSpotX;
+    @UnsupportedAppUsage
     private float mHotSpotY;
     // The bitmaps for the additional frame of animated pointer icon. Note that the first frame
     // will be stored in mBitmap.
+    @UnsupportedAppUsage
     private Bitmap mBitmapFrames[];
+    @UnsupportedAppUsage
     private int mDurationPerFrame;
 
     private PointerIcon(int type) {
@@ -312,6 +319,7 @@
      * @throws IllegalArgumentException if context is null.
      * @hide
      */
+    @UnsupportedAppUsage
     public PointerIcon load(@NonNull Context context) {
         if (context == null) {
             throw new IllegalArgumentException("context must not be null");
diff --git a/core/java/android/view/RemoteAnimationAdapter.java b/core/java/android/view/RemoteAnimationAdapter.java
index a864e55..3c9ce78 100644
--- a/core/java/android/view/RemoteAnimationAdapter.java
+++ b/core/java/android/view/RemoteAnimationAdapter.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityOptions;
 import android.os.IBinder;
 import android.os.Parcel;
@@ -61,6 +62,7 @@
      * @param statusBarTransitionDelay The desired delay for all visual animations in the
      *        status bar caused by this app animation in millis.
      */
+    @UnsupportedAppUsage
     public RemoteAnimationAdapter(IRemoteAnimationRunner runner, long duration,
             long statusBarTransitionDelay) {
         mRunner = runner;
diff --git a/core/java/android/view/RemoteAnimationDefinition.java b/core/java/android/view/RemoteAnimationDefinition.java
index d2240e1..beb1c1d 100644
--- a/core/java/android/view/RemoteAnimationDefinition.java
+++ b/core/java/android/view/RemoteAnimationDefinition.java
@@ -19,6 +19,7 @@
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.app.WindowConfiguration;
 import android.app.WindowConfiguration.ActivityType;
 import android.os.Parcel;
@@ -36,6 +37,7 @@
 
     private final SparseArray<RemoteAnimationAdapterEntry> mTransitionAnimationMap;
 
+    @UnsupportedAppUsage
     public RemoteAnimationDefinition() {
         mTransitionAnimationMap = new SparseArray<>();
     }
@@ -48,6 +50,7 @@
      *                           parameter is involved in the transition.
      * @param adapter The adapter that described how to run the remote animation.
      */
+    @UnsupportedAppUsage
     public void addRemoteAnimation(@TransitionType int transition,
             @ActivityType int activityTypeFilter, RemoteAnimationAdapter adapter) {
         mTransitionAnimationMap.put(transition,
@@ -61,6 +64,7 @@
      * @param transition The transition type. Must be one of WindowManager.TRANSIT_* values.
      * @param adapter The adapter that described how to run the remote animation.
      */
+    @UnsupportedAppUsage
     public void addRemoteAnimation(@TransitionType int transition, RemoteAnimationAdapter adapter) {
         addRemoteAnimation(transition, ACTIVITY_TYPE_UNDEFINED, adapter);
     }
diff --git a/core/java/android/view/RemoteAnimationTarget.java b/core/java/android/view/RemoteAnimationTarget.java
index 1c5c630..567b279 100644
--- a/core/java/android/view/RemoteAnimationTarget.java
+++ b/core/java/android/view/RemoteAnimationTarget.java
@@ -28,6 +28,7 @@
 import static android.view.RemoteAnimationTargetProto.WINDOW_CONFIGURATION;
 
 import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
 import android.app.WindowConfiguration;
 import android.graphics.Point;
 import android.graphics.Rect;
@@ -66,21 +67,25 @@
     /**
      * The {@link Mode} to describe whether this app is opening or closing.
      */
+    @UnsupportedAppUsage
     public final @Mode int mode;
 
     /**
      * The id of the task this app belongs to.
      */
+    @UnsupportedAppUsage
     public final int taskId;
 
     /**
      * The {@link SurfaceControl} object to actually control the transform of the app.
      */
+    @UnsupportedAppUsage
     public final SurfaceControl leash;
 
     /**
      * Whether the app is translucent and may reveal apps behind.
      */
+    @UnsupportedAppUsage
     public final boolean isTranslucent;
 
     /**
@@ -89,11 +94,13 @@
      * anything that extends beyond these bounds will not have any effect. This implies that any
      * clip-rect animation should likely stop at these bounds.
      */
+    @UnsupportedAppUsage
     public final Rect clipRect;
 
     /**
      * The insets of the main app window.
      */
+    @UnsupportedAppUsage
     public final Rect contentInsets;
 
     /**
@@ -101,6 +108,7 @@
      * to preserve original z-layer order in the hierarchy tree assuming no "boosting" needs to
      * happen.
      */
+    @UnsupportedAppUsage
     public final int prefixOrderIndex;
 
     /**
@@ -108,6 +116,7 @@
      * is modified from the controlling app, any animation transform needs to be offset by this
      * amount.
      */
+    @UnsupportedAppUsage
     public final Point position;
 
     /**
@@ -115,16 +124,19 @@
      * of the leash is modified from the controlling app, it needs to take the source container
      * bounds into account when calculating the crop.
      */
+    @UnsupportedAppUsage
     public final Rect sourceContainerBounds;
 
     /**
      * The window configuration for the target.
      */
+    @UnsupportedAppUsage
     public final WindowConfiguration windowConfiguration;
 
     /**
      * Whether the task is not presented in Recents UI.
      */
+    @UnsupportedAppUsage
     public boolean isNotInRecents;
 
     public RemoteAnimationTarget(int taskId, int mode, SurfaceControl leash, boolean isTranslucent,
diff --git a/core/java/android/view/RenderNode.java b/core/java/android/view/RenderNode.java
index e0df59f..fcea0c3 100644
--- a/core/java/android/view/RenderNode.java
+++ b/core/java/android/view/RenderNode.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Matrix;
 import android.graphics.Outline;
 import android.graphics.Paint;
@@ -172,6 +173,7 @@
      *
      * @return A new RenderNode.
      */
+    @UnsupportedAppUsage
     public static RenderNode create(String name, @Nullable View owningView) {
         return new RenderNode(name, owningView);
     }
@@ -211,6 +213,7 @@
      * @see #end(DisplayListCanvas)
      * @see #isValid()
      */
+    @UnsupportedAppUsage
     public DisplayListCanvas start(int width, int height) {
         return DisplayListCanvas.obtain(this, width, height);
     }
@@ -231,6 +234,7 @@
      * @see #start(int, int)
      * @see #isValid()
      */
+    @UnsupportedAppUsage
     public void end(DisplayListCanvas canvas) {
         long displayList = canvas.finishRecording();
         nSetDisplayList(mNativeRenderNode, displayList);
@@ -242,6 +246,7 @@
      * during destruction of hardware resources, to ensure that we do not hold onto
      * obsolete resources after related resources are gone.
      */
+    @UnsupportedAppUsage
     public void discardDisplayList() {
         nSetDisplayList(mNativeRenderNode, 0);
     }
@@ -252,6 +257,7 @@
      *
      * @return boolean true if the display list is able to be replayed, false otherwise.
      */
+    @UnsupportedAppUsage
     public boolean isValid() {
         return nIsValid(mNativeRenderNode);
     }
@@ -298,6 +304,7 @@
      *
      * @param clipToBounds true if the display list should clip to its bounds
      */
+    @UnsupportedAppUsage
     public boolean setClipToBounds(boolean clipToBounds) {
         return nSetClipToBounds(mNativeRenderNode, clipToBounds);
     }
@@ -309,6 +316,7 @@
      * @param shouldProject true if the display list should be projected onto a
      *            containing volume.
      */
+    @UnsupportedAppUsage
     public boolean setProjectBackwards(boolean shouldProject) {
         return nSetProjectBackwards(mNativeRenderNode, shouldProject);
     }
@@ -449,6 +457,7 @@
      * @see android.view.View#hasOverlappingRendering()
      * @see #hasOverlappingRendering()
      */
+    @UnsupportedAppUsage
     public boolean setHasOverlappingRendering(boolean hasOverlappingRendering) {
         return nSetHasOverlappingRendering(mNativeRenderNode, hasOverlappingRendering);
     }
@@ -788,6 +797,7 @@
      * @see View#setRight(int)
      * @see View#setBottom(int)
      */
+    @UnsupportedAppUsage
     public boolean setLeftTopRightBottom(int left, int top, int right, int bottom) {
         return nSetLeftTopRightBottom(mNativeRenderNode, left, top, right, bottom);
     }
@@ -800,6 +810,7 @@
      *
      * @see View#offsetLeftAndRight(int)
      */
+    @UnsupportedAppUsage
     public boolean offsetLeftAndRight(int offset) {
         return nOffsetLeftAndRight(mNativeRenderNode, offset);
     }
@@ -820,6 +831,7 @@
      * Outputs the display list to the log. This method exists for use by
      * tools to output display lists for selected nodes to the log.
      */
+    @UnsupportedAppUsage
     public void output() {
         nOutput(mNativeRenderNode);
     }
diff --git a/core/java/android/view/RenderNodeAnimator.java b/core/java/android/view/RenderNodeAnimator.java
index d26a2f6..e48bcfd 100644
--- a/core/java/android/view/RenderNodeAnimator.java
+++ b/core/java/android/view/RenderNodeAnimator.java
@@ -19,6 +19,7 @@
 import android.animation.Animator;
 import android.animation.TimeInterpolator;
 import android.animation.ValueAnimator;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.CanvasProperty;
 import android.graphics.Paint;
 import android.util.SparseIntArray;
@@ -103,10 +104,12 @@
     private long mStartDelay = 0;
     private long mStartTime;
 
+    @UnsupportedAppUsage
     public static int mapViewPropertyToRenderProperty(int viewProperty) {
         return sViewPropertyAnimatorMap.get(viewProperty);
     }
 
+    @UnsupportedAppUsage
     public RenderNodeAnimator(int property, float finalValue) {
         mRenderProperty = property;
         mFinalValue = finalValue;
@@ -114,6 +117,7 @@
         init(nCreateAnimator(property, finalValue));
     }
 
+    @UnsupportedAppUsage
     public RenderNodeAnimator(CanvasProperty<Float> property, float finalValue) {
         init(nCreateCanvasPropertyFloatAnimator(
                 property.getNativeContainer(), finalValue));
@@ -128,6 +132,7 @@
      *            {@link #PAINT_STROKE_WIDTH}
      * @param finalValue The target value for the property
      */
+    @UnsupportedAppUsage
     public RenderNodeAnimator(CanvasProperty<Paint> property, int paintField, float finalValue) {
         init(nCreateCanvasPropertyPaintAnimator(
                 property.getNativeContainer(), paintField, finalValue));
@@ -275,6 +280,7 @@
         throw new UnsupportedOperationException();
     }
 
+    @UnsupportedAppUsage
     public void setTarget(View view) {
         mViewTarget = view;
         setTarget(mViewTarget.mRenderNode);
@@ -295,6 +301,7 @@
         mTarget.addAnimator(this);
     }
 
+    @UnsupportedAppUsage
     public void setStartValue(float startValue) {
         checkMutable();
         nSetStartValue(mNativePtr.get(), startValue);
@@ -479,6 +486,7 @@
     }
 
     // Called by native
+    @UnsupportedAppUsage
     private static void callOnFinished(RenderNodeAnimator animator) {
         animator.onFinished();
     }
diff --git a/core/java/android/view/ScaleGestureDetector.java b/core/java/android/view/ScaleGestureDetector.java
index 9787494..c189afe 100644
--- a/core/java/android/view/ScaleGestureDetector.java
+++ b/core/java/android/view/ScaleGestureDetector.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.Resources;
 import android.os.Build;
@@ -123,6 +124,7 @@
     }
 
     private final Context mContext;
+    @UnsupportedAppUsage
     private final OnScaleGestureListener mListener;
 
     private float mFocusX;
@@ -141,7 +143,9 @@
     private long mCurrTime;
     private long mPrevTime;
     private boolean mInProgress;
+    @UnsupportedAppUsage
     private int mSpanSlop;
+    @UnsupportedAppUsage
     private int mMinSpan;
 
     private final Handler mHandler;
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index df81a31..427f570 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
 import android.content.res.CompatibilityInfo.Translator;
 import android.graphics.Canvas;
 import android.graphics.GraphicBuffer;
@@ -60,6 +61,7 @@
             throws OutOfResourcesException;
     private static native void nativeUnlockCanvasAndPost(long nativeObject, Canvas canvas);
 
+    @UnsupportedAppUsage
     private static native void nativeRelease(long nativeObject);
     private static native boolean nativeIsValid(long nativeObject);
     private static native boolean nativeIsConsumerRunningBehind(long nativeObject);
@@ -102,9 +104,13 @@
     private final CloseGuard mCloseGuard = CloseGuard.get();
 
     // Guarded state.
+    @UnsupportedAppUsage
     final Object mLock = new Object(); // protects the native state
+    @UnsupportedAppUsage
     private String mName;
+    @UnsupportedAppUsage
     long mNativeObject; // package scope only for SurfaceControl access
+    @UnsupportedAppUsage
     private long mLockedObject;
     private int mGenerationId; // incremented each time mNativeObject changes
     private final Canvas mCanvas = new CompatibleCanvas();
@@ -172,6 +178,7 @@
      * Create an empty surface, which will later be filled in by readFromParcel().
      * @hide
      */
+    @UnsupportedAppUsage
     public Surface() {
     }
 
@@ -203,6 +210,7 @@
     }
 
     /* called from android_view_Surface_createFromIGraphicBufferProducer() */
+    @UnsupportedAppUsage
     private Surface(long nativeObject) {
         synchronized (mLock) {
             setNativeObjectLocked(nativeObject);
@@ -245,6 +253,7 @@
      * called from the process that created the service.
      * @hide
      */
+    @UnsupportedAppUsage
     public void destroy() {
         release();
     }
@@ -293,6 +302,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public long getNextFrameNumber() {
         synchronized (mLock) {
             checkNotReleasedLocked();
@@ -485,6 +495,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void copyFrom(SurfaceControl other) {
         if (other == null) {
             throw new IllegalArgumentException("other must not be null");
@@ -544,6 +555,7 @@
      * @deprecated
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void transferFrom(Surface other) {
         if (other == null) {
             throw new IllegalArgumentException("other must not be null");
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index ed8b005..d9c8f30 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -28,6 +28,7 @@
 import static android.view.SurfaceControlProto.NAME;
 
 import android.annotation.Size;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Bitmap;
 import android.graphics.GraphicBuffer;
 import android.graphics.Matrix;
@@ -179,6 +180,7 @@
     /**
      * Surface creation flag: Surface is created hidden
      */
+    @UnsupportedAppUsage
     public static final int HIDDEN = 0x00000004;
 
     /**
@@ -720,6 +722,7 @@
      */
 
     /** start a transaction */
+    @UnsupportedAppUsage
     public static void openTransaction() {
         synchronized (SurfaceControl.class) {
             if (sGlobalTransaction == null) {
@@ -756,6 +759,7 @@
     }
 
     /** end a transaction */
+    @UnsupportedAppUsage
     public static void closeTransaction() {
         closeTransaction(false);
     }
@@ -811,6 +815,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void setLayer(int zorder) {
         checkNotReleased();
         synchronized(SurfaceControl.class) {
@@ -825,6 +830,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void setPosition(float x, float y) {
         checkNotReleased();
         synchronized(SurfaceControl.class) {
@@ -846,6 +852,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void hide() {
         checkNotReleased();
         synchronized(SurfaceControl.class) {
@@ -853,6 +860,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void show() {
         checkNotReleased();
         synchronized(SurfaceControl.class) {
@@ -986,16 +994,26 @@
      * Describes the properties of a physical display known to surface flinger.
      */
     public static final class PhysicalDisplayInfo {
+        @UnsupportedAppUsage
         public int width;
+        @UnsupportedAppUsage
         public int height;
+        @UnsupportedAppUsage
         public float refreshRate;
+        @UnsupportedAppUsage
         public float density;
+        @UnsupportedAppUsage
         public float xDpi;
+        @UnsupportedAppUsage
         public float yDpi;
+        @UnsupportedAppUsage
         public boolean secure;
+        @UnsupportedAppUsage
         public long appVsyncOffsetNanos;
+        @UnsupportedAppUsage
         public long presentationDeadlineNanos;
 
+        @UnsupportedAppUsage
         public PhysicalDisplayInfo() {
         }
 
@@ -1055,6 +1073,7 @@
         nativeSetDisplayPowerMode(displayToken, mode);
     }
 
+    @UnsupportedAppUsage
     public static SurfaceControl.PhysicalDisplayInfo[] getDisplayConfigs(IBinder displayToken) {
         if (displayToken == null) {
             throw new IllegalArgumentException("displayToken must not be null");
@@ -1097,6 +1116,7 @@
         return nativeSetActiveColorMode(displayToken, colorMode);
     }
 
+    @UnsupportedAppUsage
     public static void setDisplayProjection(IBinder displayToken,
             int orientation, Rect layerStackRect, Rect displayRect) {
         synchronized (SurfaceControl.class) {
@@ -1105,12 +1125,14 @@
         }
     }
 
+    @UnsupportedAppUsage
     public static void setDisplayLayerStack(IBinder displayToken, int layerStack) {
         synchronized (SurfaceControl.class) {
             sGlobalTransaction.setDisplayLayerStack(displayToken, layerStack);
         }
     }
 
+    @UnsupportedAppUsage
     public static void setDisplaySurface(IBinder displayToken, Surface surface) {
         synchronized (SurfaceControl.class) {
             sGlobalTransaction.setDisplaySurface(displayToken, surface);
@@ -1130,6 +1152,7 @@
         return nativeGetHdrCapabilities(displayToken);
     }
 
+    @UnsupportedAppUsage
     public static IBinder createDisplay(String name, boolean secure) {
         if (name == null) {
             throw new IllegalArgumentException("name must not be null");
@@ -1137,6 +1160,7 @@
         return nativeCreateDisplay(name, secure);
     }
 
+    @UnsupportedAppUsage
     public static void destroyDisplay(IBinder displayToken) {
         if (displayToken == null) {
             throw new IllegalArgumentException("displayToken must not be null");
@@ -1144,6 +1168,7 @@
         nativeDestroyDisplay(displayToken);
     }
 
+    @UnsupportedAppUsage
     public static IBinder getBuiltInDisplay(int builtInDisplayId) {
         return nativeGetBuiltInDisplay(builtInDisplayId);
     }
@@ -1229,6 +1254,7 @@
      * if an error occurs. Make sure to call Bitmap.recycle() as soon as
      * possible, once its content is not needed anymore.
      */
+    @UnsupportedAppUsage
     public static Bitmap screenshot(Rect sourceCrop, int width, int height,
             int minLayer, int maxLayer, boolean useIdentityTransform,
             int rotation) {
@@ -1272,6 +1298,7 @@
      * if an error occurs. Make sure to call Bitmap.recycle() as soon as
      * possible, once its content is not needed anymore.
      */
+    @UnsupportedAppUsage
     public static Bitmap screenshot(Rect sourceCrop, int width, int height, int rotation) {
         // TODO: should take the display as a parameter
         IBinder displayToken = SurfaceControl.getBuiltInDisplay(
@@ -1285,6 +1312,7 @@
                 false, rotation);
     }
 
+    @UnsupportedAppUsage
     private static void screenshot(IBinder display, Surface consumer, Rect sourceCrop,
             int width, int height, int minLayer, int maxLayer, boolean allLayers,
             boolean useIdentityTransform) {
@@ -1334,6 +1362,7 @@
         private final ArrayMap<SurfaceControl, Point> mResizedSurfaces = new ArrayMap<>();
         Runnable mFreeNativeResources;
 
+        @UnsupportedAppUsage
         public Transaction() {
             mNativeObject = nativeCreateTransaction();
             mFreeNativeResources
@@ -1344,6 +1373,7 @@
          * Apply the transaction, clearing it's state, and making it usable
          * as a new transaction.
          */
+        @UnsupportedAppUsage
         public void apply() {
             apply(false);
         }
@@ -1378,24 +1408,28 @@
             mResizedSurfaces.clear();
         }
 
+        @UnsupportedAppUsage
         public Transaction show(SurfaceControl sc) {
             sc.checkNotReleased();
             nativeSetFlags(mNativeObject, sc.mNativeObject, 0, SURFACE_HIDDEN);
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction hide(SurfaceControl sc) {
             sc.checkNotReleased();
             nativeSetFlags(mNativeObject, sc.mNativeObject, SURFACE_HIDDEN, SURFACE_HIDDEN);
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction setPosition(SurfaceControl sc, float x, float y) {
             sc.checkNotReleased();
             nativeSetPosition(mNativeObject, sc.mNativeObject, x, y);
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction setSize(SurfaceControl sc, int w, int h) {
             sc.checkNotReleased();
             mResizedSurfaces.put(sc, new Point(w, h));
@@ -1403,6 +1437,7 @@
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction setLayer(SurfaceControl sc, int z) {
             sc.checkNotReleased();
             nativeSetLayer(mNativeObject, sc.mNativeObject, z);
@@ -1423,12 +1458,14 @@
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction setAlpha(SurfaceControl sc, float alpha) {
             sc.checkNotReleased();
             nativeSetAlpha(mNativeObject, sc.mNativeObject, alpha);
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction setMatrix(SurfaceControl sc,
                 float dsdx, float dtdx, float dtdy, float dsdy) {
             sc.checkNotReleased();
@@ -1437,6 +1474,7 @@
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction setMatrix(SurfaceControl sc, Matrix matrix, float[] float9) {
             matrix.getValues(float9);
             setMatrix(sc, float9[MSCALE_X], float9[MSKEW_Y],
@@ -1445,6 +1483,7 @@
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction setWindowCrop(SurfaceControl sc, Rect crop) {
             sc.checkNotReleased();
             if (crop != null) {
@@ -1457,6 +1496,7 @@
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction setFinalCrop(SurfaceControl sc, Rect crop) {
             sc.checkNotReleased();
             if (crop != null) {
@@ -1475,6 +1515,7 @@
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction deferTransactionUntil(SurfaceControl sc, IBinder handle,
                 long frameNumber) {
             if (frameNumber < 0) {
@@ -1485,6 +1526,7 @@
             return this;
         }
 
+        @UnsupportedAppUsage
         public Transaction deferTransactionUntilSurface(SurfaceControl sc, Surface barrierSurface,
                 long frameNumber) {
             if (frameNumber < 0) {
@@ -1527,6 +1569,7 @@
          * Sets a color for the Surface.
          * @param color A float array with three values to represent r, g, b in range [0..1]
          */
+        @UnsupportedAppUsage
         public Transaction setColor(SurfaceControl sc, @Size(3) float[] color) {
             sc.checkNotReleased();
             nativeSetColor(mNativeObject, sc.mNativeObject, color);
diff --git a/core/java/android/view/SurfaceSession.java b/core/java/android/view/SurfaceSession.java
index ee08bf7..a4fa12a 100644
--- a/core/java/android/view/SurfaceSession.java
+++ b/core/java/android/view/SurfaceSession.java
@@ -16,6 +16,8 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * An instance of this class represents a connection to the surface
  * flinger, from which you can create one or more Surface instances that will
@@ -24,6 +26,7 @@
  */
 public final class SurfaceSession {
     // Note: This field is accessed by native code.
+    @UnsupportedAppUsage
     private long mNativeClient; // SurfaceComposerClient*
 
     private static native long nativeCreate();
@@ -32,6 +35,7 @@
     private static native void nativeKill(long ptr);
 
     /** Create a new connection with the surface flinger. */
+    @UnsupportedAppUsage
     public SurfaceSession() {
         mNativeClient = nativeCreate();
     }
@@ -62,6 +66,7 @@
      * Unlike destroy(), after this call any surfaces that were created
      * from the session will no longer work.
      */
+    @UnsupportedAppUsage
     public void kill() {
         nativeKill(mNativeClient);
     }
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 44c1780..6319a8f 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -20,6 +20,7 @@
 import static android.view.WindowManagerPolicyConstants.APPLICATION_MEDIA_SUBLAYER;
 import static android.view.WindowManagerPolicyConstants.APPLICATION_PANEL_SUBLAYER;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.CompatibilityInfo.Translator;
 import android.content.res.Configuration;
@@ -98,13 +99,17 @@
     private static final String TAG = "SurfaceView";
     private static final boolean DEBUG = false;
 
+    @UnsupportedAppUsage
     final ArrayList<SurfaceHolder.Callback> mCallbacks
             = new ArrayList<SurfaceHolder.Callback>();
 
     final int[] mLocation = new int[2];
 
+    @UnsupportedAppUsage
     final ReentrantLock mSurfaceLock = new ReentrantLock();
+    @UnsupportedAppUsage
     final Surface mSurface = new Surface();       // Current surface in use
+    @UnsupportedAppUsage
     boolean mDrawingStopped = true;
     // We use this to track if the application has produced a frame
     // in to the Surface. Up until that point, we should be careful not to punch
@@ -123,6 +128,7 @@
 
     int mSubLayer = APPLICATION_MEDIA_SUBLAYER;
 
+    @UnsupportedAppUsage
     boolean mIsCreating = false;
     private volatile boolean mRtHandlingPositionUpdates = false;
 
@@ -134,6 +140,7 @@
                     }
             };
 
+    @UnsupportedAppUsage
     private final ViewTreeObserver.OnPreDrawListener mDrawListener =
             new ViewTreeObserver.OnPreDrawListener() {
                 @Override
@@ -151,15 +158,20 @@
     boolean mViewVisibility = false;
     boolean mWindowStopped = false;
 
+    @UnsupportedAppUsage
     int mRequestedWidth = -1;
+    @UnsupportedAppUsage
     int mRequestedHeight = -1;
     /* Set SurfaceView's format to 565 by default to maintain backward
      * compatibility with applications assuming this format.
      */
+    @UnsupportedAppUsage
     int mRequestedFormat = PixelFormat.RGB_565;
 
+    @UnsupportedAppUsage
     boolean mHaveFrame = false;
     boolean mSurfaceCreated = false;
+    @UnsupportedAppUsage
     long mLastLockTime = 0;
 
     boolean mVisible = false;
@@ -167,7 +179,9 @@
     int mWindowSpaceTop = -1;
     int mSurfaceWidth = -1;
     int mSurfaceHeight = -1;
+    @UnsupportedAppUsage
     int mFormat = -1;
+    @UnsupportedAppUsage
     final Rect mSurfaceFrame = new Rect();
     int mLastSurfaceWidth = -1, mLastSurfaceHeight = -1;
     private Translator mTranslator;
@@ -340,6 +354,7 @@
 
     /** @hide */
     @Override
+    @UnsupportedAppUsage
     protected boolean setFrame(int left, int top, int right, int bottom) {
         boolean result = super.setFrame(left, top, right, bottom);
         updateSurface();
@@ -814,6 +829,7 @@
      * Called by native by a Rendering Worker thread to update the window position
      * @hide
      */
+    @UnsupportedAppUsage
     public final void updateSurfacePosition_renderWorker(long frameNumber,
             int left, int top, int right, int bottom) {
         if (mSurfaceControl == null) {
@@ -854,6 +870,7 @@
      * draw tree. UI thread is blocked at this point.
      * @hide
      */
+    @UnsupportedAppUsage
     public final void surfacePositionLost_uiRtSync(long frameNumber) {
         if (DEBUG) {
             Log.d(TAG, String.format("%d windowPositionLost, frameNr = %d",
@@ -909,6 +926,7 @@
      * @return true if the surface has dimensions that are fixed in size
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isFixedSize() {
         return (mRequestedWidth != -1 || mRequestedHeight != -1);
     }
@@ -928,6 +946,7 @@
         mSurfaceControl.setBackgroundColor(bgColor);
     }
 
+    @UnsupportedAppUsage
     private final SurfaceHolder mSurfaceHolder = new SurfaceHolder() {
         private static final String LOG_TAG = "SurfaceHolder";
 
diff --git a/core/java/android/view/TextureView.java b/core/java/android/view/TextureView.java
index 371794045..997e48fe 100644
--- a/core/java/android/view/TextureView.java
+++ b/core/java/android/view/TextureView.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
@@ -106,11 +107,14 @@
 public class TextureView extends View {
     private static final String LOG_TAG = "TextureView";
 
+    @UnsupportedAppUsage
     private TextureLayer mLayer;
+    @UnsupportedAppUsage
     private SurfaceTexture mSurface;
     private SurfaceTextureListener mListener;
     private boolean mHadSurface;
 
+    @UnsupportedAppUsage
     private boolean mOpaque = true;
 
     private final Matrix mMatrix = new Matrix();
@@ -118,6 +122,7 @@
 
     private final Object[] mLock = new Object[0];
     private boolean mUpdateLayer;
+    @UnsupportedAppUsage
     private boolean mUpdateSurface;
 
     private Canvas mCanvas;
@@ -125,6 +130,7 @@
 
     private final Object[] mNativeWindowLock = new Object[0];
     // Set by native code, do not write!
+    @UnsupportedAppUsage
     private long mNativeWindow;
 
     /**
@@ -217,6 +223,7 @@
 
     /** @hide */
     @Override
+    @UnsupportedAppUsage
     protected void onDetachedFromWindowInternal() {
         destroyHardwareLayer();
         releaseSurfaceTexture();
@@ -227,11 +234,13 @@
      * @hide
      */
     @Override
+    @UnsupportedAppUsage
     protected void destroyHardwareResources() {
         super.destroyHardwareResources();
         destroyHardwareLayer();
     }
 
+    @UnsupportedAppUsage
     private void destroyHardwareLayer() {
         if (mLayer != null) {
             mLayer.detachSurfaceTexture();
@@ -786,6 +795,7 @@
         mListener = listener;
     }
 
+    @UnsupportedAppUsage
     private final SurfaceTexture.OnFrameAvailableListener mUpdateListener =
             new SurfaceTexture.OnFrameAvailableListener() {
         @Override
@@ -839,7 +849,9 @@
         public void onSurfaceTextureUpdated(SurfaceTexture surface);
     }
 
+    @UnsupportedAppUsage
     private native void nCreateNativeWindow(SurfaceTexture surface);
+    @UnsupportedAppUsage
     private native void nDestroyNativeWindow();
 
     private static native boolean nLockCanvas(long nativeWindow, Canvas canvas, Rect dirty);
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index 2930699..6737839 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityManager;
 import android.content.Context;
 import android.content.res.TypedArray;
@@ -276,6 +277,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static void setupDiskCache(File cacheDir) {
         ThreadedRenderer.setupShadersDiskCache(
                 new File(cacheDir, CACHE_PATH_SHADERS).getAbsolutePath(),
@@ -719,6 +721,7 @@
      * @param placeFront If true, the render node will be placed in front of the content node,
      *                   otherwise behind the content node.
      */
+    @UnsupportedAppUsage
     public void addRenderNode(RenderNode node, boolean placeFront) {
         nAddRenderNode(mNativeProxy, node.mNativeRenderNode, placeFront);
     }
@@ -727,6 +730,7 @@
      * Only especially added render nodes can be removed.
      * @param node The node which was added via addRenderNode which should get removed again.
      */
+    @UnsupportedAppUsage
     public void removeRenderNode(RenderNode node) {
         nRemoveRenderNode(mNativeProxy, node.mNativeRenderNode);
     }
@@ -736,6 +740,7 @@
      * nodes will get drawn and the content remains untouched.
      * @param node The node to be drawn.
      */
+    @UnsupportedAppUsage
     public void drawRenderNode(RenderNode node) {
         nDrawRenderNode(mNativeProxy, node.mNativeRenderNode);
     }
@@ -749,6 +754,7 @@
      * @param right The right side of the protected bounds.
      * @param bottom The bottom side of the protected bounds.
      */
+    @UnsupportedAppUsage
     public void setContentDrawBounds(int left, int top, int right, int bottom) {
         nSetContentDrawBounds(mNativeProxy, left, top, right, bottom);
     }
@@ -929,6 +935,7 @@
      * RenderNode. Note that the RenderNode should be created as a root node (so x/y of 0,0), and
      * not the RenderNode from a View.
      **/
+    @UnsupportedAppUsage
     public static Bitmap createHardwareBitmap(RenderNode node, int width, int height) {
         return nCreateHardwareBitmap(node.mNativeRenderNode, width, height);
     }
diff --git a/core/java/android/view/TouchDelegate.java b/core/java/android/view/TouchDelegate.java
index d6c43e8..b361ab4 100644
--- a/core/java/android/view/TouchDelegate.java
+++ b/core/java/android/view/TouchDelegate.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Rect;
 
 /**
@@ -51,6 +52,7 @@
     /**
      * True if the delegate had been targeted on a down event (intersected mBounds).
      */
+    @UnsupportedAppUsage
     private boolean mDelegateTargeted;
 
     /**
diff --git a/core/java/android/view/VelocityTracker.java b/core/java/android/view/VelocityTracker.java
index 22b5cca..7154f2b 100644
--- a/core/java/android/view/VelocityTracker.java
+++ b/core/java/android/view/VelocityTracker.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.util.Pools.SynchronizedPool;
 
 /**
@@ -68,6 +69,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static VelocityTracker obtain(String strategy) {
         if (strategy == null) {
             return obtain();
@@ -235,21 +237,25 @@
         /**
          * Polynomial coefficients describing motion in X.
          */
+        @UnsupportedAppUsage
         public final float[] xCoeff = new float[MAX_DEGREE + 1];
 
         /**
          * Polynomial coefficients describing motion in Y.
          */
+        @UnsupportedAppUsage
         public final float[] yCoeff = new float[MAX_DEGREE + 1];
 
         /**
          * Polynomial degree, or zero if only position information is available.
          */
+        @UnsupportedAppUsage
         public int degree;
 
         /**
          * Confidence (coefficient of determination), between 0 (no fit) and 1 (perfect fit).
          */
+        @UnsupportedAppUsage
         public float confidence;
 
         /**
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index d9057de..9bc53ed 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -35,6 +35,7 @@
 import android.annotation.Size;
 import android.annotation.TestApi;
 import android.annotation.UiThread;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ClipData;
 import android.content.Context;
 import android.content.ContextWrapper;
@@ -777,6 +778,7 @@
 @UiThread
 public class View implements Drawable.Callback, KeyEvent.Callback,
         AccessibilityEventSource {
+    @UnsupportedAppUsage
     private static final boolean DBG = false;
 
     /** @hide */
@@ -799,6 +801,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static final String DEBUG_LAYOUT_PROPERTY = "debug.layout";
 
     /**
@@ -2157,6 +2160,7 @@
     /**
      * Map used to store views' tags.
      */
+    @UnsupportedAppUsage
     private SparseArray<Object> mKeyedTags;
 
     /**
@@ -2175,6 +2179,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "measurement")
+    @UnsupportedAppUsage
     int mMeasuredWidth;
 
     /**
@@ -2182,6 +2187,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "measurement")
+    @UnsupportedAppUsage
     int mMeasuredHeight;
 
     /**
@@ -2193,6 +2199,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     boolean mRecreateDisplayList = false;
 
     /**
@@ -2219,6 +2226,7 @@
     private int mAutofillViewId = NO_ID;
 
     // ID for accessibility purposes. This ID must be unique for every window
+    @UnsupportedAppUsage
     private int mAccessibilityViewId = NO_ID;
 
     private int mAccessibilityCursorPosition = ACCESSIBILITY_CURSOR_POSITION_UNDEFINED;
@@ -2230,6 +2238,7 @@
      * @see #setTag(Object)
      * @see #getTag()
      */
+    @UnsupportedAppUsage
     protected Object mTag = null;
 
     // for mPrivateFlags:
@@ -3522,6 +3531,7 @@
      * Flag to make the status bar not expandable.  Unless you also
      * set {@link #STATUS_BAR_DISABLE_NOTIFICATION_ICONS}, new notifications will continue to show.
      */
+    @UnsupportedAppUsage
     public static final int STATUS_BAR_DISABLE_EXPAND = 0x00010000;
 
     /**
@@ -3576,6 +3586,7 @@
      * Flag to hide only the home button.  Don't use this
      * unless you're a special part of the system UI (i.e., setup wizard, keyguard).
      */
+    @UnsupportedAppUsage
     public static final int STATUS_BAR_DISABLE_HOME = 0x00200000;
 
     /**
@@ -3587,6 +3598,7 @@
      * Flag to hide only the back button. Don't use this
      * unless you're a special part of the system UI (i.e., setup wizard, keyguard).
      */
+    @UnsupportedAppUsage
     public static final int STATUS_BAR_DISABLE_BACK = 0x00400000;
 
     /**
@@ -3609,6 +3621,7 @@
      * Flag to hide only the recent apps button. Don't use this
      * unless you're a special part of the system UI (i.e., setup wizard, keyguard).
      */
+    @UnsupportedAppUsage
     public static final int STATUS_BAR_DISABLE_RECENT = 0x01000000;
 
     /**
@@ -3640,6 +3653,7 @@
      *
      * Flag to specify that the navigation bar is displayed in transient mode.
      */
+    @UnsupportedAppUsage
     public static final int NAVIGATION_BAR_TRANSIENT = 0x08000000;
 
     /**
@@ -3813,11 +3827,13 @@
      *
      * @see #getParent()
      */
+    @UnsupportedAppUsage
     protected ViewParent mParent;
 
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     AttachInfo mAttachInfo;
 
     /**
@@ -3836,8 +3852,11 @@
     }, formatToHexString = true)
 
     /* @hide */
+    @UnsupportedAppUsage
     public int mPrivateFlags;
+    @UnsupportedAppUsage
     int mPrivateFlags2;
+    @UnsupportedAppUsage
     int mPrivateFlags3;
 
     /**
@@ -3949,6 +3968,7 @@
      * laid out.
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected ViewGroup.LayoutParams mLayoutParams;
 
     /**
@@ -3956,6 +3976,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(formatToHexString = true)
+    @UnsupportedAppUsage
     int mViewFlags;
 
     static class TransformationInfo {
@@ -3993,6 +4014,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public TransformationInfo mTransformationInfo;
 
     /**
@@ -4009,6 +4031,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "layout")
+    @UnsupportedAppUsage
     protected int mLeft;
     /**
      * The distance in pixels from the left edge of this view's parent
@@ -4016,6 +4039,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "layout")
+    @UnsupportedAppUsage
     protected int mRight;
     /**
      * The distance in pixels from the top edge of this view's parent
@@ -4023,6 +4047,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "layout")
+    @UnsupportedAppUsage
     protected int mTop;
     /**
      * The distance in pixels from the top edge of this view's parent
@@ -4030,6 +4055,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "layout")
+    @UnsupportedAppUsage
     protected int mBottom;
 
     /**
@@ -4038,6 +4064,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "scrolling")
+    @UnsupportedAppUsage
     protected int mScrollX;
     /**
      * The offset, in pixels, by which the content of this view is scrolled
@@ -4045,6 +4072,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "scrolling")
+    @UnsupportedAppUsage
     protected int mScrollY;
 
     /**
@@ -4053,6 +4081,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "padding")
+    @UnsupportedAppUsage
     protected int mPaddingLeft = 0;
     /**
      * The right padding in pixels, that is the distance in pixels between the
@@ -4060,6 +4089,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "padding")
+    @UnsupportedAppUsage
     protected int mPaddingRight = 0;
     /**
      * The top padding in pixels, that is the distance in pixels between the
@@ -4067,6 +4097,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "padding")
+    @UnsupportedAppUsage
     protected int mPaddingTop;
     /**
      * The bottom padding in pixels, that is the distance in pixels between the
@@ -4074,6 +4105,7 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(category = "padding")
+    @UnsupportedAppUsage
     protected int mPaddingBottom;
 
     /**
@@ -4199,6 +4231,7 @@
     private LongSparseLongArray mMeasureCache;
 
     @ViewDebug.ExportedProperty(deepExport = true, prefix = "bg_")
+    @UnsupportedAppUsage
     private Drawable mBackground;
     private TintInfo mBackgroundTint;
 
@@ -4216,6 +4249,7 @@
      */
     private RenderNode mBackgroundRenderNode;
 
+    @UnsupportedAppUsage
     private int mBackgroundResource;
     private boolean mBackgroundSizeChanged;
 
@@ -4266,6 +4300,7 @@
          * This field should be made private, so it is hidden from the SDK.
          * {@hide}
          */
+        @UnsupportedAppUsage
         protected OnFocusChangeListener mOnFocusChangeListener;
 
         /**
@@ -4285,6 +4320,7 @@
          * This field should be made private, so it is hidden from the SDK.
          * {@hide}
          */
+        @UnsupportedAppUsage
         public OnClickListener mOnClickListener;
 
         /**
@@ -4292,6 +4328,7 @@
          * This field should be made private, so it is hidden from the SDK.
          * {@hide}
          */
+        @UnsupportedAppUsage
         protected OnLongClickListener mOnLongClickListener;
 
         /**
@@ -4306,16 +4343,22 @@
          * This field should be made private, so it is hidden from the SDK.
          * {@hide}
          */
+        @UnsupportedAppUsage
         protected OnCreateContextMenuListener mOnCreateContextMenuListener;
 
+        @UnsupportedAppUsage
         private OnKeyListener mOnKeyListener;
 
+        @UnsupportedAppUsage
         private OnTouchListener mOnTouchListener;
 
+        @UnsupportedAppUsage
         private OnHoverListener mOnHoverListener;
 
+        @UnsupportedAppUsage
         private OnGenericMotionListener mOnGenericMotionListener;
 
+        @UnsupportedAppUsage
         private OnDragListener mOnDragListener;
 
         private OnSystemUiVisibilityChangeListener mOnSystemUiVisibilityChangeListener;
@@ -4327,6 +4370,7 @@
         private ArrayList<OnUnhandledKeyEventListener> mUnhandledKeyListeners;
     }
 
+    @UnsupportedAppUsage
     ListenerInfo mListenerInfo;
 
     private static class TooltipInfo {
@@ -4405,10 +4449,13 @@
      * {@hide}
      */
     @ViewDebug.ExportedProperty(deepExport = true)
+    @UnsupportedAppUsage
     protected Context mContext;
 
+    @UnsupportedAppUsage
     private final Resources mResources;
 
+    @UnsupportedAppUsage
     private ScrollabilityCache mScrollCache;
 
     private int[] mDrawableState = null;
@@ -4464,6 +4511,7 @@
     boolean mDefaultFocusHighlightEnabled = true;
 
     private CheckForLongPress mPendingCheckForLongPress;
+    @UnsupportedAppUsage
     private CheckForTap mPendingCheckForTap = null;
     private PerformClick mPerformClick;
     private SendViewScrolledAccessibilityEvent mSendViewScrolledAccessibilityEvent;
@@ -4476,6 +4524,7 @@
      * a long press could be performed before the tap is checked, in which case the tap's action
      * should not be invoked.
      */
+    @UnsupportedAppUsage
     private boolean mHasPerformedLongPress;
 
     /**
@@ -4497,6 +4546,7 @@
      * of this view to at least this amount.
      */
     @ViewDebug.ExportedProperty(category = "measurement")
+    @UnsupportedAppUsage
     private int mMinHeight;
 
     /**
@@ -4504,6 +4554,7 @@
      * of this view to at least this amount.
      */
     @ViewDebug.ExportedProperty(category = "measurement")
+    @UnsupportedAppUsage
     private int mMinWidth;
 
     /**
@@ -4531,6 +4582,7 @@
     /**
      * Object that handles automatic animation of view properties.
      */
+    @UnsupportedAppUsage
     private ViewPropertyAnimator mAnimator = null;
 
     /**
@@ -4599,6 +4651,7 @@
     /**
      * Position of the vertical scroll bar.
      */
+    @UnsupportedAppUsage
     private int mVerticalScrollbarPosition;
 
     /**
@@ -4692,8 +4745,11 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean mCachingFailed;
+    @UnsupportedAppUsage
     private Bitmap mDrawingCache;
+    @UnsupportedAppUsage
     private Bitmap mUnscaledDrawingCache;
 
     /**
@@ -4703,6 +4759,7 @@
      * of the View content. Its DisplayList content is cleared on temporary detach and reset on
      * cleanup.
      */
+    @UnsupportedAppUsage
     final RenderNode mRenderNode;
 
     /**
@@ -4714,6 +4771,7 @@
     /**
      * Delegate for injecting accessibility functionality.
      */
+    @UnsupportedAppUsage
     AccessibilityDelegate mAccessibilityDelegate;
 
     /**
@@ -4775,6 +4833,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     String mStartActivityRequestWho;
 
     @Nullable
@@ -5670,6 +5729,7 @@
     /**
      * Non-public constructor for use in testing
      */
+    @UnsupportedAppUsage
     View() {
         mResources = null;
         mRenderNode = RenderNode.create(getClass().getName(), this);
@@ -5993,6 +6053,7 @@
      * @param a the styled attributes set to initialize the scrollbars from
      * @hide
      */
+    @UnsupportedAppUsage
     protected void initializeScrollbarsInternal(TypedArray a) {
         initScrollCache();
 
@@ -6085,6 +6146,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private ScrollabilityCache getScrollCache() {
         initScrollCache();
         return mScrollCache;
@@ -6140,6 +6202,7 @@
         return false;
     }
 
+    @UnsupportedAppUsage
     boolean isOnScrollbarThumb(float x, float y) {
         return isOnVerticalScrollbarThumb(x, y) || isOnHorizontalScrollbarThumb(x, y);
     }
@@ -6199,6 +6262,7 @@
         return false;
     }
 
+    @UnsupportedAppUsage
     boolean isDraggingScrollBar() {
         return mScrollCache != null
                 && mScrollCache.mScrollBarDraggingState != ScrollabilityCache.NOT_DRAGGING;
@@ -6287,6 +6351,7 @@
                 >>> SCROLL_INDICATORS_TO_PFLAGS3_LSHIFT;
     }
 
+    @UnsupportedAppUsage
     ListenerInfo getListenerInfo() {
         if (mListenerInfo != null) {
             return mListenerInfo;
@@ -6811,6 +6876,7 @@
      * @param requestCode The request code to use.
      * @hide
      */
+    @UnsupportedAppUsage
     public void startActivityForResult(Intent intent, int requestCode) {
         mStartActivityRequestWho = "@android:view:" + System.identityHashCode(this);
         getContext().startActivityForResult(mStartActivityRequestWho, intent, requestCode, null);
@@ -7594,6 +7660,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void onInitializeAccessibilityEventInternal(AccessibilityEvent event) {
         event.setSource(this);
         event.setClassName(getAccessibilityClassName());
@@ -7709,6 +7776,7 @@
      * @param outRect The output location
      * @hide
      */
+    @UnsupportedAppUsage
     public void getBoundsOnScreen(Rect outRect) {
         getBoundsOnScreen(outRect, false);
     }
@@ -7720,6 +7788,7 @@
      * @param clipToParent Whether to clip child bounds to the parent ones.
      * @hide
      */
+    @UnsupportedAppUsage
     public void getBoundsOnScreen(Rect outRect, boolean clipToParent) {
         if (mAttachInfo == null) {
             return;
@@ -8943,6 +9012,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isVisibleToUser() {
         return isVisibleToUser(null);
     }
@@ -8964,6 +9034,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     protected boolean isVisibleToUser(Rect boundInView) {
         if (mAttachInfo != null) {
             // Attached to invisible window means this view is not visible.
@@ -9071,6 +9142,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getAccessibilityViewId() {
         if (mAccessibilityViewId == NO_ID) {
             mAccessibilityViewId = sNextAccessibilityViewId++;
@@ -9290,6 +9362,7 @@
      * @hide pending API council approval
      */
     @CallSuper
+    @UnsupportedAppUsage
     protected void onFocusLost() {
         resetPressedState();
     }
@@ -9815,6 +9888,7 @@
      * @hide
      * @param location an array of two integers in which to hold the coordinates
      */
+    @UnsupportedAppUsage
     public void getLocationInSurface(@Size(2) int[] location) {
         getLocationInWindow(location);
         if (mAttachInfo != null && mAttachInfo.mViewRootImpl != null) {
@@ -9848,6 +9922,7 @@
      * @return
      */
     @Deprecated
+    @UnsupportedAppUsage
     protected boolean computeFitSystemWindows(Rect inoutInsets, Rect outLocalInsets) {
         WindowInsets innerInsets = computeSystemWindowInsets(new WindowInsets(inoutInsets),
                 outLocalInsets);
@@ -9923,6 +9998,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public boolean fitsSystemWindows() {
         return getFitsSystemWindows();
     }
@@ -9949,6 +10025,7 @@
      * For use by PhoneWindow to make its own system window fitting optional.
      * @hide
      */
+    @UnsupportedAppUsage
     public void makeOptionalFitsSystemWindows() {
         setFlags(OPTIONAL_FITS_SYSTEM_WINDOWS, OPTIONAL_FITS_SYSTEM_WINDOWS);
     }
@@ -10293,6 +10370,7 @@
      * @hide
      */
     @ViewDebug.ExportedProperty(category = "layout")
+    @UnsupportedAppUsage
     public boolean isLayoutRtl() {
         return (getLayoutDirection() == LAYOUT_DIRECTION_RTL);
     }
@@ -10623,6 +10701,7 @@
      * @see #onProvideVirtualStructure
      * @attr ref android.R.styleable#View_assistBlocked
      */
+    @UnsupportedAppUsage
     public void setAssistBlocked(boolean enabled) {
         if (enabled) {
             mPrivateFlags3 |= PFLAG3_ASSIST_BLOCKED;
@@ -11312,6 +11391,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean requestAccessibilityFocus() {
         AccessibilityManager manager = AccessibilityManager.getInstance(mContext);
         if (!manager.isEnabled() || !manager.isTouchExplorationEnabled()) {
@@ -11341,6 +11421,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void clearAccessibilityFocus() {
         clearAccessibilityFocusNoCallbacks(0);
 
@@ -11855,6 +11936,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean includeForAccessibility() {
         if (mAttachInfo != null) {
             return (mAttachInfo.mAccessibilityFetchFlags
@@ -11901,6 +11983,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void notifyViewAccessibilityStateChangedIfNeeded(int changeType) {
         if (!AccessibilityManager.getInstance(mContext).isEnabled() || mAttachInfo == null) {
             return;
@@ -11960,6 +12043,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void notifySubtreeAccessibilityStateChangedIfNeeded() {
         if (!AccessibilityManager.getInstance(mContext).isEnabled() || mAttachInfo == null) {
             return;
@@ -12063,6 +12147,7 @@
     *
     * @hide
     */
+    @UnsupportedAppUsage
     public boolean performAccessibilityActionInternal(int action, Bundle arguments) {
         if (isNestedScrollingEnabled()
                 && (action == AccessibilityNodeInfo.ACTION_SCROLL_BACKWARD
@@ -12240,6 +12325,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public CharSequence getIterableTextForAccessibility() {
         return getContentDescription();
     }
@@ -12303,6 +12389,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public TextSegmentIterator getIteratorForGranularity(int granularity) {
         switch (granularity) {
             case AccessibilityNodeInfo.MOVEMENT_GRANULARITY_CHARACTER: {
@@ -12749,6 +12836,7 @@
      * @return True if the event was handled by the view, false otherwise.
      * @hide
      */
+    @UnsupportedAppUsage
     public final boolean dispatchPointerEvent(MotionEvent event) {
         if (event.isTouchEvent()) {
             return dispatchTouchEvent(event);
@@ -13022,6 +13110,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void getWindowDisplayFrame(Rect outRect) {
         if (mAttachInfo != null) {
             try {
@@ -13884,6 +13973,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isInScrollingContainer() {
         ViewParent p = getParent();
         while (p != null && p instanceof ViewGroup) {
@@ -13907,6 +13997,7 @@
     /**
      * Remove the pending click action
      */
+    @UnsupportedAppUsage
     private void removePerformClickCallback() {
         if (mPerformClick != null) {
             removeCallbacks(mPerformClick);
@@ -14005,6 +14096,7 @@
      * @param flags Constant indicating the value which should be set
      * @param mask Constant indicating the bit range that should be changed
      */
+    @UnsupportedAppUsage
     void setFlags(int flags, int mask) {
         final boolean accessibilityEnabled =
                 AccessibilityManager.getInstance(mContext).isEnabled();
@@ -14543,10 +14635,12 @@
      *
      * @return True if the transform matrix is the identity matrix, false otherwise.
      */
+    @UnsupportedAppUsage
     final boolean hasIdentityMatrix() {
         return mRenderNode.hasIdentityMatrix();
     }
 
+    @UnsupportedAppUsage
     void ensureTransformationInfo() {
         if (mTransformationInfo == null) {
             mTransformationInfo = new TransformationInfo();
@@ -14561,6 +14655,7 @@
      * @return The inverse of the current matrix of this view.
      * @hide
      */
+    @UnsupportedAppUsage
     public final Matrix getInverseMatrix() {
         ensureTransformationInfo();
         if (mTransformationInfo.mInverseMatrix == null) {
@@ -15073,6 +15168,7 @@
      * @return true if the View subclass handles alpha (the return value for onSetAlpha()) and
      *         the new value for the alpha property is different from the old value
      */
+    @UnsupportedAppUsage
     boolean setAlphaNoInvalidation(float alpha) {
         ensureTransformationInfo();
         if (mTransformationInfo.mAlpha != alpha) {
@@ -15107,6 +15203,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setTransitionAlpha(float alpha) {
         ensureTransformationInfo();
         if (mTransformationInfo.mTransitionAlpha != alpha) {
@@ -15138,6 +15235,7 @@
      * @hide
      */
     @ViewDebug.ExportedProperty(category = "drawing")
+    @UnsupportedAppUsage
     public float getTransitionAlpha() {
         return mTransformationInfo != null ? mTransformationInfo.mTransitionAlpha : 1;
     }
@@ -15623,6 +15721,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setAnimationMatrix(Matrix matrix) {
         invalidateViewProperty(true, false);
         mRenderNode.setAnimationMatrix(matrix);
@@ -15897,6 +15996,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean pointInView(float localX, float localY, float slop) {
         return localX >= -slop && localY >= -slop && localX < ((mRight - mLeft) + slop) &&
                 localY < ((mBottom - mTop) + slop);
@@ -16396,6 +16496,7 @@
      *            dimensions have not changed.
      * @hide
      */
+    @UnsupportedAppUsage
     public void invalidate(boolean invalidateCache) {
         invalidateInternal(0, 0, mRight - mLeft, mBottom - mTop, invalidateCache, true);
     }
@@ -16485,6 +16586,7 @@
      * @param forceRedraw Mark the view as DRAWN to force the invalidation to propagate, if display
      * list properties are not being used in this view
      */
+    @UnsupportedAppUsage
     void invalidateViewProperty(boolean invalidateParent, boolean forceRedraw) {
         if (!isHardwareAccelerated()
                 || !mRenderNode.isValid()
@@ -16536,6 +16638,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     protected void invalidateParentCaches() {
         if (mParent instanceof View) {
             ((View) mParent).mPrivateFlags |= PFLAG_INVALIDATED;
@@ -16551,6 +16654,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     protected void invalidateParentIfNeeded() {
         if (isHardwareAccelerated() && mParent instanceof View) {
             ((View) mParent).invalidate(true);
@@ -16587,6 +16691,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     protected void computeOpaqueFlags() {
         // Opaque if:
         //   - Has a background
@@ -16645,6 +16750,7 @@
      * @return The view root, or null if none.
      * @hide
      */
+    @UnsupportedAppUsage
     public ViewRootImpl getViewRootImpl() {
         if (mAttachInfo != null) {
             return mAttachInfo.mViewRootImpl;
@@ -16655,6 +16761,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public ThreadedRenderer getThreadedRenderer() {
         return mAttachInfo != null ? mAttachInfo.mThreadedRenderer : null;
     }
@@ -17145,6 +17252,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     protected void recomputePadding() {
         internalSetPadding(mUserPaddingLeft, mPaddingTop, mUserPaddingRight, mUserPaddingBottom);
     }
@@ -17748,6 +17856,7 @@
      * @see #computeHorizontalScrollOffset()
      * @hide
      */
+    @UnsupportedAppUsage
     protected void onDrawHorizontalScrollBar(Canvas canvas, Drawable scrollBar,
             int l, int t, int r, int b) {
         scrollBar.setBounds(l, t, r, b);
@@ -17767,6 +17876,7 @@
      * @see #computeVerticalScrollOffset()
      * @hide
      */
+    @UnsupportedAppUsage
     protected void onDrawVerticalScrollBar(Canvas canvas, Drawable scrollBar,
             int l, int t, int r, int b) {
         scrollBar.setBounds(l, t, r, b);
@@ -17785,6 +17895,7 @@
      * Caller is responsible for calling requestLayout if necessary.
      * (This allows addViewInLayout to not request a new layout.)
      */
+    @UnsupportedAppUsage
     void assignParent(ViewParent parent) {
         if (mParent == null) {
             mParent = parent;
@@ -17930,6 +18041,7 @@
     /**
      * Return true if the application tag in the AndroidManifest has set "supportRtl" to true
      */
+    @UnsupportedAppUsage
     private boolean hasRtlSupport() {
         return mContext.getApplicationInfo().hasRtlSupport();
     }
@@ -18076,6 +18188,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     boolean isPaddingResolved() {
         return (mPrivateFlags2 & PFLAG2_PADDING_RESOLVED) == PFLAG2_PADDING_RESOLVED;
     }
@@ -18086,6 +18199,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void resolvePadding() {
         final int resolvedLayoutDirection = getLayoutDirection();
 
@@ -18183,6 +18297,7 @@
      * @hide
      */
     @CallSuper
+    @UnsupportedAppUsage
     protected void onDetachedFromWindowInternal() {
         mPrivateFlags &= ~PFLAG_CANCEL_NEXT_UP_EVENT;
         mPrivateFlags3 &= ~PFLAG3_IS_LAID_OUT;
@@ -18291,6 +18406,7 @@
      * communicate with the window manager.
      * @return the session object to communicate with the window manager
      */
+    @UnsupportedAppUsage
     /*package*/ IWindowSession getWindowSession() {
         return mAttachInfo != null ? mAttachInfo.mSession : null;
     }
@@ -18316,6 +18432,7 @@
      * @param info the {@link android.view.View.AttachInfo} to associated with
      *        this view
      */
+    @UnsupportedAppUsage
     void dispatchAttachedToWindow(AttachInfo info, int visibility) {
         mAttachInfo = info;
         if (mOverlay != null) {
@@ -18380,6 +18497,7 @@
         notifyEnterOrExitForAutoFillIfNeeded(true);
     }
 
+    @UnsupportedAppUsage
     void dispatchDetachedFromWindow() {
         AttachInfo info = mAttachInfo;
         if (info != null) {
@@ -18885,6 +19003,7 @@
      * @hide
      */
     @CallSuper
+    @UnsupportedAppUsage
     protected void destroyHardwareResources() {
         if (mOverlay != null) {
             mOverlay.getOverlayView().destroyHardwareResources();
@@ -19020,6 +19139,7 @@
      * @hide
      */
     @NonNull
+    @UnsupportedAppUsage
     public RenderNode updateDisplayListIfDirty() {
         final RenderNode renderNode = mRenderNode;
         if (!canHaveDisplayList()) {
@@ -19090,6 +19210,7 @@
         return renderNode;
     }
 
+    @UnsupportedAppUsage
     private void resetDisplayList() {
         mRenderNode.discardDisplayList();
         if (mBackgroundRenderNode != null) {
@@ -19490,6 +19611,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public Bitmap createSnapshot(ViewDebug.CanvasProvider canvasProvider, boolean skipChildren) {
         int width = mRight - mLeft;
         int height = mBottom - mTop;
@@ -20378,6 +20500,7 @@
      *
      * @param canvas Canvas on which to draw the background
      */
+    @UnsupportedAppUsage
     private void drawBackground(Canvas canvas) {
         final Drawable background = mBackground;
         if (background == null) {
@@ -20767,6 +20890,7 @@
      *         previous ones
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected boolean setFrame(int left, int top, int right, int bottom) {
         boolean changed = false;
 
@@ -20834,6 +20958,7 @@
      * Same as setFrame, but public and hidden. For use in {@link android.transition.ChangeBounds}.
      * @hide
      */
+    @UnsupportedAppUsage
     public void setLeftTopRightBottom(int left, int top, int right, int bottom) {
         setFrame(left, top, right, bottom);
     }
@@ -22020,6 +22145,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     protected void internalSetPadding(int left, int top, int right, int bottom) {
         mUserPaddingLeft = left;
         mUserPaddingRight = right;
@@ -22214,6 +22340,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void resetPaddingToInitialValues() {
         if (isRtlCompatibilityMode()) {
             mPaddingLeft = mUserPaddingLeftInitial;
@@ -22393,6 +22520,7 @@
      * @return false if the transformation could not be applied
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean toGlobalMotionEvent(MotionEvent ev) {
         final AttachInfo info = mAttachInfo;
         if (info == null) {
@@ -22414,6 +22542,7 @@
      * @return false if the transformation could not be applied
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean toLocalMotionEvent(MotionEvent ev) {
         final AttachInfo info = mAttachInfo;
         if (info == null) {
@@ -22434,6 +22563,7 @@
      * @param m input matrix to modify
      * @hide
      */
+    @UnsupportedAppUsage
     public void transformMatrixToGlobal(Matrix m) {
         final ViewParent parent = mParent;
         if (parent instanceof View) {
@@ -22460,6 +22590,7 @@
      * @param m input matrix to modify
      * @hide
      */
+    @UnsupportedAppUsage
     public void transformMatrixToLocal(Matrix m) {
         final ViewParent parent = mParent;
         if (parent instanceof View) {
@@ -22486,6 +22617,7 @@
             @ViewDebug.IntToString(from = 0, to = "x"),
             @ViewDebug.IntToString(from = 1, to = "y")
     })
+    @UnsupportedAppUsage
     public int[] getLocationOnScreen() {
         int[] location = new int[2];
         getLocationOnScreen(location);
@@ -22666,6 +22798,7 @@
      * @param accessibilityId The searched accessibility id.
      * @return The found view.
      */
+    @UnsupportedAppUsage
     final <T extends View> T findViewByAccessibilityId(int accessibilityId) {
         if (accessibilityId < 0) {
             return null;
@@ -22816,6 +22949,7 @@
      *
      * @return true if the view belongs to the root namespace, false otherwise
      */
+    @UnsupportedAppUsage
     public boolean isRootNamespace() {
         return (mPrivateFlags&PFLAG_IS_ROOT_NAMESPACE) != 0;
     }
@@ -22919,6 +23053,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setTagInternal(int key, Object tag) {
         if ((key >>> 24) != 0x1) {
             throw new IllegalArgumentException("The key must be a framework-specific "
@@ -22942,6 +23077,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void debug() {
         debug(0);
     }
@@ -22955,6 +23091,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     protected void debug(int depth) {
         String output = debugIndent(depth - 1);
 
@@ -23577,6 +23714,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     public boolean gatherTransparentRegion(Region region) {
         final AttachInfo attachInfo = mAttachInfo;
         if (region != null && attachInfo != null) {
@@ -23804,6 +23942,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setDisabledSystemUiVisibility(int flags) {
         if (mAttachInfo != null) {
             if (mAttachInfo.mDisabledSystemUiVisibility != flags) {
@@ -23844,6 +23983,7 @@
      * </div>
      */
     public static class DragShadowBuilder {
+        @UnsupportedAppUsage
         private final WeakReference<View> mView;
 
         /**
@@ -24271,6 +24411,7 @@
      * it is ever exposed at all.
      * @hide
      */
+    @UnsupportedAppUsage
     public void onCloseSystemDialogs(String reason) {
     }
 
@@ -24289,6 +24430,7 @@
      * Drawable that are not transparent.
      * {@hide}
      */
+    @UnsupportedAppUsage
     public void applyDrawableToTransparentRegion(Drawable dr, Region region) {
         if (DBG) {
             Log.i("View", "Getting transparent region for: " + this);
@@ -24784,6 +24926,7 @@
      * @return The vertical scroll scale factor.
      * @hide
      */
+    @UnsupportedAppUsage
     protected float getVerticalScrollFactor() {
         if (mVerticalScrollFactor == 0) {
             TypedValue outValue = new TypedValue();
@@ -24804,6 +24947,7 @@
      * @return The horizontal scroll scale factor.
      * @hide
      */
+    @UnsupportedAppUsage
     protected float getHorizontalScrollFactor() {
         // TODO: Should use something else.
         return getVerticalScrollFactor();
@@ -24838,6 +24982,7 @@
             @ViewDebug.IntToString(from = TEXT_DIRECTION_FIRST_STRONG_LTR, to = "FIRST_STRONG_LTR"),
             @ViewDebug.IntToString(from = TEXT_DIRECTION_FIRST_STRONG_RTL, to = "FIRST_STRONG_RTL")
     })
+    @UnsupportedAppUsage
     public int getRawTextDirection() {
         return (mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_MASK) >> PFLAG2_TEXT_DIRECTION_MASK_SHIFT;
     }
@@ -25076,6 +25221,7 @@
             @ViewDebug.IntToString(from = TEXT_ALIGNMENT_VIEW_END, to = "VIEW_END")
     })
     @TextAlignment
+    @UnsupportedAppUsage
     public int getRawTextAlignment() {
         return (mPrivateFlags2 & PFLAG2_TEXT_ALIGNMENT_MASK) >> PFLAG2_TEXT_ALIGNMENT_MASK_SHIFT;
     }
@@ -25765,6 +25911,7 @@
          *
          * @hide internal use only for compatibility with system widgets and older apps
          */
+        @UnsupportedAppUsage
         public static int makeSafeMeasureSpec(int size, int mode) {
             if (sUseZeroUnspecifiedMeasureSpec && mode == UNSPECIFIED) {
                 return 0;
@@ -26316,11 +26463,16 @@
             private static final SynchronizedPool<InvalidateInfo> sPool =
                     new SynchronizedPool<InvalidateInfo>(POOL_LIMIT);
 
+            @UnsupportedAppUsage
             View target;
 
+            @UnsupportedAppUsage
             int left;
+            @UnsupportedAppUsage
             int top;
+            @UnsupportedAppUsage
             int right;
+            @UnsupportedAppUsage
             int bottom;
 
             public static InvalidateInfo obtain() {
@@ -26334,8 +26486,10 @@
             }
         }
 
+        @UnsupportedAppUsage
         final IWindowSession mSession;
 
+        @UnsupportedAppUsage
         final IWindow mWindow;
 
         final IBinder mWindowToken;
@@ -26366,16 +26520,19 @@
          * constants declared by {@link View} (there are more display states than
          * screen states).
          */
+        @UnsupportedAppUsage
         int mDisplayState = Display.STATE_UNKNOWN;
 
         /**
          * Scale factor used by the compatibility mode
          */
+        @UnsupportedAppUsage
         float mApplicationScale;
 
         /**
          * Indicates whether the application is in compatibility mode
          */
+        @UnsupportedAppUsage
         boolean mScalingRequired;
 
         /**
@@ -26405,6 +26562,7 @@
          * of the screen decorations, these are the current insets for the
          * content of the window.
          */
+        @UnsupportedAppUsage
         final Rect mContentInsets = new Rect();
 
         /**
@@ -26412,6 +26570,7 @@
          * of the screen decorations, these are the current insets for the
          * actual visible parts of the window.
          */
+        @UnsupportedAppUsage
         final Rect mVisibleInsets = new Rect();
 
         /**
@@ -26419,6 +26578,7 @@
          * of the screen decorations, these are the current insets for the
          * stable system windows.
          */
+        @UnsupportedAppUsage
         final Rect mStableInsets = new Rect();
 
         final DisplayCutout.ParcelableWrapper mDisplayCutout =
@@ -26444,6 +26604,7 @@
          * be given to the window manager when changed to be used in laying
          * out windows behind it.
          */
+        @UnsupportedAppUsage
         final ViewTreeObserver.InternalInsetsInfo mGivenInternalInsets
                 = new ViewTreeObserver.InternalInsetsInfo();
 
@@ -26457,14 +26618,17 @@
          * used to determine if the window can be resized or must be panned
          * to adjust for a soft input area.
          */
+        @UnsupportedAppUsage
         final ArrayList<View> mScrollContainers = new ArrayList<View>();
 
+        @UnsupportedAppUsage
         final KeyEvent.DispatcherState mKeyDispatchState
                 = new KeyEvent.DispatcherState();
 
         /**
          * Indicates whether the view's window currently has the focus.
          */
+        @UnsupportedAppUsage
         boolean mHasWindowFocus;
 
         /**
@@ -26475,11 +26639,13 @@
         /**
          * Indicates the time at which drawing started to occur.
          */
+        @UnsupportedAppUsage
         long mDrawingTime;
 
         /**
          * Indicates whether the view's window is currently in touch mode.
          */
+        @UnsupportedAppUsage
         boolean mInTouchMode;
 
         /**
@@ -26492,6 +26658,7 @@
          * Indicates that ViewAncestor should trigger a global layout change
          * the next time it performs a traversal
          */
+        @UnsupportedAppUsage
         boolean mRecomputeGlobalAttributes;
 
         /**
@@ -26502,6 +26669,7 @@
         /**
          * Set during a traveral if any views want to keep the screen on.
          */
+        @UnsupportedAppUsage
         boolean mKeepScreenOn;
 
         /**
@@ -26539,11 +26707,13 @@
         /**
          * Set if the visibility of any views has changed.
          */
+        @UnsupportedAppUsage
         boolean mViewVisibilityChanged;
 
         /**
          * Set to true if a view has been scrolled.
          */
+        @UnsupportedAppUsage
         boolean mViewScrollChanged;
 
         /**
@@ -26579,6 +26749,7 @@
          * The view tree observer used to dispatch global events like
          * layout, pre-draw, touch mode change, etc.
          */
+        @UnsupportedAppUsage
         final ViewTreeObserver mTreeObserver;
 
         /**
@@ -26595,6 +26766,7 @@
          * A Handler supplied by a view's {@link android.view.ViewRootImpl}. This
          * handler can be used to pump events in the UI events queue.
          */
+        @UnsupportedAppUsage
         final Handler mHandler;
 
         /**
@@ -26757,8 +26929,10 @@
 
         public int scrollBarSize;
         public int scrollBarMinTouchTarget;
+        @UnsupportedAppUsage
         public ScrollBarDrawable scrollBar;
         public float[] interpolatorValues;
+        @UnsupportedAppUsage
         public View host;
 
         public final Paint paint;
@@ -26780,6 +26954,7 @@
         /**
          * The current state of the scrollbars: ON, OFF, or FADING
          */
+        @UnsupportedAppUsage
         public int state = OFF;
 
         private int mLastColor;
@@ -26898,6 +27073,7 @@
      * Remove the pending callback for sending a
      * {@link AccessibilityEvent#TYPE_VIEW_SCROLLED} accessibility event.
      */
+    @UnsupportedAppUsage
     private void cancel(@Nullable SendViewScrolledAccessibilityEvent callback) {
         if (callback == null || !callback.mIsPending) return;
         removeCallbacks(callback);
@@ -27212,6 +27388,7 @@
          *
          * @hide
          */
+        @UnsupportedAppUsage
         public AccessibilityNodeInfo createAccessibilityNodeInfo(View host) {
             return host.createAccessibilityNodeInfoInternal();
         }
@@ -27480,6 +27657,7 @@
     /**
      * @hide Binary compatibility stub. To be removed when we finalize O APIs.
      */
+    @UnsupportedAppUsage
     public void setTooltip(@Nullable CharSequence tooltipText) {
         setTooltipText(tooltipText);
     }
@@ -27529,6 +27707,7 @@
         return true;
     }
 
+    @UnsupportedAppUsage
     void hideTooltip() {
         if (mTooltipInfo == null) {
             return;
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java
index 075db8e..767cd33 100644
--- a/core/java/android/view/ViewConfiguration.java
+++ b/core/java/android/view/ViewConfiguration.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.AppGlobals;
 import android.content.Context;
 import android.content.res.Configuration;
@@ -224,6 +225,7 @@
     /**
      * The coefficient of friction applied to flings/scrolls.
      */
+    @UnsupportedAppUsage
     private static final float SCROLL_FRICTION = 0.015f;
 
     /**
@@ -299,15 +301,19 @@
     private final int mMaximumDrawingCacheSize;
     private final int mOverscrollDistance;
     private final int mOverflingDistance;
+    @UnsupportedAppUsage
     private final boolean mFadingMarqueeEnabled;
     private final long mGlobalActionsKeyTimeout;
     private final float mVerticalScrollFactor;
     private final float mHorizontalScrollFactor;
     private final boolean mShowMenuShortcutsWhenKeyboardPresent;
 
+    @UnsupportedAppUsage
     private boolean sHasPermanentMenuKey;
+    @UnsupportedAppUsage
     private boolean sHasPermanentMenuKeySet;
 
+    @UnsupportedAppUsage
     static final SparseArray<ViewConfiguration> sConfigurations =
             new SparseArray<ViewConfiguration>(2);
 
@@ -589,6 +595,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getDoubleTapMinTime() {
         return DOUBLE_TAP_MIN_TIME;
     }
@@ -609,6 +616,7 @@
      * to a hover movement gesture.
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getHoverTapSlop() {
         return HOVER_TAP_SLOP;
     }
@@ -662,6 +670,7 @@
      * potential double tap event
      * @hide
      */
+    @UnsupportedAppUsage
     public int getScaledDoubleTapTouchSlop() {
         return mDoubleTapTouchSlop;
     }
@@ -682,6 +691,7 @@
      *       for clients that still use its deprecated constructor.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static int getDoubleTapSlop() {
         return DOUBLE_TAP_SLOP;
     }
@@ -929,6 +939,7 @@
      * @hide
      * @return Whether or not marquee should use fading edges.
      */
+    @UnsupportedAppUsage
     public boolean isFadingMarqueeEnabled() {
         return mFadingMarqueeEnabled;
     }
diff --git a/core/java/android/view/ViewDebug.java b/core/java/android/view/ViewDebug.java
index e4c595b..8dd0347 100644
--- a/core/java/android/view/ViewDebug.java
+++ b/core/java/android/view/ViewDebug.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.Bitmap;
@@ -372,6 +373,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static long getViewInstanceCount() {
         return Debug.countInstancesOfClass(View.class);
     }
@@ -383,6 +385,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static long getViewRootImplCount() {
         return Debug.countInstancesOfClass(ViewRootImpl.class);
     }
@@ -434,6 +437,7 @@
     public static void stopHierarchyTracing() {
     }
 
+    @UnsupportedAppUsage
     static void dispatchCommand(View view, String command, String parameters,
             OutputStream clientStream) throws IOException {
 
@@ -803,6 +807,7 @@
      * @hide
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static void dump(View root, boolean skipChildren, boolean includeProperties,
             OutputStream clientStream) throws IOException {
         BufferedWriter out = null;
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 9f526cc..6268a4a 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -24,6 +24,7 @@
 import android.annotation.NonNull;
 import android.annotation.TestApi;
 import android.annotation.UiThread;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ClipData;
 import android.content.Context;
 import android.content.Intent;
@@ -120,6 +121,7 @@
 public abstract class ViewGroup extends View implements ViewParent, ViewManager {
     private static final String TAG = "ViewGroup";
 
+    @UnsupportedAppUsage
     private static final boolean DBG = false;
 
     /**
@@ -128,6 +130,7 @@
      * This field should be made private, so it is hidden from the SDK.
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected ArrayList<View> mDisappearingChildren;
 
     /**
@@ -136,9 +139,11 @@
      * This field should be made private, so it is hidden from the SDK.
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected OnHierarchyChangeListener mOnHierarchyChangeListener;
 
     // The view contained within this ViewGroup that has or contains focus.
+    @UnsupportedAppUsage
     private View mFocused;
     // The view contained within this ViewGroup (excluding nested keyboard navigation clusters)
     // that is or contains a default-focus view.
@@ -183,6 +188,7 @@
     private Animation.AnimationListener mAnimationListener;
 
     // First touch target in the linked list of touch targets.
+    @UnsupportedAppUsage
     private TouchTarget mFirstTouchTarget;
 
     // For debugging only.  You can see these in hierarchyviewer.
@@ -230,6 +236,7 @@
             @ViewDebug.FlagToString(mask = FLAG_PADDING_NOT_NULL, equals = FLAG_PADDING_NOT_NULL,
                     name = "PADDING_NOT_NULL")
     }, formatToHexString = true)
+    @UnsupportedAppUsage
     protected int mGroupFlags;
 
     /**
@@ -290,6 +297,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     protected static final int FLAG_USE_CHILD_DRAWING_ORDER = 0x400;
 
     /**
@@ -303,6 +311,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected static final int FLAG_SUPPORT_STATIC_TRANSFORMATIONS = 0x800;
 
     // UNUSED FLAG VALUE: 0x1000;
@@ -356,6 +365,7 @@
      * When set, this ViewGroup should not intercept touch events.
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected static final int FLAG_DISALLOW_INTERCEPT = 0x80000;
 
     /**
@@ -418,6 +428,7 @@
      * This field should be made private, so it is hidden from the SDK.
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected int mPersistentDrawingCache;
 
     /**
@@ -530,9 +541,11 @@
     private static final int CHILD_TOP_INDEX = 1;
 
     // Child views of this ViewGroup
+    @UnsupportedAppUsage
     private View[] mChildren;
     // Number of valid children in the mChildren array, the rest should be null or not
     // considered as children
+    @UnsupportedAppUsage
     private int mChildrenCount;
 
     // Whether layout calls are currently being suppressed, controlled by calls to
@@ -1480,6 +1493,7 @@
      * @hide
      */
     @Override
+    @UnsupportedAppUsage
     public void makeOptionalFitsSystemWindows() {
         super.makeOptionalFitsSystemWindows();
         final int count = mChildrenCount;
@@ -1508,6 +1522,7 @@
      * @param newVisibility The new visibility value (GONE, INVISIBLE, or VISIBLE).
      * @hide
      */
+    @UnsupportedAppUsage
     protected void onChildVisibilityChanged(View child, int oldVisibility, int newVisibility) {
         if (mTransition != null) {
             if (newVisibility == VISIBLE) {
@@ -2907,6 +2922,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private void cancelTouchTarget(View view) {
         TouchTarget predecessor = null;
         TouchTarget target = mFirstTouchTarget;
@@ -2955,6 +2971,7 @@
      * Child must not be null.
      * @hide
      */
+    @UnsupportedAppUsage
     protected boolean isTransformedTouchPointInView(float x, float y, View child,
             PointF outLocalPoint) {
         final float[] point = getTempPoint();
@@ -2971,6 +2988,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void transformPointToViewLocal(float[] point, View child) {
         point[0] += mScrollX - child.mLeft;
         point[1] += mScrollY - child.mTop;
@@ -3392,6 +3410,7 @@
     }
 
     @Override
+    @UnsupportedAppUsage
     void dispatchAttachedToWindow(AttachInfo info, int visibility) {
         mGroupFlags |= FLAG_PREVENT_DISPATCH_ATTACHED_TO_WINDOW;
         super.dispatchAttachedToWindow(info, visibility);
@@ -3634,6 +3653,7 @@
 
     /** @hide */
     @Override
+    @UnsupportedAppUsage
     public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
         super.onInitializeAccessibilityNodeInfoInternal(info);
         if (getAccessibilityNodeProvider() != null) {
@@ -3740,6 +3760,7 @@
     }
 
     @Override
+    @UnsupportedAppUsage
     void dispatchDetachedFromWindow() {
         // If we still have a touch target, we are still in the process of
         // dispatching motion events to a child; we need to get rid of that
@@ -4281,6 +4302,7 @@
      * @hide
      */
     @Override
+    @UnsupportedAppUsage
     protected void dispatchGetDisplayList() {
         final int count = mChildrenCount;
         final View[] children = mChildren;
@@ -4660,6 +4682,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void addTransientView(View view, int index) {
         if (index < 0 || view == null) {
             return;
@@ -4702,6 +4725,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void removeTransientView(View view) {
         if (mTransientViews == null) {
             return;
@@ -4731,6 +4755,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getTransientViewCount() {
         return mTransientIndices == null ? 0 : mTransientIndices.size();
     }
@@ -4764,6 +4789,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public View getTransientView(int position) {
         if (mTransientViews == null || position >= mTransientViews.size()) {
             return null;
@@ -4922,6 +4948,7 @@
         mOnHierarchyChangeListener = listener;
     }
 
+    @UnsupportedAppUsage
     void dispatchViewAdded(View child) {
         onViewAdded(child);
         if (mOnHierarchyChangeListener != null) {
@@ -4938,6 +4965,7 @@
     public void onViewAdded(View child) {
     }
 
+    @UnsupportedAppUsage
     void dispatchViewRemoved(View child) {
         onViewRemoved(child);
         if (mOnHierarchyChangeListener != null) {
@@ -6088,6 +6116,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void offsetChildrenTopAndBottom(int offset) {
         final int count = mChildrenCount;
         final View[] children = mChildren;
@@ -7006,6 +7035,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void suppressLayout(boolean suppress) {
         mSuppressLayout = suppress;
         if (!suppress) {
@@ -7303,6 +7333,7 @@
      * @hide
      */
     @Override
+    @UnsupportedAppUsage
     public void resolvePadding() {
         super.resolvePadding();
         int count = getChildCount();
@@ -7750,6 +7781,7 @@
          * Used internally by MarginLayoutParams.
          * @hide
          */
+        @UnsupportedAppUsage
         LayoutParams() {
         }
 
@@ -7890,6 +7922,7 @@
          * to this field.
          */
         @ViewDebug.ExportedProperty(category = "layout")
+        @UnsupportedAppUsage
         private int startMargin = DEFAULT_MARGIN_RELATIVE;
 
         /**
@@ -7898,6 +7931,7 @@
          * to this field.
          */
         @ViewDebug.ExportedProperty(category = "layout")
+        @UnsupportedAppUsage
         private int endMargin = DEFAULT_MARGIN_RELATIVE;
 
         /**
@@ -8127,6 +8161,7 @@
          *
          * @hide
          */
+        @UnsupportedAppUsage
         public void setMarginsRelative(int start, int top, int end, int bottom) {
             startMargin = start;
             topMargin = top;
@@ -8350,6 +8385,7 @@
         public static final int ALL_POINTER_IDS = -1; // all ones
 
         // The touched child view.
+        @UnsupportedAppUsage
         public View child;
 
         // The combined bit mask of pointer ids for all pointers captured by the target.
@@ -8358,6 +8394,7 @@
         // The next target in the target list.
         public TouchTarget next;
 
+        @UnsupportedAppUsage
         private TouchTarget() {
         }
 
@@ -8754,6 +8791,7 @@
 
     /** @hide */
     @Override
+    @UnsupportedAppUsage
     protected void encodeProperties(@NonNull ViewHierarchyEncoder encoder) {
         super.encodeProperties(encoder);
 
diff --git a/core/java/android/view/ViewHierarchyEncoder.java b/core/java/android/view/ViewHierarchyEncoder.java
index 8770216..d5716bf 100644
--- a/core/java/android/view/ViewHierarchyEncoder.java
+++ b/core/java/android/view/ViewHierarchyEncoder.java
@@ -2,6 +2,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 
 import java.io.ByteArrayOutputStream;
 import java.io.DataOutputStream;
@@ -90,6 +91,7 @@
         endPropertyMap();
     }
 
+    @UnsupportedAppUsage
     public void addProperty(@NonNull String name, boolean v) {
         writeShort(createPropertyIndex(name));
         writeBoolean(v);
@@ -100,16 +102,19 @@
         writeShort(s);
     }
 
+    @UnsupportedAppUsage
     public void addProperty(@NonNull String name, int v) {
         writeShort(createPropertyIndex(name));
         writeInt(v);
     }
 
+    @UnsupportedAppUsage
     public void addProperty(@NonNull String name, float v) {
         writeShort(createPropertyIndex(name));
         writeFloat(v);
     }
 
+    @UnsupportedAppUsage
     public void addProperty(@NonNull String name, @Nullable String s) {
         writeShort(createPropertyIndex(name));
         writeString(s);
diff --git a/core/java/android/view/ViewOverlay.java b/core/java/android/view/ViewOverlay.java
index 21123c1..e23c687 100644
--- a/core/java/android/view/ViewOverlay.java
+++ b/core/java/android/view/ViewOverlay.java
@@ -17,6 +17,7 @@
 
 import android.animation.LayoutTransition;
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.Canvas;
 import android.graphics.Rect;
@@ -55,6 +56,7 @@
      * of the overlay
      * @return
      */
+    @UnsupportedAppUsage
     ViewGroup getOverlayView() {
         return mOverlayViewGroup;
     }
@@ -94,6 +96,7 @@
         mOverlayViewGroup.clear();
     }
 
+    @UnsupportedAppUsage
     boolean isEmpty() {
         return mOverlayViewGroup.isEmpty();
     }
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 97a2d79..23fc4d5 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -30,6 +30,7 @@
 import android.animation.LayoutTransition;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityManager;
 import android.app.ActivityThread;
 import android.app.ResourcesManager;
@@ -170,6 +171,7 @@
      */
     static final int MAX_TRACKBALL_DELAY = 250;
 
+    @UnsupportedAppUsage
     static final ThreadLocal<HandlerActionQueue> sRunQueues = new ThreadLocal<HandlerActionQueue>();
 
     static final ArrayList<Runnable> sFirstDrawHandlers = new ArrayList();
@@ -233,7 +235,9 @@
      */
     @GuardedBy("mWindowCallbacks")
     final ArrayList<WindowCallbacks> mWindowCallbacks = new ArrayList<>();
+    @UnsupportedAppUsage
     final Context mContext;
+    @UnsupportedAppUsage
     final IWindowSession mWindowSession;
     @NonNull Display mDisplay;
     final DisplayManager mDisplayManager;
@@ -255,6 +259,7 @@
 
     int mSeq;
 
+    @UnsupportedAppUsage
     View mView;
 
     View mAccessibilityFocusedHost;
@@ -287,6 +292,7 @@
 
     // Set to true if the owner of this window is in the stopped state,
     // so the window should no longer be active.
+    @UnsupportedAppUsage
     boolean mStopped = false;
 
     // Set to true if the owner of this window is in ambient mode,
@@ -306,8 +312,11 @@
     final Region mTransparentRegion;
     final Region mPreviousTransparentRegion;
 
+    @UnsupportedAppUsage
     int mWidth;
+    @UnsupportedAppUsage
     int mHeight;
+    @UnsupportedAppUsage
     Rect mDirty;
     public boolean mIsAnimating;
 
@@ -321,10 +330,12 @@
 
     CompatibilityInfo.Translator mTranslator;
 
+    @UnsupportedAppUsage
     final View.AttachInfo mAttachInfo;
     InputChannel mInputChannel;
     InputQueue.Callback mInputQueueCallback;
     InputQueue mInputQueue;
+    @UnsupportedAppUsage
     FallbackEventHandler mFallbackEventHandler;
     Choreographer mChoreographer;
 
@@ -389,8 +400,10 @@
 
     // These can be accessed by any thread, must be protected with a lock.
     // Surface can never be reassigned or cleared (use Surface.clear()).
+    @UnsupportedAppUsage
     public final Surface mSurface = new Surface();
 
+    @UnsupportedAppUsage
     boolean mAdded;
     boolean mAddedTouchMode;
 
@@ -425,6 +438,7 @@
     boolean mScrollMayChange;
     @SoftInputModeFlags
     int mSoftInputMode;
+    @UnsupportedAppUsage
     WeakReference<View> mLastScrolledFocus;
     int mScrollY;
     int mCurScrollY;
@@ -555,6 +569,7 @@
     }
 
     /** Add static config callback to be notified about global config changes. */
+    @UnsupportedAppUsage
     public static void addConfigCallback(ConfigChangedCallback callback) {
         synchronized (sConfigCallbacks) {
             sConfigCallbacks.add(callback);
@@ -891,6 +906,7 @@
         return (mWindowAttributes.flags & WindowManager.LayoutParams.FLAG_LOCAL_FOCUS_MODE) != 0;
     }
 
+    @UnsupportedAppUsage
     public int getWindowFlags() {
         return mWindowAttributes.flags;
     }
@@ -930,6 +946,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void detachFunctor(long functor) {
         if (mAttachInfo.mThreadedRenderer != null) {
             // Fence so that any pending invokeFunctor() messages will be processed
@@ -947,6 +964,7 @@
      *                          has invoked. If false, the functor may be invoked
      *                          asynchronously.
      */
+    @UnsupportedAppUsage
     public static void invokeFunctor(long functor, boolean waitForCompletion) {
         ThreadedRenderer.invokeFunctor(functor, waitForCompletion);
     }
@@ -980,6 +998,7 @@
         mNextRtFrameCallback = callback;
     }
 
+    @UnsupportedAppUsage
     private void enableHardwareAcceleration(WindowManager.LayoutParams attrs) {
         mAttachInfo.mHardwareAccelerated = false;
         mAttachInfo.mHardwareAccelerationRequested = false;
@@ -1040,6 +1059,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public View getView() {
         return mView;
     }
@@ -1241,6 +1261,7 @@
         invalidate();
     }
 
+    @UnsupportedAppUsage
     void invalidate() {
         mDirty.set(0, 0, mWidth, mHeight);
         if (!mWillDrawSoon) {
@@ -1422,6 +1443,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     void scheduleTraversals() {
         if (!mTraversalScheduled) {
             mTraversalScheduled = true;
@@ -3657,6 +3679,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public View getAccessibilityFocusedHost() {
         return mAccessibilityFocusedHost;
     }
@@ -3664,6 +3687,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public AccessibilityNodeInfo getAccessibilityFocusedVirtualView() {
         return mAccessibilityFocusedVirtualView;
     }
@@ -4281,6 +4305,7 @@
      * @param inTouchMode Whether we want to be in touch mode.
      * @return True if the touch mode changed and focus changed was changed as a result
      */
+    @UnsupportedAppUsage
     boolean ensureTouchMode(boolean inTouchMode) {
         if (DBG) Log.d("touchmode", "ensureTouchMode(" + inTouchMode + "), current "
                 + "touch mode is " + mAttachInfo.mInTouchMode);
@@ -6276,6 +6301,7 @@
     }
 
     /* drag/drop */
+    @UnsupportedAppUsage
     void setLocalDragState(Object obj) {
         mLocalDragState = obj;
     }
@@ -6423,6 +6449,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void getLastTouchPoint(Point outLocation) {
         outLocation.x = (int) mLastTouchPoint.x;
         outLocation.y = (int) mLastTouchPoint.y;
@@ -6821,6 +6848,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private void dispatchResized(Rect frame, Rect overscanInsets, Rect contentInsets,
             Rect visibleInsets, Rect stableInsets, Rect outsets, boolean reportDraw,
             MergedConfiguration mergedConfiguration, Rect backDropFrame, boolean forceLayout,
@@ -6985,10 +7013,12 @@
         }
     }
 
+    @UnsupportedAppUsage
     void enqueueInputEvent(InputEvent event) {
         enqueueInputEvent(event, null, 0, false);
     }
 
+    @UnsupportedAppUsage
     void enqueueInputEvent(InputEvent event,
             InputEventReceiver receiver, int flags, boolean processImmediately) {
         adjustInputEventForCompatibility(event);
@@ -7329,6 +7359,7 @@
         mInvalidateOnAnimationRunnable.addViewRect(info);
     }
 
+    @UnsupportedAppUsage
     public void cancelInvalidate(View view) {
         mHandler.removeMessages(MSG_INVALIDATE, view);
         // fixme: might leak the AttachInfo.InvalidateInfo objects instead of returning
@@ -7337,10 +7368,12 @@
         mInvalidateOnAnimationRunnable.removeView(view);
     }
 
+    @UnsupportedAppUsage
     public void dispatchInputEvent(InputEvent event) {
         dispatchInputEvent(event, null);
     }
 
+    @UnsupportedAppUsage
     public void dispatchInputEvent(InputEvent event, InputEventReceiver receiver) {
         SomeArgs args = SomeArgs.obtain();
         args.arg1 = event;
@@ -7356,6 +7389,7 @@
         mHandler.sendMessage(msg);
     }
 
+    @UnsupportedAppUsage
     public void dispatchKeyFromIme(KeyEvent event) {
         Message msg = mHandler.obtainMessage(MSG_DISPATCH_KEY_FROM_IME, event);
         msg.setAsynchronous(true);
@@ -7374,6 +7408,7 @@
      * Note that it is the responsibility of the caller of this API to recycle the InputEvent it
      * passes in.
      */
+    @UnsupportedAppUsage
     public void dispatchUnhandledInputEvent(InputEvent event) {
         if (event instanceof MotionEvent) {
             event = MotionEvent.obtain((MotionEvent) event);
@@ -8076,6 +8111,7 @@
     }
 
     public static final class CalledFromWrongThreadException extends AndroidRuntimeException {
+        @UnsupportedAppUsage
         public CalledFromWrongThreadException(String msg) {
             super(msg);
         }
diff --git a/core/java/android/view/ViewTreeObserver.java b/core/java/android/view/ViewTreeObserver.java
index efc1807..f7c9a0b 100644
--- a/core/java/android/view/ViewTreeObserver.java
+++ b/core/java/android/view/ViewTreeObserver.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.Rect;
 import android.graphics.Region;
@@ -42,14 +43,18 @@
     private CopyOnWriteArrayList<OnWindowFocusChangeListener> mOnWindowFocusListeners;
     private CopyOnWriteArrayList<OnWindowAttachListener> mOnWindowAttachListeners;
     private CopyOnWriteArrayList<OnGlobalFocusChangeListener> mOnGlobalFocusListeners;
+    @UnsupportedAppUsage
     private CopyOnWriteArrayList<OnTouchModeChangeListener> mOnTouchModeChangeListeners;
     private CopyOnWriteArrayList<OnEnterAnimationCompleteListener>
             mOnEnterAnimationCompleteListeners;
 
     // Non-recursive listeners use CopyOnWriteArray
     // Any listener invoked from ViewRootImpl.performTraversals() should not be recursive
+    @UnsupportedAppUsage
     private CopyOnWriteArray<OnGlobalLayoutListener> mOnGlobalLayoutListeners;
+    @UnsupportedAppUsage
     private CopyOnWriteArray<OnComputeInternalInsetsListener> mOnComputeInternalInsetsListeners;
+    @UnsupportedAppUsage
     private CopyOnWriteArray<OnScrollChangedListener> mOnScrollChangedListeners;
     private CopyOnWriteArray<OnPreDrawListener> mOnPreDrawListeners;
     private CopyOnWriteArray<OnWindowShownListener> mOnWindowShownListeners;
@@ -215,12 +220,14 @@
          * Offsets from the frame of the window at which the content of
          * windows behind it should be placed.
          */
+        @UnsupportedAppUsage
         public final Rect contentInsets = new Rect();
 
         /**
          * Offsets from the frame of the window at which windows behind it
          * are visible.
          */
+        @UnsupportedAppUsage
         public final Rect visibleInsets = new Rect();
 
         /**
@@ -228,6 +235,7 @@
          * Only used when {@link #setTouchableInsets(int)} is called with
          * the option {@link #TOUCHABLE_INSETS_REGION}.
          */
+        @UnsupportedAppUsage
         public final Region touchableRegion = new Region();
 
         /**
@@ -252,6 +260,7 @@
          * Option for {@link #setTouchableInsets(int)}: the area inside of
          * the provided touchable region in {@link #touchableRegion} can be touched.
          */
+        @UnsupportedAppUsage
         public static final int TOUCHABLE_INSETS_REGION = 3;
 
         /**
@@ -259,10 +268,12 @@
          * {@link #TOUCHABLE_INSETS_FRAME}, {@link #TOUCHABLE_INSETS_CONTENT},
          * {@link #TOUCHABLE_INSETS_VISIBLE}, or {@link #TOUCHABLE_INSETS_REGION}.
          */
+        @UnsupportedAppUsage
         public void setTouchableInsets(int val) {
             mTouchableInsets = val;
         }
 
+        @UnsupportedAppUsage
         int mTouchableInsets;
 
         void reset() {
@@ -300,6 +311,7 @@
                     touchableRegion.equals(other.touchableRegion);
         }
 
+        @UnsupportedAppUsage
         void set(InternalInsetsInfo other) {
             contentInsets.set(other.contentInsets);
             visibleInsets.set(other.visibleInsets);
@@ -848,6 +860,7 @@
      * We are not yet ready to commit to this API and support it, so
      * @hide
      */
+    @UnsupportedAppUsage
     public void addOnComputeInternalInsetsListener(OnComputeInternalInsetsListener listener) {
         checkIsAlive();
 
@@ -871,6 +884,7 @@
      * We are not yet ready to commit to this API and support it, so
      * @hide
      */
+    @UnsupportedAppUsage
     public void removeOnComputeInternalInsetsListener(OnComputeInternalInsetsListener victim) {
         checkIsAlive();
         if (mOnComputeInternalInsetsListeners == null) {
@@ -970,6 +984,7 @@
     /**
      * Notifies registered listeners that focus has changed.
      */
+    @UnsupportedAppUsage
     final void dispatchOnGlobalFocusChange(View oldFocus, View newFocus) {
         // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to
         // perform the dispatching. The iterator is a safe guard against listeners that
@@ -1081,6 +1096,7 @@
      *
      * @param inTouchMode True if the touch mode is now enabled, false otherwise.
      */
+    @UnsupportedAppUsage
     final void dispatchOnTouchModeChanged(boolean inTouchMode) {
         final CopyOnWriteArrayList<OnTouchModeChangeListener> listeners =
                 mOnTouchModeChangeListeners;
@@ -1094,6 +1110,7 @@
     /**
      * Notifies registered listeners that something has scrolled.
      */
+    @UnsupportedAppUsage
     final void dispatchOnScrollChanged() {
         // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to
         // perform the dispatching. The iterator is a safe guard against listeners that
@@ -1116,6 +1133,7 @@
     /**
      * Returns whether there are listeners for computing internal insets.
      */
+    @UnsupportedAppUsage
     final boolean hasComputeInternalInsetsListeners() {
         final CopyOnWriteArray<OnComputeInternalInsetsListener> listeners =
                 mOnComputeInternalInsetsListeners;
@@ -1125,6 +1143,7 @@
     /**
      * Calls all listeners to compute the current insets.
      */
+    @UnsupportedAppUsage
     final void dispatchOnComputeInternalInsets(InternalInsetsInfo inoutInfo) {
         // NOTE: because of the use of CopyOnWriteArrayList, we *must* use an iterator to
         // perform the dispatching. The iterator is a safe guard against listeners that
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index b9f9e5e..f436962 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -25,6 +25,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.StyleRes;
+import android.annotation.UnsupportedAppUsage;
 import android.app.WindowConfiguration;
 import android.content.Context;
 import android.content.pm.ActivityInfo;
@@ -150,6 +151,7 @@
      * Max value used as a feature ID
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int FEATURE_MAX = FEATURE_ACTIVITY_TRANSITIONS;
 
     /**
@@ -267,18 +269,25 @@
      */
     public static final int DECOR_CAPTION_SHADE_DARK = 2;
 
+    @UnsupportedAppUsage
     private final Context mContext;
 
+    @UnsupportedAppUsage
     private TypedArray mWindowStyle;
+    @UnsupportedAppUsage
     private Callback mCallback;
     private OnWindowDismissedCallback mOnWindowDismissedCallback;
     private OnWindowSwipeDismissedCallback mOnWindowSwipeDismissedCallback;
     private WindowControllerCallback mWindowControllerCallback;
     private OnRestrictedCaptionAreaChangedListener mOnRestrictedCaptionAreaChangedListener;
     private Rect mRestrictedCaptionAreaRect;
+    @UnsupportedAppUsage
     private WindowManager mWindowManager;
+    @UnsupportedAppUsage
     private IBinder mAppToken;
+    @UnsupportedAppUsage
     private String mAppName;
+    @UnsupportedAppUsage
     private boolean mHardwareAccelerated;
     private Window mContainer;
     private Window mActiveChild;
@@ -288,7 +297,9 @@
     private boolean mSetCloseOnTouchOutside = false;
     private int mForcedWindowFlags = 0;
 
+    @UnsupportedAppUsage
     private int mFeatures;
+    @UnsupportedAppUsage
     private int mLocalFeatures;
 
     private boolean mHaveWindowFormat = false;
@@ -297,12 +308,14 @@
 
     private boolean mHasSoftInputMode = false;
 
+    @UnsupportedAppUsage
     private boolean mDestroyed;
 
     private boolean mOverlayWithDecorCaptionEnabled = false;
     private boolean mCloseOnSwipeEnabled = false;
 
     // The current window attributes.
+    @UnsupportedAppUsage
     private final WindowManager.LayoutParams mWindowAttributes =
         new WindowManager.LayoutParams();
 
@@ -729,6 +742,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public final boolean isDestroyed() {
         return mDestroyed;
     }
@@ -1066,6 +1080,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void addPrivateFlags(int flags) {
         setPrivateFlags(flags, flags);
     }
@@ -1116,6 +1131,7 @@
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     protected void setNeedsMenuKey(int value) {
         final WindowManager.LayoutParams attrs = getAttributes();
         attrs.needsMenuKey = value;
@@ -1236,12 +1252,14 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setCloseOnTouchOutside(boolean close) {
         mCloseOnTouchOutside = close;
         mSetCloseOnTouchOutside = true;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setCloseOnTouchOutsideIfNotSet(boolean close) {
         if (!mSetCloseOnTouchOutside) {
             mCloseOnTouchOutside = close;
@@ -1250,9 +1268,11 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public abstract void alwaysReadCloseOnTouchAttr();
 
     /** @hide */
+    @UnsupportedAppUsage
     public boolean shouldCloseOnTouch(Context context, MotionEvent event) {
         final boolean isOutside =
                 event.getAction() == MotionEvent.ACTION_DOWN && isOutOfBounds(context, event)
diff --git a/core/java/android/view/WindowAnimationFrameStats.java b/core/java/android/view/WindowAnimationFrameStats.java
index c60b96c..0233c86 100644
--- a/core/java/android/view/WindowAnimationFrameStats.java
+++ b/core/java/android/view/WindowAnimationFrameStats.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -47,6 +48,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void init(long refreshPeriodNano, long[] framesPresentedTimeNano) {
         mRefreshPeriodNano = refreshPeriodNano;
         mFramesPresentedTimeNano = framesPresentedTimeNano;
diff --git a/core/java/android/view/WindowContentFrameStats.java b/core/java/android/view/WindowContentFrameStats.java
index c6da2fb..96878e9 100644
--- a/core/java/android/view/WindowContentFrameStats.java
+++ b/core/java/android/view/WindowContentFrameStats.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -60,6 +61,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void init(long refreshPeriodNano, long[] framesPostedTimeNano,
             long[] framesPresentedTimeNano, long[] framesReadyTimeNano) {
         mRefreshPeriodNano = refreshPeriodNano;
diff --git a/core/java/android/view/WindowInsets.java b/core/java/android/view/WindowInsets.java
index fbd8141..8628da3 100644
--- a/core/java/android/view/WindowInsets.java
+++ b/core/java/android/view/WindowInsets.java
@@ -18,6 +18,7 @@
 package android.view;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Rect;
 
 import com.android.internal.util.Preconditions;
@@ -69,6 +70,7 @@
      * since it would allow them to inadvertently consume unknown insets by returning it.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final WindowInsets CONSUMED;
 
     static {
@@ -115,6 +117,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public WindowInsets(Rect systemWindowInsets) {
         this(systemWindowInsets, null, null, false, false, null);
     }
@@ -124,6 +127,7 @@
      * to the existing fitSystemWindows method and other similar internals.
      * @hide
      */
+    @UnsupportedAppUsage
     public Rect getSystemWindowInsets() {
         if (mTempRect == null) {
             mTempRect = new Rect();
@@ -578,6 +582,7 @@
      *
      * @hide pending API
      */
+    @UnsupportedAppUsage
     public WindowInsets inset(int left, int top, int right, int bottom) {
         Preconditions.checkArgumentNonnegative(left);
         Preconditions.checkArgumentNonnegative(top);
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index d7a5d68..0404df0 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -50,6 +50,7 @@
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.KeyguardManager;
 import android.app.Presentation;
 import android.content.Context;
@@ -674,6 +675,7 @@
          * is a big ugly hack so:
          * @hide
          */
+        @UnsupportedAppUsage
         public static final int TYPE_APPLICATION_MEDIA_OVERLAY  = FIRST_SUB_WINDOW + 4;
 
         /**
@@ -826,6 +828,7 @@
          * In multiuser systems shows only on the owning user's window.
          * @hide
          */
+        @UnsupportedAppUsage
         public static final int TYPE_SECURE_SYSTEM_OVERLAY = FIRST_SYSTEM_WINDOW+15;
 
         /**
@@ -901,6 +904,7 @@
          * In multiuser systems shows on all users' windows.
          * @hide
          */
+        @UnsupportedAppUsage
         public static final int TYPE_DISPLAY_OVERLAY = FIRST_SYSTEM_WINDOW+26;
 
         /**
@@ -1391,6 +1395,7 @@
          *
          * {@hide}
          */
+        @UnsupportedAppUsage
         public static final int FLAG_SLIPPERY = 0x20000000;
 
         /**
@@ -1554,6 +1559,7 @@
          * to determine its default behavior.
          *
          * {@hide} */
+        @UnsupportedAppUsage
         public static final int PRIVATE_FLAG_SHOW_FOR_ALL_USERS = 0x00000010;
 
         /**
@@ -1813,6 +1819,7 @@
          *
          * @hide
          */
+        @UnsupportedAppUsage
         public static final int NEEDS_MENU_SET_TRUE = 1;
 
         /**
@@ -1821,6 +1828,7 @@
          *
          * @hide
          */
+        @UnsupportedAppUsage
         public static final int NEEDS_MENU_SET_FALSE = 2;
 
         /**
@@ -1834,6 +1842,7 @@
          *
          * {@hide}
          */
+        @UnsupportedAppUsage
         public int needsMenuKey = NEEDS_MENU_UNSET;
 
         /**
@@ -2238,6 +2247,7 @@
          * The ui visibility as requested by the views in this hierarchy.
          * the combined value should be systemUiVisibility | subtreeSystemUiVisibility.
          */
+        @UnsupportedAppUsage
         public int subtreeSystemUiVisibility;
 
         /**
@@ -2247,6 +2257,7 @@
          *
          * @hide
          */
+        @UnsupportedAppUsage
         public boolean hasSystemUiListeners;
 
 
@@ -2398,6 +2409,7 @@
          *
          * @hide
          */
+        @UnsupportedAppUsage
         public static final int INPUT_FEATURE_DISABLE_USER_ACTIVITY = 0x00000004;
 
         /**
@@ -2408,6 +2420,7 @@
          * @see #INPUT_FEATURE_DISABLE_USER_ACTIVITY
          * @hide
          */
+        @UnsupportedAppUsage
         public int inputFeatures;
 
         /**
@@ -2423,6 +2436,7 @@
          *
          * @hide
          */
+        @UnsupportedAppUsage
         public long userActivityTimeout = -1;
 
         /**
@@ -2454,6 +2468,7 @@
          *
          * @hide
          */
+        @UnsupportedAppUsage
         public long hideTimeoutMilliseconds = -1;
 
         /**
@@ -3124,6 +3139,7 @@
          * Backup the layout parameters used in compatibility mode.
          * @see LayoutParams#restore()
          */
+        @UnsupportedAppUsage
         void backup() {
             int[] backup = mCompatibilityParamsBackup;
             if (backup == null) {
@@ -3140,6 +3156,7 @@
          * Restore the layout params' coordinates, size and gravity
          * @see LayoutParams#backup()
          */
+        @UnsupportedAppUsage
         void restore() {
             int[] backup = mCompatibilityParamsBackup;
             if (backup != null) {
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index 08c2d0b..d810067 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.animation.ValueAnimator;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityManager;
 import android.content.ComponentCallbacks2;
 import android.content.Context;
@@ -131,14 +132,21 @@
     public static final int ADD_INVALID_DISPLAY = -9;
     public static final int ADD_INVALID_TYPE = -10;
 
+    @UnsupportedAppUsage
     private static WindowManagerGlobal sDefaultWindowManager;
+    @UnsupportedAppUsage
     private static IWindowManager sWindowManagerService;
+    @UnsupportedAppUsage
     private static IWindowSession sWindowSession;
 
+    @UnsupportedAppUsage
     private final Object mLock = new Object();
 
+    @UnsupportedAppUsage
     private final ArrayList<View> mViews = new ArrayList<View>();
+    @UnsupportedAppUsage
     private final ArrayList<ViewRootImpl> mRoots = new ArrayList<ViewRootImpl>();
+    @UnsupportedAppUsage
     private final ArrayList<WindowManager.LayoutParams> mParams =
             new ArrayList<WindowManager.LayoutParams>();
     private final ArraySet<View> mDyingViews = new ArraySet<View>();
@@ -148,10 +156,12 @@
     private WindowManagerGlobal() {
     }
 
+    @UnsupportedAppUsage
     public static void initialize() {
         getWindowManagerService();
     }
 
+    @UnsupportedAppUsage
     public static WindowManagerGlobal getInstance() {
         synchronized (WindowManagerGlobal.class) {
             if (sDefaultWindowManager == null) {
@@ -161,6 +171,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public static IWindowManager getWindowManagerService() {
         synchronized (WindowManagerGlobal.class) {
             if (sWindowManagerService == null) {
@@ -179,6 +190,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public static IWindowSession getWindowSession() {
         synchronized (WindowManagerGlobal.class) {
             if (sWindowSession == null) {
@@ -201,12 +213,14 @@
         }
     }
 
+    @UnsupportedAppUsage
     public static IWindowSession peekWindowSession() {
         synchronized (WindowManagerGlobal.class) {
             return sWindowSession;
         }
     }
 
+    @UnsupportedAppUsage
     public String[] getViewRootNames() {
         synchronized (mLock) {
             final int numRoots = mRoots.size();
@@ -218,6 +232,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public ArrayList<ViewRootImpl> getRootViews(IBinder token) {
         ArrayList<ViewRootImpl> views = new ArrayList<>();
         synchronized (mLock) {
@@ -264,6 +279,7 @@
         return null;
     }
 
+    @UnsupportedAppUsage
     public View getRootView(String name) {
         synchronized (mLock) {
             for (int i = mRoots.size() - 1; i >= 0; --i) {
@@ -385,6 +401,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void removeView(View view, boolean immediate) {
         if (view == null) {
             throw new IllegalArgumentException("view must not be null");
@@ -500,6 +517,7 @@
         return false;
     }
 
+    @UnsupportedAppUsage
     public void trimMemory(int level) {
         if (ThreadedRenderer.isAvailable()) {
             if (shouldDestroyEglContext(level)) {
@@ -647,6 +665,7 @@
 }
 
 final class WindowLeaked extends AndroidRuntimeException {
+    @UnsupportedAppUsage
     public WindowLeaked(String msg) {
         super(msg);
     }
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index a8722f1..2339d35 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -17,6 +17,7 @@
 package android.view;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.Region;
 import android.os.Bundle;
@@ -54,6 +55,7 @@
  * @hide
  */
 public final class WindowManagerImpl implements WindowManager {
+    @UnsupportedAppUsage
     private final WindowManagerGlobal mGlobal = WindowManagerGlobal.getInstance();
     private final Context mContext;
     private final Window mParentWindow;
diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java
index a6b8eb3..3eca854 100644
--- a/core/java/android/view/accessibility/AccessibilityEvent.java
+++ b/core/java/android/view/accessibility/AccessibilityEvent.java
@@ -17,6 +17,7 @@
 package android.view.accessibility;
 
 import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -755,10 +756,12 @@
     private static final SynchronizedPool<AccessibilityEvent> sPool =
             new SynchronizedPool<>(MAX_POOL_SIZE);
 
+    @UnsupportedAppUsage
     private @EventType int mEventType;
     private CharSequence mPackageName;
     private long mEventTime;
     int mMovementGranularity;
+    @UnsupportedAppUsage
     int mAction;
     int mContentChangeTypes;
     int mWindowChangeTypes;
diff --git a/core/java/android/view/accessibility/AccessibilityInteractionClient.java b/core/java/android/view/accessibility/AccessibilityInteractionClient.java
index d60c481..4db6f4f 100644
--- a/core/java/android/view/accessibility/AccessibilityInteractionClient.java
+++ b/core/java/android/view/accessibility/AccessibilityInteractionClient.java
@@ -17,6 +17,7 @@
 package android.view.accessibility;
 
 import android.accessibilityservice.IAccessibilityServiceConnection;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
@@ -112,6 +113,7 @@
     /**
      * @return The client for the current thread.
      */
+    @UnsupportedAppUsage
     public static AccessibilityInteractionClient getInstance() {
         final long threadId = Thread.currentThread().getId();
         return getInstanceForThread(threadId);
@@ -190,6 +192,7 @@
      *
      * @param message The message.
      */
+    @UnsupportedAppUsage
     public void setSameThreadMessage(Message message) {
         synchronized (mInstanceLock) {
             mSameThreadMessage = message;
@@ -625,6 +628,7 @@
         return false;
     }
 
+    @UnsupportedAppUsage
     public void clearCache() {
         sAccessibilityCache.clear();
     }
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index cbb23f1..c59c491 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -25,6 +25,7 @@
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -88,6 +89,7 @@
     public static final int DALTONIZER_DISABLED = -1;
 
     /** @hide */
+    @UnsupportedAppUsage
     public static final int DALTONIZER_SIMULATE_MONOCHROMACY = 0;
 
     /** @hide */
@@ -112,30 +114,39 @@
     public static final String ACTION_CHOOSE_ACCESSIBILITY_BUTTON =
             "com.android.internal.intent.action.CHOOSE_ACCESSIBILITY_BUTTON";
 
+    @UnsupportedAppUsage
     static final Object sInstanceSync = new Object();
 
+    @UnsupportedAppUsage
     private static AccessibilityManager sInstance;
 
+    @UnsupportedAppUsage
     private final Object mLock = new Object();
 
+    @UnsupportedAppUsage
     private IAccessibilityManager mService;
 
+    @UnsupportedAppUsage
     final int mUserId;
 
+    @UnsupportedAppUsage
     final Handler mHandler;
 
     final Handler.Callback mCallback;
 
+    @UnsupportedAppUsage
     boolean mIsEnabled;
 
     int mRelevantEventTypes = AccessibilityEvent.TYPES_ALL_MASK;
 
     boolean mIsTouchExplorationEnabled;
 
+    @UnsupportedAppUsage
     boolean mIsHighTextContrastEnabled;
 
     AccessibilityPolicy mAccessibilityPolicy;
 
+    @UnsupportedAppUsage
     private final ArrayMap<AccessibilityStateChangeListener, Handler>
             mAccessibilityStateChangeListeners = new ArrayMap<>();
 
@@ -318,6 +329,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static AccessibilityManager getInstance(Context context) {
         synchronized (sInstanceSync) {
             if (sInstance == null) {
@@ -430,6 +442,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isHighTextContrastEnabled() {
         synchronized (mLock) {
             IAccessibilityManager service = getServiceLocked();
@@ -916,6 +929,7 @@
      *
      * @param stateFlags The state flags.
      */
+    @UnsupportedAppUsage
     private void setStateLocked(int stateFlags) {
         final boolean enabled = (stateFlags & STATE_FLAG_ACCESSIBILITY_ENABLED) != 0;
         final boolean touchExplorationEnabled =
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 17bb04f..a3fa2ce 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -25,6 +25,7 @@
 import android.accessibilityservice.AccessibilityServiceInfo;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Rect;
 import android.os.Bundle;
 import android.os.Parcel;
@@ -652,6 +653,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getAccessibilityViewId(long accessibilityNodeId) {
         return (int) accessibilityNodeId;
     }
@@ -665,6 +667,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getVirtualDescendantId(long accessibilityNodeId) {
         return (int) ((accessibilityNodeId & VIRTUAL_DESCENDANT_ID_MASK)
                 >> VIRTUAL_DESCENDANT_ID_SHIFT);
@@ -692,10 +695,12 @@
 
     private static final AccessibilityNodeInfo DEFAULT = new AccessibilityNodeInfo();
 
+    @UnsupportedAppUsage
     private boolean mSealed;
 
     // Data.
     private int mWindowId = AccessibilityWindowInfo.UNDEFINED_WINDOW_ID;
+    @UnsupportedAppUsage
     private long mSourceNodeId = UNDEFINED_NODE_ID;
     private long mParentNodeId = UNDEFINED_NODE_ID;
     private long mLabelForId = UNDEFINED_NODE_ID;
@@ -721,6 +726,7 @@
     private String mViewIdResourceName;
     private ArrayList<String> mExtraDataKeys;
 
+    @UnsupportedAppUsage
     private LongArray mChildNodeIds;
     private ArrayList<AccessibilityAction> mActions;
 
@@ -855,6 +861,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean refresh(Bundle arguments, boolean bypassCache) {
         enforceSealed();
         if (!canPerformRequestOverConnection(mSourceNodeId)) {
@@ -3021,6 +3028,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public long getSourceNodeId() {
         return mSourceNodeId;
     }
@@ -3032,6 +3040,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setSealed(boolean sealed) {
         mSealed = sealed;
     }
@@ -3043,6 +3052,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isSealed() {
         return mSealed;
     }
diff --git a/core/java/android/view/accessibility/AccessibilityRecord.java b/core/java/android/view/accessibility/AccessibilityRecord.java
index c2ddc92..b382a18 100644
--- a/core/java/android/view/accessibility/AccessibilityRecord.java
+++ b/core/java/android/view/accessibility/AccessibilityRecord.java
@@ -19,6 +19,7 @@
 import static com.android.internal.util.CollectionUtils.isEmpty;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcelable;
 import android.view.View;
 
@@ -82,6 +83,7 @@
     private AccessibilityRecord mNext;
     private boolean mIsInPool;
 
+    @UnsupportedAppUsage
     boolean mSealed;
     int mBooleanProperties = 0;
     int mCurrentItemIndex = UNDEFINED;
@@ -98,6 +100,7 @@
 
     int mAddedCount= UNDEFINED;
     int mRemovedCount = UNDEFINED;
+    @UnsupportedAppUsage
     long mSourceNodeId = AccessibilityNodeInfo.UNDEFINED_NODE_ID;
     int mSourceWindowId = AccessibilityWindowInfo.UNDEFINED_WINDOW_ID;
 
@@ -696,6 +699,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public long getSourceNodeId() {
         return mSourceNodeId;
     }
diff --git a/core/java/android/view/accessibility/CaptioningManager.java b/core/java/android/view/accessibility/CaptioningManager.java
index d6455e7..c42e9fe 100644
--- a/core/java/android/view/accessibility/CaptioningManager.java
+++ b/core/java/android/view/accessibility/CaptioningManager.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.ContentObserver;
@@ -286,6 +287,7 @@
         public static final CaptionStyle DEFAULT;
 
         /** @hide */
+        @UnsupportedAppUsage
         public static final CaptionStyle[] PRESETS;
 
         /** @hide */
diff --git a/core/java/android/view/inputmethod/InputMethodInfo.java b/core/java/android/view/inputmethod/InputMethodInfo.java
index 372362f..04028ae 100644
--- a/core/java/android/view/inputmethod/InputMethodInfo.java
+++ b/core/java/android/view/inputmethod/InputMethodInfo.java
@@ -17,6 +17,7 @@
 package android.view.inputmethod;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
@@ -94,6 +95,7 @@
     /**
      * An array-like container of the subtypes.
      */
+    @UnsupportedAppUsage
     private final InputMethodSubtypeArray mSubtypes;
 
     private final boolean mIsAuxIme;
@@ -445,6 +447,7 @@
      * Return whether or not this ime is a default ime or not.
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isDefault(Context context) {
         if (mForceDefault) {
             return true;
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index bb93af5..7762ecf 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -24,6 +24,7 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemService;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.graphics.Rect;
@@ -223,6 +224,7 @@
 
     static final String PENDING_EVENT_COUNTER = "aq:imm";
 
+    @UnsupportedAppUsage
     static InputMethodManager sInstance;
 
     /**
@@ -270,11 +272,13 @@
     /** @hide */
     public static final int SHOW_IM_PICKER_MODE_EXCLUDE_AUXILIARY_SUBTYPES = 2;
 
+    @UnsupportedAppUsage
     final IInputMethodManager mService;
     final Looper mMainLooper;
 
     // For scheduling work on the main thread.  This also serves as our
     // global lock.
+    @UnsupportedAppUsage
     final H mH;
 
     // Our generic input connection if the current target does not have its own.
@@ -302,16 +306,19 @@
      * This is the root view of the overall window that currently has input
      * method focus.
      */
+    @UnsupportedAppUsage
     View mCurRootView;
     /**
      * This is the view that should currently be served by an input method,
      * regardless of the state of setting that up.
      */
+    @UnsupportedAppUsage
     View mServedView;
     /**
      * This is then next view that will be served by the input method, when
      * we get around to updating things.
      */
+    @UnsupportedAppUsage
     View mNextServedView;
     /**
      * This is set when we are in the process of connecting, to determine
@@ -327,6 +334,7 @@
     /**
      * The InputConnection that was last retrieved from the served view.
      */
+    @UnsupportedAppUsage
     ControlledInputConnectionWrapper mServedInputConnectionWrapper;
     /**
      * The completions that were last provided by the served view.
@@ -334,7 +342,9 @@
     CompletionInfo[] mCompletions;
 
     // Cursor position on the screen.
+    @UnsupportedAppUsage
     Rect mTmpCursorRect = new Rect();
+    @UnsupportedAppUsage
     Rect mCursorRect = new Rect();
     int mCursorSelStart;
     int mCursorSelEnd;
@@ -377,10 +387,12 @@
     /**
      * ID of the method we are bound to.
      */
+    @UnsupportedAppUsage
     String mCurId;
     /**
      * The actual instance of the method to make calls on it.
      */
+    @UnsupportedAppUsage
     IInputMethodSession mCurMethod;
     InputChannel mCurChannel;
     ImeInputEventSender mCurSender;
@@ -677,6 +689,7 @@
      * doesn't already exist.
      * @hide
      */
+    @UnsupportedAppUsage
     public static InputMethodManager getInstance() {
         synchronized (InputMethodManager.class) {
             if (sInstance == null) {
@@ -695,16 +708,19 @@
      * if it exists.
      * @hide
      */
+    @UnsupportedAppUsage
     public static InputMethodManager peekInstance() {
         return sInstance;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public IInputMethodClient getClient() {
         return mClient;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public IInputContext getInputContext() {
         return mIInputContext;
     }
@@ -816,6 +832,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void registerSuggestionSpansForNotification(SuggestionSpan[] spans) {
         try {
             mService.registerSuggestionSpansForNotification(spans);
@@ -825,6 +842,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void notifySuggestionPicked(SuggestionSpan span, String originalString, int index) {
         try {
             mService.notifySuggestionPicked(span, originalString, index);
@@ -930,6 +948,7 @@
     /**
      * Disconnect any existing input connection, clearing the served view.
      */
+    @UnsupportedAppUsage
     void finishInputLocked() {
         mNextServedView = null;
         if (mServedView != null) {
@@ -1094,6 +1113,7 @@
      * @hide
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void showSoftInputUnchecked(int flags, ResultReceiver resultReceiver) {
         try {
             Log.w(TAG, "showSoftInputUnchecked() is a hidden method, which will be removed "
@@ -1414,6 +1434,7 @@
      * input method started before.
      * @hide
      */
+    @UnsupportedAppUsage
     public void windowDismissed(IBinder appWindowToken) {
         checkFocus();
         synchronized (mH) {
@@ -1428,6 +1449,7 @@
      * Call this when a view receives focus.
      * @hide
      */
+    @UnsupportedAppUsage
     public void focusIn(View view) {
         synchronized (mH) {
             focusInLocked(view);
@@ -1458,6 +1480,7 @@
      * Call this when a view loses focus.
      * @hide
      */
+    @UnsupportedAppUsage
     public void focusOut(View view) {
         synchronized (mH) {
             if (DEBUG) Log.v(TAG, "focusOut: view=" + dumpViewInfo(view)
@@ -1502,6 +1525,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void checkFocus() {
         if (checkFocusNoStartInput(false)) {
             startInputInner(InputMethodClient.START_INPUT_REASON_CHECK_FOCUS, null, 0, 0, 0);
@@ -1549,6 +1573,7 @@
         return true;
     }
 
+    @UnsupportedAppUsage
     void closeCurrentInput() {
         try {
             mService.hideSoftInput(mClient, HIDE_NOT_ALWAYS, null);
@@ -1616,6 +1641,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void onPreWindowFocus(View rootView, boolean hasWindowFocus) {
         synchronized (mH) {
             if (rootView == null) {
@@ -1719,6 +1745,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isCursorAnchorInfoEnabled() {
         synchronized (mH) {
             final boolean isImmediate = (mRequestUpdateCursorAnchorInfoMonitorMode &
@@ -1734,6 +1761,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setUpdateCursorAnchorInfoMode(int flags) {
         synchronized (mH) {
             mRequestUpdateCursorAnchorInfoMonitorMode = flags;
@@ -2243,6 +2271,7 @@
      * Notify that a user took some action with this input method.
      * @hide
      */
+    @UnsupportedAppUsage
     public void notifyUserAction() {
         synchronized (mH) {
             if (mLastSentUserActionNotificationSequenceNumber ==
@@ -2311,6 +2340,7 @@
      * @return The current height of the input method window.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getInputMethodWindowVisibleHeight() {
         synchronized (mH) {
             try {
diff --git a/core/java/android/view/inputmethod/InputMethodSubtypeArray.java b/core/java/android/view/inputmethod/InputMethodSubtypeArray.java
index 6a748ce..8dd0dcd 100644
--- a/core/java/android/view/inputmethod/InputMethodSubtypeArray.java
+++ b/core/java/android/view/inputmethod/InputMethodSubtypeArray.java
@@ -16,6 +16,7 @@
 
 package android.view.inputmethod;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.util.Slog;
 
@@ -49,6 +50,7 @@
      * @param subtypes A list of {@link InputMethodSubtype} from which
      * {@link InputMethodSubtypeArray} will be created.
      */
+    @UnsupportedAppUsage
     public InputMethodSubtypeArray(final List<InputMethodSubtype> subtypes) {
         if (subtypes == null) {
             mCount = 0;
diff --git a/core/java/android/view/textclassifier/TextClassificationManager.java b/core/java/android/view/textclassifier/TextClassificationManager.java
index 201218ba..ed86206 100644
--- a/core/java/android/view/textclassifier/TextClassificationManager.java
+++ b/core/java/android/view/textclassifier/TextClassificationManager.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.database.ContentObserver;
 import android.os.ServiceManager;
@@ -108,6 +109,7 @@
      * @see TextClassifier#SYSTEM
      * @hide
      */
+    @UnsupportedAppUsage
     public TextClassifier getTextClassifier(@TextClassifierType int type) {
         switch (type) {
             case TextClassifier.LOCAL:
diff --git a/core/java/android/view/textclassifier/TextClassifier.java b/core/java/android/view/textclassifier/TextClassifier.java
index 1505863..9692579 100644
--- a/core/java/android/view/textclassifier/TextClassifier.java
+++ b/core/java/android/view/textclassifier/TextClassifier.java
@@ -21,6 +21,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.StringDef;
+import android.annotation.UnsupportedAppUsage;
 import android.annotation.WorkerThread;
 import android.os.LocaleList;
 import android.os.Looper;
@@ -213,6 +214,7 @@
 
     // TODO: Remove once apps can build against the latest sdk.
     /** @hide */
+    @UnsupportedAppUsage
     default TextSelection suggestSelection(
             @NonNull CharSequence text,
             @IntRange(from = 0) int selectionStartIndex,
@@ -292,6 +294,7 @@
 
     // TODO: Remove once apps can build against the latest sdk.
     /** @hide */
+    @UnsupportedAppUsage
     default TextClassification classifyText(
             @NonNull CharSequence text,
             @IntRange(from = 0) int startIndex,
@@ -333,6 +336,7 @@
 
     // TODO: Remove once apps can build against the latest sdk.
     /** @hide */
+    @UnsupportedAppUsage
     default TextLinks generateLinks(
             @NonNull CharSequence text, @Nullable TextLinks.Options options) {
         if (options == null) {
diff --git a/core/java/android/view/textclassifier/TextLinks.java b/core/java/android/view/textclassifier/TextLinks.java
index e7faf14..1cac3ed 100644
--- a/core/java/android/view/textclassifier/TextLinks.java
+++ b/core/java/android/view/textclassifier/TextLinks.java
@@ -20,6 +20,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.LocaleList;
 import android.os.Parcel;
@@ -652,6 +653,7 @@
 
         private String mCallingPackageName;
 
+        @UnsupportedAppUsage
         public Options() {
             this(null, null);
         }
diff --git a/core/java/android/view/textclassifier/logging/SmartSelectionEventTracker.java b/core/java/android/view/textclassifier/logging/SmartSelectionEventTracker.java
index f7d75cd..b530ddf 100644
--- a/core/java/android/view/textclassifier/logging/SmartSelectionEventTracker.java
+++ b/core/java/android/view/textclassifier/logging/SmartSelectionEventTracker.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.metrics.LogMaker;
 import android.util.Log;
@@ -99,6 +100,7 @@
     private boolean mSmartSelectionTriggered;
     private String mModelName;
 
+    @UnsupportedAppUsage
     public SmartSelectionEventTracker(@NonNull Context context, @WidgetType int widgetType) {
         mWidgetType = widgetType;
         mWidgetVersion = null;
@@ -117,6 +119,7 @@
      *
      * @param event the selection event
      */
+    @UnsupportedAppUsage
     public void logEvent(@NonNull SelectionEvent event) {
         Preconditions.checkNotNull(event);
 
@@ -440,6 +443,7 @@
          *
          * @param start  the word index of the selected word
          */
+        @UnsupportedAppUsage
         public static SelectionEvent selectionStarted(int start) {
             return new SelectionEvent(
                     start, start + 1, EventType.SELECTION_STARTED,
@@ -453,6 +457,7 @@
          * @param start  the start word (inclusive) index of the selection
          * @param end  the end word (exclusive) index of the selection
          */
+        @UnsupportedAppUsage
         public static SelectionEvent selectionModified(int start, int end) {
             return new SelectionEvent(
                     start, end, EventType.SELECTION_MODIFIED,
@@ -468,6 +473,7 @@
          * @param classification  the TextClassification object returned by the TextClassifier that
          *      classified the selected text
          */
+        @UnsupportedAppUsage
         public static SelectionEvent selectionModified(
                 int start, int end, @NonNull TextClassification classification) {
             final String entityType = classification.getEntityCount() > 0
@@ -487,6 +493,7 @@
          * @param selection  the TextSelection object returned by the TextClassifier for the
          *      specified selection
          */
+        @UnsupportedAppUsage
         public static SelectionEvent selectionModified(
                 int start, int end, @NonNull TextSelection selection) {
             final boolean smartSelection = getSourceClassifier(selection.getId())
@@ -515,6 +522,7 @@
          * @param end  the end word (exclusive) index of the selection
          * @param actionType  the action that was performed on the selection
          */
+        @UnsupportedAppUsage
         public static SelectionEvent selectionAction(
                 int start, int end, @ActionType int actionType) {
             return new SelectionEvent(
@@ -532,6 +540,7 @@
          * @param classification  the TextClassification object returned by the TextClassifier that
          *      classified the selected text
          */
+        @UnsupportedAppUsage
         public static SelectionEvent selectionAction(
                 int start, int end, @ActionType int actionType,
                 @NonNull TextClassification classification) {
diff --git a/core/java/android/view/textservice/SpellCheckerSession.java b/core/java/android/view/textservice/SpellCheckerSession.java
index 886f5c8..9733701 100644
--- a/core/java/android/view/textservice/SpellCheckerSession.java
+++ b/core/java/android/view/textservice/SpellCheckerSession.java
@@ -16,6 +16,7 @@
 
 package android.view.textservice;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Binder;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -97,6 +98,7 @@
     private final InternalListener mInternalListener;
     private final ITextServicesManager mTextServicesManager;
     private final SpellCheckerInfo mSpellCheckerInfo;
+    @UnsupportedAppUsage
     private final SpellCheckerSessionListener mSpellCheckerSessionListener;
     private final SpellCheckerSessionListenerImpl mSpellCheckerSessionListenerImpl;
 
diff --git a/core/java/android/view/textservice/TextServicesManager.java b/core/java/android/view/textservice/TextServicesManager.java
index 6644a85..4c6862c 100644
--- a/core/java/android/view/textservice/TextServicesManager.java
+++ b/core/java/android/view/textservice/TextServicesManager.java
@@ -17,6 +17,7 @@
 package android.view.textservice;
 
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.Bundle;
 import android.os.RemoteException;
@@ -85,6 +86,7 @@
      * Retrieve the global TextServicesManager instance, creating it if it doesn't already exist.
      * @hide
      */
+    @UnsupportedAppUsage
     public static TextServicesManager getInstance() {
         synchronized (TextServicesManager.class) {
             if (sInstance == null) {
@@ -192,6 +194,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public SpellCheckerInfo[] getEnabledSpellCheckers() {
         try {
             final SpellCheckerInfo[] retval = mService.getEnabledSpellCheckers();
@@ -207,6 +210,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public SpellCheckerInfo getCurrentSpellChecker() {
         try {
             // Passing null as a locale for ICS
@@ -219,6 +223,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public SpellCheckerSubtype getCurrentSpellCheckerSubtype(
             boolean allowImplicitlySelectedSubtype) {
         try {
@@ -231,6 +236,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isSpellCheckerEnabled() {
         try {
             return mService.isSpellCheckerEnabled();
diff --git a/core/java/android/webkit/CacheManager.java b/core/java/android/webkit/CacheManager.java
index fc76029..563e00e 100644
--- a/core/java/android/webkit/CacheManager.java
+++ b/core/java/android/webkit/CacheManager.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 
 import java.io.File;
 import java.io.IOException;
@@ -50,22 +51,37 @@
     @Deprecated
     public static class CacheResult {
         // these fields are saved to the database
+        @UnsupportedAppUsage
         int httpStatusCode;
+        @UnsupportedAppUsage
         long contentLength;
+        @UnsupportedAppUsage
         long expires;
+        @UnsupportedAppUsage
         String expiresString;
+        @UnsupportedAppUsage
         String localPath;
+        @UnsupportedAppUsage
         String lastModified;
+        @UnsupportedAppUsage
         String etag;
+        @UnsupportedAppUsage
         String mimeType;
+        @UnsupportedAppUsage
         String location;
+        @UnsupportedAppUsage
         String encoding;
+        @UnsupportedAppUsage
         String contentdisposition;
+        @UnsupportedAppUsage
         String crossDomain;
 
         // these fields are NOT saved to the database
+        @UnsupportedAppUsage
         InputStream inStream;
+        @UnsupportedAppUsage
         OutputStream outStream;
+        @UnsupportedAppUsage
         File outFile;
 
         /**
@@ -73,6 +89,7 @@
          *
          * @return the status code of this cache entry
          */
+        @UnsupportedAppUsage
         public int getHttpStatusCode() {
             return httpStatusCode;
         }
@@ -82,6 +99,7 @@
          *
          * @return the content length of this cache entry
          */
+        @UnsupportedAppUsage
         public long getContentLength() {
             return contentLength;
         }
@@ -93,6 +111,7 @@
          *
          * @return the path of the file used to store this cache entry
          */
+        @UnsupportedAppUsage
         public String getLocalPath() {
             return localPath;
         }
@@ -103,6 +122,7 @@
          *
          * @return the expiry date of this cache entry
          */
+        @UnsupportedAppUsage
         public long getExpires() {
             return expires;
         }
@@ -113,6 +133,7 @@
          * @return the expiry date of this cache entry
          *
          */
+        @UnsupportedAppUsage
         public String getExpiresString() {
             return expiresString;
         }
@@ -123,6 +144,7 @@
          *
          * @return the date at which this cache entry was last modified
          */
+        @UnsupportedAppUsage
         public String getLastModified() {
             return lastModified;
         }
@@ -132,6 +154,7 @@
          *
          * @return the entity tag of this cache entry
          */
+        @UnsupportedAppUsage
         public String getETag() {
             return etag;
         }
@@ -141,6 +164,7 @@
          *
          * @return the MIME type of this cache entry
          */
+        @UnsupportedAppUsage
         public String getMimeType() {
             return mimeType;
         }
@@ -151,6 +175,7 @@
          *
          * @return the HTTP 'Location' header for this cache entry
          */
+        @UnsupportedAppUsage
         public String getLocation() {
             return location;
         }
@@ -160,6 +185,7 @@
          *
          * @return the encoding of this cache entry
          */
+        @UnsupportedAppUsage
         public String getEncoding() {
             return encoding;
         }
@@ -171,6 +197,7 @@
          * @return the HTTP 'Content-Disposition' header for this cache entry
          *
          */
+        @UnsupportedAppUsage
         public String getContentDisposition() {
             return contentdisposition;
         }
@@ -182,6 +209,7 @@
          *
          * @return an input stream to the content of this cache entry
          */
+        @UnsupportedAppUsage
         public InputStream getInputStream() {
             return inStream;
         }
@@ -194,6 +222,7 @@
          * @return an output stream to the content of this cache entry
          */
         // Note that this is always null for objects returned by getCacheFile()!
+        @UnsupportedAppUsage
         public OutputStream getOutputStream() {
             return outStream;
         }
@@ -204,6 +233,7 @@
          *
          * @param stream an input stream to the content of this cache entry
          */
+        @UnsupportedAppUsage
         public void setInputStream(InputStream stream) {
             this.inStream = stream;
         }
@@ -213,6 +243,7 @@
          *
          * @param encoding the encoding of this cache entry
          */
+        @UnsupportedAppUsage
         public void setEncoding(String encoding) {
             this.encoding = encoding;
         }
@@ -235,6 +266,7 @@
      */
     @Deprecated
     @Nullable
+    @UnsupportedAppUsage
     public static File getCacheFileBaseDir() {
         return null;
     }
@@ -246,6 +278,7 @@
      * @deprecated This method no longer has any effect and always returns {@code false}.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static boolean cacheDisabled() {
         return false;
     }
@@ -259,6 +292,7 @@
      * @deprecated This method no longer has any effect and always returns {@code false}.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static boolean startCacheTransaction() {
         return false;
     }
@@ -271,6 +305,7 @@
      * @deprecated This method no longer has any effect and always returns {@code false}.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static boolean endCacheTransaction() {
         return false;
     }
@@ -290,6 +325,7 @@
      */
     @Deprecated
     @Nullable
+    @UnsupportedAppUsage
     public static CacheResult getCacheFile(String url,
             Map<String, String> headers) {
         return null;
@@ -304,10 +340,12 @@
      * @deprecated Access to the HTTP cache will be removed in a future release.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static void saveCacheFile(String url, CacheResult cacheResult) {
         saveCacheFile(url, 0, cacheResult);
     }
 
+    @UnsupportedAppUsage
     static void saveCacheFile(String url, long postIdentifier,
             CacheResult cacheRet) {
         try {
diff --git a/core/java/android/webkit/ConsoleMessage.java b/core/java/android/webkit/ConsoleMessage.java
index a9c351a..6051956 100644
--- a/core/java/android/webkit/ConsoleMessage.java
+++ b/core/java/android/webkit/ConsoleMessage.java
@@ -16,6 +16,8 @@
 
 package android.webkit;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * Public class representing a JavaScript console message from WebCore. This could be a issued
  * by a call to one of the <code>console</code> logging functions (e.g.
@@ -34,9 +36,13 @@
         DEBUG
     };
 
+    @UnsupportedAppUsage
     private MessageLevel mLevel;
+    @UnsupportedAppUsage
     private String mMessage;
+    @UnsupportedAppUsage
     private String mSourceId;
+    @UnsupportedAppUsage
     private int mLineNumber;
 
     public ConsoleMessage(String message, String sourceId, int lineNumber, MessageLevel msgLevel) {
diff --git a/core/java/android/webkit/JsResult.java b/core/java/android/webkit/JsResult.java
index d36ab418..5bf6aab 100644
--- a/core/java/android/webkit/JsResult.java
+++ b/core/java/android/webkit/JsResult.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 
 /**
  * An instance of this class is passed as a parameter in various {@link WebChromeClient} action
@@ -34,6 +35,7 @@
         public void onJsResultComplete(JsResult result);
     }
     // This is the caller of the prompt and is the object that is waiting.
+    @UnsupportedAppUsage
     private final ResultReceiver mReceiver;
     // This is a basic result of a confirm or prompt dialog.
     private boolean mResult;
diff --git a/core/java/android/webkit/PluginData.java b/core/java/android/webkit/PluginData.java
index 88fc9b7..8aeeb1c 100644
--- a/core/java/android/webkit/PluginData.java
+++ b/core/java/android/webkit/PluginData.java
@@ -16,6 +16,7 @@
 
 package android.webkit;
 
+import android.annotation.UnsupportedAppUsage;
 import java.io.InputStream;
 import java.util.Map;
 
@@ -69,6 +70,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public PluginData(
             InputStream stream,
             long length,
@@ -90,6 +92,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public InputStream getInputStream() {
         return mStream;
     }
@@ -104,6 +107,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public long getContentLength() {
         return mContentLength;
     }
@@ -121,6 +125,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public Map<String, String[]> getHeaders() {
         return mHeaders;
     }
@@ -135,6 +140,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public int getStatusCode() {
         return mStatusCode;
     }
diff --git a/core/java/android/webkit/URLUtil.java b/core/java/android/webkit/URLUtil.java
index ed122a6..5d704cb0 100644
--- a/core/java/android/webkit/URLUtil.java
+++ b/core/java/android/webkit/URLUtil.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.net.ParseException;
 import android.net.Uri;
 import android.net.WebAddress;
@@ -139,6 +140,7 @@
     /**
      * @return {@code true} if the url is correctly URL encoded
      */
+    @UnsupportedAppUsage
     static boolean verifyURLEncoding(String url) {
         int count = url.length();
         if (count == 0) {
@@ -181,6 +183,7 @@
      * @return {@code true} if the url is a resource file.
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isResourceUrl(String url) {
         return (null != url) && url.startsWith(RESOURCE_BASE);
     }
@@ -398,6 +401,7 @@
      * Unfortunately some servers do not quote the value so to maintain
      * consistent behaviour with other browsers, we allow unquoted values too.
      */
+    @UnsupportedAppUsage
     static String parseContentDisposition(String contentDisposition) {
         try {
             Matcher m = CONTENT_DISPOSITION_PATTERN.matcher(contentDisposition);
diff --git a/core/java/android/webkit/UrlInterceptHandler.java b/core/java/android/webkit/UrlInterceptHandler.java
index 0a6e51f..f23aae6 100644
--- a/core/java/android/webkit/UrlInterceptHandler.java
+++ b/core/java/android/webkit/UrlInterceptHandler.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.webkit.CacheManager.CacheResult;
 import android.webkit.PluginData;
 
@@ -44,6 +45,7 @@
      */
     @Deprecated
     @Nullable
+    @UnsupportedAppUsage
     CacheResult service(String url, @Nullable Map<String, String> headers);
 
     /**
@@ -60,5 +62,6 @@
      */
     @Deprecated
     @Nullable
+    @UnsupportedAppUsage
     PluginData getPluginData(String url, @Nullable Map<String, String> headers);
 }
diff --git a/core/java/android/webkit/UrlInterceptRegistry.java b/core/java/android/webkit/UrlInterceptRegistry.java
index 700d6d9..eeb28d7 100644
--- a/core/java/android/webkit/UrlInterceptRegistry.java
+++ b/core/java/android/webkit/UrlInterceptRegistry.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.webkit.CacheManager.CacheResult;
 import android.webkit.PluginData;
 import android.webkit.UrlInterceptHandler;
@@ -55,6 +56,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static synchronized void setUrlInterceptDisabled(boolean disabled) {
         mDisabled = disabled;
     }
@@ -85,6 +87,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static synchronized boolean registerHandler(
             UrlInterceptHandler handler) {
         if (!getHandlers().contains(handler)) {
@@ -106,6 +109,7 @@
      * deprecated, so is this class.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static synchronized boolean unregisterHandler(
             UrlInterceptHandler handler) {
         return getHandlers().remove(handler);
@@ -152,6 +156,7 @@
      */
     @Deprecated
     @Nullable
+    @UnsupportedAppUsage
     public static synchronized PluginData getPluginData(
             String url, Map<String, String> headers) {
         if (urlInterceptDisabled()) {
diff --git a/core/java/android/webkit/WebResourceResponse.java b/core/java/android/webkit/WebResourceResponse.java
index 7bc7b07..aae3056 100644
--- a/core/java/android/webkit/WebResourceResponse.java
+++ b/core/java/android/webkit/WebResourceResponse.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 
 import java.io.InputStream;
 import java.io.StringBufferInputStream;
@@ -29,9 +30,11 @@
  * response when the WebView requests a particular resource.
  */
 public class WebResourceResponse {
+    @UnsupportedAppUsage
     private boolean mImmutable;
     private String mMimeType;
     private String mEncoding;
+    @UnsupportedAppUsage
     private int mStatusCode;
     private String mReasonPhrase;
     private Map<String, String> mResponseHeaders;
diff --git a/core/java/android/webkit/WebSettings.java b/core/java/android/webkit/WebSettings.java
index a085395..c30edd3 100644
--- a/core/java/android/webkit/WebSettings.java
+++ b/core/java/android/webkit/WebSettings.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 
 import java.lang.annotation.ElementType;
@@ -92,6 +93,7 @@
         TextSize(int size) {
             value = size;
         }
+        @UnsupportedAppUsage
         int value;
     }
 
@@ -579,6 +581,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void setUseDoubleTree(boolean use) {
         // Specified to do nothing, so no need for derived classes to override.
     }
@@ -591,6 +594,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public boolean getUseDoubleTree() {
         // Returns false unconditionally, so no need for derived classes to override.
         return false;
@@ -1004,6 +1008,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void setPluginsPath(String pluginsPath) {
         // Specified to do nothing, so no need for derived classes to override.
     }
@@ -1201,6 +1206,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR2}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public String getPluginsPath() {
         // Unconditionally returns empty string, so no need for derived classes to override.
         return "";
diff --git a/core/java/android/webkit/WebSyncManager.java b/core/java/android/webkit/WebSyncManager.java
index 03b94e7..3fa1b01 100644
--- a/core/java/android/webkit/WebSyncManager.java
+++ b/core/java/android/webkit/WebSyncManager.java
@@ -16,6 +16,7 @@
 
 package android.webkit;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 
 /**
@@ -65,5 +66,6 @@
     protected void onSyncInit() {
     }
 
+    @UnsupportedAppUsage
     abstract void syncFromRamToFlash();
 }
diff --git a/core/java/android/webkit/WebView.java b/core/java/android/webkit/WebView.java
index 9573f48..f343a52 100644
--- a/core/java/android/webkit/WebView.java
+++ b/core/java/android/webkit/WebView.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.annotation.Widget;
 import android.content.Context;
 import android.content.Intent;
@@ -107,6 +108,7 @@
     // Throwing an exception for incorrect thread usage if the
     // build target is JB MR2 or newer. Defaults to false, and is
     // set in the WebView constructor.
+    @UnsupportedAppUsage
     private static volatile boolean sEnforceThreadChecking = false;
 
     /**
@@ -389,6 +391,7 @@
      * @hide This is used internally by dumprendertree, as it requires the JavaScript interfaces to
      *       be added synchronously, before a subsequent loadUrl call takes effect.
      */
+    @UnsupportedAppUsage
     protected WebView(Context context, AttributeSet attrs, int defStyleAttr,
             Map<String, Object> javaScriptInterfaces, boolean privateBrowsing) {
         this(context, attrs, defStyleAttr, 0, javaScriptInterfaces, privateBrowsing);
@@ -398,6 +401,7 @@
      * @hide
      */
     @SuppressWarnings("deprecation")  // for super() call into deprecated base class constructor.
+    @UnsupportedAppUsage
     protected WebView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes,
             Map<String, Object> javaScriptInterfaces, boolean privateBrowsing) {
         super(context, attrs, defStyleAttr, defStyleRes);
@@ -475,6 +479,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public int getVisibleTitleHeight() {
         checkThread();
         return mProvider.getVisibleTitleHeight();
@@ -579,6 +584,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static void enablePlatformNotifications() {
         // noop
     }
@@ -591,6 +597,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static void disablePlatformNotifications() {
         // noop
     }
@@ -600,6 +607,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static void freeMemoryForTests() {
         getFactory().getStatics().freeMemoryForTests();
     }
@@ -644,6 +652,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public boolean savePicture(Bundle b, final File dest) {
         checkThread();
         return mProvider.savePicture(b, dest);
@@ -661,6 +670,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public boolean restorePicture(Bundle b, File src) {
         checkThread();
         return mProvider.restorePicture(b, src);
@@ -1275,6 +1285,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public String getTouchIconUrl() {
         return mProvider.getTouchIconUrl();
     }
@@ -1307,6 +1318,7 @@
      * @hide
      */
     @ViewDebug.ExportedProperty(category = "webview")
+    @UnsupportedAppUsage
     public int getContentWidth() {
         return mProvider.getContentWidth();
     }
@@ -1357,6 +1369,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isPaused() {
         return mProvider.isPaused();
     }
@@ -1866,6 +1879,7 @@
      * @hide
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static synchronized PluginList getPluginList() {
         return new PluginList();
     }
@@ -1933,6 +1947,7 @@
      * @hide
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void refreshPlugins(boolean reloadOpenPages) {
         checkThread();
     }
@@ -1945,6 +1960,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void emulateShiftHeld() {
         checkThread();
     }
@@ -2005,6 +2021,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public View getZoomControls() {
         checkThread();
         return mProvider.getZoomControls();
@@ -2080,6 +2097,7 @@
      * @hide Since API level {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void debugDump() {
         checkThread();
     }
@@ -2365,6 +2383,7 @@
     }
 
     // Only used by android.webkit.FindActionModeCallback.
+    @UnsupportedAppUsage
     void notifyFindDialogDismissed() {
         checkThread();
         mProvider.notifyFindDialogDismissed();
@@ -2374,6 +2393,7 @@
     // Private internal stuff
     //-------------------------------------------------------------------------
 
+    @UnsupportedAppUsage
     private WebViewProvider mProvider;
 
     /**
@@ -2417,12 +2437,15 @@
         }
     }
 
+    @UnsupportedAppUsage
     private static WebViewFactoryProvider getFactory() {
         return WebViewFactory.getProvider();
     }
 
+    @UnsupportedAppUsage
     private final Looper mWebViewThread = Looper.myLooper();
 
+    @UnsupportedAppUsage
     private void checkThread() {
         // Ignore mWebViewThread == null because this can be called during in the super class
         // constructor, before this class's own constructor has even started.
@@ -2703,6 +2726,7 @@
 
     /** @hide */
     @Override
+    @UnsupportedAppUsage
     protected void onDrawVerticalScrollBar(Canvas canvas, Drawable scrollBar,
             int l, int t, int r, int b) {
         mProvider.getViewDelegate().onDrawVerticalScrollBar(canvas, scrollBar, l, t, r, b);
@@ -2774,6 +2798,7 @@
 
     /** @hide */
     @Override
+    @UnsupportedAppUsage
     protected boolean setFrame(int left, int top, int right, int bottom) {
         return mProvider.getViewDelegate().setFrame(left, top, right, bottom);
     }
diff --git a/core/java/android/webkit/WebViewDelegate.java b/core/java/android/webkit/WebViewDelegate.java
index f067091..ba66571 100644
--- a/core/java/android/webkit/WebViewDelegate.java
+++ b/core/java/android/webkit/WebViewDelegate.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.app.Application;
 import android.app.ResourcesManager;
@@ -45,6 +46,7 @@
 @SystemApi
 public final class WebViewDelegate {
 
+    @UnsupportedAppUsage
     /* package */ WebViewDelegate() { }
 
     /**
diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java
index e0ccda9..e9a9e8f 100644
--- a/core/java/android/webkit/WebViewFactory.java
+++ b/core/java/android/webkit/WebViewFactory.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityManager;
 import android.app.AppGlobals;
 import android.app.Application;
@@ -59,8 +60,10 @@
 
     // Cache the factory both for efficiency, and ensure any one process gets all webviews from the
     // same provider.
+    @UnsupportedAppUsage
     private static WebViewFactoryProvider sProviderInstance;
     private static final Object sProviderLock = new Object();
+    @UnsupportedAppUsage
     private static PackageInfo sPackageInfo;
     private static Boolean sWebViewSupported;
     private static boolean sWebViewDisabled;
@@ -222,6 +225,7 @@
         return loadNativeRet;
     }
 
+    @UnsupportedAppUsage
     static WebViewFactoryProvider getProvider() {
         synchronized (sProviderLock) {
             // For now the main purpose of this function (and the factory abstraction) is to keep
@@ -359,6 +363,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private static Context getWebViewContextAndSetProvider() throws MissingWebViewPackageException {
         Application initialApplication = AppGlobals.getInitialApplication();
         try {
@@ -428,6 +433,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private static Class<WebViewFactoryProvider> getProviderClass() {
         Context webViewContext = null;
         Application initialApplication = AppGlobals.getInitialApplication();
@@ -509,6 +515,7 @@
     private static String WEBVIEW_UPDATE_SERVICE_NAME = "webviewupdate";
 
     /** @hide */
+    @UnsupportedAppUsage
     public static IWebViewUpdateService getUpdateService() {
         if (isWebViewSupported()) {
             return getUpdateServiceUnchecked();
diff --git a/core/java/android/webkit/WebViewProviderInfo.java b/core/java/android/webkit/WebViewProviderInfo.java
index b0e9f01..1704757 100644
--- a/core/java/android/webkit/WebViewProviderInfo.java
+++ b/core/java/android/webkit/WebViewProviderInfo.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.content.pm.Signature;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -56,6 +57,7 @@
             }
         };
 
+    @UnsupportedAppUsage
     private WebViewProviderInfo(Parcel in) {
         packageName = in.readString();
         description = in.readString();
diff --git a/core/java/android/webkit/WebViewProviderResponse.java b/core/java/android/webkit/WebViewProviderResponse.java
index c0aeb59..0edcb6f 100644
--- a/core/java/android/webkit/WebViewProviderResponse.java
+++ b/core/java/android/webkit/WebViewProviderResponse.java
@@ -16,6 +16,7 @@
 
 package android.webkit;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.pm.PackageInfo;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -56,6 +57,7 @@
         out.writeInt(status);
     }
 
+    @UnsupportedAppUsage
     public final PackageInfo packageInfo;
     public final int status;
 }
diff --git a/core/java/android/webkit/WebViewUpdateService.java b/core/java/android/webkit/WebViewUpdateService.java
index 629891c..12d3221 100644
--- a/core/java/android/webkit/WebViewUpdateService.java
+++ b/core/java/android/webkit/WebViewUpdateService.java
@@ -17,6 +17,7 @@
 package android.webkit;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.RemoteException;
 
 /**
@@ -25,6 +26,7 @@
 @SystemApi
 public final class WebViewUpdateService {
 
+    @UnsupportedAppUsage
     private WebViewUpdateService () {}
 
     /**
diff --git a/core/java/com/android/internal/app/procstats/ProcessStats.java b/core/java/com/android/internal/app/procstats/ProcessStats.java
index 14faf66..b6624a2 100644
--- a/core/java/com/android/internal/app/procstats/ProcessStats.java
+++ b/core/java/com/android/internal/app/procstats/ProcessStats.java
@@ -48,8 +48,8 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Objects;
-import java.util.regex.Pattern;
 import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 public final class ProcessStats implements Parcelable {
     public static final String TAG = "ProcessStats";
diff --git a/core/java/com/android/internal/os/HandlerCaller.java b/core/java/com/android/internal/os/HandlerCaller.java
index ae7c5f2..709cf43 100644
--- a/core/java/com/android/internal/os/HandlerCaller.java
+++ b/core/java/com/android/internal/os/HandlerCaller.java
@@ -21,6 +21,12 @@
 import android.os.Looper;
 import android.os.Message;
 
+/**
+ * @deprecated Use {@link com.android.internal.util.function.pooled.PooledLambda#obtainMessage}
+ *      to achieve the same effect of storing multiple values in a message with the added typesafety
+ *      and code continuity benefits.
+ */
+@Deprecated
 public class HandlerCaller {
     final Looper mMainLooper;
     final Handler mH;
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 5b36d7c..8f176e8 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -359,6 +359,7 @@
     <protected-broadcast android:name="android.net.wifi.action.PASSPOINT_ICON" />
     <protected-broadcast android:name="android.net.wifi.action.PASSPOINT_OSU_PROVIDERS_LIST" />
     <protected-broadcast android:name="android.net.wifi.action.PASSPOINT_SUBSCRIPTION_REMEDIATION" />
+    <protected-broadcast android:name="android.net.wifi.action.PASSPOINT_LAUNCH_OSU_VIEW" />
     <protected-broadcast android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" />
     <protected-broadcast android:name="android.net.wifi.supplicant.STATE_CHANGE" />
     <protected-broadcast android:name="android.net.wifi.p2p.STATE_CHANGED" />
@@ -2150,11 +2151,11 @@
 
     <!-- @SystemApi @TestApi @hide Allows an application to create/manage/remove stacks -->
     <permission android:name="android.permission.MANAGE_ACTIVITY_STACKS"
-        android:protectionLevel="signature|privileged|development" />
+        android:protectionLevel="signature|privileged" />
 
     <!-- @SystemApi @TestApi @hide Allows an application to embed other activities -->
     <permission android:name="android.permission.ACTIVITY_EMBEDDING"
-                android:protectionLevel="signature|privileged|development" />
+                android:protectionLevel="signature|privileged" />
 
     <!-- Allows an application to start any activity, regardless of permission
          protection or exported state.
@@ -2387,7 +2388,7 @@
     <permission android:name="android.permission.SET_SCREEN_COMPATIBILITY"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows an application to modify the current configuration, such
+    <!-- @SystemApi @TestApi Allows an application to modify the current configuration, such
          as locale. -->
     <permission android:name="android.permission.CHANGE_CONFIGURATION"
         android:protectionLevel="signature|privileged|development" />
@@ -2414,7 +2415,7 @@
     <permission android:name="android.permission.WRITE_GSERVICES"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to call
+    <!-- @SystemApi @TestApi Allows an application to call
         {@link android.app.ActivityManager#forceStopPackage}.
         @hide -->
     <permission android:name="android.permission.FORCE_STOP_PACKAGES"
diff --git a/core/res/res/values-watch/config.xml b/core/res/res/values-watch/config.xml
index 8e82479..a96a96d 100644
--- a/core/res/res/values-watch/config.xml
+++ b/core/res/res/values-watch/config.xml
@@ -64,9 +64,8 @@
          Set to true for watch devices. -->
     <bool name="config_focusScrollContainersInTouchMode">true</bool>
 
-    <!-- Enable generic multi-window in order to support Activity in virtual display. -->
-    <bool name="config_supportsMultiWindow">true</bool>
-    <bool name="config_supportsMultiDisplay">true</bool>
+    <bool name="config_supportsMultiWindow">false</bool>
+    <bool name="config_supportsMultiDisplay">false</bool>
     <bool name="config_supportsSplitScreenMultiWindow">false</bool>
 
      <!-- Default Gravity setting for the system Toast view. Equivalent to: Gravity.CENTER -->
diff --git a/graphics/java/android/graphics/fonts/SystemFonts.java b/graphics/java/android/graphics/fonts/SystemFonts.java
index dae48f8..26b4ec5 100644
--- a/graphics/java/android/graphics/fonts/SystemFonts.java
+++ b/graphics/java/android/graphics/fonts/SystemFonts.java
@@ -24,6 +24,7 @@
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.ArrayUtils;
 
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -251,7 +252,7 @@
             return fontConfig.getAliases();
         } catch (IOException | XmlPullParserException e) {
             Log.e(TAG, "Failed initialize system fallbacks.", e);
-            return null;
+            return ArrayUtils.emptyArray(FontConfig.Alias.class);
         }
     }
 
diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp
index a19edae..1517f57 100644
--- a/libs/hwui/renderthread/VulkanManager.cpp
+++ b/libs/hwui/renderthread/VulkanManager.cpp
@@ -25,6 +25,8 @@
 #include <GrBackendSurface.h>
 #include <GrContext.h>
 #include <GrTypes.h>
+#include <GrTypes.h>
+#include <vk/GrVkExtensions.h>
 #include <vk/GrVkTypes.h>
 
 namespace android {
@@ -62,7 +64,7 @@
     mInstance = VK_NULL_HANDLE;
 }
 
-bool VulkanManager::setupDevice(VkPhysicalDeviceFeatures& deviceFeatures) {
+bool VulkanManager::setupDevice(GrVkExtensions& grExtensions, VkPhysicalDeviceFeatures2& features) {
     VkResult err;
 
     constexpr VkApplicationInfo app_info = {
@@ -128,7 +130,7 @@
     GET_INST_PROC(DestroyInstance);
     GET_INST_PROC(EnumeratePhysicalDevices);
     GET_INST_PROC(GetPhysicalDeviceQueueFamilyProperties);
-    GET_INST_PROC(GetPhysicalDeviceFeatures);
+    GET_INST_PROC(GetPhysicalDeviceFeatures2);
     GET_INST_PROC(CreateDevice);
     GET_INST_PROC(EnumerateDeviceExtensionProperties);
     GET_INST_PROC(CreateAndroidSurfaceKHR);
@@ -217,11 +219,38 @@
         }
     }
 
-    // query to get the physical device properties
-    mGetPhysicalDeviceFeatures(mPhysicalDevice, &deviceFeatures);
+    auto getProc = [] (const char* proc_name, VkInstance instance, VkDevice device) {
+        if (device != VK_NULL_HANDLE) {
+            return vkGetDeviceProcAddr(device, proc_name);
+        }
+        return vkGetInstanceProcAddr(instance, proc_name);
+    };
+    grExtensions.init(getProc, mInstance, mPhysicalDevice, instanceExtensions.size(),
+            instanceExtensions.data(), deviceExtensions.size(), deviceExtensions.data());
+
+    memset(&features, 0, sizeof(VkPhysicalDeviceFeatures2));
+    features.sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2;
+    features.pNext = nullptr;
+
+    // Setup all extension feature structs we may want to use.
+    void** tailPNext = &features.pNext;
+
+    if (grExtensions.hasExtension(VK_EXT_BLEND_OPERATION_ADVANCED_EXTENSION_NAME, 2)) {
+        VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT* blend;
+        blend = (VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT*) malloc(
+                sizeof(VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT));
+        LOG_ALWAYS_FATAL_IF(!blend);
+        blend->sType = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT;
+        blend->pNext = nullptr;
+        *tailPNext = blend;
+        tailPNext = &blend->pNext;
+    }
+
+    // query to get the physical device features
+    mGetPhysicalDeviceFeatures2(mPhysicalDevice, &features);
     // this looks like it would slow things down,
     // and we can't depend on it on all platforms
-    deviceFeatures.robustBufferAccess = VK_FALSE;
+    features.features.robustBufferAccess = VK_FALSE;
 
     float queuePriorities[1] = { 0.0 };
 
@@ -247,7 +276,7 @@
 
     const VkDeviceCreateInfo deviceInfo = {
         VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO,    // sType
-        nullptr,                                 // pNext
+        &features,                               // pNext
         0,                                       // VkDeviceCreateFlags
         queueInfoCount,                          // queueCreateInfoCount
         queueInfo,                               // pQueueCreateInfos
@@ -255,7 +284,7 @@
         nullptr,                                 // ppEnabledLayerNames
         (uint32_t) deviceExtensions.size(),      // extensionCount
         deviceExtensions.data(),                 // ppEnabledExtensionNames
-        &deviceFeatures                          // ppEnabledFeatures
+        nullptr,                                 // ppEnabledFeatures
     };
 
     err = mCreateDevice(mPhysicalDevice, &deviceInfo, nullptr, &mDevice);
@@ -294,33 +323,39 @@
     return true;
 }
 
+static void free_features_extensions_structs(const VkPhysicalDeviceFeatures2& features) {
+    // All Vulkan structs that could be part of the features chain will start with the
+    // structure type followed by the pNext pointer. We cast to the CommonVulkanHeader
+    // so we can get access to the pNext for the next struct.
+    struct CommonVulkanHeader {
+        VkStructureType sType;
+        void*           pNext;
+    };
+
+    void* pNext = features.pNext;
+    while (pNext) {
+        void* current = pNext;
+        pNext = static_cast<CommonVulkanHeader*>(current)->pNext;
+        free(current);
+    }
+}
+
 void VulkanManager::initialize() {
     if (mDevice != VK_NULL_HANDLE) {
         return;
     }
 
-    std::vector<const char*> instanceExtensions;
-    std::vector<const char*> deviceExtensions;
-    VkPhysicalDeviceFeatures deviceFeatures;
-    LOG_ALWAYS_FATAL_IF(!this->setupDevice(deviceFeatures));
+    GET_PROC(EnumerateInstanceVersion);
+    uint32_t instanceVersion = 0;
+    LOG_ALWAYS_FATAL_IF(mEnumerateInstanceVersion(&instanceVersion));
+    LOG_ALWAYS_FATAL_IF(instanceVersion < VK_MAKE_VERSION(1, 1, 0));
+
+    GrVkExtensions extensions;
+    VkPhysicalDeviceFeatures2 features;
+    LOG_ALWAYS_FATAL_IF(!this->setupDevice(extensions, features));
 
     mGetDeviceQueue(mDevice, mGraphicsQueueIndex, 0, &mGraphicsQueue);
 
-    uint32_t extensionFlags = kKHR_surface_GrVkExtensionFlag |
-                              kKHR_android_surface_GrVkExtensionFlag |
-                              kKHR_swapchain_GrVkExtensionFlag;
-
-    uint32_t featureFlags = 0;
-    if (deviceFeatures.geometryShader) {
-        featureFlags |= kGeometryShader_GrVkFeatureFlag;
-    }
-    if (deviceFeatures.dualSrcBlend) {
-        featureFlags |= kDualSrcBlend_GrVkFeatureFlag;
-    }
-    if (deviceFeatures.sampleRateShading) {
-        featureFlags |= kSampleRateShading_GrVkFeatureFlag;
-    }
-
     auto getProc = [] (const char* proc_name, VkInstance instance, VkDevice device) {
         if (device != VK_NULL_HANDLE) {
             return vkGetDeviceProcAddr(device, proc_name);
@@ -334,11 +369,10 @@
     backendContext.fDevice = mDevice;
     backendContext.fQueue = mGraphicsQueue;
     backendContext.fGraphicsQueueIndex = mGraphicsQueueIndex;
-    backendContext.fMinAPIVersion = VK_MAKE_VERSION(1, 0, 0);
-    backendContext.fExtensions = extensionFlags;
-    backendContext.fFeatures = featureFlags;
+    backendContext.fInstanceVersion = instanceVersion;
+    backendContext.fVkExtensions = &extensions;
+    backendContext.fDeviceFeatures2 = &features;
     backendContext.fGetProc = std::move(getProc);
-    backendContext.fOwnsInstanceAndDevice = false;
 
     // create the command pool for the command buffers
     if (VK_NULL_HANDLE == mCommandPool) {
@@ -361,6 +395,9 @@
     sk_sp<GrContext> grContext(GrContext::MakeVulkan(backendContext, options));
     LOG_ALWAYS_FATAL_IF(!grContext.get());
     mRenderThread.setGrContext(grContext);
+
+    free_features_extensions_structs(features);
+
     DeviceInfo::initialize(mRenderThread.getGrContext()->maxRenderTargetSize());
 
     if (Properties::enablePartialUpdates && Properties::useBufferAge) {
diff --git a/libs/hwui/renderthread/VulkanManager.h b/libs/hwui/renderthread/VulkanManager.h
index 69641d5..5524c39 100644
--- a/libs/hwui/renderthread/VulkanManager.h
+++ b/libs/hwui/renderthread/VulkanManager.h
@@ -25,6 +25,8 @@
 #include <SkSurface.h>
 #include <vk/GrVkBackendContext.h>
 
+class GrVkExtensions;
+
 namespace android {
 namespace uirenderer {
 namespace renderthread {
@@ -116,7 +118,7 @@
 
     // Sets up the VkInstance and VkDevice objects. Also fills out the passed in
     // VkPhysicalDeviceFeatures struct.
-    bool setupDevice(VkPhysicalDeviceFeatures& deviceFeatures);
+    bool setupDevice(GrVkExtensions&, VkPhysicalDeviceFeatures2&);
 
     void destroyBuffers(VulkanSurface* surface);
 
@@ -156,13 +158,14 @@
     VkPtr<PFN_vkCreateSharedSwapchainsKHR> mCreateSharedSwapchainsKHR;
 
     // Instance Functions
+    VkPtr<PFN_vkEnumerateInstanceVersion> mEnumerateInstanceVersion;
     VkPtr<PFN_vkEnumerateInstanceExtensionProperties> mEnumerateInstanceExtensionProperties;
     VkPtr<PFN_vkCreateInstance> mCreateInstance;
 
     VkPtr<PFN_vkDestroyInstance> mDestroyInstance;
     VkPtr<PFN_vkEnumeratePhysicalDevices> mEnumeratePhysicalDevices;
     VkPtr<PFN_vkGetPhysicalDeviceQueueFamilyProperties> mGetPhysicalDeviceQueueFamilyProperties;
-    VkPtr<PFN_vkGetPhysicalDeviceFeatures> mGetPhysicalDeviceFeatures;
+    VkPtr<PFN_vkGetPhysicalDeviceFeatures2> mGetPhysicalDeviceFeatures2;
     VkPtr<PFN_vkCreateDevice> mCreateDevice;
     VkPtr<PFN_vkEnumerateDeviceExtensionProperties> mEnumerateDeviceExtensionProperties;
 
diff --git a/media/java/android/media/AmrInputStream.java b/media/java/android/media/AmrInputStream.java
index efaf224..5088798 100644
--- a/media/java/android/media/AmrInputStream.java
+++ b/media/java/android/media/AmrInputStream.java
@@ -20,6 +20,7 @@
 import java.io.IOException;
 import java.nio.ByteBuffer;
 
+import android.annotation.UnsupportedAppUsage;
 import android.media.MediaCodec.BufferInfo;
 import android.util.Log;
 
@@ -53,6 +54,7 @@
     /**
      * DO NOT USE - use MediaCodec instead
      */
+    @UnsupportedAppUsage
     public AmrInputStream(InputStream inputStream) {
         Log.w(TAG, "@@@@ AmrInputStream is not a public API @@@@");
         mInputStream = inputStream;
diff --git a/media/java/android/media/AsyncPlayer.java b/media/java/android/media/AsyncPlayer.java
index c1a178a..8ac2655 100644
--- a/media/java/android/media/AsyncPlayer.java
+++ b/media/java/android/media/AsyncPlayer.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.media.PlayerBase;
 import android.net.Uri;
@@ -248,6 +249,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setUsesWakeLock(Context context) {
         if (mWakeLock != null || mThread != null) {
             // if either of these has happened, we've already played something.
diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java
index 9152ff2..e8bc622 100644
--- a/media/java/android/media/AudioAttributes.java
+++ b/media/java/android/media/AudioAttributes.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -372,11 +373,16 @@
     private final static int FLAG_ALL_PUBLIC = FLAG_AUDIBILITY_ENFORCED |
             FLAG_HW_AV_SYNC | FLAG_LOW_LATENCY;
 
+    @UnsupportedAppUsage
     private int mUsage = USAGE_UNKNOWN;
+    @UnsupportedAppUsage
     private int mContentType = CONTENT_TYPE_UNKNOWN;
+    @UnsupportedAppUsage
     private int mSource = MediaRecorder.AudioSource.AUDIO_SOURCE_INVALID;
+    @UnsupportedAppUsage
     private int mFlags = 0x0;
     private HashSet<String> mTags;
+    @UnsupportedAppUsage
     private String mFormattedTags;
     private Bundle mBundle; // lazy-initialized, may be null
 
@@ -646,6 +652,7 @@
          * @param tag
          * @return the same Builder instance.
          */
+        @UnsupportedAppUsage
         public Builder addTag(String tag) {
             mTags.add(tag);
             return this;
@@ -675,6 +682,7 @@
          * @param streamType
          * @return the same Builder instance.
          */
+        @UnsupportedAppUsage
         public Builder setInternalLegacyStreamType(int streamType) {
             switch(streamType) {
                 case AudioSystem.STREAM_VOICE_CALL:
@@ -1016,6 +1024,7 @@
      * @param aa non-null AudioAttributes.
      * @return a valid stream type for volume control that matches the attributes.
      */
+    @UnsupportedAppUsage
     public static int toLegacyStreamType(@NonNull AudioAttributes aa) {
         return toVolumeStreamType(false /*fromGetVolumeControlStream*/, aa);
     }
diff --git a/media/java/android/media/AudioDevicePort.java b/media/java/android/media/AudioDevicePort.java
index aea39a3..62b18cb 100644
--- a/media/java/android/media/AudioDevicePort.java
+++ b/media/java/android/media/AudioDevicePort.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.media.AudioSystem;
 
 /**
@@ -36,6 +37,7 @@
     private final int mType;
     private final String mAddress;
 
+    @UnsupportedAppUsage
     AudioDevicePort(AudioHandle handle, String deviceName,
             int[] samplingRates, int[] channelMasks, int[] channelIndexMasks,
             int[] formats, AudioGain[] gains, int type, String address) {
@@ -50,6 +52,7 @@
     /**
      * Get the device type (e.g AudioManager.DEVICE_OUT_SPEAKER)
      */
+    @UnsupportedAppUsage
     public int type() {
         return mType;
     }
diff --git a/media/java/android/media/AudioDevicePortConfig.java b/media/java/android/media/AudioDevicePortConfig.java
index e468a53..0c647ea 100644
--- a/media/java/android/media/AudioDevicePortConfig.java
+++ b/media/java/android/media/AudioDevicePortConfig.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * An AudioDevicePortConfig describes a possible configuration of an output or input device
  * (speaker, headphone, microphone ...).
@@ -26,6 +28,7 @@
  */
 
 public class AudioDevicePortConfig extends AudioPortConfig {
+    @UnsupportedAppUsage
     AudioDevicePortConfig(AudioDevicePort devicePort, int samplingRate, int channelMask,
             int format, AudioGainConfig gain) {
         super((AudioPort)devicePort, samplingRate, channelMask, format, gain);
diff --git a/media/java/android/media/AudioFormat.java b/media/java/android/media/AudioFormat.java
index 1030d9d..38204a5 100644
--- a/media/java/android/media/AudioFormat.java
+++ b/media/java/android/media/AudioFormat.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -663,6 +664,7 @@
      */
     // Update sound trigger JNI in core/jni/android_hardware_SoundTrigger.cpp when modifying this
     // constructor
+    @UnsupportedAppUsage
     private AudioFormat(int encoding, int sampleRate, int channelMask, int channelIndexMask) {
         mEncoding = encoding;
         mSampleRate = sampleRate;
@@ -685,8 +687,11 @@
     /** @hide */
     public final static int AUDIO_FORMAT_HAS_PROPERTY_CHANNEL_INDEX_MASK = 0x1 << 3;
 
+    @UnsupportedAppUsage
     private int mEncoding;
+    @UnsupportedAppUsage
     private int mSampleRate;
+    @UnsupportedAppUsage
     private int mChannelMask;
     private int mChannelIndexMask;
     private int mPropertySetMask;
diff --git a/media/java/android/media/AudioGain.java b/media/java/android/media/AudioGain.java
index 57709d5..dd129a2 100644
--- a/media/java/android/media/AudioGain.java
+++ b/media/java/android/media/AudioGain.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * The AudioGain describes a gain controller. Gain controllers are exposed by
  * audio ports when the gain is configurable at this port's input or output.
@@ -69,6 +71,7 @@
 
     // The channel mask passed to the constructor is as specified in AudioFormat
     // (e.g. AudioFormat.CHANNEL_OUT_STEREO)
+    @UnsupportedAppUsage
     AudioGain(int index, int mode, int channelMask,
                         int minValue, int maxValue, int defaultValue, int stepValue,
                         int rampDurationMinMs, int rampDurationMaxMs) {
diff --git a/media/java/android/media/AudioGainConfig.java b/media/java/android/media/AudioGainConfig.java
index ea61679..f5ebef8 100644
--- a/media/java/android/media/AudioGainConfig.java
+++ b/media/java/android/media/AudioGainConfig.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * The AudioGainConfig is used by APIs setting or getting values on a given gain
  * controller. It contains a valid configuration (value, channels...) for a gain controller
@@ -26,12 +28,18 @@
  */
 public class AudioGainConfig {
     AudioGain mGain;
+    @UnsupportedAppUsage
     private final int mIndex;
+    @UnsupportedAppUsage
     private final int mMode;
+    @UnsupportedAppUsage
     private final int mChannelMask;
+    @UnsupportedAppUsage
     private final int mValues[];
+    @UnsupportedAppUsage
     private final int mRampDurationMs;
 
+    @UnsupportedAppUsage
     AudioGainConfig(int index, AudioGain gain, int mode, int channelMask,
             int[] values, int rampDurationMs) {
         mIndex = index;
diff --git a/media/java/android/media/AudioHandle.java b/media/java/android/media/AudioHandle.java
index 6493dac..24f81f9 100644
--- a/media/java/android/media/AudioHandle.java
+++ b/media/java/android/media/AudioHandle.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * The AudioHandle is used by the audio framework implementation to
  * uniquely identify a particular component of the routing topology
@@ -23,8 +25,10 @@
  * It is not visible or used at the API.
  */
 class AudioHandle {
+    @UnsupportedAppUsage
     private final int mId;
 
+    @UnsupportedAppUsage
     AudioHandle(int id) {
         mId = id;
     }
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 1a282b2..85eac4b 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -25,6 +25,7 @@
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.bluetooth.BluetoothDevice;
@@ -154,6 +155,7 @@
      * @see #EXTRA_PREV_VOLUME_STREAM_VALUE
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+    @UnsupportedAppUsage
     public static final String VOLUME_CHANGED_ACTION = "android.media.VOLUME_CHANGED_ACTION";
 
     /**
@@ -220,6 +222,7 @@
     /**
      * @hide The stream type for the volume changed intent.
      */
+    @UnsupportedAppUsage
     public static final String EXTRA_VOLUME_STREAM_TYPE = "android.media.EXTRA_VOLUME_STREAM_TYPE";
 
     /**
@@ -236,6 +239,7 @@
     /**
      * @hide The volume associated with the stream for the volume changed intent.
      */
+    @UnsupportedAppUsage
     public static final String EXTRA_VOLUME_STREAM_VALUE =
         "android.media.EXTRA_VOLUME_STREAM_VALUE";
 
@@ -342,14 +346,17 @@
     public static final int STREAM_NOTIFICATION = AudioSystem.STREAM_NOTIFICATION;
     /** @hide Used to identify the volume of audio streams for phone calls when connected
      *        to bluetooth */
+    @UnsupportedAppUsage
     public static final int STREAM_BLUETOOTH_SCO = AudioSystem.STREAM_BLUETOOTH_SCO;
     /** @hide Used to identify the volume of audio streams for enforced system sounds
      *        in certain countries (e.g camera in Japan) */
+    @UnsupportedAppUsage
     public static final int STREAM_SYSTEM_ENFORCED = AudioSystem.STREAM_SYSTEM_ENFORCED;
     /** Used to identify the volume of audio streams for DTMF Tones */
     public static final int STREAM_DTMF = AudioSystem.STREAM_DTMF;
     /** @hide Used to identify the volume of audio streams exclusively transmitted through the
      *        speaker (TTS) of the device */
+    @UnsupportedAppUsage
     public static final int STREAM_TTS = AudioSystem.STREAM_TTS;
     /** Used to identify the volume of audio streams for accessibility prompts */
     public static final int STREAM_ACCESSIBILITY = AudioSystem.STREAM_ACCESSIBILITY;
@@ -675,6 +682,7 @@
      * @hide
      * For test purposes only, will throw NPE with some methods that require a Context.
      */
+    @UnsupportedAppUsage
     public AudioManager() {
         mUseVolumeKeySounds = true;
         mUseFixedVolume = false;
@@ -683,6 +691,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public AudioManager(Context context) {
         setContext(context);
         mUseVolumeKeySounds = getContext().getResources().getBoolean(
@@ -710,6 +719,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private static IAudioService getService()
     {
         if (sService != null) {
@@ -880,6 +890,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setMasterMute(boolean mute, int flags) {
         final IAudioService service = getService();
         try {
@@ -914,6 +925,7 @@
      * @see #setRingerMode(int)
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isValidRingerMode(int ringerMode) {
         if (ringerMode < 0 || ringerMode > RINGER_MODE_MAX) {
             return false;
@@ -1062,6 +1074,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getLastAudibleStreamVolume(int streamType) {
         final IAudioService service = getService();
         try {
@@ -1222,6 +1235,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isMasterMute() {
         final IAudioService service = getService();
         try {
@@ -1239,6 +1253,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
+    @UnsupportedAppUsage
     public void forceVolumeControlStream(int streamType) {
         final IAudioService service = getService();
         try {
@@ -1531,6 +1546,7 @@
      * @see #stopBluetoothSco()
      * @see #ACTION_SCO_AUDIO_STATE_UPDATED
      */
+    @UnsupportedAppUsage
     public void startBluetoothScoVirtualCall() {
         final IAudioService service = getService();
         try {
@@ -1854,6 +1870,7 @@
      *   display). Note that BT audio sinks are not considered remote devices.
      * @return true if {@link AudioManager#STREAM_MUSIC} is active on a remote device
      */
+    @UnsupportedAppUsage
     public boolean isMusicActiveRemotely() {
         return AudioSystem.isStreamActiveRemotely(STREAM_MUSIC, 0);
     }
@@ -2004,6 +2021,7 @@
     /**
      * @hide Number of sound effects
      */
+    @UnsupportedAppUsage
     public static final int NUM_SOUND_EFFECTS = 10;
 
     /**
@@ -2234,6 +2252,7 @@
      * Map to convert focus event listener IDs, as used in the AudioService audio focus stack,
      * to actual listener objects.
      */
+    @UnsupportedAppUsage
     private final ConcurrentHashMap<String, FocusRequestInfo> mAudioFocusIdListenerMap =
             new ConcurrentHashMap<String, FocusRequestInfo>();
 
@@ -2810,6 +2829,7 @@
      * @param durationHint the type of focus request. AUDIOFOCUS_GAIN_TRANSIENT is recommended so
      *    media applications resume after a call
      */
+    @UnsupportedAppUsage
     public void requestAudioFocusForCall(int streamType, int durationHint) {
         final IAudioService service = getService();
         try {
@@ -2913,6 +2933,7 @@
      * when ringing ends and the call is rejected or not answered.
      * Should match one or more calls to {@link #requestAudioFocusForCall(int, int)}.
      */
+    @UnsupportedAppUsage
     public void abandonAudioFocusForCall() {
         final IAudioService service = getService();
         try {
@@ -3582,6 +3603,7 @@
      *  agent when audio settings are restored and causes the AudioService
      *  to read and apply restored settings.
      */
+    @UnsupportedAppUsage
     public void reloadAudioSettings() {
         final IAudioService service = getService();
         try {
@@ -3620,6 +3642,7 @@
      *
      * @hide pending API Council approval
      */
+    @UnsupportedAppUsage
     public boolean isSilentMode() {
         int ringerMode = getRingerMode();
         boolean silentMode =
@@ -3641,15 +3664,19 @@
      *  such as earbuds, earphones, or in-ear monitors (IEM). Those would be handled as a
      *  {@link #DEVICE_OUT_WIRED_HEADPHONE}.
      */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_EARPIECE = AudioSystem.DEVICE_OUT_EARPIECE;
     /** @hide
      *  The audio output device code for the built-in speaker */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_SPEAKER = AudioSystem.DEVICE_OUT_SPEAKER;
     /** @hide
      * The audio output device code for a wired headset with attached microphone */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_WIRED_HEADSET = AudioSystem.DEVICE_OUT_WIRED_HEADSET;
     /** @hide
      * The audio output device code for a wired headphone without attached microphone */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_WIRED_HEADPHONE = AudioSystem.DEVICE_OUT_WIRED_HEADPHONE;
     /** @hide
      * The audio output device code for a USB headphone with attached microphone */
@@ -3661,6 +3688,7 @@
      * The audio output device code for Bluetooth SCO Headset Profile (HSP) and
      * Hands-Free Profile (HFP), for voice
      */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_SCO_HEADSET =
             AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_HEADSET;
     /** @hide
@@ -3669,13 +3697,16 @@
             AudioSystem.DEVICE_OUT_BLUETOOTH_SCO_CARKIT;
     /** @hide
      * The audio output device code for generic Bluetooth A2DP, for music */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_A2DP = AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP;
     /** @hide
      * The audio output device code for Bluetooth A2DP headphones, for music */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES =
             AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES;
     /** @hide
      * The audio output device code for Bluetooth A2DP external speaker, for music */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER =
             AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER;
     /** @hide
@@ -3684,16 +3715,19 @@
     public static final int DEVICE_OUT_AUX_DIGITAL = AudioSystem.DEVICE_OUT_AUX_DIGITAL;
     /** @hide
      * The audio output device code for HDMI */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_HDMI = AudioSystem.DEVICE_OUT_HDMI;
     /** @hide
      * The audio output device code for an analog wired headset attached via a
      *  docking station
      */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_ANLG_DOCK_HEADSET = AudioSystem.DEVICE_OUT_ANLG_DOCK_HEADSET;
     /** @hide
      * The audio output device code for a digital wired headset attached via a
      *  docking station
      */
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_DGTL_DOCK_HEADSET = AudioSystem.DEVICE_OUT_DGTL_DOCK_HEADSET;
     /** @hide
      * The audio output device code for a USB audio accessory. The accessory is in USB host
@@ -3872,6 +3906,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     public int getDevicesForStream(int streamType) {
         switch (streamType) {
         case STREAM_VOICE_CALL:
@@ -3895,6 +3930,7 @@
      * @param name   device name
      * {@hide}
      */
+    @UnsupportedAppUsage
     public void setWiredDeviceConnectionState(int type, int state, String address, String name) {
         final IAudioService service = getService();
         try {
@@ -4079,6 +4115,7 @@
      * a better solution.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getOutputLatency(int streamType) {
         return AudioSystem.getOutputLatency(streamType);
     }
@@ -4150,6 +4187,7 @@
      * Only useful for volume controllers.
      * @hide
      */
+    @UnsupportedAppUsage
     public void setRingerModeInternal(int ringerMode) {
         try {
             getService().setRingerModeInternal(ringerMode, getContext().getOpPackageName());
@@ -4162,6 +4200,7 @@
      * Only useful for volume controllers.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getRingerModeInternal() {
         try {
             return getService().getRingerModeInternal();
@@ -4251,6 +4290,7 @@
      * @param ports An AudioPort ArrayList where the list will be returned.
      * @hide
      */
+    @UnsupportedAppUsage
     public static int listAudioPorts(ArrayList<AudioPort> ports) {
         return updateAudioPortCache(ports, null, null);
     }
@@ -4332,6 +4372,7 @@
      *         patch[0] contains the newly created patch
      * @hide
      */
+    @UnsupportedAppUsage
     public static int createAudioPatch(AudioPatch[] patch,
                                  AudioPortConfig[] sources,
                                  AudioPortConfig[] sinks) {
@@ -4349,6 +4390,7 @@
      *         - {@link #ERROR} if patch cannot be released for any other reason.
      * @hide
      */
+    @UnsupportedAppUsage
     public static int releaseAudioPatch(AudioPatch patch) {
         return AudioSystem.releaseAudioPatch(patch);
     }
@@ -4358,6 +4400,7 @@
      * @param patches An AudioPatch array where the list will be returned.
      * @hide
      */
+    @UnsupportedAppUsage
     public static int listAudioPatches(ArrayList<AudioPatch> patches) {
         return updateAudioPortCache(null, patches, null);
     }
@@ -4406,6 +4449,7 @@
      * Register an audio port list update listener.
      * @hide
      */
+    @UnsupportedAppUsage
     public void registerAudioPortUpdateListener(OnAudioPortUpdateListener l) {
         sAudioPortEventHandler.init();
         sAudioPortEventHandler.registerListener(l);
@@ -4415,6 +4459,7 @@
      * Unregister an audio port list update listener.
      * @hide
      */
+    @UnsupportedAppUsage
     public void unregisterAudioPortUpdateListener(OnAudioPortUpdateListener l) {
         sAudioPortEventHandler.unregisterListener(l);
     }
diff --git a/media/java/android/media/AudioMixPort.java b/media/java/android/media/AudioMixPort.java
index ba144bf..c4a5c4d 100644
--- a/media/java/android/media/AudioMixPort.java
+++ b/media/java/android/media/AudioMixPort.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * The AudioMixPort is a specialized type of AudioPort
  * describing an audio mix or stream at an input or output stream of the audio
@@ -30,6 +32,7 @@
 
     private final int mIoHandle;
 
+    @UnsupportedAppUsage
     AudioMixPort(AudioHandle handle, int ioHandle, int role, String deviceName,
             int[] samplingRates, int[] channelMasks, int[] channelIndexMasks,
             int[] formats, AudioGain[] gains) {
@@ -50,6 +53,7 @@
     /**
      * Get the device type (e.g AudioManager.DEVICE_OUT_SPEAKER)
      */
+    @UnsupportedAppUsage
     public int ioHandle() {
         return mIoHandle;
     }
diff --git a/media/java/android/media/AudioMixPortConfig.java b/media/java/android/media/AudioMixPortConfig.java
index 8eb9ef46..315e46b 100644
--- a/media/java/android/media/AudioMixPortConfig.java
+++ b/media/java/android/media/AudioMixPortConfig.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * An AudioMixPortConfig describes a possible configuration of an output or input mixer.
  * It is used to specify a sink or source when creating a connection with
@@ -26,6 +28,7 @@
 
 public class AudioMixPortConfig extends AudioPortConfig {
 
+    @UnsupportedAppUsage
     AudioMixPortConfig(AudioMixPort mixPort, int samplingRate, int channelMask, int format,
                 AudioGainConfig gain) {
         super((AudioPort)mixPort, samplingRate, channelMask, format, gain);
diff --git a/media/java/android/media/AudioPatch.java b/media/java/android/media/AudioPatch.java
index 6c70213..d1f8006 100644
--- a/media/java/android/media/AudioPatch.java
+++ b/media/java/android/media/AudioPatch.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 
 /**
  * An AudioPatch describes a connection between audio sources and audio sinks.
@@ -29,10 +31,12 @@
  */
 public class AudioPatch {
 
+    @UnsupportedAppUsage
     private final AudioHandle mHandle;
     private final AudioPortConfig[] mSources;
     private final AudioPortConfig[] mSinks;
 
+    @UnsupportedAppUsage
     AudioPatch(AudioHandle patchHandle, AudioPortConfig[] sources, AudioPortConfig[] sinks) {
         mHandle = patchHandle;
         mSources = sources;
@@ -42,6 +46,7 @@
     /**
      * Retrieve the list of sources of this audio patch.
      */
+    @UnsupportedAppUsage
     public AudioPortConfig[] sources() {
         return mSources;
     }
@@ -49,6 +54,7 @@
     /**
      * Retreive the list of sinks of this audio patch.
      */
+    @UnsupportedAppUsage
     public AudioPortConfig[] sinks() {
         return mSinks;
     }
diff --git a/media/java/android/media/AudioPort.java b/media/java/android/media/AudioPort.java
index 047db19..83eb240 100644
--- a/media/java/android/media/AudioPort.java
+++ b/media/java/android/media/AudioPort.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * An audio port is a node of the audio framework or hardware that can be connected to or
  * disconnect from another audio node to create a specific audio routing configuration.
@@ -66,16 +68,21 @@
     public static final int TYPE_SESSION = 3;
 
 
+    @UnsupportedAppUsage
     AudioHandle mHandle;
+    @UnsupportedAppUsage
     protected final int mRole;
     private final String mName;
     private final int[] mSamplingRates;
     private final int[] mChannelMasks;
     private final int[] mChannelIndexMasks;
     private final int[] mFormats;
+    @UnsupportedAppUsage
     private final AudioGain[] mGains;
+    @UnsupportedAppUsage
     private AudioPortConfig mActiveConfig;
 
+    @UnsupportedAppUsage
     AudioPort(AudioHandle handle, int role, String name,
             int[] samplingRates, int[] channelMasks, int[] channelIndexMasks,
             int[] formats, AudioGain[] gains) {
@@ -97,6 +104,7 @@
     /**
      * Get the system unique device ID.
      */
+    @UnsupportedAppUsage
     public int id() {
         return mHandle.id();
     }
@@ -105,6 +113,7 @@
     /**
      * Get the audio port role
      */
+    @UnsupportedAppUsage
     public int role() {
         return mRole;
     }
diff --git a/media/java/android/media/AudioPortConfig.java b/media/java/android/media/AudioPortConfig.java
index f937cc2..45e49a7 100644
--- a/media/java/android/media/AudioPortConfig.java
+++ b/media/java/android/media/AudioPortConfig.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * An AudioPortConfig contains a possible configuration of an audio port chosen
  * among all possible attributes described by an AudioPort.
@@ -30,10 +32,15 @@
  */
 
 public class AudioPortConfig {
+    @UnsupportedAppUsage
     final AudioPort mPort;
+    @UnsupportedAppUsage
     private final int mSamplingRate;
+    @UnsupportedAppUsage
     private final int mChannelMask;
+    @UnsupportedAppUsage
     private final int mFormat;
+    @UnsupportedAppUsage
     private final AudioGainConfig mGain;
 
     // mConfigMask indicates which fields in this configuration should be
@@ -43,8 +50,10 @@
     static final int CHANNEL_MASK = 0x2;
     static final int FORMAT       = 0x4;
     static final int GAIN         = 0x8;
+    @UnsupportedAppUsage
     int mConfigMask;
 
+    @UnsupportedAppUsage
     AudioPortConfig(AudioPort port, int samplingRate, int channelMask, int format,
             AudioGainConfig gain) {
         mPort = port;
@@ -58,6 +67,7 @@
     /**
      * Returns the audio port this AudioPortConfig is issued from.
      */
+    @UnsupportedAppUsage
     public AudioPort port() {
         return mPort;
     }
diff --git a/media/java/android/media/AudioPortEventHandler.java b/media/java/android/media/AudioPortEventHandler.java
index ac3904a..f9a4b1e 100644
--- a/media/java/android/media/AudioPortEventHandler.java
+++ b/media/java/android/media/AudioPortEventHandler.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.Looper;
@@ -48,6 +49,7 @@
      * Accessed by native methods: JNI Callback context.
      */
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private long mJniCallback;
 
     void init() {
@@ -170,6 +172,7 @@
     }
 
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private static void postEventFromNative(Object module_ref,
                                             int what, int arg1, int arg2, Object obj) {
         AudioPortEventHandler eventHandler =
diff --git a/media/java/android/media/AudioRecord.java b/media/java/android/media/AudioRecord.java
index 54800ae..452ba0f 100644
--- a/media/java/android/media/AudioRecord.java
+++ b/media/java/android/media/AudioRecord.java
@@ -29,6 +29,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.os.Binder;
 import android.os.Handler;
@@ -157,18 +158,21 @@
      * Accessed by native methods: provides access to C++ AudioRecord object
      */
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private long mNativeRecorderInJavaObj;
 
     /**
      * Accessed by native methods: provides access to the callback data.
      */
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private long mNativeCallbackCookie;
 
     /**
      * Accessed by native methods: provides access to the JNIDeviceCallback instance.
      */
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private long mNativeDeviceCallback;
 
 
@@ -233,6 +237,7 @@
     /**
      * Looper associated with the thread that creates the AudioRecord instance
      */
+    @UnsupportedAppUsage
     private Looper mInitializationLooper = null;
     /**
      * Size of the native audio buffer.
@@ -245,6 +250,7 @@
     /**
      * AudioAttributes
      */
+    @UnsupportedAppUsage
     private AudioAttributes mAudioAttributes;
     private boolean mIsSubmixFullVolume = false;
 
@@ -1720,6 +1726,7 @@
     // Java methods called from the native side
     //--------------------
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private static void postEventFromNative(Object audiorecord_ref,
             int what, int arg1, int arg2, Object obj) {
         //logd("Event posted from the native side: event="+ what + " args="+ arg1+" "+arg2);
@@ -1746,6 +1753,7 @@
     // Native methods called from the Java side
     //--------------------
 
+    @UnsupportedAppUsage
     private native final int native_setup(Object audiorecord_this,
             Object /*AudioAttributes*/ attributes,
             int[] sampleRate, int channelMask, int channelIndexMask, int audioFormat,
@@ -1758,6 +1766,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public native final void native_release();
 
     private native final int native_start(int syncEvent, int sessionId);
diff --git a/media/java/android/media/AudioRecordingConfiguration.java b/media/java/android/media/AudioRecordingConfiguration.java
index 984c554..9ada216 100644
--- a/media/java/android/media/AudioRecordingConfiguration.java
+++ b/media/java/android/media/AudioRecordingConfiguration.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.util.Log;
@@ -173,6 +174,7 @@
      * <br>When called without the permission, the result is an empty string.
      * @return the package name
      */
+    @UnsupportedAppUsage
     public String getClientPackageName() { return mClientPackageName; }
 
     /**
@@ -184,6 +186,7 @@
      * <br>The result is -1 without the permission.
      * @return the user id
      */
+    @UnsupportedAppUsage
     public int getClientUid() { return mClientUid; }
 
     /**
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 7c893d0..39f3b31 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.pm.PackageManager;
 import android.media.audiopolicy.AudioMix;
@@ -59,6 +60,7 @@
     public static final int STREAM_BLUETOOTH_SCO = 6;
     /** Used to identify the volume of audio streams for enforced system sounds in certain
      * countries (e.g camera in Japan) */
+    @UnsupportedAppUsage
     public static final int STREAM_SYSTEM_ENFORCED = 7;
     /** Used to identify the volume of audio streams for DTMF tones */
     public static final int STREAM_DTMF = 8;
@@ -74,6 +76,7 @@
 
     // Expose only the getter method publicly so we can change it in the future
     private static final int NUM_STREAM_TYPES = 11;
+    @UnsupportedAppUsage
     public static final int getNumStreamTypes() { return NUM_STREAM_TYPES; }
 
     public static final String[] STREAM_NAMES = new String[] {
@@ -97,6 +100,7 @@
      *           <var>false</var> to turn mute off
      * @return command completion status see AUDIO_STATUS_OK, see AUDIO_STATUS_ERROR
      */
+    @UnsupportedAppUsage
     public static native int muteMicrophone(boolean on);
 
     /*
@@ -104,6 +108,7 @@
      *
      * @return true if microphone is muted, false if it's not
      */
+    @UnsupportedAppUsage
     public static native boolean isMicrophoneMuted();
 
     /* modes for setPhoneState, must match AudioSystem.h audio_mode */
@@ -151,6 +156,7 @@
      *
      * return true if any track playing on this stream is active.
      */
+    @UnsupportedAppUsage
     public static native boolean isStreamActive(int stream, int inPastMs);
 
     /*
@@ -166,6 +172,7 @@
      *
      * return true if any recorder using this source is currently recording
      */
+    @UnsupportedAppUsage
     public static native boolean isSourceActive(int source);
 
     /*
@@ -186,6 +193,7 @@
      * param keyValuePairs  list of parameters key value pairs in the form:
      *    key1=value1;key2=value2;...
      */
+    @UnsupportedAppUsage
     public static native int setParameters(String keyValuePairs);
 
     /*
@@ -196,6 +204,7 @@
      * return value: list of parameters key value pairs in the form:
      *    key1=value1;key2=value2;...
      */
+    @UnsupportedAppUsage
     public static native String getParameters(String keys);
 
     // These match the enum AudioError in frameworks/base/core/jni/android_media_AudioSystem.cpp
@@ -227,6 +236,7 @@
      * Registers a callback to be invoked when an error occurs.
      * @param cb the callback to run
      */
+    @UnsupportedAppUsage
     public static void setErrorCallback(ErrorCallback cb)
     {
         synchronized (AudioSystem.class) {
@@ -237,6 +247,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private static void errorCallbackFromNative(int error)
     {
         ErrorCallback errorCallback = null;
@@ -272,6 +283,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private static void dynamicPolicyCallbackFromNative(int event, String regId, int val)
     {
         DynamicPolicyCallback cb = null;
@@ -336,6 +348,7 @@
      *     {@link AudioRecordingCallback#onRecordingConfigurationChanged(int, int, int, int, int[])}
      *     for the description of the record format.
      */
+    @UnsupportedAppUsage
     private static void recordingCallbackFromNative(int event, int uid, int session, int source,
             int[] recordingFormat) {
         AudioRecordingCallback cb = null;
@@ -374,27 +387,45 @@
     public static final int DEVICE_BIT_IN = 0x80000000;
     public static final int DEVICE_BIT_DEFAULT = 0x40000000;
     // output devices, be sure to update AudioManager.java also
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_EARPIECE = 0x1;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_SPEAKER = 0x2;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_WIRED_HEADSET = 0x4;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_WIRED_HEADPHONE = 0x8;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_SCO = 0x10;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_SCO_HEADSET = 0x20;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_SCO_CARKIT = 0x40;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_A2DP = 0x80;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES = 0x100;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER = 0x200;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_AUX_DIGITAL = 0x400;
     public static final int DEVICE_OUT_HDMI = DEVICE_OUT_AUX_DIGITAL;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_ANLG_DOCK_HEADSET = 0x800;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_DGTL_DOCK_HEADSET = 0x1000;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_USB_ACCESSORY = 0x2000;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_USB_DEVICE = 0x4000;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_REMOTE_SUBMIX = 0x8000;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_TELEPHONY_TX = 0x10000;
     public static final int DEVICE_OUT_LINE = 0x20000;
     public static final int DEVICE_OUT_HDMI_ARC = 0x40000;
     public static final int DEVICE_OUT_SPDIF = 0x80000;
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_FM = 0x100000;
     public static final int DEVICE_OUT_AUX_LINE = 0x200000;
     public static final int DEVICE_OUT_SPEAKER_SAFE = 0x400000;
@@ -441,6 +472,7 @@
     public static final int DEVICE_OUT_ALL_SCO = (DEVICE_OUT_BLUETOOTH_SCO |
                                                   DEVICE_OUT_BLUETOOTH_SCO_HEADSET |
                                                   DEVICE_OUT_BLUETOOTH_SCO_CARKIT);
+    @UnsupportedAppUsage
     public static final int DEVICE_OUT_ALL_USB = (DEVICE_OUT_USB_ACCESSORY |
                                                   DEVICE_OUT_USB_DEVICE |
                                                   DEVICE_OUT_USB_HEADSET);
@@ -452,31 +484,46 @@
              DEVICE_OUT_SPEAKER);
 
     // input devices
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_COMMUNICATION = DEVICE_BIT_IN | 0x1;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_AMBIENT = DEVICE_BIT_IN | 0x2;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_BUILTIN_MIC = DEVICE_BIT_IN | 0x4;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_BLUETOOTH_SCO_HEADSET = DEVICE_BIT_IN | 0x8;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_WIRED_HEADSET = DEVICE_BIT_IN | 0x10;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_AUX_DIGITAL = DEVICE_BIT_IN | 0x20;
     public static final int DEVICE_IN_HDMI = DEVICE_IN_AUX_DIGITAL;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_VOICE_CALL = DEVICE_BIT_IN | 0x40;
     public static final int DEVICE_IN_TELEPHONY_RX = DEVICE_IN_VOICE_CALL;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_BACK_MIC = DEVICE_BIT_IN | 0x80;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_REMOTE_SUBMIX = DEVICE_BIT_IN | 0x100;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_ANLG_DOCK_HEADSET = DEVICE_BIT_IN | 0x200;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_DGTL_DOCK_HEADSET = DEVICE_BIT_IN | 0x400;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_USB_ACCESSORY = DEVICE_BIT_IN | 0x800;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_USB_DEVICE = DEVICE_BIT_IN | 0x1000;
     public static final int DEVICE_IN_FM_TUNER = DEVICE_BIT_IN | 0x2000;
     public static final int DEVICE_IN_TV_TUNER = DEVICE_BIT_IN | 0x4000;
     public static final int DEVICE_IN_LINE = DEVICE_BIT_IN | 0x8000;
     public static final int DEVICE_IN_SPDIF = DEVICE_BIT_IN | 0x10000;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_BLUETOOTH_A2DP = DEVICE_BIT_IN | 0x20000;
     public static final int DEVICE_IN_LOOPBACK = DEVICE_BIT_IN | 0x40000;
     public static final int DEVICE_IN_IP = DEVICE_BIT_IN | 0x80000;
     public static final int DEVICE_IN_BUS = DEVICE_BIT_IN | 0x100000;
     public static final int DEVICE_IN_PROXY = DEVICE_BIT_IN | 0x1000000;
     public static final int DEVICE_IN_USB_HEADSET = DEVICE_BIT_IN | 0x2000000;
+    @UnsupportedAppUsage
     public static final int DEVICE_IN_DEFAULT = DEVICE_BIT_IN | DEVICE_BIT_DEFAULT;
 
     public static final int DEVICE_IN_ALL = (DEVICE_IN_COMMUNICATION |
@@ -509,7 +556,9 @@
                                                  DEVICE_IN_USB_HEADSET);
 
     // device states, must match AudioSystem::device_connection_state
+    @UnsupportedAppUsage
     public static final int DEVICE_STATE_UNAVAILABLE = 0;
+    @UnsupportedAppUsage
     public static final int DEVICE_STATE_AVAILABLE = 1;
     private static final int NUM_DEVICE_STATES = 1;
 
@@ -575,6 +624,7 @@
     public static final String DEVICE_IN_PROXY_NAME = "proxy";
     public static final String DEVICE_IN_USB_HEADSET_NAME = "usb_headset";
 
+    @UnsupportedAppUsage
     public static String getOutputDeviceName(int device)
     {
         switch(device) {
@@ -701,15 +751,20 @@
     public static final int PHONE_STATE_INCALL = 2;
 
     // device categories config for setForceUse, must match audio_policy_forced_cfg_t
+    @UnsupportedAppUsage
     public static final int FORCE_NONE = 0;
     public static final int FORCE_SPEAKER = 1;
     public static final int FORCE_HEADPHONES = 2;
     public static final int FORCE_BT_SCO = 3;
     public static final int FORCE_BT_A2DP = 4;
     public static final int FORCE_WIRED_ACCESSORY = 5;
+    @UnsupportedAppUsage
     public static final int FORCE_BT_CAR_DOCK = 6;
+    @UnsupportedAppUsage
     public static final int FORCE_BT_DESK_DOCK = 7;
+    @UnsupportedAppUsage
     public static final int FORCE_ANALOG_DOCK = 8;
+    @UnsupportedAppUsage
     public static final int FORCE_DIGITAL_DOCK = 9;
     public static final int FORCE_NO_BT_A2DP = 10;
     public static final int FORCE_SYSTEM_ENFORCED = 11;
@@ -775,22 +830,32 @@
      * @return command completion status, one of {@link #AUDIO_STATUS_OK},
      *     {@link #AUDIO_STATUS_ERROR} or {@link #AUDIO_STATUS_SERVER_DIED}
      */
+    @UnsupportedAppUsage
     public static native int setDeviceConnectionState(int device, int state,
                                                       String device_address, String device_name);
+    @UnsupportedAppUsage
     public static native int getDeviceConnectionState(int device, String device_address);
     public static native int handleDeviceConfigChange(int device,
                                                       String device_address,
                                                       String device_name);
+    @UnsupportedAppUsage
     public static native int setPhoneState(int state);
+    @UnsupportedAppUsage
     public static native int setForceUse(int usage, int config);
+    @UnsupportedAppUsage
     public static native int getForceUse(int usage);
+    @UnsupportedAppUsage
     public static native int initStreamVolume(int stream, int indexMin, int indexMax);
+    @UnsupportedAppUsage
     public static native int setStreamVolumeIndex(int stream, int index, int device);
     public static native int getStreamVolumeIndex(int stream, int device);
     public static native int setMasterVolume(float value);
     public static native float getMasterVolume();
+    @UnsupportedAppUsage
     public static native int setMasterMute(boolean mute);
+    @UnsupportedAppUsage
     public static native boolean getMasterMute();
+    @UnsupportedAppUsage
     public static native int getDevicesForStream(int stream);
 
     /** @hide returns true if master mono is enabled. */
@@ -799,11 +864,15 @@
     public static native int setMasterMono(boolean mono);
 
     // helpers for android.media.AudioManager.getProperty(), see description there for meaning
+    @UnsupportedAppUsage
     public static native int getPrimaryOutputSamplingRate();
+    @UnsupportedAppUsage
     public static native int getPrimaryOutputFrameCount();
+    @UnsupportedAppUsage
     public static native int getOutputLatency(int stream);
 
     public static native int setLowRamDevice(boolean isLowRamDevice, long totalMemory);
+    @UnsupportedAppUsage
     public static native int checkAudioFlinger();
 
     public static native int listAudioPorts(ArrayList<AudioPort> ports, int[] generation);
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index 87b5d43..aaf7dd7 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -30,6 +30,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.content.Context;
 import android.os.Handler;
@@ -351,6 +352,7 @@
      *   {@link AudioManager#STREAM_ALARM}, {@link AudioManager#STREAM_NOTIFICATION}, and
      *   {@link AudioManager#STREAM_DTMF}.
      */
+    @UnsupportedAppUsage
     private int mStreamType = AudioManager.STREAM_MUSIC;
 
     /**
@@ -399,12 +401,14 @@
      * Accessed by native methods: provides access to C++ AudioTrack object.
      */
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     protected long mNativeTrackInJavaObj;
     /**
      * Accessed by native methods: provides access to the JNI data (i.e. resources used by
      * the native AudioTrack object, but not stored in it).
      */
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private long mJniData;
 
 
@@ -692,6 +696,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     /* package */ void deferred_connect(long nativeTrackInJavaObj) {
         if (mState != STATE_INITIALIZED) {
             // Note that for this native_setup, we are providing an already created/initialized
@@ -1501,6 +1506,7 @@
      * a better solution.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getLatency() {
         return native_get_latency();
     }
@@ -3125,6 +3131,7 @@
     // Java methods called from the native side
     //--------------------
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private static void postEventFromNative(Object audiotrack_ref,
             int what, int arg1, int arg2, Object obj) {
         //logd("Event posted from the native side: event="+ what + " args="+ arg1+" "+arg2);
@@ -3192,6 +3199,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public native final void native_release();
 
     private native final void native_start();
diff --git a/media/java/android/media/CamcorderProfile.java b/media/java/android/media/CamcorderProfile.java
index d303a2e..aa123bd 100644
--- a/media/java/android/media/CamcorderProfile.java
+++ b/media/java/android/media/CamcorderProfile.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.hardware.Camera;
 import android.hardware.Camera.CameraInfo;
 
@@ -495,7 +496,9 @@
     }
 
     // Methods implemented by JNI
+    @UnsupportedAppUsage
     private static native final void native_init();
+    @UnsupportedAppUsage
     private static native final CamcorderProfile native_get_camcorder_profile(
             int cameraId, int quality);
     private static native final boolean native_has_camcorder_profile(
diff --git a/media/java/android/media/DecoderCapabilities.java b/media/java/android/media/DecoderCapabilities.java
index f16cccf..df5e918 100644
--- a/media/java/android/media/DecoderCapabilities.java
+++ b/media/java/android/media/DecoderCapabilities.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import java.util.List;
 import java.util.ArrayList;
 
@@ -32,6 +33,7 @@
      *
      */
     public enum VideoDecoder {
+        @UnsupportedAppUsage
         VIDEO_DECODER_WMV,
     };
 
@@ -39,6 +41,7 @@
      * The AudioDecoder class represents the type of an audio decoder
      */
     public enum AudioDecoder {
+        @UnsupportedAppUsage
         AUDIO_DECODER_WMA,
     };
 
@@ -51,6 +54,7 @@
      * Returns the list of video decoder types
      * @see android.media.DecoderCapabilities.VideoDecoder
      */
+    @UnsupportedAppUsage
     public static List<VideoDecoder> getVideoDecoders() {
         List<VideoDecoder> decoderList = new ArrayList<VideoDecoder>();
         int nDecoders = native_get_num_video_decoders();
@@ -64,6 +68,7 @@
      * Returns the list of audio decoder types
      * @see android.media.DecoderCapabilities.AudioDecoder
      */
+    @UnsupportedAppUsage
     public static List<AudioDecoder> getAudioDecoders() {
         List<AudioDecoder> decoderList = new ArrayList<AudioDecoder>();
         int nDecoders = native_get_num_audio_decoders();
diff --git a/media/java/android/media/EncoderCapabilities.java b/media/java/android/media/EncoderCapabilities.java
index 59c9b82..c09c5fa 100644
--- a/media/java/android/media/EncoderCapabilities.java
+++ b/media/java/android/media/EncoderCapabilities.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import java.util.List;
 import java.util.ArrayList;
 
@@ -42,14 +43,19 @@
      */
     static public class VideoEncoderCap {
         // These are not modifiable externally, thus are public accessible
+        @UnsupportedAppUsage
         public final int mCodec;                // @see android.media.MediaRecorder.VideoEncoder
         public final int mMinBitRate;           // min bit rate (bps)
         public final int mMaxBitRate;           // max bit rate (bps)
         public final int mMinFrameRate;         // min frame rate (fps)
         public final int mMaxFrameRate;         // max frame rate (fps)
+        @UnsupportedAppUsage
         public final int mMinFrameWidth;        // min frame width (pixel)
+        @UnsupportedAppUsage
         public final int mMaxFrameWidth;        // max frame width (pixel)
+        @UnsupportedAppUsage
         public final int mMinFrameHeight;       // min frame height (pixel)
+        @UnsupportedAppUsage
         public final int mMaxFrameHeight;       // max frame height (pixel)
 
         // Private constructor called by JNI
@@ -127,6 +133,7 @@
      * Returns the capabilities of the supported video encoders.
      * @see android.media.EncoderCapabilities.VideoEncoderCap
      */
+    @UnsupportedAppUsage
     public static List<VideoEncoderCap> getVideoEncoders() {
         int nEncoders = native_get_num_video_encoders();
         if (nEncoders == 0) return null;
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index 450a656..2395b24 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.content.res.AssetManager;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -468,6 +469,7 @@
     // See http://www.exiv2.org/makernote.html#R11
     private static final int PEF_MAKER_NOTE_SKIP_SIZE = 6;
 
+    @UnsupportedAppUsage
     private static SimpleDateFormat sFormatter;
 
     // See Exchangeable image file format for digital still cameras: Exif version 2.2.
@@ -1293,14 +1295,17 @@
         sExifPointerTagMap.put(EXIF_POINTER_TAGS[5].number, IFD_TYPE_ORF_IMAGE_PROCESSING); // 8256
     }
 
+    @UnsupportedAppUsage
     private final String mFilename;
     private final FileDescriptor mSeekableFileDescriptor;
     private final AssetManager.AssetInputStream mAssetInputStream;
     private final boolean mIsInputStream;
     private int mMimeType;
+    @UnsupportedAppUsage
     private final HashMap[] mAttributes = new HashMap[EXIF_TAGS.length];
     private Set<Integer> mAttributesOffsets = new HashSet<>(EXIF_TAGS.length);
     private ByteOrder mExifByteOrder = ByteOrder.BIG_ENDIAN;
+    @UnsupportedAppUsage
     private boolean mHasThumbnail;
     // The following values used for indicating a thumbnail position.
     private int mThumbnailOffset;
@@ -2022,6 +2027,7 @@
      * Returns -1 if the date time information if not available.
      * @hide
      */
+    @UnsupportedAppUsage
     public long getDateTime() {
         String dateTimeString = getAttribute(TAG_DATETIME);
         if (dateTimeString == null
@@ -2058,6 +2064,7 @@
      * Returns -1 if the date time information if not available.
      * @hide
      */
+    @UnsupportedAppUsage
     public long getGpsDateTime() {
         String date = getAttribute(TAG_GPS_DATESTAMP);
         String time = getAttribute(TAG_GPS_TIMESTAMP);
@@ -2080,6 +2087,7 @@
     }
 
     /** {@hide} */
+    @UnsupportedAppUsage
     public static float convertRationalLatLonToFloat(String rationalString, String ref) {
         try {
             String [] parts = rationalString.split(",");
diff --git a/media/java/android/media/Image.java b/media/java/android/media/Image.java
index a768dd3..dff5e9a 100644
--- a/media/java/android/media/Image.java
+++ b/media/java/android/media/Image.java
@@ -20,6 +20,7 @@
 import java.lang.AutoCloseable;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Rect;
 import android.hardware.HardwareBuffer;
 
@@ -57,6 +58,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     protected Image() {
     }
 
@@ -378,6 +380,7 @@
         /**
          * @hide
          */
+        @UnsupportedAppUsage
         protected Plane() {
         }
 
diff --git a/media/java/android/media/JetPlayer.java b/media/java/android/media/JetPlayer.java
index 7735e78..b12e647 100644
--- a/media/java/android/media/JetPlayer.java
+++ b/media/java/android/media/JetPlayer.java
@@ -21,6 +21,7 @@
 import java.lang.ref.WeakReference;
 import java.lang.CloneNotSupportedException;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.res.AssetFileDescriptor;
 import android.os.Looper;
 import android.os.Handler;
@@ -127,6 +128,7 @@
      * Accessed by native methods: provides access to C++ JetPlayer object 
      */
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private long mNativePlayerInJavaObj;
 
     
@@ -560,6 +562,7 @@
     // Called exclusively by native code
     //--------------------
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private static void postEventFromNative(Object jetplayer_ref,
             int what, int arg1, int arg2) {
         //logd("Event posted from the native side: event="+ what + " args="+ arg1+" "+arg2);
diff --git a/media/java/android/media/MediaCodec.java b/media/java/android/media/MediaCodec.java
index 2207a2a..76fc9e3 100644
--- a/media/java/android/media/MediaCodec.java
+++ b/media/java/android/media/MediaCodec.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.ImageFormat;
 import android.graphics.Rect;
 import android.graphics.SurfaceTexture;
@@ -2137,6 +2138,7 @@
      * Thrown when an internal codec error occurs.
      */
     public final static class CodecException extends IllegalStateException {
+        @UnsupportedAppUsage
         CodecException(int errorCode, int actionCode, @Nullable String detailMessage) {
             super(detailMessage);
             mErrorCode = errorCode;
@@ -2805,6 +2807,7 @@
                 index, true /* render */, true /* updatePTS */, renderTimestampNs);
     }
 
+    @UnsupportedAppUsage
     private native final void releaseOutputBuffer(
             int index, boolean render, boolean updatePTS, long timeNs);
 
@@ -3525,6 +3528,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private native final void setParameters(@NonNull String[] keys, @NonNull Object[] values);
 
     /**
@@ -3555,6 +3559,7 @@
     private native final MediaCodecInfo getOwnCodecInfo();
 
     @NonNull
+    @UnsupportedAppUsage
     private native final ByteBuffer[] getBuffers(boolean input);
 
     @Nullable
@@ -3575,6 +3580,7 @@
         native_init();
     }
 
+    @UnsupportedAppUsage
     private long mNativeContext;
 
     /** @hide */
diff --git a/media/java/android/media/MediaCodecInfo.java b/media/java/android/media/MediaCodecInfo.java
index 62d3dea..ef312d1 100644
--- a/media/java/android/media/MediaCodecInfo.java
+++ b/media/java/android/media/MediaCodecInfo.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.util.Log;
 import android.util.Pair;
 import android.util.Range;
@@ -1588,6 +1589,7 @@
         private VideoCapabilities() { }
 
         /** @hide */
+        @UnsupportedAppUsage
         public static VideoCapabilities create(
                 MediaFormat info, CodecCapabilities parent) {
             VideoCapabilities caps = new VideoCapabilities();
diff --git a/media/java/android/media/MediaDrm.java b/media/java/android/media/MediaDrm.java
index 60cad90..850be78 100644
--- a/media/java/android/media/MediaDrm.java
+++ b/media/java/android/media/MediaDrm.java
@@ -21,6 +21,7 @@
 import android.annotation.Nullable;
 import android.annotation.StringDef;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.os.Handler;
 import android.os.Looper;
@@ -1473,6 +1474,7 @@
          * Get the opaque message data
          */
         @NonNull
+        @UnsupportedAppUsage
         public byte[] getData() { return mData; }
 
         /**
@@ -1481,6 +1483,7 @@
          * certificate server URL obtained from other sources.
          */
         @NonNull
+        @UnsupportedAppUsage
         public String getDefaultUrl() { return mDefaultUrl; }
     }
 
@@ -1497,6 +1500,7 @@
      * @hide - not part of the public API at this time
      */
     @NonNull
+    @UnsupportedAppUsage
     public CertificateRequest getCertificateRequest(
             @CertificateType int certType, @NonNull String certAuthority)
     {
@@ -1518,6 +1522,7 @@
          * Get the wrapped private key data
          */
         @NonNull
+        @UnsupportedAppUsage
         public byte[] getWrappedPrivateKey() {
             if (mWrappedKey == null) {
                 // this should never happen as mWrappedKey is initialized in
@@ -1532,6 +1537,7 @@
          * Get the PEM-encoded certificate chain
          */
         @NonNull
+        @UnsupportedAppUsage
         public byte[] getContent() {
             if (mCertificateData == null) {
                 // this should never happen as mCertificateData is initialized in
@@ -1565,6 +1571,7 @@
      * @hide - not part of the public API at this time
      */
     @NonNull
+    @UnsupportedAppUsage
     public Certificate provideCertificateResponse(@NonNull byte[] response)
             throws DeniedByServerException {
         return provideProvisionResponseNative(response);
@@ -1587,6 +1594,7 @@
      * @hide - not part of the public API at this time
      */
     @NonNull
+    @UnsupportedAppUsage
     public byte[] signRSA(
             @NonNull byte[] sessionId, @NonNull String algorithm,
             @NonNull byte[] wrappedKey, @NonNull byte[] message) {
diff --git a/media/java/android/media/MediaFile.java b/media/java/android/media/MediaFile.java
index 35937de..3b9b6dd 100644
--- a/media/java/android/media/MediaFile.java
+++ b/media/java/android/media/MediaFile.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.media.DecoderCapabilities;
 import android.media.DecoderCapabilities.VideoDecoder;
 import android.media.DecoderCapabilities.AudioDecoder;
@@ -43,7 +44,9 @@
     public static final int FILE_TYPE_AAC     = 8;
     public static final int FILE_TYPE_MKA     = 9;
     public static final int FILE_TYPE_FLAC    = 10;
+    @UnsupportedAppUsage
     private static final int FIRST_AUDIO_FILE_TYPE = FILE_TYPE_MP3;
+    @UnsupportedAppUsage
     private static final int LAST_AUDIO_FILE_TYPE = FILE_TYPE_FLAC;
 
     // MIDI file types
@@ -123,7 +126,9 @@
     public static final int FILE_TYPE_ZIP           = 107;
 
     public static class MediaFileType {
+        @UnsupportedAppUsage
         public final int fileType;
+        @UnsupportedAppUsage
         public final String mimeType;
 
         MediaFileType(int fileType, String mimeType) {
@@ -132,20 +137,25 @@
         }
     }
 
+    @UnsupportedAppUsage
     private static final HashMap<String, MediaFileType> sFileTypeMap
             = new HashMap<String, MediaFileType>();
     private static final HashMap<String, Integer> sMimeTypeMap
             = new HashMap<String, Integer>();
     // maps file extension to MTP format code
+    @UnsupportedAppUsage
     private static final HashMap<String, Integer> sFileTypeToFormatMap
             = new HashMap<String, Integer>();
     // maps mime type to MTP format code
+    @UnsupportedAppUsage
     private static final HashMap<String, Integer> sMimeTypeToFormatMap
             = new HashMap<String, Integer>();
     // maps MTP format code to mime type
+    @UnsupportedAppUsage
     private static final HashMap<Integer, String> sFormatToMimeTypeMap
             = new HashMap<Integer, String>();
 
+    @UnsupportedAppUsage
     static void addFileType(String extension, int fileType, String mimeType) {
         sFileTypeMap.put(extension, new MediaFileType(fileType, mimeType));
         sMimeTypeMap.put(mimeType, Integer.valueOf(fileType));
@@ -277,6 +287,7 @@
         addFileType("MPEG", FILE_TYPE_MP2PS, "video/mp2p");
     }
 
+    @UnsupportedAppUsage
     public static boolean isAudioFileType(int fileType) {
         return ((fileType >= FIRST_AUDIO_FILE_TYPE &&
                 fileType <= LAST_AUDIO_FILE_TYPE) ||
@@ -284,6 +295,7 @@
                 fileType <= LAST_MIDI_FILE_TYPE));
     }
 
+    @UnsupportedAppUsage
     public static boolean isVideoFileType(int fileType) {
         return (fileType >= FIRST_VIDEO_FILE_TYPE &&
                 fileType <= LAST_VIDEO_FILE_TYPE)
@@ -291,6 +303,7 @@
                 fileType <= LAST_VIDEO_FILE_TYPE2);
     }
 
+    @UnsupportedAppUsage
     public static boolean isImageFileType(int fileType) {
         return (fileType >= FIRST_IMAGE_FILE_TYPE &&
                 fileType <= LAST_IMAGE_FILE_TYPE)
@@ -303,16 +316,19 @@
                 fileType <= LAST_RAW_IMAGE_FILE_TYPE);
     }
 
+    @UnsupportedAppUsage
     public static boolean isPlayListFileType(int fileType) {
         return (fileType >= FIRST_PLAYLIST_FILE_TYPE &&
                 fileType <= LAST_PLAYLIST_FILE_TYPE);
     }
 
+    @UnsupportedAppUsage
     public static boolean isDrmFileType(int fileType) {
         return (fileType >= FIRST_DRM_FILE_TYPE &&
                 fileType <= LAST_DRM_FILE_TYPE);
     }
 
+    @UnsupportedAppUsage
     public static MediaFileType getFileType(String path) {
         int lastDot = path.lastIndexOf('.');
         if (lastDot < 0)
@@ -327,6 +343,7 @@
     }
 
     // generates a title based on file name
+    @UnsupportedAppUsage
     public static String getFileTitle(String path) {
         // extract file name after last slash
         int lastSlash = path.lastIndexOf('/');
@@ -344,11 +361,13 @@
         return path;
     }
 
+    @UnsupportedAppUsage
     public static int getFileTypeForMimeType(String mimeType) {
         Integer value = sMimeTypeMap.get(mimeType);
         return (value == null ? 0 : value.intValue());
     }
 
+    @UnsupportedAppUsage
     public static String getMimeTypeForFile(String path) {
         MediaFileType mediaFileType = getFileType(path);
         return (mediaFileType == null ? null : mediaFileType.mimeType);
diff --git a/media/java/android/media/MediaFormat.java b/media/java/android/media/MediaFormat.java
index 2a2f4fe..d10cbbc 100644
--- a/media/java/android/media/MediaFormat.java
+++ b/media/java/android/media/MediaFormat.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -188,6 +189,7 @@
      */
     public static final String MIMETYPE_TEXT_CEA_708 = "text/cea-708";
 
+    @UnsupportedAppUsage
     private Map<String, Object> mMap;
 
     /**
@@ -946,6 +948,7 @@
         mMap = new HashMap();
     }
 
+    @UnsupportedAppUsage
     /* package private */ Map<String, Object> getMap() {
         return mMap;
     }
diff --git a/media/java/android/media/MediaHTTPConnection.java b/media/java/android/media/MediaHTTPConnection.java
index 6bf52bd..ad25a06 100644
--- a/media/java/android/media/MediaHTTPConnection.java
+++ b/media/java/android/media/MediaHTTPConnection.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.net.NetworkUtils;
 import android.os.IBinder;
 import android.os.StrictMode;
@@ -46,20 +47,28 @@
     // connection timeout - 30 sec
     private static final int CONNECT_TIMEOUT_MS = 30 * 1000;
 
+    @UnsupportedAppUsage
     private long mCurrentOffset = -1;
+    @UnsupportedAppUsage
     private URL mURL = null;
+    @UnsupportedAppUsage
     private Map<String, String> mHeaders = null;
+    @UnsupportedAppUsage
     private HttpURLConnection mConnection = null;
+    @UnsupportedAppUsage
     private long mTotalSize = -1;
     private InputStream mInputStream = null;
 
+    @UnsupportedAppUsage
     private boolean mAllowCrossDomainRedirect = true;
+    @UnsupportedAppUsage
     private boolean mAllowCrossProtocolRedirect = true;
 
     // from com.squareup.okhttp.internal.http
     private final static int HTTP_TEMP_REDIRECT = 307;
     private final static int MAX_REDIRECTS = 20;
 
+    @UnsupportedAppUsage
     public MediaHTTPConnection() {
         CookieHandler cookieHandler = CookieHandler.getDefault();
         if (cookieHandler == null) {
@@ -70,6 +79,7 @@
     }
 
     @Override
+    @UnsupportedAppUsage
     public IBinder connect(String uri, String headers) {
         if (VERBOSE) {
             Log.d(TAG, "connect: uri=" + uri + ", headers=" + headers);
@@ -128,6 +138,7 @@
     }
 
     @Override
+    @UnsupportedAppUsage
     public void disconnect() {
         teardownConnection();
         mHeaders = null;
@@ -312,6 +323,7 @@
     }
 
     @Override
+    @UnsupportedAppUsage
     public int readAt(long offset, int size) {
         return native_readAt(offset, size);
     }
@@ -381,6 +393,7 @@
     }
 
     @Override
+    @UnsupportedAppUsage
     public synchronized String getMIMEType() {
         if (mConnection == null) {
             try {
@@ -394,6 +407,7 @@
     }
 
     @Override
+    @UnsupportedAppUsage
     public String getUri() {
         return mURL.toString();
     }
diff --git a/media/java/android/media/MediaHTTPService.java b/media/java/android/media/MediaHTTPService.java
index 98517d1..97a0df7 100644
--- a/media/java/android/media/MediaHTTPService.java
+++ b/media/java/android/media/MediaHTTPService.java
@@ -17,6 +17,7 @@
 package android.media;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.os.IBinder;
 import android.util.Log;
 
@@ -83,6 +84,7 @@
         return new MediaHTTPConnection();
     }
 
+    @UnsupportedAppUsage
     /* package private */static IBinder createHttpServiceBinderIfNecessary(
             String path) {
         return createHttpServiceBinderIfNecessary(path, null);
diff --git a/media/java/android/media/MediaInserter.java b/media/java/android/media/MediaInserter.java
index dd06921..0749f58 100644
--- a/media/java/android/media/MediaInserter.java
+++ b/media/java/android/media/MediaInserter.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.ContentProviderClient;
 import android.content.ContentValues;
 import android.net.Uri;
@@ -67,6 +68,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public void flushAll() throws RemoteException {
         flushAllPriority();
         for (Uri tableUri : mRowMap.keySet()){
diff --git a/media/java/android/media/MediaMetadata.java b/media/java/android/media/MediaMetadata.java
index 94d4d55..2721ad1 100644
--- a/media/java/android/media/MediaMetadata.java
+++ b/media/java/android/media/MediaMetadata.java
@@ -17,6 +17,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.StringDef;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ContentResolver;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -626,6 +627,7 @@
      * @return The key used by this class or null if no mapping exists
      * @hide
      */
+    @UnsupportedAppUsage
     public static String getKeyFromMetadataEditorKey(int editorKey) {
         return EDITOR_KEY_MAPPING.get(editorKey, null);
     }
diff --git a/media/java/android/media/MediaMetadataRetriever.java b/media/java/android/media/MediaMetadataRetriever.java
index f9a47a6..57b648e 100644
--- a/media/java/android/media/MediaMetadataRetriever.java
+++ b/media/java/android/media/MediaMetadataRetriever.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.res.AssetFileDescriptor;
@@ -668,6 +669,7 @@
         return getEmbeddedPicture(EMBEDDED_PICTURE_TYPE_ANY);
     }
 
+    @UnsupportedAppUsage
     private native byte[] getEmbeddedPicture(int pictureType);
 
     /**
@@ -675,9 +677,12 @@
      * allocated internally.
      */
     public native void release();
+    @UnsupportedAppUsage
     private native void native_setup();
+    @UnsupportedAppUsage
     private static native void native_init();
 
+    @UnsupportedAppUsage
     private native final void native_finalize();
 
     @Override
diff --git a/media/java/android/media/MediaMuxer.java b/media/java/android/media/MediaMuxer.java
index 205ce8d..c91d4d3 100644
--- a/media/java/android/media/MediaMuxer.java
+++ b/media/java/android/media/MediaMuxer.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.media.MediaCodec;
 import android.media.MediaCodec.BufferInfo;
 import dalvik.system.CloseGuard;
@@ -283,8 +284,10 @@
     public @interface Format {}
 
     // All the native functions are listed here.
+    @UnsupportedAppUsage
     private static native long nativeSetup(@NonNull FileDescriptor fd, int format)
             throws IllegalArgumentException, IOException;
+    @UnsupportedAppUsage
     private static native void nativeRelease(long nativeObject);
     private static native void nativeStart(long nativeObject);
     private static native void nativeStop(long nativeObject);
@@ -298,16 +301,22 @@
             int offset, int size, long presentationTimeUs, @MediaCodec.BufferFlag int flags);
 
     // Muxer internal states.
+    @UnsupportedAppUsage
     private static final int MUXER_STATE_UNINITIALIZED  = -1;
     private static final int MUXER_STATE_INITIALIZED    = 0;
+    @UnsupportedAppUsage
     private static final int MUXER_STATE_STARTED        = 1;
+    @UnsupportedAppUsage
     private static final int MUXER_STATE_STOPPED        = 2;
 
+    @UnsupportedAppUsage
     private int mState = MUXER_STATE_UNINITIALIZED;
 
+    @UnsupportedAppUsage
     private final CloseGuard mCloseGuard = CloseGuard.get();
     private int mLastTrackIndex = -1;
 
+    @UnsupportedAppUsage
     private long mNativeObject;
 
     /**
diff --git a/media/java/android/media/MediaPlayer.java b/media/java/android/media/MediaPlayer.java
index d532e52..ed4da22 100644
--- a/media/java/android/media/MediaPlayer.java
+++ b/media/java/android/media/MediaPlayer.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.content.ContentProvider;
 import android.content.ContentResolver;
@@ -597,6 +598,7 @@
        // FIXME: add link to getMetadata(boolean, boolean)
        {@hide}
      */
+    @UnsupportedAppUsage
     public static final boolean METADATA_ALL = false;
 
     /**
@@ -613,6 +615,7 @@
        // FIXME: add link to getMetadata(boolean, boolean)
        {@hide}
      */
+    @UnsupportedAppUsage
     public static final boolean BYPASS_METADATA_FILTER = false;
 
     static {
@@ -630,6 +633,7 @@
     private long mNativeSurfaceTexture;  // accessed by native methods
     private int mListenerContext; // accessed by native methods
     private SurfaceHolder mSurfaceHolder;
+    @UnsupportedAppUsage
     private EventHandler mEventHandler;
     private PowerManager.WakeLock mWakeLock = null;
     private boolean mScreenOnWhilePlaying;
@@ -710,6 +714,7 @@
      * player.
      * {@hide}
      */
+    @UnsupportedAppUsage
     public Parcel newRequest() {
         Parcel parcel = Parcel.obtain();
         parcel.writeInterfaceToken(IMEDIA_PLAYER);
@@ -730,6 +735,7 @@
      * native player.
      * {@hide}
      */
+    @UnsupportedAppUsage
     public void invoke(Parcel request, Parcel reply) {
         int retcode = native_invoke(request, reply);
         reply.setDataPosition(0);
@@ -1139,11 +1145,13 @@
      * @throws IllegalStateException if it is called in an invalid state
      * @hide pending API council
      */
+    @UnsupportedAppUsage
     public void setDataSource(String path, Map<String, String> headers)
             throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
         setDataSource(path, headers, null);
     }
 
+    @UnsupportedAppUsage
     private void setDataSource(String path, Map<String, String> headers, List<HttpCookie> cookies)
             throws IOException, IllegalArgumentException, SecurityException, IllegalStateException
     {
@@ -1164,6 +1172,7 @@
         setDataSource(path, keys, values, cookies);
     }
 
+    @UnsupportedAppUsage
     private void setDataSource(String path, String[] keys, String[] values,
             List<HttpCookie> cookies)
             throws IOException, IllegalArgumentException, SecurityException, IllegalStateException {
@@ -2010,6 +2019,7 @@
      // FIXME: unhide.
      * {@hide}
      */
+    @UnsupportedAppUsage
     public Metadata getMetadata(final boolean update_only,
                                 final boolean apply_filter) {
         Parcel reply = Parcel.obtain();
@@ -2234,6 +2244,7 @@
      * @return true if the parameter is set successfully, false otherwise
      * {@hide}
      */
+    @UnsupportedAppUsage
     private native boolean setParameter(int key, Parcel value);
 
     /**
@@ -2550,6 +2561,7 @@
         /**
          * Used to read a TrackInfo from a Parcel.
          */
+        @UnsupportedAppUsage
         static final Parcelable.Creator<TrackInfo> CREATOR
                 = new Parcelable.Creator<TrackInfo>() {
                     @Override
@@ -2660,6 +2672,7 @@
     private SubtitleController mSubtitleController;
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setSubtitleAnchor(
             SubtitleController controller,
             SubtitleController.Anchor anchor) {
@@ -2764,6 +2777,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void addSubtitleSource(InputStream is, MediaFormat format)
             throws IllegalStateException
     {
@@ -3276,6 +3290,7 @@
      *
      * {@hide} pending API council
      */
+    @UnsupportedAppUsage
     public void setRetransmitEndpoint(InetSocketAddress endpoint)
             throws IllegalStateException, IllegalArgumentException
     {
@@ -3327,6 +3342,7 @@
     private TimeProvider mTimeProvider;
 
     /** @hide */
+    @UnsupportedAppUsage
     public MediaTimeProvider getMediaTimeProvider() {
         if (mTimeProvider == null) {
             mTimeProvider = new TimeProvider(this);
@@ -3723,6 +3739,7 @@
         mOnPreparedListener = listener;
     }
 
+    @UnsupportedAppUsage
     private OnPreparedListener mOnPreparedListener;
 
     /**
@@ -3750,6 +3767,7 @@
         mOnCompletionListener = listener;
     }
 
+    @UnsupportedAppUsage
     private OnCompletionListener mOnCompletionListener;
 
     /**
@@ -3822,6 +3840,7 @@
         mOnSeekCompleteListener = listener;
     }
 
+    @UnsupportedAppUsage
     private OnSeekCompleteListener mOnSeekCompleteListener;
 
     /**
@@ -3883,6 +3902,7 @@
         mOnTimedTextListener = listener;
     }
 
+    @UnsupportedAppUsage
     private OnTimedTextListener mOnTimedTextListener;
 
     /**
@@ -4162,6 +4182,7 @@
         mOnErrorListener = listener;
     }
 
+    @UnsupportedAppUsage
     private OnErrorListener mOnErrorListener;
 
 
@@ -4231,6 +4252,7 @@
      *  JAVA framework to avoid triggering track scanning.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int MEDIA_INFO_EXTERNAL_METADATA_UPDATE = 803;
 
     /** Informs that audio is not playing. Note that playback of the video
@@ -4250,6 +4272,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     public static final int MEDIA_INFO_TIMED_TEXT_ERROR = 900;
 
     /** Subtitle track was not supported by the media framework.
@@ -4306,6 +4329,7 @@
         mOnInfoListener = listener;
     }
 
+    @UnsupportedAppUsage
     private OnInfoListener mOnInfoListener;
 
     // Modular DRM begin
diff --git a/media/java/android/media/MediaPlayer2.java b/media/java/android/media/MediaPlayer2.java
index 37a0424..e183a6b 100644
--- a/media/java/android/media/MediaPlayer2.java
+++ b/media/java/android/media/MediaPlayer2.java
@@ -20,6 +20,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.graphics.SurfaceTexture;
 import android.net.Uri;
@@ -1385,6 +1386,7 @@
          * Gets the track type.
          * @return TrackType which indicates if the track is video, audio, timed text.
          */
+        @UnsupportedAppUsage
         public abstract int getTrackType();
 
         /**
@@ -1393,6 +1395,7 @@
          * When the language is unknown or could not be determined,
          * ISO-639-2 language code, "und", is returned.
          */
+        @UnsupportedAppUsage
         public abstract String getLanguage();
 
         /**
diff --git a/media/java/android/media/MediaRecorder.java b/media/java/android/media/MediaRecorder.java
index b47b4cd..d4bfd61 100644
--- a/media/java/android/media/MediaRecorder.java
+++ b/media/java/android/media/MediaRecorder.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.hardware.Camera;
 import android.os.Bundle;
@@ -97,13 +98,19 @@
     private long mNativeContext;
 
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private Surface mSurface;
 
+    @UnsupportedAppUsage
     private String mPath;
+    @UnsupportedAppUsage
     private FileDescriptor mFd;
     private File mFile;
+    @UnsupportedAppUsage
     private EventHandler mEventHandler;
+    @UnsupportedAppUsage
     private OnErrorListener mOnErrorListener;
+    @UnsupportedAppUsage
     private OnInfoListener mOnInfoListener;
 
     private int mChannelCount;
@@ -942,6 +949,7 @@
     // native implementation
     private native void _setOutputFile(FileDescriptor fd) throws IllegalStateException, IOException;
     private native void _setNextOutputFile(FileDescriptor fd) throws IllegalStateException, IOException;
+    @UnsupportedAppUsage
     private native void _prepare() throws IllegalStateException, IOException;
 
     /**
@@ -1043,6 +1051,7 @@
         mEventHandler.removeCallbacksAndMessages(null);
     }
 
+    @UnsupportedAppUsage
     private native void native_reset();
 
     /**
@@ -1500,13 +1509,17 @@
      */
     public native void release();
 
+    @UnsupportedAppUsage
     private static native final void native_init();
 
+    @UnsupportedAppUsage
     private native final void native_setup(Object mediarecorder_this,
             String clientName, String opPackageName) throws IllegalStateException;
 
+    @UnsupportedAppUsage
     private native final void native_finalize();
 
+    @UnsupportedAppUsage
     private native void setParameter(String nameValuePair);
 
     /**
diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java
index d5afd9a..43bee85 100644
--- a/media/java/android/media/MediaRouter.java
+++ b/media/java/android/media/MediaRouter.java
@@ -21,6 +21,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -786,6 +787,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public RouteInfo getSelectedRoute() {
         return getSelectedRoute(ROUTE_TYPE_ANY);
     }
@@ -939,6 +941,7 @@
     /**
      * @hide internal use
      */
+    @UnsupportedAppUsage
     public void selectRouteInt(int types, RouteInfo route, boolean explicit) {
         selectRouteStatic(types, route, explicit);
     }
@@ -1527,6 +1530,7 @@
      */
     public static class RouteInfo {
         CharSequence mName;
+        @UnsupportedAppUsage
         int mNameResId;
         CharSequence mDescription;
         private CharSequence mStatus;
@@ -1558,7 +1562,9 @@
 
         /** @hide */ public static final int STATUS_NONE = 0;
         /** @hide */ public static final int STATUS_SCANNING = 1;
-        /** @hide */ public static final int STATUS_CONNECTING = 2;
+        /** @hide */
+        @UnsupportedAppUsage
+        public static final int STATUS_CONNECTING = 2;
         /** @hide */ public static final int STATUS_AVAILABLE = 3;
         /** @hide */ public static final int STATUS_NOT_AVAILABLE = 4;
         /** @hide */ public static final int STATUS_IN_USE = 5;
@@ -1675,6 +1681,7 @@
             return getName(context.getResources());
         }
 
+        @UnsupportedAppUsage
         CharSequence getName(Resources res) {
             if (mNameResId != 0) {
                 return res.getText(mNameResId);
@@ -1770,6 +1777,7 @@
         /**
          * @hide
          */
+        @UnsupportedAppUsage
         public int getStatusCode() {
             return mResolvedStatusCode;
         }
@@ -1794,6 +1802,7 @@
         }
 
         /** @hide */
+        @UnsupportedAppUsage
         public boolean matchesTypes(int types) {
             return (mSupportedTypes & types) != 0;
         }
@@ -2024,6 +2033,7 @@
         }
 
         /** @hide */
+        @UnsupportedAppUsage
         public String getDeviceAddress() {
             return mDeviceAddress;
         }
@@ -2048,11 +2058,13 @@
         }
 
         /** @hide */
+        @UnsupportedAppUsage
         public boolean isSelected() {
             return this == sStatic.mSelectedRoute;
         }
 
         /** @hide */
+        @UnsupportedAppUsage
         public boolean isDefault() {
             return this == sStatic.mDefaultAudioVideo;
         }
@@ -2063,6 +2075,7 @@
         }
 
         /** @hide */
+        @UnsupportedAppUsage
         public void select() {
             selectRouteStatic(mSupportedTypes, this, true);
         }
diff --git a/media/java/android/media/MediaScanner.java b/media/java/android/media/MediaScanner.java
index a746e6a..dcacb92 100644
--- a/media/java/android/media/MediaScanner.java
+++ b/media/java/android/media/MediaScanner.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.ContentProviderClient;
 import android.content.ContentResolver;
 import android.content.ContentUris;
@@ -124,6 +125,7 @@
 
     private final static String TAG = "MediaScanner";
 
+    @UnsupportedAppUsage
     private static final String[] FILES_PRESCAN_PROJECTION = new String[] {
             Files.FileColumns._ID, // 0
             Files.FileColumns.DATA, // 1
@@ -318,14 +320,18 @@
     };
 
     private long mNativeContext;
+    @UnsupportedAppUsage
     private final Context mContext;
+    @UnsupportedAppUsage
     private final String mPackageName;
     private final String mVolumeName;
     private final ContentProviderClient mMediaProvider;
+    @UnsupportedAppUsage
     private final Uri mAudioUri;
     private final Uri mVideoUri;
     private final Uri mImagesUri;
     private final Uri mPlaylistsUri;
+    @UnsupportedAppUsage
     private final Uri mFilesUri;
     private final Uri mFilesUriNoNotify;
     private final boolean mProcessPlaylists;
@@ -348,10 +354,13 @@
     /** Whether the scanner has set a default sound for the alarm ringtone. */
     private boolean mDefaultAlarmSet;
     /** The filename for the default sound for the ringer ringtone. */
+    @UnsupportedAppUsage
     private String mDefaultRingtoneFilename;
     /** The filename for the default sound for the notification ringtone. */
+    @UnsupportedAppUsage
     private String mDefaultNotificationFilename;
     /** The filename for the default sound for the alarm ringtone. */
+    @UnsupportedAppUsage
     private String mDefaultAlarmAlertFilename;
     /**
      * The prefix for system properties that define the default sound for
@@ -363,15 +372,18 @@
     private final BitmapFactory.Options mBitmapOptions = new BitmapFactory.Options();
 
     private static class FileEntry {
+        @UnsupportedAppUsage
         long mRowId;
         String mPath;
         long mLastModified;
         int mFormat;
         int mMediaType;
+        @UnsupportedAppUsage
         boolean mLastModifiedChanged;
 
         /** @deprecated kept intact for lame apps using reflection */
         @Deprecated
+        @UnsupportedAppUsage
         FileEntry(long rowId, String path, long lastModified, int format) {
             this(rowId, path, lastModified, format, FileColumns.MEDIA_TYPE_NONE);
         }
@@ -400,10 +412,12 @@
     private final ArrayList<PlaylistEntry> mPlaylistEntries = new ArrayList<>();
     private final ArrayList<FileEntry> mPlayLists = new ArrayList<>();
 
+    @UnsupportedAppUsage
     private MediaInserter mMediaInserter;
 
     private DrmManagerClient mDrmManagerClient = null;
 
+    @UnsupportedAppUsage
     public MediaScanner(Context c, String volumeName) {
         native_setup();
         mContext = c;
@@ -467,8 +481,10 @@
                 + Settings.System.ALARM_ALERT);
     }
 
+    @UnsupportedAppUsage
     private final MyMediaScannerClient mClient = new MyMediaScannerClient();
 
+    @UnsupportedAppUsage
     private boolean isDrmEnabled() {
         String prop = SystemProperties.get("drm.service.enabled");
         return prop != null && prop.equals("true");
@@ -484,18 +500,23 @@
         private String mTitle;
         private String mComposer;
         private String mGenre;
+        @UnsupportedAppUsage
         private String mMimeType;
+        @UnsupportedAppUsage
         private int mFileType;
         private int mTrack;
         private int mYear;
         private int mDuration;
+        @UnsupportedAppUsage
         private String mPath;
         private long mDate;
         private long mLastModified;
         private long mFileSize;
         private String mWriter;
         private int mCompilation;
+        @UnsupportedAppUsage
         private boolean mIsDrm;
+        @UnsupportedAppUsage
         private boolean mNoMedia;   // flag to suppress file from appearing in media tables
         private boolean mScanSuccess;
         private int mWidth;
@@ -506,6 +527,7 @@
             mDateFormatter.setTimeZone(TimeZone.getTimeZone("UTC"));
         }
 
+        @UnsupportedAppUsage
         public FileEntry beginFile(String path, String mimeType, long lastModified,
                 long fileSize, boolean isDirectory, boolean noMedia) {
             mMimeType = mimeType;
@@ -584,6 +606,7 @@
         }
 
         @Override
+        @UnsupportedAppUsage
         public void scanFile(String path, long lastModified, long fileSize,
                 boolean isDirectory, boolean noMedia) {
             // This is the callback funtion from native codes.
@@ -591,6 +614,7 @@
             doScanFile(path, null, lastModified, fileSize, isDirectory, false, noMedia);
         }
 
+        @UnsupportedAppUsage
         public Uri doScanFile(String path, String mimeType, long lastModified,
                 long fileSize, boolean isDirectory, boolean scanAlways, boolean noMedia) {
             Uri result = null;
@@ -699,6 +723,7 @@
             return result;
         }
 
+        @UnsupportedAppUsage
         public void handleStringTag(String name, String value) {
             if (name.equalsIgnoreCase("title") || name.startsWith("title;")) {
                 // Don't trim() here, to preserve the special \001 character
@@ -843,6 +868,7 @@
             return false;
         }
 
+        @UnsupportedAppUsage
         public void setMimeType(String mimeType) {
             if ("audio/mp4".equals(mMimeType) &&
                     mimeType.startsWith("video")) {
@@ -861,6 +887,7 @@
          *
          * @return a map of values
          */
+        @UnsupportedAppUsage
         private ContentValues toValues() {
             ContentValues map = new ContentValues();
 
@@ -917,6 +944,7 @@
             return map;
         }
 
+        @UnsupportedAppUsage
         private Uri endFile(FileEntry entry, boolean ringtones, boolean notifications,
                 boolean alarms, boolean music, boolean podcasts)
                 throws RemoteException {
@@ -1148,6 +1176,7 @@
             Settings.System.putInt(cr, settingSetIndicatorName(settingName), 1);
         }
 
+        @UnsupportedAppUsage
         private int getFileTypeFromDrm(String path) {
             if (!isDrmEnabled()) {
                 return 0;
@@ -1198,6 +1227,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private void prescan(String filePath, boolean prescanFiles) throws RemoteException {
         Cursor c = null;
         String where = null;
@@ -1344,6 +1374,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private void postscan(final String[] directories) throws RemoteException {
 
         // handle playlists last, after we know what media files are on the storage.
@@ -1408,6 +1439,7 @@
     }
 
     // this function is used to scan a single file
+    @UnsupportedAppUsage
     public Uri scanSingleFile(String path, String mimeType) {
         try {
             prescan(path, true);
@@ -1480,6 +1512,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     public static boolean isNoMediaPath(String path) {
         if (path == null) {
             return false;
@@ -1578,6 +1611,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     FileEntry makeEntryFor(String path) {
         String where;
         String[] selectionArgs;
@@ -1914,6 +1948,7 @@
 
     private native void processDirectory(String path, MediaScannerClient client);
     private native boolean processFile(String path, String mimeType, MediaScannerClient client);
+    @UnsupportedAppUsage
     private native void setLocale(String locale);
 
     public native byte[] extractAlbumArt(FileDescriptor fd);
diff --git a/media/java/android/media/Metadata.java b/media/java/android/media/Metadata.java
index 4b8f81e..792a2ba 100644
--- a/media/java/android/media/Metadata.java
+++ b/media/java/android/media/Metadata.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.util.Log;
 import android.util.MathUtils;
@@ -68,18 +69,22 @@
     /**
      * Indicate whether the media can be paused
      */
+    @UnsupportedAppUsage
     public static final int PAUSE_AVAILABLE         = 1; // Boolean
     /**
      * Indicate whether the media can be backward seeked
      */
+    @UnsupportedAppUsage
     public static final int SEEK_BACKWARD_AVAILABLE = 2; // Boolean
     /**
      * Indicate whether the media can be forward seeked
      */
+    @UnsupportedAppUsage
     public static final int SEEK_FORWARD_AVAILABLE  = 3; // Boolean
     /**
      * Indicate whether the media can be seeked
      */
+    @UnsupportedAppUsage
     public static final int SEEK_AVAILABLE          = 4; // Boolean
 
     // TODO: Should we use numbers compatible with the metadata retriever?
@@ -264,6 +269,7 @@
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     public Metadata() { }
 
     /**
@@ -382,6 +388,7 @@
      * @return false if an error occurred.
      * {@hide}
      */
+    @UnsupportedAppUsage
     public boolean parse(Parcel parcel) {
         if (parcel.dataAvail() < kMetaHeaderSize) {
             Log.e(TAG, "Not enough data " + parcel.dataAvail());
@@ -418,6 +425,7 @@
     /**
      * @return The set of metadata ID found.
      */
+    @UnsupportedAppUsage
     public Set<Integer> keySet() {
         return mKeyToPosMap.keySet();
     }
@@ -425,6 +433,7 @@
     /**
      * @return true if a value is present for the given key.
      */
+    @UnsupportedAppUsage
     public boolean has(final int metadataId) {
         if (!checkMetadataId(metadataId)) {
             throw new IllegalArgumentException("Invalid key: " + metadataId);
@@ -439,6 +448,7 @@
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     public String getString(final int key) {
         checkType(key, STRING_VAL);
         return mParcel.readString();
@@ -447,6 +457,7 @@
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     public int getInt(final int key) {
         checkType(key, INTEGER_VAL);
         return mParcel.readInt();
@@ -455,6 +466,7 @@
     /**
      * Get the boolean value indicated by key
      */
+    @UnsupportedAppUsage
     public boolean getBoolean(final int key) {
         checkType(key, BOOLEAN_VAL);
         return mParcel.readInt() == 1;
@@ -463,6 +475,7 @@
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     public long getLong(final int key) {
         checkType(key, LONG_VAL);    /**
      * {@hide}
@@ -473,6 +486,7 @@
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     public double getDouble(final int key) {
         checkType(key, DOUBLE_VAL);
         return mParcel.readDouble();
@@ -481,6 +495,7 @@
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     public byte[] getByteArray(final int key) {
         checkType(key, BYTE_ARRAY_VAL);
         return mParcel.createByteArray();
@@ -489,6 +504,7 @@
     /**
      * {@hide}
      */
+    @UnsupportedAppUsage
     public Date getDate(final int key) {
         checkType(key, DATE_VAL);
         final long timeSinceEpoch = mParcel.readLong();
diff --git a/media/java/android/media/MicrophoneInfo.java b/media/java/android/media/MicrophoneInfo.java
index d6399a4..f805975 100644
--- a/media/java/android/media/MicrophoneInfo.java
+++ b/media/java/android/media/MicrophoneInfo.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.util.Pair;
 
 import java.lang.annotation.Retention;
@@ -163,6 +164,7 @@
     private int mType;
     private int mDirectionality;
 
+    @UnsupportedAppUsage
     MicrophoneInfo(String deviceId, int type, String address, int location,
             int group, int indexInTheGroup, Coordinate3F position,
             Coordinate3F orientation, List<Pair<Float, Float>> frequencyResponse,
diff --git a/media/java/android/media/MiniThumbFile.java b/media/java/android/media/MiniThumbFile.java
index 9899367..716e0cb 100644
--- a/media/java/android/media/MiniThumbFile.java
+++ b/media/java/android/media/MiniThumbFile.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.net.Uri;
 import android.os.Environment;
 import android.util.Log;
@@ -59,6 +60,7 @@
      * We store different types of thumbnails in different files. To remain backward compatibility,
      * we should hashcode of content://media/external/images/media remains the same.
      */
+    @UnsupportedAppUsage
     public static synchronized void reset() {
         for (MiniThumbFile file : sThumbFiles.values()) {
             file.deactivate();
diff --git a/media/java/android/media/PlaybackParams.java b/media/java/android/media/PlaybackParams.java
index b85e4d0..6594dd7 100644
--- a/media/java/android/media/PlaybackParams.java
+++ b/media/java/android/media/PlaybackParams.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -85,16 +86,25 @@
     public static final int AUDIO_STRETCH_MODE_VOICE = 1;
 
     // flags to indicate which params are actually set
+    @UnsupportedAppUsage
     private static final int SET_SPEED               = 1 << 0;
+    @UnsupportedAppUsage
     private static final int SET_PITCH               = 1 << 1;
+    @UnsupportedAppUsage
     private static final int SET_AUDIO_FALLBACK_MODE = 1 << 2;
+    @UnsupportedAppUsage
     private static final int SET_AUDIO_STRETCH_MODE  = 1 << 3;
+    @UnsupportedAppUsage
     private int mSet = 0;
 
     // params
+    @UnsupportedAppUsage
     private int mAudioFallbackMode = AUDIO_FALLBACK_MODE_DEFAULT;
+    @UnsupportedAppUsage
     private int mAudioStretchMode = AUDIO_STRETCH_MODE_DEFAULT;
+    @UnsupportedAppUsage
     private float mPitch = 1.0f;
+    @UnsupportedAppUsage
     private float mSpeed = 1.0f;
 
     public PlaybackParams() {
diff --git a/media/java/android/media/RemoteControlClient.java b/media/java/android/media/RemoteControlClient.java
index 6d32eff..3b51c82 100644
--- a/media/java/android/media/RemoteControlClient.java
+++ b/media/java/android/media/RemoteControlClient.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Intent;
@@ -820,6 +821,7 @@
      * position updates. The playback position being "readable" is considered from the application's
      * point of view.
      */
+    @UnsupportedAppUsage
     public static int MEDIA_POSITION_READABLE = 1 << 0;
     /**
      * @hide
@@ -827,6 +829,7 @@
      * playback position updates. The playback position being "writable"
      * is considered from the application's point of view.
      */
+    @UnsupportedAppUsage
     public static int MEDIA_POSITION_WRITABLE = 1 << 1;
 
     /** @hide */
diff --git a/media/java/android/media/RemoteController.java b/media/java/android/media/RemoteController.java
index 90f2163..b6e3276 100644
--- a/media/java/android/media/RemoteController.java
+++ b/media/java/android/media/RemoteController.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityManager;
 import android.content.ComponentName;
 import android.content.Context;
@@ -79,6 +80,7 @@
     private int mArtworkHeight = -1;
     private boolean mEnabled = true;
     // synchronized on mInfoLock, for USE_SESSION apis.
+    @UnsupportedAppUsage
     private MediaController mCurrentSession;
 
     /**
@@ -292,6 +294,7 @@
      * @return true if successful
      * @throws IllegalArgumentException
      */
+    @UnsupportedAppUsage
     public boolean setArtworkConfiguration(boolean wantBitmap, int width, int height)
             throws IllegalArgumentException {
         synchronized (mInfoLock) {
@@ -689,6 +692,7 @@
      * Used by AudioManager to access user listener receiving the client update notifications
      * @return
      */
+    @UnsupportedAppUsage
     OnClientUpdateListener getUpdateListener() {
         return mOnClientUpdateListener;
     }
diff --git a/media/java/android/media/RemoteDisplay.java b/media/java/android/media/RemoteDisplay.java
index 5add65a..2be206f 100644
--- a/media/java/android/media/RemoteDisplay.java
+++ b/media/java/android/media/RemoteDisplay.java
@@ -18,6 +18,7 @@
 
 import dalvik.system.CloseGuard;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Handler;
 import android.view.Surface;
 
@@ -88,6 +89,7 @@
     /**
      * Disconnects the remote display and stops listening for new connections.
      */
+    @UnsupportedAppUsage
     public void dispose() {
         dispose(false);
     }
@@ -125,6 +127,7 @@
     }
 
     // Called from native.
+    @UnsupportedAppUsage
     private void notifyDisplayConnected(final Surface surface,
             final int width, final int height, final int flags, final int session) {
         mHandler.post(new Runnable() {
@@ -136,6 +139,7 @@
     }
 
     // Called from native.
+    @UnsupportedAppUsage
     private void notifyDisplayDisconnected() {
         mHandler.post(new Runnable() {
             @Override
@@ -146,6 +150,7 @@
     }
 
     // Called from native.
+    @UnsupportedAppUsage
     private void notifyDisplayError(final int error) {
         mHandler.post(new Runnable() {
             @Override
diff --git a/media/java/android/media/RemoteDisplayState.java b/media/java/android/media/RemoteDisplayState.java
index 1197f65..f8a4605 100644
--- a/media/java/android/media/RemoteDisplayState.java
+++ b/media/java/android/media/RemoteDisplayState.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
@@ -40,8 +41,10 @@
     /**
      * A list of all remote displays.
      */
+    @UnsupportedAppUsage
     public final ArrayList<RemoteDisplayInfo> displays;
 
+    @UnsupportedAppUsage
     public RemoteDisplayState() {
         displays = new ArrayList<RemoteDisplayInfo>();
     }
diff --git a/media/java/android/media/Ringtone.java b/media/java/android/media/Ringtone.java
index c0468dc9..32aba7f 100644
--- a/media/java/android/media/Ringtone.java
+++ b/media/java/android/media/Ringtone.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.ContentProvider;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -71,9 +72,11 @@
     private final IRingtonePlayer mRemotePlayer;
     private final Binder mRemoteToken;
 
+    @UnsupportedAppUsage
     private MediaPlayer mLocalPlayer;
     private final MyOnCompletionListener mCompletionListener = new MyOnCompletionListener();
 
+    @UnsupportedAppUsage
     private Uri mUri;
     private String mTitle;
 
@@ -87,6 +90,7 @@
     private final Object mPlaybackSettingsLock = new Object();
 
     /** {@hide} */
+    @UnsupportedAppUsage
     public Ringtone(Context context, boolean allowRemote) {
         mContext = context;
         mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
@@ -298,6 +302,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setUri(Uri uri) {
         destroyLocalPlayer();
 
@@ -335,6 +340,7 @@
     }
 
     /** {@hide} */
+    @UnsupportedAppUsage
     public Uri getUri() {
         return mUri;
     }
diff --git a/media/java/android/media/RingtoneManager.java b/media/java/android/media/RingtoneManager.java
index 0dddaf5..66feb1d 100644
--- a/media/java/android/media/RingtoneManager.java
+++ b/media/java/android/media/RingtoneManager.java
@@ -21,6 +21,7 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.UnsupportedAppUsage;
 import android.annotation.WorkerThread;
 import android.app.Activity;
 import android.content.ContentProvider;
@@ -244,6 +245,7 @@
     private final Activity mActivity;
     private final Context mContext;
 
+    @UnsupportedAppUsage
     private Cursor mCursor;
 
     private int mType = TYPE_RINGTONE;
@@ -602,6 +604,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private Cursor getInternalRingtones() {
         return query(
                 MediaStore.Audio.Media.INTERNAL_CONTENT_URI, INTERNAL_COLUMNS,
@@ -613,6 +616,7 @@
         return getMediaRingtones(mContext);
     }
 
+    @UnsupportedAppUsage
     private Cursor getMediaRingtones(Context context) {
         if (PackageManager.PERMISSION_GRANTED != context.checkPermission(
                 android.Manifest.permission.READ_EXTERNAL_STORAGE,
@@ -727,6 +731,7 @@
      *            not be set (and the default used instead).
      * @see #getRingtone(Context, Uri)
      */
+    @UnsupportedAppUsage
     private static Ringtone getRingtone(final Context context, Uri ringtoneUri, int streamType) {
         try {
             final Ringtone r = new Ringtone(context, true);
diff --git a/media/java/android/media/SubtitleController.java b/media/java/android/media/SubtitleController.java
index fd72b39..1a241af 100644
--- a/media/java/android/media/SubtitleController.java
+++ b/media/java/android/media/SubtitleController.java
@@ -19,6 +19,7 @@
 import java.util.Locale;
 import java.util.Vector;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.media.MediaPlayer.TrackInfo;
 import android.media.SubtitleTrack.RenderingWidget;
@@ -41,6 +42,7 @@
     private SubtitleTrack mSelectedTrack;
     private boolean mShowing;
     private CaptioningManager mCaptioningManager;
+    @UnsupportedAppUsage
     private Handler mHandler;
 
     private static final int WHAT_SHOW = 1;
@@ -91,6 +93,7 @@
      *
      * @param timeProvider
      */
+    @UnsupportedAppUsage
     public SubtitleController(
             Context context,
             MediaTimeProvider timeProvider,
@@ -300,6 +303,7 @@
     }
 
     /** @hide - must be called from anchor thread */
+    @UnsupportedAppUsage
     public void reset() {
         checkAnchorLooper();
         hide();
@@ -344,6 +348,7 @@
      *
      * Should be called from the anchor's (UI) thread. {@see #Anchor.getSubtitleLooper}
      */
+    @UnsupportedAppUsage
     public void show() {
         processOnAnchor(mHandler.obtainMessage(WHAT_SHOW));
     }
@@ -361,6 +366,7 @@
      *
      * Should be called from the anchor's (UI) thread. {@see #Anchor.getSubtitleLooper}
      */
+    @UnsupportedAppUsage
     public void hide() {
         processOnAnchor(mHandler.obtainMessage(WHAT_HIDE));
     }
@@ -412,6 +418,7 @@
      * @param renderer a {@link SubtitleController.Renderer} object that adds
      *                 support for a subtitle format.
      */
+    @UnsupportedAppUsage
     public void registerRenderer(Renderer renderer) {
         synchronized(mRenderers) {
             // TODO how to get available renderers in the system
diff --git a/media/java/android/media/SubtitleTrack.java b/media/java/android/media/SubtitleTrack.java
index 6c8e323..5596c32 100644
--- a/media/java/android/media/SubtitleTrack.java
+++ b/media/java/android/media/SubtitleTrack.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Canvas;
 import android.media.MediaPlayer.TrackInfo;
 import android.os.Handler;
@@ -677,6 +678,7 @@
          *
          * @param callback update callback
          */
+        @UnsupportedAppUsage
         public void setOnChangedListener(OnChangedListener callback);
 
         /**
@@ -685,6 +687,7 @@
          * @param width width in pixels
          * @param height height in pixels
          */
+        @UnsupportedAppUsage
         public void setSize(int width, int height);
 
         /**
@@ -699,16 +702,19 @@
          *
          * @param c canvas on which to render subtitles
          */
+        @UnsupportedAppUsage
         public void draw(Canvas c);
 
         /**
          * Called when the widget is attached to a window.
          */
+        @UnsupportedAppUsage
         public void onAttachedToWindow();
 
         /**
          * Called when the widget is detached from a window.
          */
+        @UnsupportedAppUsage
         public void onDetachedFromWindow();
 
         /**
diff --git a/media/java/android/media/ThumbnailUtils.java b/media/java/android/media/ThumbnailUtils.java
index 429ef29..07ab069 100644
--- a/media/java/android/media/ThumbnailUtils.java
+++ b/media/java/android/media/ThumbnailUtils.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.ContentResolver;
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
@@ -65,6 +66,7 @@
      * Constant used to indicate the dimension of micro thumbnail.
      * @hide Only used by media framework and media provider internally.
      */
+    @UnsupportedAppUsage
     public static final int TARGET_SIZE_MICRO_THUMBNAIL = 96;
 
     /**
@@ -81,6 +83,7 @@
      *
      * @hide This method is only used by media framework and media provider internally.
      */
+    @UnsupportedAppUsage
     public static Bitmap createImageThumbnail(String filePath, int kind) {
         boolean wantMini = (kind == Images.Thumbnails.MINI_KIND);
         int targetSize = wantMini
@@ -252,6 +255,7 @@
      * For example, BitmapFactory downsamples an image by 2 even though the
      * request is 3. So we round up the sample size to avoid OOM.
      */
+    @UnsupportedAppUsage
     private static int computeSampleSize(BitmapFactory.Options options,
             int minSideLength, int maxNumOfPixels) {
         int initialSize = computeInitialSampleSize(options, minSideLength,
@@ -270,6 +274,7 @@
         return roundedSize;
     }
 
+    @UnsupportedAppUsage
     private static int computeInitialSampleSize(BitmapFactory.Options options,
             int minSideLength, int maxNumOfPixels) {
         double w = options.outWidth;
@@ -337,6 +342,7 @@
         return b;
     }
 
+    @UnsupportedAppUsage
     private static void closeSilently(ParcelFileDescriptor c) {
       if (c == null) return;
       try {
@@ -346,6 +352,7 @@
       }
     }
 
+    @UnsupportedAppUsage
     private static ParcelFileDescriptor makeInputStream(
             Uri uri, ContentResolver cr) {
         try {
@@ -358,6 +365,7 @@
     /**
      * Transform source Bitmap to targeted width and height.
      */
+    @UnsupportedAppUsage
     private static Bitmap transform(Matrix scaler,
             Bitmap source,
             int targetWidth,
@@ -474,6 +482,7 @@
      * The functions returns a SizedThumbnailBitmap,
      * which contains a downsampled bitmap and the thumbnail data in EXIF if exists.
      */
+    @UnsupportedAppUsage
     private static void createThumbnailFromEXIF(String filePath, int targetSize,
             int maxPixels, SizedThumbnailBitmap sizedThumbBitmap) {
         if (filePath == null) return;
diff --git a/media/java/android/media/TimedText.java b/media/java/android/media/TimedText.java
index e6a7e13..ebcea19 100644
--- a/media/java/android/media/TimedText.java
+++ b/media/java/android/media/TimedText.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.graphics.Rect;
 import android.os.Parcel;
 import android.util.Log;
@@ -724,6 +725,7 @@
      * List of CharPos, Karaoke, Font, Style, and HyperText, or 3) an instance of
      * Justification.
      */
+    @UnsupportedAppUsage
     private Object getObject(final int key) {
         if (containsKey(key)) {
             return mKeyObjectMap.get(key);
diff --git a/media/java/android/media/ToneGenerator.java b/media/java/android/media/ToneGenerator.java
index 4661226..c6d5ba3 100644
--- a/media/java/android/media/ToneGenerator.java
+++ b/media/java/android/media/ToneGenerator.java
@@ -16,6 +16,8 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
+
 
 
 /**
@@ -893,5 +895,6 @@
     protected void finalize() { native_finalize(); }
 
     @SuppressWarnings("unused")
+    @UnsupportedAppUsage
     private long mNativeContext; // accessed by native methods
 }
diff --git a/media/java/android/media/TtmlRenderer.java b/media/java/android/media/TtmlRenderer.java
index 9d587b9..34154ce 100644
--- a/media/java/android/media/TtmlRenderer.java
+++ b/media/java/android/media/TtmlRenderer.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.text.TextUtils;
 import android.util.AttributeSet;
@@ -48,6 +49,7 @@
 
     private TtmlRenderingWidget mRenderingWidget;
 
+    @UnsupportedAppUsage
     public TtmlRenderer(Context context) {
         mContext = context;
     }
diff --git a/media/java/android/media/VolumeShaper.java b/media/java/android/media/VolumeShaper.java
index b654214..2f33e75 100644
--- a/media/java/android/media/VolumeShaper.java
+++ b/media/java/android/media/VolumeShaper.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -413,16 +414,23 @@
          */
 
         // type of VolumeShaper
+        @UnsupportedAppUsage
         private final int mType;
 
         // valid when mType is TYPE_ID
+        @UnsupportedAppUsage
         private final int mId;
 
         // valid when mType is TYPE_SCALE
+        @UnsupportedAppUsage
         private final int mOptionFlags;
+        @UnsupportedAppUsage
         private final double mDurationMs;
+        @UnsupportedAppUsage
         private final int mInterpolatorType;
+        @UnsupportedAppUsage
         private final float[] mTimes;
+        @UnsupportedAppUsage
         private final float[] mVolumes;
 
         @Override
@@ -565,6 +573,7 @@
          * Direct constructor for VolumeShaper.
          * Use the Builder instead.
          */
+        @UnsupportedAppUsage
         private Configuration(@Type int type,
                 int id,
                 @OptionFlag int optionFlags,
@@ -1124,8 +1133,11 @@
 
         private static final int FLAG_PUBLIC_ALL = FLAG_REVERSE | FLAG_TERMINATE;
 
+        @UnsupportedAppUsage
         private final int mFlags;
+        @UnsupportedAppUsage
         private final int mReplaceId;
+        @UnsupportedAppUsage
         private final float mXOffset;
 
         @Override
@@ -1187,6 +1199,7 @@
             }
         };
 
+        @UnsupportedAppUsage
         private Operation(@Flag int flags, int replaceId, float xOffset) {
             mFlags = flags;
             mReplaceId = replaceId;
@@ -1346,7 +1359,9 @@
      *  Not for public use.
      */
     public static final class State implements Parcelable {
+        @UnsupportedAppUsage
         private float mVolume;
+        @UnsupportedAppUsage
         private float mXOffset;
 
         @Override
@@ -1397,6 +1412,7 @@
             }
         };
 
+        @UnsupportedAppUsage
         /* package */ State(float volume, float xOffset) {
             mVolume = volume;
             mXOffset = xOffset;
diff --git a/media/java/android/media/WebVttRenderer.java b/media/java/android/media/WebVttRenderer.java
index 91c53fa..36458d7 100644
--- a/media/java/android/media/WebVttRenderer.java
+++ b/media/java/android/media/WebVttRenderer.java
@@ -16,6 +16,7 @@
 
 package android.media;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.text.Layout.Alignment;
 import android.text.SpannableStringBuilder;
@@ -44,6 +45,7 @@
 
     private WebVttRenderingWidget mRenderingWidget;
 
+    @UnsupportedAppUsage
     public WebVttRenderer(Context context) {
         mContext = context;
     }
diff --git a/media/java/android/media/audiofx/AudioEffect.java b/media/java/android/media/audiofx/AudioEffect.java
index 24c595f..1a456f6 100644
--- a/media/java/android/media/audiofx/AudioEffect.java
+++ b/media/java/android/media/audiofx/AudioEffect.java
@@ -19,6 +19,7 @@
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.os.Handler;
 import android.os.Looper;
@@ -400,6 +401,7 @@
      * @hide
      */
 
+    @UnsupportedAppUsage
     public AudioEffect(UUID type, UUID uuid, int priority, int audioSession)
             throws IllegalArgumentException, UnsupportedOperationException,
             RuntimeException {
@@ -629,6 +631,7 @@
      * @see #setParameter(byte[], byte[])
      * @hide
      */
+    @UnsupportedAppUsage
     public int setParameter(int[] param, short[] value)
             throws IllegalStateException {
         if (param.length > 2 || value.length > 2) {
@@ -778,6 +781,7 @@
      * In case of success, the returns the number of meaningful integers in value array.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getParameter(int[] param, int[] value)
             throws IllegalStateException {
         if (param.length > 2 || value.length > 2) {
@@ -846,6 +850,7 @@
      * @see #getParameter(byte[], byte[])
      * @hide
      */
+    @UnsupportedAppUsage
     public int getParameter(int[] param, byte[] value)
             throws IllegalStateException {
         if (param.length > 2) {
@@ -867,6 +872,7 @@
      * In case of failure, the returned value is negative and implementation specific.
      * @hide
      */
+    @UnsupportedAppUsage
     public int command(int cmdCode, byte[] command, byte[] reply)
             throws IllegalStateException {
         checkState("command()");
@@ -1277,6 +1283,7 @@
     /**
     * @hide
     */
+    @UnsupportedAppUsage
     public void checkState(String methodName) throws IllegalStateException {
         synchronized (mStateLock) {
             if (mState != STATE_INITIALIZED) {
diff --git a/media/java/android/media/audiofx/DefaultEffect.java b/media/java/android/media/audiofx/DefaultEffect.java
index a919868..ce087ad 100644
--- a/media/java/android/media/audiofx/DefaultEffect.java
+++ b/media/java/android/media/audiofx/DefaultEffect.java
@@ -24,6 +24,7 @@
  * <p>Applications should not use the DefaultEffect class directly but one of its derived classes
  * to control specific types of defaults:
  * <ul>
+ *   <li> {@link android.media.audiofx.SourceDefaultEffect}</li>
  *   <li> {@link android.media.audiofx.StreamDefaultEffect}</li>
  * </ul>
  * <p>Creating a DefaultEffect object will register the corresponding effect engine as a default
diff --git a/media/java/android/media/audiofx/SourceDefaultEffect.java b/media/java/android/media/audiofx/SourceDefaultEffect.java
new file mode 100644
index 0000000..d7a292e
--- /dev/null
+++ b/media/java/android/media/audiofx/SourceDefaultEffect.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2018 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.audiofx;
+
+import android.annotation.RequiresPermission;
+import android.app.ActivityThread;
+import android.util.Log;
+import java.util.UUID;
+
+/**
+ * SourceDefaultEffect is a default effect that attaches automatically to all AudioRecord and
+ * MediaRecorder instances of a given source type.
+ * <p>see {@link android.media.audiofx.DefaultEffect} class for more details on default effects.
+ * @hide
+ */
+
+public class SourceDefaultEffect extends DefaultEffect {
+    static {
+        System.loadLibrary("audioeffect_jni");
+    }
+
+    private final static String TAG = "SourceDefaultEffect-JAVA";
+
+    /**
+     * Class constructor.
+     *
+     * @param type type of effect engine to be default. This parameter is ignored if uuid is set,
+     *             and can be set to {@link android.media.audiofx.AudioEffect#EFFECT_TYPE_NULL}
+     *             in that case.
+     * @param uuid unique identifier of a particular effect implementation to be default. This
+     *             parameter can be set to
+     *             {@link android.media.audiofx.AudioEffect#EFFECT_TYPE_NULL}, in which case only
+     *             the type will be used to select the effect.
+     * @param priority the priority level requested by the application for controlling the effect
+     *             engine. As the same engine can be shared by several applications, this parameter
+     *             indicates how much the requesting application needs control of effect parameters.
+     *             The normal priority is 0, above normal is a positive number, below normal a
+     *             negative number.
+     * @param source a MediaRecorder.AudioSource.* constant from
+     *             {@link android.media.MediaRecorder.AudioSource} indicating
+     *             what sources the given effect should attach to by default. Note that similar
+     *             sources may share defaults.
+     *
+     * @throws java.lang.IllegalArgumentException
+     * @throws java.lang.UnsupportedOperationException
+     * @throws java.lang.RuntimeException
+     */
+    @RequiresPermission(value = android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS,
+                        conditional = true)  // Android Things uses an alternate permission.
+    public SourceDefaultEffect(UUID type, UUID uuid, int priority, int source) {
+        int[] id = new int[1];
+        int initResult = native_setup(type.toString(),
+                                      uuid.toString(),
+                                      priority,
+                                      source,
+                                      ActivityThread.currentOpPackageName(),
+                                      id);
+        if (initResult != AudioEffect.SUCCESS) {
+            Log.e(TAG, "Error code " + initResult + " when initializing SourceDefaultEffect");
+            switch (initResult) {
+                case AudioEffect.ERROR_BAD_VALUE:
+                    throw (new IllegalArgumentException(
+                            "Source, type uuid, or implementation uuid not supported."));
+                case AudioEffect.ERROR_INVALID_OPERATION:
+                    throw (new UnsupportedOperationException(
+                            "Effect library not loaded"));
+                default:
+                    throw (new RuntimeException(
+                            "Cannot initialize effect engine for type: " + type
+                            + " Error: " + initResult));
+            }
+        }
+
+        mId = id[0];
+    }
+
+
+    /**
+     * Releases the native SourceDefaultEffect resources. It is a good practice to
+     * release the default effect when done with use as control can be returned to
+     * other applications or the native resources released.
+     */
+    public void release() {
+        native_release(mId);
+    }
+
+    @Override
+    protected void finalize() {
+        release();
+    }
+
+    // ---------------------------------------------------------
+    // Native methods called from the Java side
+    // --------------------
+
+    private native final int native_setup(String type,
+                                          String uuid,
+                                          int priority,
+                                          int source,
+                                          String opPackageName,
+                                          int[] id);
+
+    private native final void native_release(int id);
+}
diff --git a/media/java/android/media/audiofx/Visualizer.java b/media/java/android/media/audiofx/Visualizer.java
index f2b4fe0..a7bdf4f 100644
--- a/media/java/android/media/audiofx/Visualizer.java
+++ b/media/java/android/media/audiofx/Visualizer.java
@@ -16,6 +16,7 @@
 
 package android.media.audiofx;
 
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.util.Log;
 import java.lang.ref.WeakReference;
@@ -164,6 +165,7 @@
     /**
      * System wide unique Identifier of the visualizer engine used by this Visualizer instance
      */
+    @UnsupportedAppUsage
     private int mId;
 
     /**
diff --git a/media/java/android/media/audiopolicy/AudioMix.java b/media/java/android/media/audiopolicy/AudioMix.java
index fca0cc7..8bc1d35 100644
--- a/media/java/android/media/audiopolicy/AudioMix.java
+++ b/media/java/android/media/audiopolicy/AudioMix.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.media.AudioDeviceInfo;
 import android.media.AudioFormat;
 import android.media.AudioSystem;
@@ -33,17 +34,24 @@
 @SystemApi
 public class AudioMix {
 
+    @UnsupportedAppUsage
     private AudioMixingRule mRule;
+    @UnsupportedAppUsage
     private AudioFormat mFormat;
+    @UnsupportedAppUsage
     private int mRouteFlags;
+    @UnsupportedAppUsage
     private int mMixType = MIX_TYPE_INVALID;
 
     // written by AudioPolicy
     int mMixState = MIX_STATE_DISABLED;
+    @UnsupportedAppUsage
     int mCallbackFlags;
+    @UnsupportedAppUsage
     String mDeviceAddress;
 
     // initialized in constructor, read by AudioPolicyConfig
+    @UnsupportedAppUsage
     final int mDeviceSystemType; // an AudioSystem.DEVICE_* value, not AudioDeviceInfo.TYPE_*
 
     /**
diff --git a/media/java/android/media/audiopolicy/AudioMixingRule.java b/media/java/android/media/audiopolicy/AudioMixingRule.java
index 749a45e..fbee62a 100644
--- a/media/java/android/media/audiopolicy/AudioMixingRule.java
+++ b/media/java/android/media/audiopolicy/AudioMixingRule.java
@@ -17,6 +17,7 @@
 package android.media.audiopolicy;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.media.AudioAttributes;
 import android.os.Parcel;
 import android.util.Log;
@@ -92,8 +93,11 @@
             RULE_EXCLUSION_MASK | RULE_MATCH_UID;
 
     static final class AudioMixMatchCriterion {
+        @UnsupportedAppUsage
         final AudioAttributes mAttr;
+        @UnsupportedAppUsage
         final int mIntProp;
+        @UnsupportedAppUsage
         final int mRule;
 
         /** input parameters must be valid */
@@ -157,6 +161,7 @@
 
     private final int mTargetMixType;
     int getTargetMixType() { return mTargetMixType; }
+    @UnsupportedAppUsage
     private final ArrayList<AudioMixMatchCriterion> mCriteria;
     ArrayList<AudioMixMatchCriterion> getCriteria() { return mCriteria; }
 
diff --git a/media/java/android/media/session/MediaController.java b/media/java/android/media/session/MediaController.java
index 3f8bab5..c4b82c3 100644
--- a/media/java/android/media/session/MediaController.java
+++ b/media/java/android/media/session/MediaController.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.pm.ParceledListSlice;
@@ -503,6 +504,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean controlsSameSession(MediaController other) {
         if (other == null) return false;
         return mSessionBinder.asBinder() == other.getSessionBinder().asBinder();
diff --git a/media/java/android/media/session/MediaSession.java b/media/java/android/media/session/MediaSession.java
index fad7e3f..d43cd30 100644
--- a/media/java/android/media/session/MediaSession.java
+++ b/media/java/android/media/session/MediaSession.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.app.Activity;
 import android.app.PendingIntent;
 import android.content.Context;
@@ -132,6 +133,7 @@
     private final CallbackStub mCbStub;
 
     // Do not change the name of mCallback. Support lib accesses this by using reflection.
+    @UnsupportedAppUsage
     private CallbackMessageHandler mCallback;
     private VolumeProvider mVolumeProvider;
     private PlaybackState mPlaybackState;
@@ -555,6 +557,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public String getCallingPackage() {
         if (mCallback != null && mCallback.mCurrentControllerInfo != null) {
             return mCallback.mCurrentControllerInfo.getPackageName();
@@ -1304,6 +1307,7 @@
         public static final int UNKNOWN_ID = -1;
 
         private final MediaDescription mDescription;
+        @UnsupportedAppUsage
         private final long mId;
 
         /**
diff --git a/media/java/android/media/session/MediaSessionLegacyHelper.java b/media/java/android/media/session/MediaSessionLegacyHelper.java
index 7c3af31..123c4f7 100644
--- a/media/java/android/media/session/MediaSessionLegacyHelper.java
+++ b/media/java/android/media/session/MediaSessionLegacyHelper.java
@@ -16,6 +16,7 @@
 
 package android.media.session;
 
+import android.annotation.UnsupportedAppUsage;
 import android.app.PendingIntent;
 import android.app.PendingIntent.CanceledException;
 import android.content.ComponentName;
@@ -65,6 +66,7 @@
                 .getSystemService(Context.MEDIA_SESSION_SERVICE);
     }
 
+    @UnsupportedAppUsage
     public static MediaSessionLegacyHelper getHelper(Context context) {
         synchronized (sLock) {
             if (sInstance == null) {
diff --git a/media/java/android/media/session/MediaSessionManager.java b/media/java/android/media/session/MediaSessionManager.java
index 98fb573..5ade4dd 100644
--- a/media/java/android/media/session/MediaSessionManager.java
+++ b/media/java/android/media/session/MediaSessionManager.java
@@ -22,6 +22,7 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
 import android.media.AudioManager;
@@ -144,6 +145,7 @@
      * @return A list of controllers for ongoing sessions.
      * @hide
      */
+    @UnsupportedAppUsage
     public @NonNull List<MediaController> getActiveSessionsForUser(
             @Nullable ComponentName notificationListener, int userId) {
         ArrayList<MediaController> controllers = new ArrayList<MediaController>();
diff --git a/media/java/android/media/soundtrigger/SoundTriggerDetector.java b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
index 7969ee7..56e5566 100644
--- a/media/java/android/media/soundtrigger/SoundTriggerDetector.java
+++ b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
@@ -22,6 +22,7 @@
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.hardware.soundtrigger.IRecognitionStatusCallback;
 import android.hardware.soundtrigger.SoundTrigger;
 import android.hardware.soundtrigger.SoundTrigger.RecognitionConfig;
@@ -164,6 +165,7 @@
          * @hide
          */
         @Nullable
+        @UnsupportedAppUsage
         public byte[] getData() {
             if (!mTriggerAvailable) {
                 return mData;
@@ -191,6 +193,7 @@
          * @hide
          */
         @Nullable
+        @UnsupportedAppUsage
         public Integer getCaptureSession() {
             if (mCaptureAvailable) {
                 return mCaptureSession;
diff --git a/media/java/android/media/soundtrigger/SoundTriggerManager.java b/media/java/android/media/soundtrigger/SoundTriggerManager.java
index 107ce8e..9eb0c6d 100644
--- a/media/java/android/media/soundtrigger/SoundTriggerManager.java
+++ b/media/java/android/media/soundtrigger/SoundTriggerManager.java
@@ -23,6 +23,7 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Context;
@@ -239,6 +240,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER)
+    @UnsupportedAppUsage
     public int loadSoundModel(SoundModel soundModel) {
         if (soundModel == null) {
             return STATUS_ERROR;
@@ -281,6 +283,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER)
+    @UnsupportedAppUsage
     public int startRecognition(@NonNull UUID soundModelId, @Nullable Bundle params,
         @NonNull ComponentName detectionService, @NonNull RecognitionConfig config) {
         Preconditions.checkNotNull(soundModelId);
@@ -300,6 +303,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER)
+    @UnsupportedAppUsage
     public int stopRecognition(UUID soundModelId) {
         if (soundModelId == null) {
             return STATUS_ERROR;
@@ -316,6 +320,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER)
+    @UnsupportedAppUsage
     public int unloadSoundModel(UUID soundModelId) {
         if (soundModelId == null) {
             return STATUS_ERROR;
@@ -333,6 +338,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_SOUND_TRIGGER)
+    @UnsupportedAppUsage
     public boolean isRecognitionActive(UUID soundModelId) {
         if (soundModelId == null) {
             return false;
diff --git a/media/java/android/media/tv/TvInputInfo.java b/media/java/android/media/tv/TvInputInfo.java
index 74085d3..5cb8fb8 100644
--- a/media/java/android/media/tv/TvInputInfo.java
+++ b/media/java/android/media/tv/TvInputInfo.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.StringRes;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -318,6 +319,7 @@
      * Returns the component of the service that implements this TV input.
      * @hide
      */
+    @UnsupportedAppUsage
     public ComponentName getComponent() {
         return new ComponentName(mService.serviceInfo.packageName, mService.serviceInfo.name);
     }
diff --git a/media/java/android/media/tv/TvInputService.java b/media/java/android/media/tv/TvInputService.java
index e24124d..d9017b4 100644
--- a/media/java/android/media/tv/TvInputService.java
+++ b/media/java/android/media/tv/TvInputService.java
@@ -22,6 +22,7 @@
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityManager;
 import android.app.Service;
 import android.content.Context;
@@ -283,6 +284,7 @@
         private OverlayViewCleanUpTask mOverlayViewCleanUpTask;
         private boolean mOverlayViewEnabled;
         private IBinder mWindowToken;
+        @UnsupportedAppUsage
         private Rect mOverlayFrame;
         private long mStartPositionMs = TvInputManager.TIME_SHIFT_INVALID_TIME;
         private long mCurrentPositionMs = TvInputManager.TIME_SHIFT_INVALID_TIME;
diff --git a/media/jni/audioeffect/Android.bp b/media/jni/audioeffect/Android.bp
index 0063c11..09c546a 100644
--- a/media/jni/audioeffect/Android.bp
+++ b/media/jni/audioeffect/Android.bp
@@ -3,6 +3,7 @@
 
     srcs: [
         "android_media_AudioEffect.cpp",
+        "android_media_SourceDefaultEffect.cpp",
         "android_media_StreamDefaultEffect.cpp",
         "android_media_Visualizer.cpp",
     ],
diff --git a/media/jni/audioeffect/android_media_AudioEffect.cpp b/media/jni/audioeffect/android_media_AudioEffect.cpp
index d3ba9f2..8c9025b 100644
--- a/media/jni/audioeffect/android_media_AudioEffect.cpp
+++ b/media/jni/audioeffect/android_media_AudioEffect.cpp
@@ -907,6 +907,7 @@
 
 // ----------------------------------------------------------------------------
 
+extern int register_android_media_SourceDefaultEffect(JNIEnv *env);
 extern int register_android_media_StreamDefaultEffect(JNIEnv *env);
 extern int register_android_media_visualizer(JNIEnv *env);
 
@@ -932,6 +933,11 @@
         goto bail;
     }
 
+    if (register_android_media_SourceDefaultEffect(env) < 0) {
+        ALOGE("ERROR: SourceDefaultEffect native registration failed\n");
+        goto bail;
+    }
+
     if (register_android_media_StreamDefaultEffect(env) < 0) {
         ALOGE("ERROR: StreamDefaultEffect native registration failed\n");
         goto bail;
diff --git a/media/jni/audioeffect/android_media_SourceDefaultEffect.cpp b/media/jni/audioeffect/android_media_SourceDefaultEffect.cpp
new file mode 100644
index 0000000..d244bcb7
--- /dev/null
+++ b/media/jni/audioeffect/android_media_SourceDefaultEffect.cpp
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "SourceDefaultEffect-JNI"
+
+#include <utils/Errors.h>
+#include <utils/Log.h>
+#include <jni.h>
+#include <nativehelper/JNIHelp.h>
+#include <android_runtime/AndroidRuntime.h>
+#include "media/AudioEffect.h"
+
+#include <nativehelper/ScopedUtfChars.h>
+
+#include "android_media_AudioEffect.h"
+
+using namespace android;
+
+static const char* const kClassPathName = "android/media/audiofx/SourceDefaultEffect";
+
+static jint android_media_SourceDefaultEffect_native_setup(JNIEnv *env,
+                                                           jobject /*thiz*/,
+                                                           jstring type,
+                                                           jstring uuid,
+                                                           jint priority,
+                                                           jint source,
+                                                           jstring opPackageName,
+                                                           jintArray jId)
+{
+    ALOGV("android_media_SourceDefaultEffect_native_setup");
+    status_t lStatus = NO_ERROR;
+    jint* nId = NULL;
+    const char *typeStr = NULL;
+    const char *uuidStr = NULL;
+
+    ScopedUtfChars opPackageNameStr(env, opPackageName);
+
+    if (type != NULL) {
+        typeStr = env->GetStringUTFChars(type, NULL);
+        if (typeStr == NULL) {  // Out of memory
+            lStatus = NO_MEMORY;
+            jniThrowException(env, "java/lang/RuntimeException", "Out of memory");
+            goto setup_exit;
+        }
+    }
+
+    if (uuid != NULL) {
+        uuidStr = env->GetStringUTFChars(uuid, NULL);
+        if (uuidStr == NULL) {  // Out of memory
+            lStatus = NO_MEMORY;
+            jniThrowException(env, "java/lang/RuntimeException", "Out of memory");
+            goto setup_exit;
+        }
+    }
+
+    if (typeStr == NULL && uuidStr == NULL) {
+        lStatus = BAD_VALUE;
+        goto setup_exit;
+    }
+
+    nId = reinterpret_cast<jint *>(env->GetPrimitiveArrayCritical(jId, NULL));
+    if (nId == NULL) {
+        ALOGE("setup: Error retrieving id pointer");
+        lStatus = BAD_VALUE;
+        goto setup_exit;
+    }
+
+    // create the native SourceDefaultEffect.
+    audio_unique_id_t id;
+    lStatus = AudioEffect::addSourceDefaultEffect(typeStr,
+                                                  String16(opPackageNameStr.c_str()),
+                                                  uuidStr,
+                                                  priority,
+                                                  static_cast<audio_source_t>(source),
+                                                  &id);
+    if (lStatus != NO_ERROR) {
+        ALOGE("setup: Error adding SourceDefaultEffect");
+        goto setup_exit;
+    }
+
+    nId[0] = static_cast<jint>(id);
+
+setup_exit:
+    // Final cleanup and return.
+
+    if (nId != NULL) {
+        env->ReleasePrimitiveArrayCritical(jId, nId, 0);
+        nId = NULL;
+    }
+
+    if (uuidStr != NULL) {
+        env->ReleaseStringUTFChars(uuid, uuidStr);
+        uuidStr = NULL;
+    }
+
+    if (typeStr != NULL) {
+        env->ReleaseStringUTFChars(type, typeStr);
+        typeStr = NULL;
+    }
+
+    return AudioEffectJni::translateNativeErrorToJava(lStatus);
+}
+
+static void android_media_SourceDefaultEffect_native_release(JNIEnv */*env*/,
+                                                             jobject /*thiz*/,
+                                                             jint id) {
+    status_t lStatus = AudioEffect::removeSourceDefaultEffect(id);
+    if (lStatus != NO_ERROR) {
+        ALOGW("Error releasing SourceDefaultEffect: %d", lStatus);
+    }
+}
+
+// ----------------------------------------------------------------------------
+
+// Dalvik VM type signatures
+static const JNINativeMethod gMethods[] = {
+    {"native_setup",         "(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;[I)I",
+                                         (void *)android_media_SourceDefaultEffect_native_setup},
+    {"native_release",       "(I)V",      (void *)android_media_SourceDefaultEffect_native_release},
+};
+
+
+// ----------------------------------------------------------------------------
+
+int register_android_media_SourceDefaultEffect(JNIEnv *env)
+{
+    return AndroidRuntime::registerNativeMethods(env, kClassPathName, gMethods, NELEM(gMethods));
+}
diff --git a/opengl/java/javax/microedition/khronos/egl/EGL10.java b/opengl/java/javax/microedition/khronos/egl/EGL10.java
index 612d59c..8a25170 100644
--- a/opengl/java/javax/microedition/khronos/egl/EGL10.java
+++ b/opengl/java/javax/microedition/khronos/egl/EGL10.java
@@ -16,6 +16,7 @@
 
 package javax.microedition.khronos.egl;
 
+import android.annotation.UnsupportedAppUsage;
 import java.lang.String;
 
 public interface EGL10 extends EGL {
@@ -116,6 +117,7 @@
     String      eglQueryString(EGLDisplay display, int name);
     boolean     eglQuerySurface(EGLDisplay display, EGLSurface surface, int attribute, int[] value);
     /** @hide **/
+    @UnsupportedAppUsage
     boolean     eglReleaseThread();
     boolean     eglSwapBuffers(EGLDisplay display, EGLSurface surface);
     boolean     eglTerminate(EGLDisplay display);
diff --git a/packages/ExtServices/src/android/ext/services/notification/AgingHelper.java b/packages/ExtServices/src/android/ext/services/notification/AgingHelper.java
new file mode 100644
index 0000000..5782ea1
--- /dev/null
+++ b/packages/ExtServices/src/android/ext/services/notification/AgingHelper.java
@@ -0,0 +1,172 @@
+/**
+ * Copyright (C) 2018 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.ext.services.notification;
+
+import static android.app.NotificationManager.IMPORTANCE_MIN;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.ext.services.notification.NotificationCategorizer.Category;
+import android.net.Uri;
+import android.util.ArraySet;
+import android.util.Slog;
+
+import java.util.Set;
+
+public class AgingHelper {
+    private final static String TAG = "AgingHelper";
+    private final boolean DEBUG = false;
+
+    private static final String AGING_ACTION = AgingHelper.class.getSimpleName() + ".EVALUATE";
+    private static final int REQUEST_CODE_AGING = 1;
+    private static final String AGING_SCHEME = "aging";
+    private static final String EXTRA_KEY = "key";
+    private static final String EXTRA_CATEGORY = "category";
+
+    private static final int HOUR_MS = 1000 * 60 * 60;
+    private static final int TWO_HOURS_MS = 2 * HOUR_MS;
+
+    private Context mContext;
+    private NotificationCategorizer mNotificationCategorizer;
+    private AlarmManager mAm;
+    private Callback mCallback;
+
+    // The set of keys we've scheduled alarms for
+    private Set<String> mAging = new ArraySet<>();
+
+    public AgingHelper(Context context, NotificationCategorizer categorizer, Callback callback) {
+        mNotificationCategorizer = categorizer;
+        mContext = context;
+        mAm = mContext.getSystemService(AlarmManager.class);
+        mCallback = callback;
+
+        IntentFilter filter = new IntentFilter(AGING_ACTION);
+        filter.addDataScheme(AGING_SCHEME);
+        mContext.registerReceiver(mBroadcastReceiver, filter);
+    }
+
+    // NAS lifecycle methods
+
+    public void onNotificationSeen(NotificationEntry entry) {
+        // user has strong opinions about this notification. we can't down rank it, so don't bother.
+        if (entry.getChannel().isImportanceLocked()) {
+            return;
+        }
+
+        @Category int category = mNotificationCategorizer.getCategory(entry);
+
+        // already very low
+        if (category == NotificationCategorizer.CATEGORY_MIN) {
+            return;
+        }
+
+        if (entry.hasSeen()) {
+            if (category == NotificationCategorizer.CATEGORY_ONGOING
+                    || category > NotificationCategorizer.CATEGORY_REMINDER) {
+                scheduleAging(entry.getSbn().getKey(), category, TWO_HOURS_MS);
+            } else {
+                scheduleAging(entry.getSbn().getKey(), category, HOUR_MS);
+            }
+
+            mAging.add(entry.getSbn().getKey());
+        }
+    }
+
+    public void onNotificationPosted(NotificationEntry entry) {
+        cancelAging(entry.getSbn().getKey());
+    }
+
+    public void onNotificationRemoved(String key) {
+        cancelAging(key);
+    }
+
+    public void onDestroy() {
+        mContext.unregisterReceiver(mBroadcastReceiver);
+    }
+
+    // Aging
+
+    private void scheduleAging(String key, @Category int category, long duration) {
+        if (mAging.contains(key)) {
+            // already scheduled. Don't reset aging just because the user saw the noti again.
+            return;
+        }
+        final PendingIntent pi = createPendingIntent(key, category);
+        long time = System.currentTimeMillis() + duration;
+        if (DEBUG) Slog.d(TAG, "Scheduling evaluate for " + key + " in ms: " + duration);
+        mAm.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, time, pi);
+    }
+
+    private void cancelAging(String key) {
+        final PendingIntent pi = createPendingIntent(key);
+        mAm.cancel(pi);
+        mAging.remove(key);
+    }
+
+    private Intent createBaseIntent(String key) {
+        return new Intent(AGING_ACTION)
+                .setData(new Uri.Builder().scheme(AGING_SCHEME).appendPath(key).build());
+    }
+
+    private Intent createAgingIntent(String key, @Category int category) {
+        Intent intent = createBaseIntent(key);
+        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND)
+                .putExtra(EXTRA_CATEGORY, category)
+                .putExtra(EXTRA_KEY, key);
+        return intent;
+    }
+
+    private PendingIntent createPendingIntent(String key, @Category int category) {
+        return PendingIntent.getBroadcast(mContext,
+                REQUEST_CODE_AGING,
+                createAgingIntent(key, category),
+                PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+
+    private PendingIntent createPendingIntent(String key) {
+        return PendingIntent.getBroadcast(mContext,
+                REQUEST_CODE_AGING,
+                createBaseIntent(key),
+                PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+
+    private void demote(String key, @Category int category) {
+        int newImportance = IMPORTANCE_MIN;
+        // TODO: Change "aged" importance based on category
+        mCallback.sendAdjustment(key, newImportance);
+    }
+
+    protected interface Callback {
+        void sendAdjustment(String key, int newImportance);
+    }
+
+    private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (DEBUG) {
+                Slog.d(TAG, "Reposting notification");
+            }
+            if (AGING_ACTION.equals(intent.getAction())) {
+                demote(intent.getStringExtra(EXTRA_KEY), intent.getIntExtra(EXTRA_CATEGORY,
+                        NotificationCategorizer.CATEGORY_EVERYTHING_ELSE));
+            }
+        }
+    };
+}
diff --git a/packages/ExtServices/src/android/ext/services/notification/Assistant.java b/packages/ExtServices/src/android/ext/services/notification/Assistant.java
index a8ecec3..f0f31fb 100644
--- a/packages/ExtServices/src/android/ext/services/notification/Assistant.java
+++ b/packages/ExtServices/src/android/ext/services/notification/Assistant.java
@@ -18,23 +18,28 @@
 
 import static android.app.NotificationManager.IMPORTANCE_LOW;
 import static android.app.NotificationManager.IMPORTANCE_MIN;
+import static android.service.notification.Adjustment.KEY_IMPORTANCE;
 import static android.service.notification.NotificationListenerService.Ranking
         .USER_SENTIMENT_NEGATIVE;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.ActivityThread;
+import android.app.AlarmManager;
 import android.app.INotificationManager;
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.content.ContentResolver;
 import android.content.Context;
+import android.content.pm.IPackageManager;
 import android.database.ContentObserver;
+import android.ext.services.notification.AgingHelper.Callback;
 import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Environment;
 import android.os.Handler;
+import android.os.UserHandle;
 import android.os.storage.StorageManager;
 import android.provider.Settings;
 import android.service.notification.Adjustment;
@@ -64,6 +69,7 @@
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -89,15 +95,17 @@
     private int mStreakLimit;
     private SmartActionsHelper mSmartActionsHelper;
     private NotificationCategorizer mNotificationCategorizer;
+    private AgingHelper mAgingHelper;
 
     // key : impressions tracker
     // TODO: prune deleted channels and apps
-    final ArrayMap<String, ChannelImpressions> mkeyToImpressions = new ArrayMap<>();
-    // SBN key : channel id
-    ArrayMap<String, String> mLiveNotifications = new ArrayMap<>();
+    private final ArrayMap<String, ChannelImpressions> mkeyToImpressions = new ArrayMap<>();
+    // SBN key : entry
+    protected ArrayMap<String, NotificationEntry> mLiveNotifications = new ArrayMap<>();
 
     private Ranking mFakeRanking = null;
     private AtomicFile mFile = null;
+    private IPackageManager mPackageManager;
     protected SettingsObserver mSettingsObserver;
 
     public Assistant() {
@@ -108,9 +116,13 @@
         super.onCreate();
         // Contexts are correctly hooked up by the creation step, which is required for the observer
         // to be hooked up/initialized.
+        mPackageManager = ActivityThread.getPackageManager();
         mSettingsObserver = new SettingsObserver(mHandler);
         mSmartActionsHelper = new SmartActionsHelper();
         mNotificationCategorizer = new NotificationCategorizer();
+        mAgingHelper = new AgingHelper(getContext(),
+                mNotificationCategorizer,
+                new AgingCallback());
     }
 
     private void loadFile() {
@@ -157,7 +169,7 @@
         }
     }
 
-    private void saveFile() throws IOException {
+    private void saveFile() {
         AsyncTask.execute(() -> {
             final FileOutputStream stream;
             try {
@@ -200,6 +212,9 @@
     public Adjustment onNotificationEnqueued(StatusBarNotification sbn,
             NotificationChannel channel) {
         if (DEBUG) Log.i(TAG, "ENQUEUED " + sbn.getKey() + " on " + channel.getId());
+        if (!isForCurrentUser(sbn)) {
+            return null;
+        }
         NotificationEntry entry = new NotificationEntry(
                 ActivityThread.getPackageManager(), sbn, channel);
         ArrayList<Notification.Action> actions =
@@ -222,7 +237,7 @@
             signals.putCharSequenceArrayList(Adjustment.KEY_SMART_REPLIES, smartReplies);
         }
         if (mNotificationCategorizer.shouldSilence(entry)) {
-            signals.putInt(Adjustment.KEY_IMPORTANCE, IMPORTANCE_LOW);
+            signals.putInt(KEY_IMPORTANCE, IMPORTANCE_LOW);
         }
 
         return new Adjustment(
@@ -237,8 +252,13 @@
     public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) {
         if (DEBUG) Log.i(TAG, "POSTED " + sbn.getKey());
         try {
+            if (!isForCurrentUser(sbn)) {
+                return;
+            }
             Ranking ranking = getRanking(sbn.getKey(), rankingMap);
             if (ranking != null && ranking.getChannel() != null) {
+                NotificationEntry entry = new NotificationEntry(mPackageManager,
+                        sbn, ranking.getChannel());
                 String key = getKey(
                         sbn.getPackageName(), sbn.getUserId(), ranking.getChannel().getId());
                 ChannelImpressions ci = mkeyToImpressions.getOrDefault(key,
@@ -248,7 +268,8 @@
                             sbn.getPackageName(), sbn.getKey(), sbn.getUserId()));
                 }
                 mkeyToImpressions.put(key, ci);
-                mLiveNotifications.put(sbn.getKey(), ranking.getChannel().getId());
+                mLiveNotifications.put(sbn.getKey(), entry);
+                mAgingHelper.onNotificationPosted(entry);
             }
         } catch (Throwable e) {
             Log.e(TAG, "Error occurred processing post", e);
@@ -259,8 +280,11 @@
     public void onNotificationRemoved(StatusBarNotification sbn, RankingMap rankingMap,
             NotificationStats stats, int reason) {
         try {
+            if (!isForCurrentUser(sbn)) {
+                return;
+            }
             boolean updatedImpressions = false;
-            String channelId = mLiveNotifications.remove(sbn.getKey());
+            String channelId = mLiveNotifications.remove(sbn.getKey()).getChannel().getId();
             String key = getKey(sbn.getPackageName(), sbn.getUserId(), channelId);
             synchronized (mkeyToImpressions) {
                 ChannelImpressions ci = mkeyToImpressions.getOrDefault(key,
@@ -302,6 +326,22 @@
     }
 
     @Override
+    public void onNotificationsSeen(List<String> keys) {
+        if (keys == null) {
+            return;
+        }
+
+        for (String key : keys) {
+            NotificationEntry entry = mLiveNotifications.get(key);
+
+            if (entry != null) {
+                entry.setSeen();
+                mAgingHelper.onNotificationSeen(entry);
+            }
+        }
+    }
+
+    @Override
     public void onListenerConnected() {
         if (DEBUG) Log.i(TAG, "CONNECTED");
         try {
@@ -318,6 +358,17 @@
         }
     }
 
+    @Override
+    public void onListenerDisconnected() {
+        if (mAgingHelper != null) {
+            mAgingHelper.onDestroy();
+        }
+    }
+
+    private boolean isForCurrentUser(StatusBarNotification sbn) {
+        return sbn != null && sbn.getUserId() == UserHandle.myUserId();
+    }
+
     protected String getKey(String pkg, int userId, String channelId) {
         return pkg + "|" + userId + "|" + channelId;
     }
@@ -361,6 +412,11 @@
     }
 
     @VisibleForTesting
+    public void setPackageManager(IPackageManager pm) {
+        mPackageManager = pm;
+    }
+
+    @VisibleForTesting
     public ChannelImpressions getImpressions(String key) {
         synchronized (mkeyToImpressions) {
             return mkeyToImpressions.get(key);
@@ -380,6 +436,20 @@
         return impressions;
     }
 
+    protected final class AgingCallback implements Callback {
+        @Override
+        public void sendAdjustment(String key, int newImportance) {
+            NotificationEntry entry = mLiveNotifications.get(key);
+            if (entry != null) {
+                Bundle bundle = new Bundle();
+                bundle.putInt(KEY_IMPORTANCE, newImportance);
+                Adjustment adjustment = new Adjustment(entry.getSbn().getPackageName(), key, bundle,
+                        "aging", entry.getSbn().getUserId());
+                adjustNotification(adjustment);
+            }
+        }
+    }
+
     /**
      * Observer for updates on blocking helper threshold values.
      */
diff --git a/packages/ExtServices/src/android/ext/services/notification/NotificationEntry.java b/packages/ExtServices/src/android/ext/services/notification/NotificationEntry.java
index cdc0990..8fee822 100644
--- a/packages/ExtServices/src/android/ext/services/notification/NotificationEntry.java
+++ b/packages/ExtServices/src/android/ext/services/notification/NotificationEntry.java
@@ -50,6 +50,7 @@
     private AudioAttributes mAttributes;
     private NotificationChannel mChannel;
     private int mImportance;
+    private boolean mSeen;
 
     public NotificationEntry(IPackageManager packageManager, StatusBarNotification sbn,
             NotificationChannel channel) {
@@ -198,6 +199,14 @@
         return false;
     }
 
+    public void setSeen() {
+        mSeen = true;
+    }
+
+    public boolean hasSeen() {
+        return mSeen;
+    }
+
     public StatusBarNotification getSbn() {
         return mSbn;
     }
diff --git a/packages/ExtServices/tests/src/android/ext/services/notification/AgingHelperTest.java b/packages/ExtServices/tests/src/android/ext/services/notification/AgingHelperTest.java
new file mode 100644
index 0000000..b023b36
--- /dev/null
+++ b/packages/ExtServices/tests/src/android/ext/services/notification/AgingHelperTest.java
@@ -0,0 +1,153 @@
+/**
+ * Copyright (C) 2018 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.ext.services.notification;
+
+import static android.app.NotificationManager.IMPORTANCE_HIGH;
+import static android.app.NotificationManager.IMPORTANCE_MIN;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.AlarmManager;
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.PendingIntent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.os.Build;
+import android.os.Process;
+import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+import android.testing.TestableContext;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@RunWith(AndroidJUnit4.class)
+public class AgingHelperTest {
+    private String mPkg = "pkg";
+    private int mUid = 2018;
+
+    @Rule
+    public final TestableContext mContext =
+            new TestableContext(InstrumentationRegistry.getTargetContext(), null);
+
+    @Mock
+    private NotificationCategorizer mCategorizer;
+    @Mock
+    private AlarmManager mAlarmManager;
+    @Mock
+    private IPackageManager mPackageManager;
+    @Mock
+    private AgingHelper.Callback mCallback;
+
+    private AgingHelper mAgingHelper;
+
+    private StatusBarNotification generateSbn(String channelId) {
+        Notification n = new Notification.Builder(mContext, channelId)
+                .setContentTitle("foo")
+                .build();
+
+        return new StatusBarNotification(mPkg, mPkg, 0, "tag", mUid, mUid, n,
+                UserHandle.SYSTEM, null, 0);
+    }
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mPkg = mContext.getPackageName();
+        mUid = Process.myUid();
+
+        ApplicationInfo info = mock(ApplicationInfo.class);
+        when(mPackageManager.getApplicationInfo(anyString(), anyInt(), anyInt()))
+                .thenReturn(info);
+        info.targetSdkVersion = Build.VERSION_CODES.P;
+
+        mContext.addMockSystemService(AlarmManager.class, mAlarmManager);
+
+        mAgingHelper = new AgingHelper(mContext, mCategorizer, mCallback);
+    }
+
+    @Test
+    public void testNoSnoozingOnPost() {
+        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_HIGH);
+        StatusBarNotification sbn = generateSbn(channel.getId());
+        NotificationEntry entry = new NotificationEntry(mPackageManager, sbn, channel);
+
+
+        mAgingHelper.onNotificationPosted(entry);
+        verify(mAlarmManager, never()).setExactAndAllowWhileIdle(anyInt(), anyLong(), any());
+    }
+
+    @Test
+    public void testPostResetsSnooze() {
+        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_HIGH);
+        StatusBarNotification sbn = generateSbn(channel.getId());
+        NotificationEntry entry = new NotificationEntry(mPackageManager, sbn, channel);
+
+
+        mAgingHelper.onNotificationPosted(entry);
+        verify(mAlarmManager, times(1)).cancel(any(PendingIntent.class));
+    }
+
+    @Test
+    public void testSnoozingOnSeen() {
+        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_HIGH);
+        StatusBarNotification sbn = generateSbn(channel.getId());
+        NotificationEntry entry = new NotificationEntry(mPackageManager, sbn, channel);
+        entry.setSeen();
+        when(mCategorizer.getCategory(entry)).thenReturn(NotificationCategorizer.CATEGORY_PEOPLE);
+
+        mAgingHelper.onNotificationSeen(entry);
+        verify(mAlarmManager, times(1)).setExactAndAllowWhileIdle(anyInt(), anyLong(), any());
+    }
+
+    @Test
+    public void testNoSnoozingOnSeenUserLocked() {
+        NotificationChannel channel = new NotificationChannel("", "", IMPORTANCE_HIGH);
+        channel.lockFields(NotificationChannel.USER_LOCKED_IMPORTANCE);
+        StatusBarNotification sbn = generateSbn(channel.getId());
+        NotificationEntry entry = new NotificationEntry(mPackageManager, sbn, channel);
+        when(mCategorizer.getCategory(entry)).thenReturn(NotificationCategorizer.CATEGORY_PEOPLE);
+
+        mAgingHelper.onNotificationSeen(entry);
+        verify(mAlarmManager, never()).setExactAndAllowWhileIdle(anyInt(), anyLong(), any());
+    }
+
+    @Test
+    public void testNoSnoozingOnSeenAlreadyLow() {
+        NotificationEntry entry = mock(NotificationEntry.class);
+        when(entry.getChannel()).thenReturn(new NotificationChannel("", "", IMPORTANCE_HIGH));
+        when(entry.getImportance()).thenReturn(IMPORTANCE_MIN);
+
+        mAgingHelper.onNotificationSeen(entry);
+        verify(mAlarmManager, never()).setExactAndAllowWhileIdle(anyInt(), anyLong(), any());
+    }
+}
diff --git a/packages/ExtServices/tests/src/android/ext/services/notification/AssistantTest.java b/packages/ExtServices/tests/src/android/ext/services/notification/AssistantTest.java
index bb68bc2..2820232 100644
--- a/packages/ExtServices/tests/src/android/ext/services/notification/AssistantTest.java
+++ b/packages/ExtServices/tests/src/android/ext/services/notification/AssistantTest.java
@@ -21,6 +21,8 @@
 import static android.app.NotificationManager.IMPORTANCE_MIN;
 
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
@@ -33,6 +35,9 @@
 import android.app.NotificationChannel;
 import android.content.ContentResolver;
 import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.IPackageManager;
+import android.os.Build;
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.service.notification.Adjustment;
@@ -80,6 +85,8 @@
 
     @Mock INotificationManager mNoMan;
     @Mock AtomicFile mFile;
+    @Mock
+    IPackageManager mPackageManager;
 
     Assistant mAssistant;
     Application mApplication;
@@ -113,6 +120,11 @@
         mAssistant = getService();
         mAssistant.setNoMan(mNoMan);
         mAssistant.setFile(mFile);
+        mAssistant.setPackageManager(mPackageManager);
+        ApplicationInfo info = mock(ApplicationInfo.class);
+        when(mPackageManager.getApplicationInfo(anyString(), anyInt(), anyInt()))
+                .thenReturn(info);
+        info.targetSdkVersion = Build.VERSION_CODES.P;
         when(mFile.startWrite()).thenReturn(mock(FileOutputStream.class));
     }
 
@@ -439,4 +451,19 @@
         // With the new threshold, the blocking helper should be triggered.
         assertEquals(true, ci.shouldTriggerBlock());
     }
+
+    @Test
+    public void testTrimLiveNotifications() {
+        StatusBarNotification sbn = generateSbn(PKG1, UID1, P1C1, "no", null);
+        mAssistant.setFakeRanking(generateRanking(sbn, P1C1));
+
+        mAssistant.onNotificationPosted(sbn, mock(RankingMap.class));
+
+        assertTrue(mAssistant.mLiveNotifications.containsKey(sbn.getKey()));
+
+        mAssistant.onNotificationRemoved(
+                sbn, mock(RankingMap.class), new NotificationStats(), 0);
+
+        assertFalse(mAssistant.mLiveNotifications.containsKey(sbn.getKey()));
+    }
 }
diff --git a/packages/PackageInstaller/AndroidManifest.xml b/packages/PackageInstaller/AndroidManifest.xml
index 513c862..2be9311 100644
--- a/packages/PackageInstaller/AndroidManifest.xml
+++ b/packages/PackageInstaller/AndroidManifest.xml
@@ -19,7 +19,7 @@
             android:label="@string/app_name"
             android:icon="@drawable/ic_app_icon"
             android:allowBackup="false"
-            android:theme="@style/DialogWhenLarge"
+            android:theme="@style/Theme.AlertDialogActivity"
             android:supportsRtl="true"
             android:defaultToDeviceProtectedStorage="true"
             android:directBootAware="true">
@@ -32,6 +32,7 @@
         </receiver>
 
         <activity android:name=".InstallStart"
+                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                 android:exported="true"
                 android:excludeFromRecents="true">
             <intent-filter android:priority="1">
@@ -59,13 +60,14 @@
                 android:exported="false" />
 
         <activity android:name=".DeleteStagedFileOnResult"
+            android:theme="@android:style/Theme.Translucent.NoTitleBar"
             android:exported="false" />
 
         <activity android:name=".PackageInstallerActivity"
                 android:exported="false" />
 
         <activity android:name=".InstallInstalling"
-                android:theme="@style/DialogWhenLargeNoAnimation"
+                android:theme="@style/Theme.AlertDialogActivity.NoAnimation"
                 android:exported="false" />
 
         <receiver android:name=".InstallEventReceiver"
@@ -77,18 +79,17 @@
         </receiver>
 
         <activity android:name=".InstallSuccess"
-                android:theme="@style/DialogWhenLargeNoAnimation"
+                android:theme="@style/Theme.AlertDialogActivity.NoAnimation"
                 android:exported="false" />
 
         <activity android:name=".InstallFailed"
-                android:theme="@style/DialogWhenLargeNoAnimation"
+                android:theme="@style/Theme.AlertDialogActivity.NoAnimation"
                 android:exported="false" />
 
         <activity android:name=".UninstallerActivity"
                 android:configChanges="orientation|keyboardHidden|screenSize"
                 android:excludeFromRecents="true"
-                android:noHistory="true"
-                android:theme="@style/AlertDialogActivity">
+                android:noHistory="true">
             <intent-filter android:priority="1">
                 <action android:name="android.intent.action.DELETE" />
                 <action android:name="android.intent.action.UNINSTALL_PACKAGE" />
@@ -107,7 +108,6 @@
 
         <activity android:name=".UninstallUninstalling"
             android:excludeFromRecents="true"
-            android:theme="@style/AlertDialogActivity"
             android:exported="false" />
 
         <receiver android:name=".UninstallFinish"
diff --git a/packages/PackageInstaller/res/layout/install_confirm.xml b/packages/PackageInstaller/res/layout/install_confirm.xml
deleted file mode 100644
index 6be46fc..0000000
--- a/packages/PackageInstaller/res/layout/install_confirm.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2016 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.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:orientation="vertical">
-
-    <LinearLayout android:id="@+id/app_snippet"
-        android:background="?android:attr/colorPrimary"
-        android:layout_width="match_parent"
-        android:layout_height="?android:attr/actionBarSize"
-        android:orientation="horizontal"
-        android:elevation="@dimen/headerElevation"
-        android:gravity="center_vertical">
-
-        <ImageView android:id="@+id/app_icon"
-            android:layout_marginStart="16dp"
-            android:layout_width="24dp"
-            android:layout_height="24dp"
-            android:scaleType="fitCenter"
-            android:src="@drawable/ic_file_download" />
-
-        <TextView android:id="@+id/app_name"
-            android:layout_marginStart="32dp"
-            android:layout_marginEnd="16dp"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/titleTextStyle"
-            android:singleLine="true"
-            android:text="@string/app_name_unknown"
-            android:ellipsize="end" />
-
-    </LinearLayout>
-
-    <ScrollView android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:padding="16dip">
-
-        <TextView android:id="@+id/install_confirm_question"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    </ScrollView>
-
-    <LinearLayout style="?android:attr/buttonBarStyle"
-        android:background="?android:attr/colorBackground"
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content"
-        android:orientation="horizontal"
-        android:padding="8dp"
-        android:measureWithLargestChild="true">
-
-        <!-- spacer to push buttons to the right -->
-        <View android:layout_width="0dp"
-            android:layout_height="0dp"
-            android:layout_weight="1" />
-
-        <Button android:id="@+id/cancel_button"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/cancel"
-            android:maxLines="2"
-            style="?android:attr/buttonBarButtonStyle" />
-
-        <Button android:id="@+id/ok_button"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:text="@string/install"
-            android:maxLines="2"
-            style="?android:attr/buttonBarButtonStyle" />
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/packages/PackageInstaller/res/layout/install_content_view.xml b/packages/PackageInstaller/res/layout/install_content_view.xml
new file mode 100644
index 0000000..5e94a29
--- /dev/null
+++ b/packages/PackageInstaller/res/layout/install_content_view.xml
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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.
+  -->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:theme="?android:attr/alertDialogTheme"
+    android:paddingTop="8dp"
+    android:paddingLeft="?android:attr/dialogPreferredPadding"
+    android:paddingRight="?android:attr/dialogPreferredPadding">
+
+    <LinearLayout
+        android:id="@+id/staging"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:visibility="invisible">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            style="@android:style/TextAppearance.Material.Subhead"
+            android:text="@string/message_staging" />
+
+        <ProgressBar
+            android:id="@+id/progress_indeterminate"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="8dp"
+            style="?android:attr/progressBarStyleHorizontal"
+            android:indeterminate="true" />
+
+    </LinearLayout>
+
+    <LinearLayout
+        android:id="@+id/installing"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:visibility="invisible">
+
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            style="@android:style/TextAppearance.Material.Subhead"
+            android:text="@string/installing" />
+
+        <ProgressBar
+            android:id="@+id/progress"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:paddingTop="8dp"
+            style="?android:attr/progressBarStyleHorizontal" />
+
+    </LinearLayout>
+
+    <TextView
+        android:id="@+id/install_confirm_question"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_confirm_question"
+        android:visibility="invisible" />
+
+    <TextView
+        android:id="@+id/install_confirm_question_update"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_confirm_question_update"
+        android:visibility="invisible" />
+
+    <TextView
+        android:id="@+id/install_confirm_question_update_system"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_confirm_question_update_system"
+        android:visibility="invisible" />
+
+    <TextView
+        android:id="@+id/install_success"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_done"
+        android:visibility="invisible" />
+
+    <TextView
+        android:id="@+id/install_failed"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_failed"
+        android:visibility="invisible" />
+
+    <TextView
+        android:id="@+id/install_failed_blocked"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_failed_blocked"
+        android:visibility="invisible" />
+
+    <TextView
+        android:id="@+id/install_failed_conflict"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_failed_conflict"
+        android:visibility="invisible" />
+
+    <TextView
+        android:id="@+id/install_failed_incompatible"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_failed_incompatible"
+        android:visibility="invisible" />
+
+    <TextView
+        android:id="@+id/install_failed_invalid_apk"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        style="@android:style/TextAppearance.Material.Subhead"
+        android:text="@string/install_failed_invalid_apk"
+        android:visibility="invisible" />
+
+</FrameLayout>
diff --git a/packages/PackageInstaller/res/layout/install_failed.xml b/packages/PackageInstaller/res/layout/install_failed.xml
deleted file mode 100644
index d000ee9..0000000
--- a/packages/PackageInstaller/res/layout/install_failed.xml
+++ /dev/null
@@ -1,96 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2016 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.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-    <LinearLayout android:id="@+id/app_snippet"
-            android:background="?android:attr/colorPrimary"
-            android:layout_width="match_parent"
-            android:layout_height="?android:attr/actionBarSize"
-            android:orientation="horizontal"
-            android:elevation="@dimen/headerElevation"
-            android:gravity="center_vertical">
-
-        <ImageView android:id="@+id/app_icon"
-                android:layout_marginStart="16dp"
-                android:layout_width="24dp"
-                android:layout_height="24dp"
-                android:scaleType="fitCenter" />
-
-        <TextView android:id="@+id/app_name"
-                android:layout_marginStart="32dp"
-                android:layout_marginEnd="16dp"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/titleTextStyle"
-                android:singleLine="true"
-                android:ellipsize="end" />
-
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/simple_status_view"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:orientation="vertical"
-            android:paddingLeft="16dip"
-            android:paddingRight="16dip">
-
-        <ImageView android:id="@+id/center_icon"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginBottom="12dp"
-                android:src="@drawable/ic_report_problem_92"
-                android:tint="@color/bigIconColor"
-                android:contentDescription="@null" />
-
-        <TextView android:id="@+id/simple_status"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    </LinearLayout>
-
-    <LinearLayout android:id="@+id/buttons_panel"
-            style="?android:attr/buttonBarStyle"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:measureWithLargestChild="true"
-            android:padding="8dip">
-
-        <!-- spacer to push button to the right -->
-        <View android:layout_width="0dp"
-                android:layout_height="0dp"
-                android:layout_weight="1" />
-
-        <Button android:id="@+id/done_button"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/done"
-                android:maxLines="2"
-                style="?android:attr/buttonBarButtonStyle" />
-
-    </LinearLayout>
-
-</LinearLayout>
-
-
diff --git a/packages/PackageInstaller/res/layout/install_installing.xml b/packages/PackageInstaller/res/layout/install_installing.xml
deleted file mode 100644
index a043a01..0000000
--- a/packages/PackageInstaller/res/layout/install_installing.xml
+++ /dev/null
@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<!-- Copyright (C) 2016 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-    <LinearLayout android:id="@+id/app_snippet"
-            android:background="?android:attr/colorPrimary"
-            android:layout_width="match_parent"
-            android:layout_height="?android:attr/actionBarSize"
-            android:orientation="horizontal"
-            android:elevation="@dimen/headerElevation"
-            android:gravity="center_vertical">
-
-        <ImageView
-                android:id="@+id/app_icon"
-                android:layout_width="24dp"
-                android:layout_height="24dp"
-                android:layout_marginStart="16dp"
-                android:scaleType="fitCenter" />
-
-        <TextView
-                android:id="@+id/app_name"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginStart="32dp"
-                android:layout_marginEnd="16dp"
-                android:ellipsize="end"
-                android:singleLine="true"
-                android:textAppearance="?android:attr/titleTextStyle" />
-
-    </LinearLayout>
-
-    <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:orientation="vertical"
-            android:paddingLeft="16dip"
-            android:paddingRight="16dip">
-
-        <ImageView
-                android:layout_width="92dp"
-                android:layout_height="92dp"
-                android:layout_marginBottom="12dp"
-                android:contentDescription="@null"
-                android:tint="@color/bigIconColor"
-                android:src="@drawable/ic_file_download" />
-
-        <ProgressBar
-                android:id="@+id/progress_bar"
-                style="?android:attr/progressBarStyleHorizontal"
-                android:layout_width="250dp"
-                android:layout_height="wrap_content"
-                android:indeterminate="false" />
-
-        <TextView
-                android:id="@+id/center_text"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_horizontal"
-                android:text="@string/installing"
-                android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    </LinearLayout>
-
-    <LinearLayout
-            android:id="@+id/buttons_panel"
-            style="?android:attr/buttonBarStyle"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:measureWithLargestChild="true"
-            android:orientation="horizontal"
-            android:padding="8dip">
-
-        <View
-                android:layout_width="0dp"
-                android:layout_height="0dp"
-                android:layout_weight="1" />
-
-        <Button
-                android:id="@+id/cancel_button"
-                style="?android:attr/buttonBarButtonStyle"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:maxLines="2"
-                android:text="@string/cancel" />
-
-    </LinearLayout>
-
-</LinearLayout>
diff --git a/packages/PackageInstaller/res/layout/install_staging.xml b/packages/PackageInstaller/res/layout/install_staging.xml
deleted file mode 100644
index e3022e7..0000000
--- a/packages/PackageInstaller/res/layout/install_staging.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2016 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.
-  -->
-
-<!--
-  Defines the layout of the splash screen that displays the security
-  settings required for an application and requests the confirmation of the
-  user before it is installed.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-    <!-- title bar -->
-    <LinearLayout android:id="@+id/app_snippet"
-            android:layout_width="match_parent"
-            android:layout_height="?android:attr/actionBarSize"
-            android:background="?android:attr/colorPrimary"
-            android:elevation="@dimen/headerElevation"
-            android:gravity="center_vertical"
-            android:orientation="horizontal">
-
-        <ImageView android:layout_width="24dp"
-                android:layout_height="24dp"
-                android:layout_marginLeft="16dp"
-                android:scaleType="fitCenter"
-                android:src="@drawable/ic_file_download"
-                android:tint="?android:attr/colorAccent" />
-
-        <TextView android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginLeft="32dp"
-                android:layout_marginRight="16dp"
-                android:ellipsize="end"
-                android:singleLine="true"
-                android:text="@string/app_name_unknown"
-                android:textAppearance="?android:attr/titleTextStyle" />
-
-    </LinearLayout>
-
-    <!-- content -->
-    <LinearLayout
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:orientation="vertical"
-            android:paddingLeft="16dip"
-            android:paddingRight="16dip">
-
-        <ImageView
-                android:layout_width="92dp"
-                android:layout_height="92dp"
-                android:scaleType="fitCenter"
-                android:layout_marginBottom="12dp"
-                android:contentDescription="@null"
-                android:tint="@color/bigIconColor"
-                android:src="@drawable/ic_file_download" />
-
-        <ProgressBar
-                style="?android:attr/progressBarStyleHorizontal"
-                android:layout_width="250dp"
-                android:layout_height="wrap_content"
-                android:indeterminate="true" />
-
-        <TextView
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_horizontal"
-                android:text="@string/message_staging"
-                android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    </LinearLayout>
-
-    <!-- Bottom buttons -->
-    <LinearLayout style="?android:attr/buttonBarStyle"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:padding="8dp">
-
-        <!-- spacer to push button to the right -->
-        <View android:layout_width="0dp"
-                android:layout_height="0dp"
-                android:layout_weight="1" />
-
-        <Button android:id="@+id/cancel_button"
-                style="?android:attr/buttonBarButtonStyle"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:maxLines="2"
-                android:text="@string/cancel" />
-
-    </LinearLayout>
-
-</LinearLayout>
-
-
diff --git a/packages/PackageInstaller/res/layout/install_success.xml b/packages/PackageInstaller/res/layout/install_success.xml
deleted file mode 100644
index fee6bed..0000000
--- a/packages/PackageInstaller/res/layout/install_success.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2016 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.
-  -->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="vertical">
-
-    <LinearLayout android:id="@+id/app_snippet"
-            android:background="?android:attr/colorPrimary"
-            android:layout_width="match_parent"
-            android:layout_height="?android:attr/actionBarSize"
-            android:orientation="horizontal"
-            android:elevation="@dimen/headerElevation"
-            android:gravity="center_vertical">
-
-        <ImageView android:id="@+id/app_icon"
-                android:layout_marginStart="16dp"
-                android:layout_width="24dp"
-                android:layout_height="24dp"
-                android:scaleType="fitCenter" />
-
-        <TextView android:id="@+id/app_name"
-                android:layout_marginStart="32dp"
-                android:layout_marginEnd="16dp"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:textAppearance="?android:attr/titleTextStyle"
-                android:singleLine="true"
-                android:ellipsize="end" />
-
-    </LinearLayout>
-
-    <LinearLayout android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:layout_weight="1"
-            android:gravity="center"
-            android:orientation="vertical"
-            android:paddingLeft="16dip"
-            android:paddingRight="16dip">
-
-        <ImageView android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:layout_marginBottom="12dp"
-                android:src="@drawable/ic_done_92"
-                android:tint="@color/bigIconColor"
-                android:contentDescription="@null" />
-
-        <TextView android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:gravity="center_horizontal"
-                android:text="@string/install_done"
-                android:textAppearance="?android:attr/textAppearanceMedium" />
-
-    </LinearLayout>
-
-    <LinearLayout style="?android:attr/buttonBarStyle"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:orientation="horizontal"
-            android:measureWithLargestChild="true"
-            android:padding="8dip">
-
-        <!-- spacer to push buttons to the right -->
-        <View android:layout_width="0dp"
-                android:layout_height="0dp"
-                android:layout_weight="1" />
-
-        <Button android:id="@+id/done_button"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/done"
-                android:maxLines="2"
-                style="?android:attr/buttonBarButtonStyle" />
-
-        <Button android:id="@+id/launch_button"
-                android:layout_width="wrap_content"
-                android:layout_height="wrap_content"
-                android:text="@string/launch"
-                android:maxLines="2"
-                style="?android:attr/buttonBarButtonStyle" />
-
-    </LinearLayout>
-
-</LinearLayout>
-
-
diff --git a/packages/PackageInstaller/res/values-night/themes.xml b/packages/PackageInstaller/res/values-night/themes.xml
new file mode 100644
index 0000000..483b0cf
--- /dev/null
+++ b/packages/PackageInstaller/res/values-night/themes.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2018 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>
+
+    <style name="Theme.AlertDialogActivity"
+            parent="@android:style/Theme.DeviceDefault.Dialog.Alert" />
+
+</resources>
diff --git a/packages/PackageInstaller/res/values/strings.xml b/packages/PackageInstaller/res/values/strings.xml
index 6c7160f..ba81278 100644
--- a/packages/PackageInstaller/res/values/strings.xml
+++ b/packages/PackageInstaller/res/values/strings.xml
@@ -36,11 +36,11 @@
     <!-- Message for updating an existing app [CHAR LIMIT=NONE] -->
     <string name="install_confirm_question_update">Do you want to install an update
             to this existing application?  Your existing data will not
-            be lost.  The updated application will get access to:</string>
+            be lost.</string>
     <!-- Message for updating an existing system app [CHAR LIMIT=NONE] -->
     <string name="install_confirm_question_update_system">Do you want to install an update
             to this built-in application?  Your existing data will not
-            be lost.  The updated application will get access to:</string>
+            be lost.</string>
     <!-- [CHAR LIMIT=100] -->
     <string name="install_failed">App not installed.</string>
     <!-- Reason displayed when installation fails because the package was blocked
diff --git a/packages/PackageInstaller/res/values/styles.xml b/packages/PackageInstaller/res/values/styles.xml
deleted file mode 100755
index f79f98f..0000000
--- a/packages/PackageInstaller/res/values/styles.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 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>
-
-    <style name="MediumText"
-            parent="@android:style/TextAppearance.Medium">
-        <item name="android:textColor">?android:attr/textColorPrimary</item>
-    </style>
-
-    <style name="SmallText"
-            parent="@android:style/TextAppearance.Small">
-        <item name="android:textColor">?android:attr/textColorPrimary</item>
-    </style>
-
-    <style name="TitleText">
-        <item name="android:fontFamily">sans-serif-medium</item>
-        <item name="android:textSize">20dp</item>
-        <item name="android:textColor">?android:attr/textColorPrimary</item>
-    </style>
-
-    <style name="ActionBar" parent="@android:style/Widget.Material.ActionBar.Solid">
-        <item name="android:contentInsetStart">72dp</item>
-    </style>
-
-</resources>
diff --git a/packages/PackageInstaller/res/values/themes.xml b/packages/PackageInstaller/res/values/themes.xml
index 6df6246..6c8e4c5 100644
--- a/packages/PackageInstaller/res/values/themes.xml
+++ b/packages/PackageInstaller/res/values/themes.xml
@@ -17,25 +17,11 @@
 
 <resources>
 
-    <style name="DialogWhenLarge"
-            parent="@android:style/Theme.DeviceDefault.Light.NoActionBar">
-        <item name="android:textAppearanceMedium">@style/MediumText</item>
-        <item name="android:textAppearanceSmall">@style/SmallText</item>
-        <item name="android:titleTextStyle">@style/TitleText</item>
-    </style>
-
-    <style name="DialogWhenLargeNoAnimation" parent="DialogWhenLarge">
+    <style name="Theme.AlertDialogActivity.NoAnimation">
         <item name="android:windowAnimationStyle">@null</item>
     </style>
 
-    <style name="AlertDialogActivity"
-            parent="@android:style/Theme.DeviceDefault.Light.Panel">
-        <item name="android:backgroundDimEnabled">true</item>
-    </style>
-
-    <style name="Header.Settings"
-            parent="@android:style/Theme.DeviceDefault.Settings">
-    </style>
-
+    <style name="Theme.AlertDialogActivity"
+            parent="@android:style/Theme.DeviceDefault.Light.Dialog.Alert" />
 
 </resources>
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallFailed.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallFailed.java
index 5ba2d32..54105bb 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallFailed.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallFailed.java
@@ -30,41 +30,49 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.util.Log;
-import android.widget.TextView;
+import android.view.View;
+
+import com.android.internal.app.AlertActivity;
 
 import java.io.File;
 
 /**
  * Installation failed: Return status code to the caller or display failure UI to user
  */
-public class InstallFailed extends Activity {
+public class InstallFailed extends AlertActivity {
     private static final String LOG_TAG = InstallFailed.class.getSimpleName();
 
     /** Label of the app that failed to install */
     private CharSequence mLabel;
 
     /**
-     * Convert an package installer status code into the user friendly label.
+     * Unhide the appropriate label for the statusCode.
      *
      * @param statusCode The status code from the package installer.
-     *
-     * @return The user friendly label for the status code
      */
-    private int getExplanationFromErrorCode(int statusCode) {
+    private void setExplanationFromErrorCode(int statusCode) {
         Log.d(LOG_TAG, "Installation status code: " + statusCode);
 
+        View viewToEnable;
         switch (statusCode) {
             case PackageInstaller.STATUS_FAILURE_BLOCKED:
-                return R.string.install_failed_blocked;
+                viewToEnable = requireViewById(R.id.install_failed_blocked);
+                break;
             case PackageInstaller.STATUS_FAILURE_CONFLICT:
-                return R.string.install_failed_conflict;
+                viewToEnable = requireViewById(R.id.install_failed_conflict);
+                break;
             case PackageInstaller.STATUS_FAILURE_INCOMPATIBLE:
-                return R.string.install_failed_incompatible;
+                viewToEnable = requireViewById(R.id.install_failed_incompatible);
+                break;
             case PackageInstaller.STATUS_FAILURE_INVALID:
-                return R.string.install_failed_invalid_apk;
+                viewToEnable = requireViewById(R.id.install_failed_invalid_apk);
+                break;
             default:
-                return R.string.install_failed;
+                viewToEnable = requireViewById(R.id.install_failed);
+                break;
         }
+
+        viewToEnable.setVisibility(View.VISIBLE);
     }
 
     @Override
@@ -89,8 +97,6 @@
                     .getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO);
             Uri packageURI = intent.getData();
 
-            setContentView(R.layout.install_failed);
-
             // Set header icon and title
             PackageUtil.AppSnippet as;
             PackageManager pm = getPackageManager();
@@ -106,7 +112,12 @@
             // Store label for dialog
             mLabel = as.label;
 
-            PackageUtil.initSnippetForNewApp(this, as, R.id.app_snippet);
+            mAlert.setIcon(as.icon);
+            mAlert.setTitle(as.label);
+            mAlert.setView(R.layout.install_content_view);
+            mAlert.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.done),
+                    (ignored, ignored2) -> finish(), null);
+            setupAlert();
 
             // Show out of space dialog if needed
             if (statusCode == PackageInstaller.STATUS_FAILURE_STORAGE) {
@@ -114,11 +125,7 @@
             }
 
             // Get status messages
-            ((TextView) findViewById(R.id.simple_status)).setText(
-                    getExplanationFromErrorCode(statusCode));
-
-            // Set up "done" button
-            findViewById(R.id.done_button).setOnClickListener(view -> finish());
+            setExplanationFromErrorCode(statusCode);
         }
     }
 
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
index c2dd740..deb6163 100755
--- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
@@ -19,8 +19,8 @@
 import static android.content.pm.PackageInstaller.SessionParams.UID_UNKNOWN;
 
 import android.annotation.Nullable;
-import android.app.Activity;
 import android.app.PendingIntent;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInstaller;
@@ -30,9 +30,11 @@
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.util.Log;
+import android.view.View;
 import android.widget.Button;
 import android.widget.ProgressBar;
 
+import com.android.internal.app.AlertActivity;
 import com.android.internal.content.PackageHelper;
 
 import java.io.File;
@@ -47,7 +49,7 @@
  * <p>This has two phases: First send the data to the package manager, then wait until the package
  * manager processed the result.</p>
  */
-public class InstallInstalling extends Activity {
+public class InstallInstalling extends AlertActivity {
     private static final String LOG_TAG = InstallInstalling.class.getSimpleName();
 
     private static final String SESSION_ID = "com.android.packageinstaller.SESSION_ID";
@@ -78,11 +80,31 @@
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        setContentView(R.layout.install_installing);
-
         ApplicationInfo appInfo = getIntent()
                 .getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO);
         mPackageURI = getIntent().getData();
+        final File sourceFile = new File(mPackageURI.getPath());
+        PackageUtil.AppSnippet as = PackageUtil.getAppSnippet(this, appInfo, sourceFile);
+
+        mAlert.setIcon(as.icon);
+        mAlert.setTitle(as.label);
+        mAlert.setView(R.layout.install_content_view);
+        mAlert.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel),
+                (ignored, ignored2) -> {
+                    if (mInstallingTask != null) {
+                        mInstallingTask.cancel(true);
+                    }
+
+                    if (mSessionId > 0) {
+                        getPackageManager().getPackageInstaller().abandonSession(mSessionId);
+                        mSessionId = 0;
+                    }
+
+                    setResult(RESULT_CANCELED);
+                    finish();
+                }, null);
+        setupAlert();
+        requireViewById(R.id.installing).setVisibility(View.VISIBLE);
 
         if ("package".equals(mPackageURI.getScheme())) {
             try {
@@ -92,10 +114,6 @@
                 launchFailure(PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
             }
         } else {
-            final File sourceFile = new File(mPackageURI.getPath());
-            PackageUtil.initSnippetForNewApp(this, PackageUtil.getAppSnippet(this, appInfo,
-                    sourceFile), R.id.app_snippet);
-
             if (savedInstanceState != null) {
                 mSessionId = savedInstanceState.getInt(SESSION_ID);
                 mInstallId = savedInstanceState.getInt(INSTALL_ID);
@@ -153,21 +171,7 @@
                 }
             }
 
-            mCancelButton = (Button) findViewById(R.id.cancel_button);
-
-            mCancelButton.setOnClickListener(view -> {
-                if (mInstallingTask != null) {
-                    mInstallingTask.cancel(true);
-                }
-
-                if (mSessionId > 0) {
-                    getPackageManager().getPackageInstaller().abandonSession(mSessionId);
-                    mSessionId = 0;
-                }
-
-                setResult(RESULT_CANCELED);
-                finish();
-            });
+            mCancelButton = mAlert.getButton(DialogInterface.BUTTON_NEGATIVE);
 
             mSessionCallback = new InstallSessionCallback();
         }
@@ -307,7 +311,7 @@
         @Override
         public void onProgressChanged(int sessionId, float progress) {
             if (sessionId == mSessionId) {
-                ProgressBar progressBar = (ProgressBar)findViewById(R.id.progress_bar);
+                ProgressBar progressBar = requireViewById(R.id.progress);
                 progressBar.setMax(Integer.MAX_VALUE);
                 progressBar.setProgress((int) (Integer.MAX_VALUE * progress));
             }
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java
index 1bc9dbd..98438cd 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallStaging.java
@@ -29,6 +29,9 @@
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.util.Log;
+import android.view.View;
+
+import com.android.internal.app.AlertActivity;
 
 import java.io.File;
 import java.io.FileOutputStream;
@@ -40,7 +43,7 @@
  * If a package gets installed from an content URI this step loads the package and turns it into
  * and installation from a file. Then it re-starts the installation as usual.
  */
-public class InstallStaging extends Activity {
+public class InstallStaging extends AlertActivity {
     private static final String LOG_TAG = InstallStaging.class.getSimpleName();
 
     private static final String STAGED_FILE = "STAGED_FILE";
@@ -55,7 +58,19 @@
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        setContentView(R.layout.install_staging);
+        mAlert.setIcon(R.drawable.ic_file_download);
+        mAlert.setTitle(getString(R.string.app_name_unknown));
+        mAlert.setView(R.layout.install_content_view);
+        mAlert.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel),
+                (ignored, ignored2) -> {
+                    if (mStagingTask != null) {
+                        mStagingTask.cancel(true);
+                    }
+                    setResult(RESULT_CANCELED);
+                    finish();
+                }, null);
+        setupAlert();
+        requireViewById(R.id.staging).setVisibility(View.VISIBLE);
 
         if (savedInstanceState != null) {
             mStagedFile = new File(savedInstanceState.getString(STAGED_FILE));
@@ -64,14 +79,6 @@
                 mStagedFile = null;
             }
         }
-
-        findViewById(R.id.cancel_button).setOnClickListener(view -> {
-            if (mStagingTask != null) {
-                mStagingTask.cancel(true);
-            }
-            setResult(RESULT_CANCELED);
-            finish();
-        });
     }
 
     @Override
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallSuccess.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallSuccess.java
index 94f6b31..705d3f4 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallSuccess.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallSuccess.java
@@ -19,6 +19,7 @@
 import android.annotation.Nullable;
 import android.app.Activity;
 import android.content.ActivityNotFoundException;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
@@ -26,15 +27,18 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.util.Log;
+import android.view.View;
 import android.widget.Button;
 
+import com.android.internal.app.AlertActivity;
+
 import java.io.File;
 import java.util.List;
 
 /**
  * Finish installation: Return status code to the caller or display "success" UI to user
  */
-public class InstallSuccess extends Activity {
+public class InstallSuccess extends AlertActivity {
     private static final String LOG_TAG = InstallSuccess.class.getSimpleName();
 
     @Override
@@ -53,8 +57,6 @@
                     intent.getParcelableExtra(PackageUtil.INTENT_ATTR_APPLICATION_INFO);
             Uri packageURI = intent.getData();
 
-            setContentView(R.layout.install_success);
-
             // Set header icon and title
             PackageUtil.AppSnippet as;
             PackageManager pm = getPackageManager();
@@ -67,16 +69,20 @@
                 as = PackageUtil.getAppSnippet(this, appInfo, sourceFile);
             }
 
-            PackageUtil.initSnippetForNewApp(this, as, R.id.app_snippet);
-
-            // Set up "done" button
-            findViewById(R.id.done_button).setOnClickListener(view -> {
-                if (appInfo.packageName != null) {
-                    Log.i(LOG_TAG, "Finished installing " + appInfo.packageName);
-                }
-                finish();
-            });
-
+            mAlert.setIcon(as.icon);
+            mAlert.setTitle(as.label);
+            mAlert.setView(R.layout.install_content_view);
+            mAlert.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.launch), null,
+                    null);
+            mAlert.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.done),
+                    (ignored, ignored2) -> {
+                        if (appInfo.packageName != null) {
+                            Log.i(LOG_TAG, "Finished installing " + appInfo.packageName);
+                        }
+                        finish();
+                    }, null);
+            setupAlert();
+            requireViewById(R.id.install_success).setVisibility(View.VISIBLE);
             // Enable or disable "launch" button
             Intent launchIntent = getPackageManager().getLaunchIntentForPackage(
                     appInfo.packageName);
@@ -89,7 +95,7 @@
                 }
             }
 
-            Button launchButton = (Button)findViewById(R.id.launch_button);
+            Button launchButton = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
             if (enabled) {
                 launchButton.setOnClickListener(view -> {
                     try {
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/OverlayTouchActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/OverlayTouchActivity.java
deleted file mode 100644
index 1fdbd97..0000000
--- a/packages/PackageInstaller/src/com/android/packageinstaller/OverlayTouchActivity.java
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2018 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.packageinstaller;
-
-import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
-
-import android.app.Activity;
-import android.os.Bundle;
-
-class OverlayTouchActivity extends Activity {
-    @Override
-    protected void onCreate(Bundle savedInstanceState) {
-        getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
-        super.onCreate(savedInstanceState);
-    }
-}
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
index 97bafe7..580308a 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageInstallerActivity.java
@@ -16,6 +16,8 @@
 */
 package com.android.packageinstaller;
 
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
+
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.StringRes;
@@ -45,9 +47,9 @@
 import android.provider.Settings;
 import android.util.Log;
 import android.view.View;
-import android.view.View.OnClickListener;
 import android.widget.Button;
-import android.widget.TextView;
+
+import com.android.internal.app.AlertActivity;
 
 import java.io.File;
 
@@ -61,7 +63,7 @@
  * Based on the user response the package is then installed by launching InstallAppConfirm
  * sub activity. All state transitions are handled in this activity
  */
-public class PackageInstallerActivity extends OverlayTouchActivity implements OnClickListener {
+public class PackageInstallerActivity extends AlertActivity {
     private static final String TAG = "PackageInstaller";
 
     private static final int REQUEST_TRUST_EXTERNAL_SOURCE = 1;
@@ -95,7 +97,6 @@
 
     // Buttons to indicate user acceptance
     private Button mOk;
-    private Button mCancel;
 
     private PackageUtil.AppSnippet mAppSnippet;
 
@@ -119,18 +120,18 @@
     private boolean mEnableOk = false;
 
     private void startInstallConfirm() {
-        int msg;
+        View viewToEnable;
 
         if (mAppInfo != null) {
-            msg = (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0
-                    ? R.string.install_confirm_question_update_system
-                    : R.string.install_confirm_question_update;
+            viewToEnable = (mAppInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0
+                    ? requireViewById(R.id.install_confirm_question_update_system)
+                    : requireViewById(R.id.install_confirm_question_update);
         } else {
             // This is a new application with no permissions.
-            msg = R.string.install_confirm_question;
+            viewToEnable = requireViewById(R.id.install_confirm_question);
         }
 
-        ((TextView) findViewById(R.id.install_confirm_question)).setText(msg);
+        viewToEnable.setVisibility(View.VISIBLE);
 
         mEnableOk = true;
         mOk.setEnabled(true);
@@ -280,6 +281,8 @@
 
     @Override
     protected void onCreate(Bundle icicle) {
+        getWindow().addPrivateFlags(PRIVATE_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS);
+
         super.onCreate(null);
 
         if (icicle != null) {
@@ -344,7 +347,7 @@
 
         // load dummy layout with OK button disabled until we override this layout in
         // startInstallConfirm
-        bindUi(R.layout.install_confirm);
+        bindUi();
         checkIfAllowedAndInitiateInstall();
     }
 
@@ -374,17 +377,34 @@
         outState.putBoolean(ALLOW_UNKNOWN_SOURCES_KEY, mAllowUnknownSources);
     }
 
-    private void bindUi(int layout) {
-        setContentView(layout);
+    private void bindUi() {
+        mAlert.setIcon(mAppSnippet.icon);
+        mAlert.setTitle(mAppSnippet.label);
+        mAlert.setView(R.layout.install_content_view);
+        mAlert.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.install),
+                (ignored, ignored2) -> {
+                    if (mOk.isEnabled()) {
+                        if (mSessionId != -1) {
+                            mInstaller.setPermissionsResult(mSessionId, true);
+                            finish();
+                        } else {
+                            startInstall();
+                        }
+                    }
+                }, null);
+        mAlert.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel),
+                (ignored, ignored2) -> {
+                    // Cancel and finish
+                    setResult(RESULT_CANCELED);
+                    if (mSessionId != -1) {
+                        mInstaller.setPermissionsResult(mSessionId, false);
+                    }
+                    finish();
+                }, null);
+        setupAlert();
 
-        mOk = (Button) findViewById(R.id.ok_button);
-        mCancel = (Button)findViewById(R.id.cancel_button);
-        mOk.setOnClickListener(this);
-        mCancel.setOnClickListener(this);
-
+        mOk = mAlert.getButton(DialogInterface.BUTTON_POSITIVE);
         mOk.setEnabled(false);
-
-        PackageUtil.initSnippetForNewApp(this, mAppSnippet, R.id.app_snippet);
     }
 
     /**
@@ -525,26 +545,6 @@
         super.onBackPressed();
     }
 
-    public void onClick(View v) {
-        if (v == mOk) {
-            if (mOk.isEnabled()) {
-                if (mSessionId != -1) {
-                    mInstaller.setPermissionsResult(mSessionId, true);
-                    finish();
-                } else {
-                    startInstall();
-                }
-            }
-        } else if (v == mCancel) {
-            // Cancel and finish
-            setResult(RESULT_CANCELED);
-            if (mSessionId != -1) {
-                mInstaller.setPermissionsResult(mSessionId, false);
-            }
-            finish();
-        }
-    }
-
     private void startInstall() {
         // Start subactivity to actually install the application
         Intent newIntent = new Intent();
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/PackageUtil.java b/packages/PackageInstaller/src/com/android/packageinstaller/PackageUtil.java
index ba4bf8a..0e89f56 100644
--- a/packages/PackageInstaller/src/com/android/packageinstaller/PackageUtil.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/PackageUtil.java
@@ -108,26 +108,6 @@
                 icon);
     }
 
-    /**
-     * Utility method to display application snippet of a new package.
-     * The content view should have been set on context before invoking this method.
-     * appSnippet view should include R.id.app_icon and R.id.app_name
-     * defined on it.
-     *
-     * @param pContext context of package that can load the resources
-     * @param as The resources to be loaded
-     * @param snippetId view id of app snippet view
-     */
-    @NonNull public static View initSnippetForNewApp(@NonNull Activity pContext,
-            @NonNull AppSnippet as, int snippetId) {
-        View appSnippet = pContext.findViewById(snippetId);
-        if (as.icon != null) {
-            ((ImageView) appSnippet.findViewById(R.id.app_icon)).setImageDrawable(as.icon);
-        }
-        ((TextView)appSnippet.findViewById(R.id.app_name)).setText(as.label);
-        return appSnippet;
-    }
-
     static public class AppSnippet {
         @NonNull public CharSequence label;
         @Nullable public Drawable icon;
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index 5ecbe80..c511589 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -1189,7 +1189,7 @@
     /**
      * @return {@code true} if {@code cachedBluetoothDevice} is a2dp device
      */
-    public boolean isA2dpDevice() {
+    public boolean isConnectedA2dpDevice() {
         A2dpProfile a2dpProfile = mProfileManager.getA2dpProfile();
         return a2dpProfile != null && a2dpProfile.getConnectionStatus(mDevice) ==
                 BluetoothProfile.STATE_CONNECTED;
@@ -1198,7 +1198,7 @@
     /**
      * @return {@code true} if {@code cachedBluetoothDevice} is HFP device
      */
-    public boolean isHfpDevice() {
+    public boolean isConnectedHfpDevice() {
         HeadsetProfile headsetProfile = mProfileManager.getHeadsetProfile();
         return headsetProfile != null && headsetProfile.getConnectionStatus(mDevice) ==
                 BluetoothProfile.STATE_CONNECTED;
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
index 034574f..5e417c3 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/CachedBluetoothDeviceTest.java
@@ -538,7 +538,7 @@
         when(mA2dpProfile.getConnectionStatus(mDevice)).
                 thenReturn(BluetoothProfile.STATE_CONNECTED);
 
-        assertThat(mCachedDevice.isA2dpDevice()).isTrue();
+        assertThat(mCachedDevice.isConnectedA2dpDevice()).isTrue();
     }
 
     @Test
@@ -547,7 +547,7 @@
         when(mA2dpProfile.getConnectionStatus(mDevice)).
                 thenReturn(BluetoothProfile.STATE_DISCONNECTING);
 
-        assertThat(mCachedDevice.isA2dpDevice()).isFalse();
+        assertThat(mCachedDevice.isConnectedA2dpDevice()).isFalse();
     }
 
     @Test
@@ -556,7 +556,7 @@
         when(mHfpProfile.getConnectionStatus(mDevice)).
                 thenReturn(BluetoothProfile.STATE_CONNECTED);
 
-        assertThat(mCachedDevice.isHfpDevice()).isTrue();
+        assertThat(mCachedDevice.isConnectedHfpDevice()).isTrue();
     }
 
     @Test
@@ -565,7 +565,7 @@
         when(mHfpProfile.getConnectionStatus(mDevice)).
                 thenReturn(BluetoothProfile.STATE_DISCONNECTING);
 
-        assertThat(mCachedDevice.isHfpDevice()).isFalse();
+        assertThat(mCachedDevice.isConnectedHfpDevice()).isFalse();
     }
 
     @Test
@@ -590,14 +590,14 @@
     public void isConnectedHfpDevice_profileIsNull_returnFalse() {
         when(mProfileManager.getHeadsetProfile()).thenReturn(null);
 
-        assertThat(mCachedDevice.isHfpDevice()).isFalse();
+        assertThat(mCachedDevice.isConnectedHfpDevice()).isFalse();
     }
 
     @Test
     public void isConnectedA2dpDevice_profileIsNull_returnFalse() {
         when(mProfileManager.getA2dpProfile()).thenReturn(null);
 
-        assertThat(mCachedDevice.isA2dpDevice()).isFalse();
+        assertThat(mCachedDevice.isConnectedA2dpDevice()).isFalse();
     }
 
     @Test
diff --git a/packages/SystemUI/res/layout/notification_snooze.xml b/packages/SystemUI/res/layout/notification_snooze.xml
index fae759a..ffe2eee 100644
--- a/packages/SystemUI/res/layout/notification_snooze.xml
+++ b/packages/SystemUI/res/layout/notification_snooze.xml
@@ -22,7 +22,7 @@
     android:orientation="vertical"
     android:clickable="true"
     android:background="@color/notification_guts_bg_color"
-    android:theme="@*android:style/Theme.DeviceDefault.Light">
+    android:theme="@style/Theme.SystemUI">
 
     <RelativeLayout
         android:id="@+id/notification_snooze"
@@ -36,7 +36,7 @@
             android:layout_alignParentStart="true"
             android:layout_centerVertical="true"
             android:paddingStart="@*android:dimen/notification_content_margin_start"
-            android:textColor="@color/notification_primary_text_color"
+            android:textColor="?android:attr/textColorPrimary"
             android:paddingEnd="4dp"/>
 
         <ImageView
diff --git a/packages/SystemUI/res/layout/notification_snooze_option.xml b/packages/SystemUI/res/layout/notification_snooze_option.xml
index aaf45f3..f203839 100644
--- a/packages/SystemUI/res/layout/notification_snooze_option.xml
+++ b/packages/SystemUI/res/layout/notification_snooze_option.xml
@@ -22,4 +22,4 @@
         android:layout_marginEnd="@*android:dimen/notification_content_margin_end"
         android:gravity="center_vertical"
         android:textSize="14sp"
-        android:textColor="#DD000000"/>
\ No newline at end of file
+        android:textColor="?android:attr/textColorSecondary"/>
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
index 0ab71382..1393f8f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
@@ -678,9 +678,15 @@
                     entry.row.getNotificationChildren();
             for (int i = 0; i < notificationChildren.size(); i++) {
                 ExpandableNotificationRow row = notificationChildren.get(i);
-                if ((row.getStatusBarNotification().getNotification().flags
-                        & Notification.FLAG_FOREGROUND_SERVICE) != 0) {
-                    // the child is a foreground service notification which we can't remove!
+                NotificationData.Entry childEntry = row.getEntry();
+                boolean isForeground = (row.getStatusBarNotification().getNotification().flags
+                        & Notification.FLAG_FOREGROUND_SERVICE) != 0;
+                boolean keepForReply = FORCE_REMOTE_INPUT_HISTORY
+                        && (shouldKeepForRemoteInput(childEntry)
+                                || shouldKeepForSmartReply(childEntry));
+                if (isForeground || keepForReply) {
+                    // the child is a foreground service notification which we can't remove or it's
+                    // a child we're keeping around for reply!
                     continue;
                 }
                 row.setKeepInParent(true);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationLogger.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationLogger.java
index 767b07f..e96e176 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationLogger.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotificationLogger.java
@@ -62,6 +62,8 @@
     protected IStatusBarService mBarService;
     private long mLastVisibilityReportUptimeMs;
     private NotificationListContainer mListContainer;
+    private Object mDozingLock = new Object();
+    private boolean mDozing;
 
     protected final OnChildLocationsChangedListener mNotificationLocationsChangedListener =
             new OnChildLocationsChangedListener() {
@@ -174,6 +176,12 @@
         mNotificationLocationsChangedListener.onChildLocationsChanged();
     }
 
+    public void setDozing(boolean dozing) {
+        synchronized (mDozingLock) {
+            mDozing = dozing;
+        }
+    }
+
     private void logNotificationVisibilityChanges(
             Collection<NotificationVisibility> newlyVisible,
             Collection<NotificationVisibility> noLongerVisible) {
@@ -190,19 +198,25 @@
                 // Ignore.
             }
 
-            final int N = newlyVisible.size();
+            final int N = newlyVisibleAr.length;
             if (N > 0) {
                 String[] newlyVisibleKeyAr = new String[N];
                 for (int i = 0; i < N; i++) {
                     newlyVisibleKeyAr[i] = newlyVisibleAr[i].key;
                 }
 
-                // TODO: Call NotificationEntryManager to do this, once it exists.
-                // TODO: Consider not catching all runtime exceptions here.
-                try {
-                    mNotificationListener.setNotificationsShown(newlyVisibleKeyAr);
-                } catch (RuntimeException e) {
-                    Log.d(TAG, "failed setNotificationsShown: ", e);
+                synchronized (mDozingLock) {
+                    // setNotificationsShown should only be called if we are confident that
+                    // the user has seen the notification, aka not when ambient display is on
+                    if (!mDozing) {
+                        // TODO: Call NotificationEntryManager to do this, once it exists.
+                        // TODO: Consider not catching all runtime exceptions here.
+                        try {
+                            mNotificationListener.setNotificationsShown(newlyVisibleKeyAr);
+                        } catch (RuntimeException e) {
+                            Log.d(TAG, "failed setNotificationsShown: ", e);
+                        }
+                    }
                 }
             }
             recycleAllVisibilityObjects(newlyVisibleAr);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
index f3e100d..40c8fde 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
@@ -181,6 +181,9 @@
         public void onQuickStepStarted() {
             // Use navbar dragging as a signal to hide the rotate button
             setRotateSuggestionButtonState(false);
+
+            // Hide the notifications panel when quick step starts
+            mStatusBar.collapsePanel(true /* animate */);
         }
 
         @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java
index ed1ae10..8c02e1f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarGestureHelper.java
@@ -75,7 +75,6 @@
     private int mTouchDownY;
     private boolean mDownOnRecents;
     private VelocityTracker mVelocityTracker;
-    private boolean mNotificationsVisibleOnDown;
 
     private boolean mDockWindowEnabled;
     private boolean mDockWindowTouchSlopExceeded;
@@ -108,9 +107,6 @@
     }
 
     public boolean onInterceptTouchEvent(MotionEvent event) {
-        if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
-            mNotificationsVisibleOnDown = !mStatusBar.isPresenterFullyCollapsed();
-        }
         if (!canHandleGestures()) {
             return false;
         }
@@ -275,7 +271,7 @@
     }
 
     private boolean canHandleGestures() {
-        return !mStatusBar.isKeyguardShowing() && !mNotificationsVisibleOnDown;
+        return !mStatusBar.isKeyguardShowing();
     }
 
     private int calculateDragMode() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
index 3837fbc..3e41cd2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -791,8 +791,19 @@
                 showSwipeUpUI ? mQuickStepAccessibilityDelegate : null);
     }
 
+    public boolean isNotificationsFullyCollapsed() {
+        return mPanelView.isFullyCollapsed();
+    }
+
+    /**
+     * Updates the {@link WindowManager.LayoutParams.FLAG_SLIPPERY} state dependent on if swipe up
+     * is enabled, or the notifications is fully opened without being in an animated state. If
+     * slippery is enabled, touch events will leave the nav bar window and enter into the fullscreen
+     * app/home window, if not nav bar will receive a cancelled touch event once gesture leaves bar.
+     */
     public void updateSlippery() {
-        setSlippery(!isQuickStepSwipeUpEnabled() || mPanelView.isFullyExpanded());
+        setSlippery(!isQuickStepSwipeUpEnabled() ||
+                (mPanelView.isFullyExpanded() && !mPanelView.isCollapsing()));
     }
 
     private void setSlippery(boolean slippery) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java
index 6cc88bb..a13bebd 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/QuickStepController.java
@@ -45,9 +45,6 @@
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.WindowManagerGlobal;
-import android.view.animation.DecelerateInterpolator;
-import android.view.animation.Interpolator;
-import androidx.annotation.DimenRes;
 import com.android.systemui.Dependency;
 import com.android.systemui.OverviewProxyService;
 import com.android.systemui.R;
@@ -72,6 +69,7 @@
     private boolean mQuickScrubActive;
     private boolean mAllowGestureDetection;
     private boolean mQuickStepStarted;
+    private boolean mNotificationsVisibleOnDown;
     private int mTouchDownX;
     private int mTouchDownY;
     private boolean mDragPositive;
@@ -190,7 +188,7 @@
                 mNavigationBarView.getDownHitTarget() == HIT_TARGET_DEAD_ZONE;
         if (mOverviewEventSender.getProxy() == null || (!mNavigationBarView.isQuickScrubEnabled()
                 && !mNavigationBarView.isQuickStepSwipeUpEnabled())) {
-            return false;
+            return deadZoneConsumed;
         }
         mNavigationBarView.requestUnbufferedDispatch(event);
 
@@ -221,6 +219,7 @@
                 mNavigationBarView.transformMatrixToLocal(mTransformLocalMatrix);
                 mQuickStepStarted = false;
                 mAllowGestureDetection = true;
+                mNotificationsVisibleOnDown = !mNavigationBarView.isNotificationsFullyCollapsed();
                 break;
             }
             case MotionEvent.ACTION_MOVE: {
@@ -257,7 +256,8 @@
                 // Decide to start quickstep if dragging away from the navigation bar, otherwise in
                 // the parallel direction, decide to start quickscrub. Only one may run.
                 if (!mQuickScrubActive && exceededSwipeUpTouchSlop) {
-                    if (mNavigationBarView.isQuickStepSwipeUpEnabled()) {
+                    if (mNavigationBarView.isQuickStepSwipeUpEnabled()
+                            && !mNotificationsVisibleOnDown) {
                         startQuickStep(event);
                     }
                     break;
@@ -303,15 +303,28 @@
                 break;
         }
 
-        // Proxy motion events to launcher if not handled by quick scrub
-        // Proxy motion events up/cancel that would be sent after long press on any nav button
-        if (!mQuickScrubActive && !mIsInScreenPinning && (mAllowGestureDetection
-                || action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP)) {
+        if (shouldProxyEvents(action)) {
             proxyMotionEvents(event);
         }
         return mQuickScrubActive || mQuickStepStarted || deadZoneConsumed;
     }
 
+    private boolean shouldProxyEvents(int action) {
+        if (!mQuickScrubActive && !mIsInScreenPinning) {
+            // Allow down, cancel and up events, move and other events are passed if notifications
+            // are not showing and disabled gestures (such as long press) are not executed
+            switch (action) {
+                case MotionEvent.ACTION_DOWN:
+                case MotionEvent.ACTION_CANCEL:
+                case MotionEvent.ACTION_UP:
+                    return true;
+                default:
+                    return !mNotificationsVisibleOnDown && mAllowGestureDetection;
+            }
+        }
+        return false;
+    }
+
     @Override
     public void onDraw(Canvas canvas) {
         if (!mNavigationBarView.isQuickScrubEnabled()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index cd0255b..3701eaf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -3924,6 +3924,7 @@
         mDozeScrimController.setDozing(mDozing);
         mKeyguardIndicationController.setDozing(mDozing);
         mNotificationPanel.setDozing(mDozing, animate);
+        mNotificationLogger.setDozing(mDozing);
         updateQsExpansionEnabled();
         Trace.endSection();
     }
diff --git a/packages/SystemUI/tests/src/com/android/AAAPlusPlusVerifySysuiRequiredTestPropertiesTest.java b/packages/SystemUI/tests/src/com/android/AAAPlusPlusVerifySysuiRequiredTestPropertiesTest.java
index 6792bc0..7f83ed6 100644
--- a/packages/SystemUI/tests/src/com/android/AAAPlusPlusVerifySysuiRequiredTestPropertiesTest.java
+++ b/packages/SystemUI/tests/src/com/android/AAAPlusPlusVerifySysuiRequiredTestPropertiesTest.java
@@ -19,6 +19,7 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertThat;
 
+import android.content.pm.PackageManager;
 import android.support.test.filters.LargeTest;
 import android.support.test.filters.MediumTest;
 import android.support.test.filters.SmallTest;
@@ -115,6 +116,13 @@
         filter.add(new ExternalClassNameFilter());
         filter.add(s -> s.startsWith("com.android.systemui")
                 || s.startsWith("com.android.keyguard"));
+
+
+        if (!mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE)) {
+            // If it's not automotive target, exclude automotive classes from the test.
+            excludeAutomotiveClasses(filter);
+        }
+
         try {
             return scanner.getClassPathEntries(filter);
         } catch (IOException e) {
@@ -123,6 +131,13 @@
         return Collections.emptyList();
     }
 
+    private void excludeAutomotiveClasses(ChainedClassNameFilter filter) {
+        // Modifies the passed in filter.
+        filter.add(s -> !s.startsWith("com.android.systemui.statusbar.car."));
+        filter.add(s -> !s.startsWith("com.android.systemui.qs.car."));
+        filter.add(s -> !s.startsWith("com.android.systemui.car."));
+    }
+
     private String getClsStr() {
         return TextUtils.join(",", Arrays.asList(BASE_CLS_WHITELIST)
                 .stream().map(cls -> cls.getSimpleName()).toArray());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CastControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CastControllerImplTest.java
new file mode 100644
index 0000000..1b22f09
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CastControllerImplTest.java
@@ -0,0 +1,77 @@
+package com.android.systemui.statusbar.policy;
+
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.media.MediaRouter;
+import android.media.projection.MediaProjectionInfo;
+import android.media.projection.MediaProjectionManager;
+import android.support.test.filters.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.policy.CastController.Callback;
+
+import org.junit.Before;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.junit.Test;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class CastControllerImplTest extends SysuiTestCase {
+
+    @Mock
+    MediaRouter mMediaRouter;
+    @Mock
+    MediaProjectionManager mMediaProjectionManager;
+    @Mock
+    MediaProjectionInfo mProjection;
+
+    private CastControllerImpl mController;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mContext.addMockSystemService(MediaRouter.class, mMediaRouter);
+        mContext.addMockSystemService(MediaProjectionManager.class, mMediaProjectionManager);
+        when(mMediaProjectionManager.getActiveProjectionInfo()).thenReturn(mProjection);
+
+        mController = new CastControllerImpl(mContext);
+    }
+
+    @Test
+    public void testAddCallback(){
+        Callback mockCallback = mock(Callback.class);
+
+        mController.addCallback(mockCallback);
+        verify(mockCallback,times(1)).onCastDevicesChanged();
+    }
+
+    @Test
+    public void testRemoveCallback(){
+        Callback mockCallback = mock(Callback.class);
+
+        mController.addCallback(mockCallback);
+        verify(mockCallback, times(1)).onCastDevicesChanged();
+
+        mController.removeCallback(mockCallback);
+        verify(mockCallback, times(1)).onCastDevicesChanged();
+    }
+
+    @Test
+    public void testRemoveCallbackFromEmptyList(){
+        Callback mockCallback = mock(Callback.class);
+
+        mController.removeCallback(mockCallback);
+        verify(mockCallback, never()).onCastDevicesChanged();
+    }
+}
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index f81541e..a07939e 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -1171,6 +1171,26 @@
         }
 
         private boolean bindService() {
+            int state = BluetoothAdapter.STATE_OFF;
+            try {
+                mBluetoothLock.readLock().lock();
+                if (mBluetooth != null) {
+                    state = mBluetooth.getState();
+                }
+            } catch (RemoteException e) {
+                Slog.e(TAG, "Unable to call getState", e);
+                return false;
+            } finally {
+                mBluetoothLock.readLock().unlock();
+            }
+
+            if (!mEnable || state != BluetoothAdapter.STATE_ON) {
+                if (DBG) {
+                    Slog.d(TAG, "Unable to bindService while Bluetooth is disabled");
+                }
+                return false;
+            }
+
             if (mIntent != null && mService == null && doBind(mIntent, this, 0,
                     UserHandle.CURRENT_OR_SELF)) {
                 Message msg = mHandler.obtainMessage(MESSAGE_BIND_PROFILE_SERVICE);
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index ad9fa40..566ce4f 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -36,6 +36,7 @@
 import android.telephony.CellLocation;
 import android.telephony.DisconnectCause;
 import android.telephony.LocationAccessPolicy;
+import android.telephony.PhoneCapability;
 import android.telephony.PhoneStateListener;
 import android.telephony.PhysicalChannelConfig;
 import android.telephony.PreciseCallState;
@@ -47,7 +48,6 @@
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
 import android.telephony.VoLteServiceState;
-import android.text.TextUtils;
 import android.util.LocalLog;
 
 import com.android.internal.app.IBatteryStats;
@@ -200,6 +200,8 @@
 
     private boolean mCarrierNetworkChangeState = false;
 
+    private PhoneCapability mPhoneCapability = null;
+
     private final LocalLog mLocalLog = new LocalLog(100);
 
     private PreciseDataConnectionState mPreciseDataConnectionState =
@@ -658,6 +660,13 @@
                             remove(r.binder);
                         }
                     }
+                    if ((events & PhoneStateListener.LISTEN_PHONE_CAPABILITY_CHANGE) != 0) {
+                        try {
+                            r.callback.onPhoneCapabilityChanged(mPhoneCapability);
+                        } catch (RemoteException ex) {
+                            remove(r.binder);
+                        }
+                    }
                 }
             }
         } else {
@@ -1453,6 +1462,33 @@
         }
     }
 
+    public void notifyPhoneCapabilityChanged(PhoneCapability capability) {
+        if (!checkNotifyPermission("notifyPhoneCapabilityChanged()")) {
+            return;
+        }
+
+        if (VDBG) {
+            log("notifyPhoneCapabilityChanged: capability=" + capability);
+        }
+
+        synchronized (mRecords) {
+            mPhoneCapability = capability;
+
+            for (Record r : mRecords) {
+                if (r.matchPhoneStateListenerEvent(
+                        PhoneStateListener.LISTEN_PHONE_CAPABILITY_CHANGE)) {
+                    try {
+                        r.callback.onPhoneCapabilityChanged(capability);
+                    } catch (RemoteException ex) {
+                        mRemoveList.add(r.binder);
+                    }
+                }
+            }
+            handleRemoveListLocked();
+        }
+    }
+
+
     @Override
     public void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
         final IndentingPrintWriter pw = new IndentingPrintWriter(writer, "  ");
@@ -1488,6 +1524,7 @@
             pw.println("mForegroundCallState=" + mForegroundCallState);
             pw.println("mBackgroundCallState=" + mBackgroundCallState);
             pw.println("mVoLteServiceState=" + mVoLteServiceState);
+            pw.println("mPhoneCapability=" + mPhoneCapability);
 
             pw.decreaseIndent();
 
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index f074319..dd3e2d4 100644
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -72,7 +72,6 @@
 import static android.service.notification.NotificationListenerService.REASON_USER_STOPPED;
 import static android.service.notification.NotificationListenerService.TRIM_FULL;
 import static android.service.notification.NotificationListenerService.TRIM_LIGHT;
-import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
 
 import static com.android.server.utils.PriorityDump.PRIORITY_ARG;
@@ -2694,24 +2693,30 @@
             try {
                 synchronized (mNotificationLock) {
                     final ManagedServiceInfo info = mListeners.checkServiceTokenLocked(token);
-                    if (keys != null) {
-                        final int N = keys.length;
-                        for (int i = 0; i < N; i++) {
-                            NotificationRecord r = mNotificationsByKey.get(keys[i]);
-                            if (r == null) continue;
-                            final int userId = r.sbn.getUserId();
-                            if (userId != info.userid && userId != UserHandle.USER_ALL &&
-                                    !mUserProfiles.isCurrentProfile(userId)) {
-                                throw new SecurityException("Disallowed call from listener: "
-                                        + info.service);
-                            }
-                            if (!r.isSeen()) {
-                                if (DBG) Slog.d(TAG, "Marking notification as seen " + keys[i]);
-                                reportSeen(r);
-                                r.setSeen();
-                                maybeRecordInterruptionLocked(r);
-                            }
+                    if (keys == null) {
+                        return;
+                    }
+                    ArrayList<NotificationRecord> seen = new ArrayList<>();
+                    final int n = keys.length;
+                    for (int i = 0; i < n; i++) {
+                        NotificationRecord r = mNotificationsByKey.get(keys[i]);
+                        if (r == null) continue;
+                        final int userId = r.sbn.getUserId();
+                        if (userId != info.userid && userId != UserHandle.USER_ALL
+                                && !mUserProfiles.isCurrentProfile(userId)) {
+                            throw new SecurityException("Disallowed call from listener: "
+                                    + info.service);
                         }
+                        seen.add(r);
+                        if (!r.isSeen()) {
+                            if (DBG) Slog.d(TAG, "Marking notification as seen " + keys[i]);
+                            reportSeen(r);
+                            r.setSeen();
+                            maybeRecordInterruptionLocked(r);
+                        }
+                    }
+                    if (!seen.isEmpty()) {
+                        mAssistants.onNotificationsSeenLocked(seen);
                     }
                 }
             } finally {
@@ -6556,6 +6561,35 @@
             rebindServices(true);
         }
 
+        protected void onNotificationsSeenLocked(ArrayList<NotificationRecord> records) {
+            // There should be only one, but it's a list, so while we enforce
+            // singularity elsewhere, we keep it general here, to avoid surprises.
+            for (final ManagedServiceInfo info : NotificationAssistants.this.getServices()) {
+                ArrayList<String> keys = new ArrayList<>(records.size());
+                for (NotificationRecord r : records) {
+                    boolean sbnVisible = isVisibleToListener(r.sbn, info)
+                            && info.isSameUser(r.getUserId());
+                    if (sbnVisible) {
+                        keys.add(r.getKey());
+                    }
+                }
+
+                if (!keys.isEmpty()) {
+                    mHandler.post(() -> notifySeen(info, keys));
+                }
+            }
+        }
+
+        private void notifySeen(final ManagedServiceInfo info,
+                final ArrayList<String> keys) {
+            final INotificationListener assistant = (INotificationListener) info.service;
+            try {
+                assistant.onNotificationsSeen(keys);
+            } catch (RemoteException ex) {
+                Log.e(TAG, "unable to notify assistant (seen): " + assistant, ex);
+            }
+        }
+
         public void onNotificationEnqueued(final NotificationRecord r) {
             final StatusBarNotification sbn = r.sbn;
             TrimCache trimCache = new TrimCache(sbn);
diff --git a/services/core/java/com/android/server/pm/permission/BasePermission.java b/services/core/java/com/android/server/pm/permission/BasePermission.java
index 1d002ef..8202580 100644
--- a/services/core/java/com/android/server/pm/permission/BasePermission.java
+++ b/services/core/java/com/android/server/pm/permission/BasePermission.java
@@ -39,6 +39,7 @@
 
 import com.android.server.pm.DumpState;
 import com.android.server.pm.PackageManagerService;
+import com.android.server.pm.PackageSetting;
 import com.android.server.pm.PackageSettingBase;
 
 import org.xmlpull.v1.XmlPullParser;
@@ -374,8 +375,10 @@
     }
 
     public void enforceDeclaredUsedAndRuntimeOrDevelopment(PackageParser.Package pkg) {
+        final PackageSetting pkgSetting = (PackageSetting) pkg.mExtras;
+        final PermissionsState permsState = pkgSetting.getPermissionsState();
         int index = pkg.requestedPermissions.indexOf(name);
-        if (index == -1) {
+        if (!permsState.hasRequestedPermission(name) && index == -1) {
             throw new SecurityException("Package " + pkg.packageName
                     + " has not requested permission " + name);
         }
diff --git a/services/core/java/com/android/server/pm/permission/PermissionsState.java b/services/core/java/com/android/server/pm/permission/PermissionsState.java
index 11df380..5e66bfc3 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionsState.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionsState.java
@@ -20,9 +20,9 @@
 import android.os.UserHandle;
 import android.util.ArrayMap;
 import android.util.ArraySet;
-
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
+
 import com.android.internal.util.ArrayUtils;
 
 import java.util.ArrayList;
@@ -291,6 +291,13 @@
     }
 
     /**
+     * Returns whether the state has any known request for the given permission name,
+     * whether or not it has been granted.
+     */
+    public boolean hasRequestedPermission(String name) {
+        return mPermissions != null && (mPermissions.get(name) != null);
+    }
+    /**
      * Gets all permissions for a given device user id regardless if they
      * are install time or runtime permissions.
      *
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 13800b6..91d4717 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -288,6 +288,9 @@
     private long mLastWakeTime;
     private long mLastSleepTime;
 
+    // Last reason the device went to sleep.
+    private int mLastSleepReason;
+
     // Timestamp of the last call to user activity.
     private long mLastUserActivityTime;
     private long mLastUserActivityTimeNoChangeLights;
@@ -1433,6 +1436,7 @@
             }
 
             mLastSleepTime = eventTime;
+            mLastSleepReason = reason;
             mSandmanSummoned = true;
             setWakefulnessLocked(WAKEFULNESS_DOZING, reason);
 
@@ -3266,6 +3270,7 @@
             pw.println("  mDeviceIdleTempWhitelist=" + Arrays.toString(mDeviceIdleTempWhitelist));
             pw.println("  mLastWakeTime=" + TimeUtils.formatUptime(mLastWakeTime));
             pw.println("  mLastSleepTime=" + TimeUtils.formatUptime(mLastSleepTime));
+            pw.println("  mLastSleepReason=" + PowerManager.sleepReasonToString(mLastSleepReason));
             pw.println("  mLastUserActivityTime=" + TimeUtils.formatUptime(mLastUserActivityTime));
             pw.println("  mLastUserActivityTimeNoChangeLights="
                     + TimeUtils.formatUptime(mLastUserActivityTimeNoChangeLights));
@@ -4404,6 +4409,19 @@
             }
         }
 
+        @Override // Binder call
+        public int getLastSleepReason() {
+            mContext.enforceCallingOrSelfPermission(
+                    android.Manifest.permission.DEVICE_POWER, null);
+
+            final long ident = Binder.clearCallingIdentity();
+            try {
+                return getLastSleepReasonInternal();
+            } finally {
+                Binder.restoreCallingIdentity(ident);
+            }
+        }
+
         /**
          * Reboots the device.
          *
@@ -4619,6 +4637,12 @@
         }
     }
 
+    private int getLastSleepReasonInternal() {
+        synchronized (mLock) {
+            return mLastSleepReason;
+        }
+    }
+
     private final class LocalService extends PowerManagerInternal {
         @Override
         public void setScreenBrightnessOverrideFromWindowManager(int screenBrightness) {
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 519881e..f418ad4 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -80,6 +80,7 @@
     private int mDisabled2 = 0;
 
     private final Object mLock = new Object();
+    private final DeathRecipient mDeathRecipient = new DeathRecipient();
     // encompasses lights-out mode and other flags defined on View
     private int mSystemUiVisibility = 0;
     private int mFullscreenStackSysUiVisibility;
@@ -93,6 +94,23 @@
     private IBinder mImeToken = null;
     private int mCurrentUserId;
 
+    private class DeathRecipient implements IBinder.DeathRecipient {
+        public void binderDied() {
+            mBar.asBinder().unlinkToDeath(this,0);
+            mBar = null;
+            notifyBarAttachChanged();
+        }
+
+        public void linkToDeath() {
+            try {
+                mBar.asBinder().linkToDeath(mDeathRecipient,0);
+            } catch (RemoteException e) {
+                Slog.e(TAG,"Unable to register Death Recipient for status bar", e);
+            }
+        }
+
+    }
+
     private class DisableRecord implements IBinder.DeathRecipient {
         int userId;
         String pkg;
@@ -859,16 +877,7 @@
 
         Slog.i(TAG, "registerStatusBar bar=" + bar);
         mBar = bar;
-        try {
-            mBar.asBinder().linkToDeath(new DeathRecipient() {
-                @Override
-                public void binderDied() {
-                    mBar = null;
-                    notifyBarAttachChanged();
-                }
-            }, 0);
-        } catch (RemoteException e) {
-        }
+        mDeathRecipient.linkToDeath();
         notifyBarAttachChanged();
         synchronized (mIcons) {
             for (String slot : mIcons.keySet()) {
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index ab94093..a45d70b 100644
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -22,6 +22,7 @@
 import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.os.PersistableBundle;
 import android.os.RemoteException;
@@ -1212,6 +1213,7 @@
      * disable_metered_apns}
      * @hide
      */
+    @UnsupportedAppUsage
     public static final String KEY_CARRIER_DEFAULT_ACTIONS_ON_REDIRECTION_STRING_ARRAY =
             "carrier_default_actions_on_redirection_string_array";
 
@@ -1824,6 +1826,7 @@
      * Key identifying if voice call barring notification is required to be shown to the user.
      * @hide
      */
+    @UnsupportedAppUsage
     public static final String KEY_DISABLE_VOICE_BARRING_NOTIFICATION_BOOL =
             "disable_voice_barring_notification_bool";
 
diff --git a/telephony/java/android/telephony/CellIdentityCdma.java b/telephony/java/android/telephony/CellIdentityCdma.java
index 2809066..5b67dc4 100644
--- a/telephony/java/android/telephony/CellIdentityCdma.java
+++ b/telephony/java/android/telephony/CellIdentityCdma.java
@@ -17,6 +17,7 @@
 package android.telephony;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.text.TextUtils;
 
@@ -74,6 +75,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public CellIdentityCdma(int nid, int sid, int bid, int lon, int lat) {
         this(nid, sid, bid, lon, lat, null, null);
     }
diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java
index 4031254..5c84791 100644
--- a/telephony/java/android/telephony/CellIdentityGsm.java
+++ b/telephony/java/android/telephony/CellIdentityGsm.java
@@ -17,6 +17,7 @@
 package android.telephony;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.text.TextUtils;
 
@@ -34,13 +35,16 @@
     // 16-bit GSM Cell Identity described in TS 27.007, 0..65535
     private final int mCid;
     // 16-bit GSM Absolute RF Channel Number
+    @UnsupportedAppUsage
     private final int mArfcn;
     // 6-bit Base Station Identity Code
+    @UnsupportedAppUsage
     private final int mBsic;
 
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public CellIdentityGsm() {
         super(TAG, CellInfo.TYPE_GSM, null, null, null, null);
         mLac = Integer.MAX_VALUE;
diff --git a/telephony/java/android/telephony/CellIdentityLte.java b/telephony/java/android/telephony/CellIdentityLte.java
index 5257372..65c904b 100644
--- a/telephony/java/android/telephony/CellIdentityLte.java
+++ b/telephony/java/android/telephony/CellIdentityLte.java
@@ -17,6 +17,7 @@
 package android.telephony;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.text.TextUtils;
 
@@ -36,6 +37,7 @@
     // 16-bit tracking area code
     private final int mTac;
     // 18-bit Absolute RF Channel Number
+    @UnsupportedAppUsage
     private final int mEarfcn;
     // cell bandwidth, in kHz
     private final int mBandwidth;
@@ -43,6 +45,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public CellIdentityLte() {
         super(TAG, CellInfo.TYPE_LTE, null, null, null, null);
         mCi = Integer.MAX_VALUE;
@@ -62,6 +65,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public CellIdentityLte(int mcc, int mnc, int ci, int pci, int tac) {
         this(ci, pci, tac, Integer.MAX_VALUE, Integer.MAX_VALUE, String.valueOf(mcc),
                 String.valueOf(mnc), null, null);
diff --git a/telephony/java/android/telephony/CellIdentityWcdma.java b/telephony/java/android/telephony/CellIdentityWcdma.java
index a4ac8e3..e26fcb3 100644
--- a/telephony/java/android/telephony/CellIdentityWcdma.java
+++ b/telephony/java/android/telephony/CellIdentityWcdma.java
@@ -17,6 +17,7 @@
 package android.telephony;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.text.TextUtils;
 
@@ -36,6 +37,7 @@
     // 9-bit UMTS Primary Scrambling Code described in TS 25.331, 0..511
     private final int mPsc;
     // 16-bit UMTS Absolute RF Channel Number described in TS 25.101 sec. 5.4.4
+    @UnsupportedAppUsage
     private final int mUarfcn;
 
     /**
diff --git a/telephony/java/android/telephony/CellInfo.java b/telephony/java/android/telephony/CellInfo.java
index 6b320f4..4fe1b01 100644
--- a/telephony/java/android/telephony/CellInfo.java
+++ b/telephony/java/android/telephony/CellInfo.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -70,14 +71,19 @@
     // Type to distinguish where time stamp gets recorded.
 
     /** @hide */
+    @UnsupportedAppUsage
     public static final int TIMESTAMP_TYPE_UNKNOWN = 0;
     /** @hide */
+    @UnsupportedAppUsage
     public static final int TIMESTAMP_TYPE_ANTENNA = 1;
     /** @hide */
+    @UnsupportedAppUsage
     public static final int TIMESTAMP_TYPE_MODEM = 2;
     /** @hide */
+    @UnsupportedAppUsage
     public static final int TIMESTAMP_TYPE_OEM_RIL = 3;
     /** @hide */
+    @UnsupportedAppUsage
     public static final int TIMESTAMP_TYPE_JAVA_RIL = 4;
 
     /** @hide */
@@ -184,6 +190,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getTimeStampType() {
         return mTimeStampType;
     }
@@ -223,6 +230,7 @@
         }
     }
 
+    @UnsupportedAppUsage
     private static String timeStampTypeToString(int type) {
         switch (type) {
             case 1:
diff --git a/telephony/java/android/telephony/CellInfoCdma.java b/telephony/java/android/telephony/CellInfoCdma.java
index 8b8d1bb..f67733d 100644
--- a/telephony/java/android/telephony/CellInfoCdma.java
+++ b/telephony/java/android/telephony/CellInfoCdma.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.Rlog;
@@ -32,6 +33,7 @@
     private CellSignalStrengthCdma mCellSignalStrengthCdma;
 
     /** @hide */
+    @UnsupportedAppUsage
     public CellInfoCdma() {
         super();
         mCellIdentityCdma = new CellIdentityCdma();
@@ -39,6 +41,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public CellInfoCdma(CellInfoCdma ci) {
         super(ci);
         this.mCellIdentityCdma = ci.mCellIdentityCdma.copy();
@@ -50,6 +53,7 @@
         return mCellIdentityCdma;
     }
     /** @hide */
+    @UnsupportedAppUsage
     public void setCellIdentity(CellIdentityCdma cid) {
         mCellIdentityCdma = cid;
     }
diff --git a/telephony/java/android/telephony/CellInfoGsm.java b/telephony/java/android/telephony/CellInfoGsm.java
index f7af1b2..7211de1 100644
--- a/telephony/java/android/telephony/CellInfoGsm.java
+++ b/telephony/java/android/telephony/CellInfoGsm.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.Rlog;
@@ -32,6 +33,7 @@
     private CellSignalStrengthGsm mCellSignalStrengthGsm;
 
     /** @hide */
+    @UnsupportedAppUsage
     public CellInfoGsm() {
         super();
         mCellIdentityGsm = new CellIdentityGsm();
diff --git a/telephony/java/android/telephony/CellInfoLte.java b/telephony/java/android/telephony/CellInfoLte.java
index 97d856e..389f643 100644
--- a/telephony/java/android/telephony/CellInfoLte.java
+++ b/telephony/java/android/telephony/CellInfoLte.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.Rlog;
@@ -32,6 +33,7 @@
     private CellSignalStrengthLte mCellSignalStrengthLte;
 
     /** @hide */
+    @UnsupportedAppUsage
     public CellInfoLte() {
         super();
         mCellIdentityLte = new CellIdentityLte();
@@ -51,6 +53,7 @@
         return mCellIdentityLte;
     }
     /** @hide */
+    @UnsupportedAppUsage
     public void setCellIdentity(CellIdentityLte cid) {
         if (DBG) log("setCellIdentity: " + cid);
         mCellIdentityLte = cid;
@@ -62,6 +65,7 @@
         return mCellSignalStrengthLte;
     }
     /** @hide */
+    @UnsupportedAppUsage
     public void setCellSignalStrength(CellSignalStrengthLte css) {
         if (DBG) log("setCellSignalStrength: " + css);
         mCellSignalStrengthLte = css;
diff --git a/telephony/java/android/telephony/CellLocation.java b/telephony/java/android/telephony/CellLocation.java
index 5bcaa6e..0133153 100644
--- a/telephony/java/android/telephony/CellLocation.java
+++ b/telephony/java/android/telephony/CellLocation.java
@@ -20,6 +20,7 @@
 import android.os.RemoteException;
 import android.os.ServiceManager;
 
+import android.annotation.UnsupportedAppUsage;
 import android.telephony.cdma.CdmaCellLocation;
 import android.telephony.gsm.GsmCellLocation;
 import com.android.internal.telephony.ITelephony;
@@ -57,6 +58,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static CellLocation newFromBundle(Bundle bundle) {
         // TelephonyManager.getDefault().getCurrentPhoneType() handles the case when
         // ITelephony interface is not up yet.
@@ -73,11 +75,13 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public abstract void fillInNotifierBundle(Bundle bundle);
 
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public abstract boolean isEmpty();
 
     /**
diff --git a/telephony/java/android/telephony/CellSignalStrengthGsm.java b/telephony/java/android/telephony/CellSignalStrengthGsm.java
index cff159b..1e8d119 100644
--- a/telephony/java/android/telephony/CellSignalStrengthGsm.java
+++ b/telephony/java/android/telephony/CellSignalStrengthGsm.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.Rlog;
@@ -34,11 +35,15 @@
     private static final int GSM_SIGNAL_STRENGTH_GOOD = 8;
     private static final int GSM_SIGNAL_STRENGTH_MODERATE = 5;
 
+    @UnsupportedAppUsage
     private int mSignalStrength; // in ASU; Valid values are (0-31, 99) as defined in TS 27.007 8.5
+    @UnsupportedAppUsage
     private int mBitErrorRate;   // bit error rate (0-7, 99) as defined in TS 27.007 8.5
+    @UnsupportedAppUsage
     private int mTimingAdvance; // range from 0-219 or Integer.MAX_VALUE if unknown
 
     /** @hide */
+    @UnsupportedAppUsage
     public CellSignalStrengthGsm() {
         setDefaultValues();
     }
diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java
index 2f059f4..ed7d4b2 100644
--- a/telephony/java/android/telephony/CellSignalStrengthLte.java
+++ b/telephony/java/android/telephony/CellSignalStrengthLte.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.Rlog;
@@ -30,14 +31,21 @@
     private static final String LOG_TAG = "CellSignalStrengthLte";
     private static final boolean DBG = false;
 
+    @UnsupportedAppUsage
     private int mSignalStrength;
+    @UnsupportedAppUsage
     private int mRsrp;
+    @UnsupportedAppUsage
     private int mRsrq;
+    @UnsupportedAppUsage
     private int mRssnr;
+    @UnsupportedAppUsage
     private int mCqi;
+    @UnsupportedAppUsage
     private int mTimingAdvance;
 
     /** @hide */
+    @UnsupportedAppUsage
     public CellSignalStrengthLte() {
         setDefaultValues();
     }
diff --git a/telephony/java/android/telephony/CellSignalStrengthWcdma.java b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
index 21cf0be..66e0882 100644
--- a/telephony/java/android/telephony/CellSignalStrengthWcdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.Rlog;
@@ -34,8 +35,10 @@
     private static final int WCDMA_SIGNAL_STRENGTH_GOOD = 8;
     private static final int WCDMA_SIGNAL_STRENGTH_MODERATE = 5;
 
+    @UnsupportedAppUsage
     private int mSignalStrength; // in ASU; Valid values are (0-31, 99) as defined in TS 27.007 8.5
                                  // or Integer.MAX_VALUE if unknown
+    @UnsupportedAppUsage
     private int mBitErrorRate; // bit error rate (0-7, 99) as defined in TS 27.007 8.5 or
                                // Integer.MAX_VALUE if unknown
     private int mRscp; // bit error rate (0-96, 255) as defined in TS 27.007 8.69 or
diff --git a/telephony/java/android/telephony/DisconnectCause.java b/telephony/java/android/telephony/DisconnectCause.java
index 4fa304a..ee5cdc2 100644
--- a/telephony/java/android/telephony/DisconnectCause.java
+++ b/telephony/java/android/telephony/DisconnectCause.java
@@ -16,6 +16,8 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
+
 /**
  * Contains disconnect call causes generated by the framework and the RIL.
  * @hide
@@ -329,6 +331,7 @@
     }
 
     /** Returns descriptive string for the specified disconnect cause. */
+    @UnsupportedAppUsage
     public static String toString(int cause) {
         switch (cause) {
         case NOT_DISCONNECTED:
diff --git a/telephony/java/android/telephony/ModemInfo.java b/telephony/java/android/telephony/ModemInfo.java
new file mode 100644
index 0000000..564effe
--- /dev/null
+++ b/telephony/java/android/telephony/ModemInfo.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2018 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.telephony;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * Information of a single logical modem indicating
+ * its id, supported rats and whether it supports voice or data, etc.
+ * @hide
+ */
+public class ModemInfo implements Parcelable {
+    public final int modemId;
+    public final int rat; /* bitset */
+    public final boolean isVoiceSupported;
+    public final boolean isDataSupported;
+
+    public ModemInfo(int modemId, int rat, boolean isVoiceSupported, boolean isDataSupported) {
+        this.modemId = modemId;
+        this.rat = rat;
+        this.isVoiceSupported = isVoiceSupported;
+        this.isDataSupported = isDataSupported;
+    }
+
+    public ModemInfo(Parcel in) {
+        modemId = in.readInt();
+        rat = in.readInt();
+        isVoiceSupported = in.readBoolean();
+        isDataSupported = in.readBoolean();
+    }
+
+    @Override
+    public String toString() {
+        return "modemId=" + modemId + " rat=" + rat + " isVoiceSupported:" + isVoiceSupported
+                + " isDataSupported:" + isDataSupported;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(modemId, rat, isVoiceSupported, isDataSupported);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o == null || !(o instanceof ModemInfo) || hashCode() != o.hashCode()) {
+            return false;
+        }
+
+        if (this == o) {
+            return true;
+        }
+
+        ModemInfo s = (ModemInfo) o;
+
+        return (modemId == s.modemId
+                && rat == s.rat
+                && isVoiceSupported == s.isVoiceSupported
+                && isDataSupported == s.isDataSupported);
+    }
+
+    /**
+     * {@link Parcelable#describeContents}
+     */
+    public @ContentsFlags int describeContents() {
+        return 0;
+    }
+
+    /**
+     * {@link Parcelable#writeToParcel}
+     */
+    public void writeToParcel(Parcel dest, @WriteFlags int flags) {
+        dest.writeInt(modemId);
+        dest.writeInt(rat);
+        dest.writeBoolean(isVoiceSupported);
+        dest.writeBoolean(isDataSupported);
+    }
+
+    public static final Parcelable.Creator<ModemInfo> CREATOR = new Parcelable.Creator() {
+        public ModemInfo createFromParcel(Parcel in) {
+            return new ModemInfo(in);
+        }
+
+        public ModemInfo[] newArray(int size) {
+            return new ModemInfo[size];
+        }
+    };
+}
diff --git a/telephony/java/android/telephony/NeighboringCellInfo.java b/telephony/java/android/telephony/NeighboringCellInfo.java
index b7ccee5..8e99518 100644
--- a/telephony/java/android/telephony/NeighboringCellInfo.java
+++ b/telephony/java/android/telephony/NeighboringCellInfo.java
@@ -24,6 +24,7 @@
 import static android.telephony.TelephonyManager.NETWORK_TYPE_UMTS;
 import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -47,24 +48,29 @@
      * In GSM, mRssi is the Received RSSI;
      * In UMTS, mRssi is the Level index of CPICH Received Signal Code Power
      */
+    @UnsupportedAppUsage
     private int mRssi;
     /**
      * CID in 16 bits format in GSM. Return UNKNOWN_CID in UMTS and CMDA.
      */
+    @UnsupportedAppUsage
     private int mCid;
     /**
      * LAC in 16 bits format in GSM. Return UNKNOWN_CID in UMTS and CMDA.
      */
+    @UnsupportedAppUsage
     private int mLac;
     /**
      * Primary Scrambling Code in 9 bits format in UMTS
      * Return UNKNOWN_CID in GSM and CMDA.
      */
+    @UnsupportedAppUsage
     private int mPsc;
     /**
      * Radio network type, value is one of following
      * TelephonyManager.NETWORK_TYPE_XXXXXX.
      */
+    @UnsupportedAppUsage
     private int mNetworkType;
 
     /**
diff --git a/telephony/java/android/telephony/PhoneCapability.aidl b/telephony/java/android/telephony/PhoneCapability.aidl
new file mode 100644
index 0000000..5de8d4a
--- /dev/null
+++ b/telephony/java/android/telephony/PhoneCapability.aidl
@@ -0,0 +1,20 @@
+/*
+**
+** Copyright 2018, 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.telephony;
+
+parcelable PhoneCapability;
\ No newline at end of file
diff --git a/telephony/java/android/telephony/PhoneCapability.java b/telephony/java/android/telephony/PhoneCapability.java
new file mode 100644
index 0000000..2ebfa53
--- /dev/null
+++ b/telephony/java/android/telephony/PhoneCapability.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2018 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.telephony;
+
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Define capability of a modem group. That is, the capabilities
+ * are shared between those modems defined by list of modem IDs.
+ * @hide
+ */
+public class PhoneCapability implements Parcelable {
+    public final int maxActiveVoiceCalls;
+    public final int maxActiveData;
+    public final int max5G;
+    public final List<ModemInfo> logicalModemList;
+
+    public PhoneCapability(int maxActiveVoiceCalls, int maxActiveData, int max5G,
+            List<ModemInfo> logicalModemList) {
+        this.maxActiveVoiceCalls = maxActiveVoiceCalls;
+        this.maxActiveData = maxActiveData;
+        this.max5G = max5G;
+        // Make sure it's not null.
+        this.logicalModemList = logicalModemList == null ? new ArrayList<>() : logicalModemList;
+    }
+
+    @Override
+    public String toString() {
+        return "maxActiveVoiceCalls=" + maxActiveVoiceCalls + " maxActiveData=" + maxActiveData
+                + " max5G=" + max5G + "logicalModemList:"
+                + Arrays.toString(logicalModemList.toArray());
+    }
+
+    private PhoneCapability(Parcel in) {
+        maxActiveVoiceCalls = in.readInt();
+        maxActiveData = in.readInt();
+        max5G = in.readInt();
+        logicalModemList = new ArrayList<>();
+        in.readList(logicalModemList, ModemInfo.class.getClassLoader());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(maxActiveVoiceCalls, maxActiveData, max5G, logicalModemList);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (o == null || !(o instanceof PhoneCapability) || hashCode() != o.hashCode()) {
+            return false;
+        }
+
+        if (this == o) {
+            return true;
+        }
+
+        PhoneCapability s = (PhoneCapability) o;
+
+        return (maxActiveVoiceCalls == s.maxActiveVoiceCalls
+                && maxActiveData == s.maxActiveData
+                && max5G == s.max5G
+                && logicalModemList.equals(s.logicalModemList));
+    }
+
+    /**
+     * {@link Parcelable#describeContents}
+     */
+    public @Parcelable.ContentsFlags int describeContents() {
+        return 0;
+    }
+
+    /**
+     * {@link Parcelable#writeToParcel}
+     */
+    public void writeToParcel(Parcel dest, @Parcelable.WriteFlags int flags) {
+        dest.writeInt(maxActiveVoiceCalls);
+        dest.writeInt(maxActiveData);
+        dest.writeInt(max5G);
+        dest.writeList(logicalModemList);
+    }
+
+    public static final Parcelable.Creator<PhoneCapability> CREATOR = new Parcelable.Creator() {
+        public PhoneCapability createFromParcel(Parcel in) {
+            return new PhoneCapability(in);
+        }
+
+        public PhoneCapability[] newArray(int size) {
+            return new PhoneCapability[size];
+        }
+    };
+}
diff --git a/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java b/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
index f7dee99..ac6bcaa 100644
--- a/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
+++ b/telephony/java/android/telephony/PhoneNumberFormattingTextWatcher.java
@@ -19,6 +19,7 @@
 import com.android.i18n.phonenumbers.AsYouTypeFormatter;
 import com.android.i18n.phonenumbers.PhoneNumberUtil;
 
+import android.annotation.UnsupportedAppUsage;
 import android.telephony.PhoneNumberUtils;
 import android.text.Editable;
 import android.text.Selection;
@@ -50,6 +51,7 @@
      */
     private boolean mStopFormatting;
 
+    @UnsupportedAppUsage
     private AsYouTypeFormatter mFormatter;
 
     /**
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index fadfc91..f6e8d34 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -23,6 +23,7 @@
 import com.android.i18n.phonenumbers.ShortNumberInfo;
 
 import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.Intent;
 import android.content.res.Resources;
@@ -279,6 +280,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static String extractNetworkPortionAlt(String phoneNumber) {
         if (phoneNumber == null) {
             return null;
@@ -352,6 +354,7 @@
      * RFC 3601 says pause is 'p' and tonewait is 'w'.
      * @hide
      */
+    @UnsupportedAppUsage
     public static String convertPreDial(String phoneNumber) {
         if (phoneNumber == null) {
             return null;
@@ -464,6 +467,7 @@
     /**
      * @hide only for testing.
      */
+    @UnsupportedAppUsage
     public static boolean compare(String a, String b, boolean useStrictComparation) {
         return (useStrictComparation ? compareStrictly(a, b) : compareLoosely(a, b));
     }
@@ -482,6 +486,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean
     compareLoosely(String a, String b) {
         int ia, ib;
@@ -579,6 +584,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean
     compareStrictly(String a, String b) {
         return compareStrictly(a, b, true);
@@ -587,6 +593,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean
     compareStrictly(String a, String b, boolean acceptInvalidCCCPrefix) {
         if (a == null || b == null) {
@@ -1260,6 +1267,7 @@
      * @deprecated Use link #formatNumber(String phoneNumber, String defaultCountryIso) instead
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static String formatNumber(String source, int defaultFormattingType) {
         SpannableStringBuilder text = new SpannableStringBuilder(source);
         formatNumber(text, defaultFormattingType);
@@ -1720,6 +1728,7 @@
     //
     // However, in order to loose match 650-555-1212 and 555-1212, we need to set the min match
     // to 7.
+    @UnsupportedAppUsage
     static final int MIN_MATCH = 7;
 
     /**
@@ -1744,6 +1753,7 @@
      *         listed in the RIL / SIM, otherwise return false.
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isEmergencyNumber(int subId, String number) {
         // Return true only if the specified number *exactly* matches
         // one of the emergency numbers listed by the RIL / SIM.
@@ -1794,6 +1804,7 @@
      *         same digits as any of those emergency numbers.
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isPotentialEmergencyNumber(int subId, String number) {
         // Check against the emergency numbers listed by the RIL / SIM,
         // and *don't* require an exact match.
@@ -1858,6 +1869,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isEmergencyNumber(String number, String defaultCountryIso) {
             return isEmergencyNumber(getDefaultVoiceSubId(), number, defaultCountryIso);
     }
@@ -2081,6 +2093,7 @@
      * is currently in.
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isLocalEmergencyNumber(Context context, int subId, String number) {
         return isLocalEmergencyNumberInternal(subId, number,
                                               context,
@@ -2109,6 +2122,7 @@
      * @see android.location.CountryDetector
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isPotentialLocalEmergencyNumber(Context context, String number) {
         return isPotentialLocalEmergencyNumber(context, getDefaultVoiceSubId(), number);
     }
@@ -2135,6 +2149,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isPotentialLocalEmergencyNumber(Context context, int subId,
             String number) {
         return isLocalEmergencyNumberInternal(subId, number,
@@ -2244,6 +2259,7 @@
      * to read the VM number.
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isVoiceMailNumber(Context context, int subId, String number) {
         String vmNumber, mdn;
         try {
@@ -2390,6 +2406,7 @@
      *
      * @hide TODO: pending API Council approval
      */
+    @UnsupportedAppUsage
     public static String cdmaCheckAndProcessPlusCode(String dialStr) {
         if (!TextUtils.isEmpty(dialStr)) {
             if (isReallyDialable(dialStr.charAt(0)) &&
@@ -2569,6 +2586,7 @@
      * @hide
      */
     @Deprecated
+    @UnsupportedAppUsage
     public static CharSequence ttsSpanAsPhoneNumber(CharSequence phoneNumber) {
         return createTtsSpannable(phoneNumber);
     }
@@ -2680,6 +2698,7 @@
      * i.e. NXX-NXX-XXXX, N is any digit 2-9 and X is any digit 0-9
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isNanp (String dialStr) {
         boolean retVal = false;
         if (dialStr != null) {
@@ -2727,6 +2746,7 @@
      * @param number
      * @return true if number contains @
      */
+    @UnsupportedAppUsage
     public static boolean isUriNumber(String number) {
         // Note we allow either "@" or "%40" to indicate a URI, in case
         // the passed-in string is URI-escaped.  (Neither "@" nor "%40"
@@ -2744,6 +2764,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static String getUsernameFromUriNumber(String number) {
         // The delimiter between username and domain name can be
         // either "@" or "%40" (the URI-escaped equivalent.)
diff --git a/telephony/java/android/telephony/PhoneStateListener.java b/telephony/java/android/telephony/PhoneStateListener.java
index 8420165..bd6a59d 100644
--- a/telephony/java/android/telephony/PhoneStateListener.java
+++ b/telephony/java/android/telephony/PhoneStateListener.java
@@ -17,16 +17,16 @@
 package android.telephony;
 
 import android.annotation.NonNull;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
-import android.telecom.TelecomManager;
 
 import com.android.internal.telephony.IPhoneStateListener;
 
-import java.util.List;
 import java.lang.ref.WeakReference;
+import java.util.List;
 
 /**
  * A listener class for monitoring changes in specific telephony states
@@ -171,6 +171,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int LISTEN_PRECISE_CALL_STATE                       = 0x00000800;
 
     /**
@@ -271,11 +272,20 @@
      */
     public static final int LISTEN_PHYSICAL_CHANNEL_CONFIGURATION          = 0x00100000;
 
+    /**
+     *  Listen for changes to the phone capability.
+     *
+     *  @see #onPhoneCapabilityChanged
+     *  @hide
+     */
+    public static final int LISTEN_PHONE_CAPABILITY_CHANGE                 = 0x00200000;
+
     /*
      * Subscription used to listen to the phone state changes
      * @hide
      */
     /** @hide */
+    @UnsupportedAppUsage
     protected Integer mSubId;
 
     private final Handler mHandler;
@@ -293,6 +303,7 @@
      * using a particular non-null Looper.
      * @hide
      */
+    @UnsupportedAppUsage
     public PhoneStateListener(Looper looper) {
         this(null, looper);
     }
@@ -303,6 +314,7 @@
      * own non-null Looper use PhoneStateListener(int subId, Looper looper) below.
      * @hide
      */
+    @UnsupportedAppUsage
     public PhoneStateListener(Integer subId) {
         this(subId, Looper.myLooper());
     }
@@ -312,6 +324,7 @@
      * and non-null Looper.
      * @hide
      */
+    @UnsupportedAppUsage
     public PhoneStateListener(Integer subId, Looper looper) {
         if (DBG) log("ctor: subId=" + subId + " looper=" + looper);
         mSubId = subId;
@@ -389,6 +402,10 @@
                         PhoneStateListener.this.onPhysicalChannelConfigurationChanged(
                                 (List<PhysicalChannelConfig>)msg.obj);
                         break;
+                    case LISTEN_PHONE_CAPABILITY_CHANGE:
+                        PhoneStateListener.this.onPhoneCapabilityChanged(
+                                (PhoneCapability) msg.obj);
+                        break;
                 }
             }
         };
@@ -515,6 +532,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void onOtaspChanged(int otaspMode) {
         // default implementation empty
     }
@@ -532,6 +550,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void onPreciseCallStateChanged(PreciseCallState callState) {
         // default implementation empty
     }
@@ -541,6 +560,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void onPreciseDataConnectionStateChanged(
             PreciseDataConnectionState dataConnectionState) {
         // default implementation empty
@@ -551,6 +571,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void onDataConnectionRealTimeInfoChanged(
             DataConnectionRealTimeInfo dcRtInfo) {
         // default implementation empty
@@ -562,6 +583,7 @@
      * @param stateInfo is the current LTE network information
      * @hide
      */
+    @UnsupportedAppUsage
     public void onVoLteServiceStateChanged(VoLteServiceState stateInfo) {
     }
 
@@ -608,11 +630,22 @@
      * @param rawData is the byte array of the OEM hook raw data.
      * @hide
      */
+    @UnsupportedAppUsage
     public void onOemHookRawEvent(byte[] rawData) {
         // default implementation empty
     }
 
     /**
+     * Callback invoked when phone capability changes. Requires
+     * the READ_PRIVILEGED_PHONE_STATE permission.
+     * @param capability the new phone capability
+     * @hide
+     */
+    public void onPhoneCapabilityChanged(PhoneCapability capability) {
+        // default implementation empty
+    }
+
+    /**
      * Callback invoked when telephony has received notice from a carrier
      * app that a network action that could result in connectivity loss
      * has been requested by an app using
@@ -739,8 +772,13 @@
         public void onPhysicalChannelConfigurationChanged(List<PhysicalChannelConfig> configs) {
             send(LISTEN_PHYSICAL_CHANNEL_CONFIGURATION, 0, 0, configs);
         }
+
+        public void onPhoneCapabilityChanged(PhoneCapability capability) {
+            send(LISTEN_PHONE_CAPABILITY_CHANGE, 0, 0, capability);
+        }
     }
 
+    @UnsupportedAppUsage
     IPhoneStateListener callback = new IPhoneStateListenerStub(this);
 
     private void log(String s) {
diff --git a/telephony/java/android/telephony/PreciseCallState.java b/telephony/java/android/telephony/PreciseCallState.java
index f246416..ed5c26a 100644
--- a/telephony/java/android/telephony/PreciseCallState.java
+++ b/telephony/java/android/telephony/PreciseCallState.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.DisconnectCause;
@@ -71,6 +72,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public PreciseCallState(int ringingCall, int foregroundCall, int backgroundCall,
             int disconnectCause, int preciseDisconnectCause) {
         mRingingCallState = ringingCall;
@@ -113,6 +115,7 @@
      * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
      * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
      */
+    @UnsupportedAppUsage
     public int getRingingCallState() {
         return mRingingCallState;
     }
@@ -131,6 +134,7 @@
      * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
      * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
      */
+    @UnsupportedAppUsage
     public int getForegroundCallState() {
         return mForegroundCallState;
     }
@@ -149,6 +153,7 @@
      * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTED
      * @see PreciseCallState#PRECISE_CALL_STATE_DISCONNECTING
      */
+    @UnsupportedAppUsage
     public int getBackgroundCallState() {
         return mBackgroundCallState;
     }
@@ -195,6 +200,7 @@
      * @see DisconnectCause#CDMA_ACCESS_BLOCKED
      * @see DisconnectCause#ERROR_UNSPECIFIED
      */
+    @UnsupportedAppUsage
     public int getDisconnectCause() {
         return mDisconnectCause;
     }
@@ -233,6 +239,7 @@
      * @see PreciseDisconnectCause#CDMA_ACCESS_BLOCKED
      * @see PreciseDisconnectCause#ERROR_UNSPECIFIED
      */
+    @UnsupportedAppUsage
     public int getPreciseDisconnectCause() {
         return mPreciseDisconnectCause;
     }
diff --git a/telephony/java/android/telephony/PreciseDataConnectionState.java b/telephony/java/android/telephony/PreciseDataConnectionState.java
index 31c9a9e..b258f52 100644
--- a/telephony/java/android/telephony/PreciseDataConnectionState.java
+++ b/telephony/java/android/telephony/PreciseDataConnectionState.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.telephony.TelephonyManager;
@@ -53,6 +54,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public PreciseDataConnectionState(int state, int networkType,
             String apnType, String apn, String reason,
             LinkProperties linkProperties, String failCause) {
@@ -95,6 +97,7 @@
      * @see TelephonyManager#DATA_CONNECTED
      * @see TelephonyManager#DATA_SUSPENDED
      */
+    @UnsupportedAppUsage
     public int getDataConnectionState() {
         return mState;
     }
@@ -119,6 +122,7 @@
      * @see TelephonyManager#NETWORK_TYPE_EHRPD
      * @see TelephonyManager#NETWORK_TYPE_HSPAP
      */
+    @UnsupportedAppUsage
     public int getDataConnectionNetworkType() {
         return mNetworkType;
     }
@@ -126,6 +130,7 @@
     /**
      * Get data connection APN type
      */
+    @UnsupportedAppUsage
     public String getDataConnectionAPNType() {
         return mAPNType;
     }
@@ -133,6 +138,7 @@
     /**
      * Get data connection APN.
      */
+    @UnsupportedAppUsage
     public String getDataConnectionAPN() {
         return mAPN;
     }
@@ -140,6 +146,7 @@
     /**
      * Get data connection change reason.
      */
+    @UnsupportedAppUsage
     public String getDataConnectionChangeReason() {
         return mReason;
     }
@@ -147,6 +154,7 @@
     /**
      * Get the properties of the network link.
      */
+    @UnsupportedAppUsage
     public LinkProperties getDataConnectionLinkProperties() {
         return mLinkProperties;
     }
@@ -154,6 +162,7 @@
     /**
      * Get data connection fail cause, in case there was a failure.
      */
+    @UnsupportedAppUsage
     public String getDataConnectionFailCause() {
         return mFailCause;
     }
diff --git a/telephony/java/android/telephony/RadioAccessFamily.java b/telephony/java/android/telephony/RadioAccessFamily.java
index d657bae..1d79988 100644
--- a/telephony/java/android/telephony/RadioAccessFamily.java
+++ b/telephony/java/android/telephony/RadioAccessFamily.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -77,6 +78,7 @@
      *        in RadioAccessFamily. It's a bit mask value to represent
      *        the support type.
      */
+    @UnsupportedAppUsage
     public RadioAccessFamily(int phoneId, int radioAccessFamily) {
         mPhoneId = phoneId;
         mRadioAccessFamily = radioAccessFamily;
@@ -87,6 +89,7 @@
      *
      * @return phone ID
      */
+    @UnsupportedAppUsage
     public int getPhoneId() {
         return mPhoneId;
     }
@@ -96,6 +99,7 @@
      *
      * @return radio access family
      */
+    @UnsupportedAppUsage
     public int getRadioAccessFamily() {
         return mRadioAccessFamily;
     }
@@ -150,6 +154,7 @@
         }
     };
 
+    @UnsupportedAppUsage
     public static int getRafFromNetworkType(int type) {
         int raf;
 
@@ -263,6 +268,7 @@
         return TelephonyManager.NETWORK_CLASS_UNKNOWN;
     }
 
+    @UnsupportedAppUsage
     public static int getNetworkTypeFromRaf(int raf) {
         int type;
 
diff --git a/telephony/java/android/telephony/Rlog.java b/telephony/java/android/telephony/Rlog.java
index e0b46e1..5f2fa33 100644
--- a/telephony/java/android/telephony/Rlog.java
+++ b/telephony/java/android/telephony/Rlog.java
@@ -20,6 +20,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 
+import android.annotation.UnsupportedAppUsage;
 import android.util.Base64;
 
 import java.security.MessageDigest;
@@ -38,6 +39,7 @@
     private Rlog() {
     }
 
+    @UnsupportedAppUsage
     public static int v(String tag, String msg) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.VERBOSE, tag, msg);
     }
@@ -47,28 +49,34 @@
                 msg + '\n' + Log.getStackTraceString(tr));
     }
 
+    @UnsupportedAppUsage
     public static int d(String tag, String msg) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.DEBUG, tag, msg);
     }
 
+    @UnsupportedAppUsage
     public static int d(String tag, String msg, Throwable tr) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.DEBUG, tag,
                 msg + '\n' + Log.getStackTraceString(tr));
     }
 
+    @UnsupportedAppUsage
     public static int i(String tag, String msg) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.INFO, tag, msg);
     }
 
+    @UnsupportedAppUsage
     public static int i(String tag, String msg, Throwable tr) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.INFO, tag,
                 msg + '\n' + Log.getStackTraceString(tr));
     }
 
+    @UnsupportedAppUsage
     public static int w(String tag, String msg) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.WARN, tag, msg);
     }
 
+    @UnsupportedAppUsage
     public static int w(String tag, String msg, Throwable tr) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.WARN, tag,
                 msg + '\n' + Log.getStackTraceString(tr));
@@ -78,10 +86,12 @@
         return Log.println_native(Log.LOG_ID_RADIO, Log.WARN, tag, Log.getStackTraceString(tr));
     }
 
+    @UnsupportedAppUsage
     public static int e(String tag, String msg) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.ERROR, tag, msg);
     }
 
+    @UnsupportedAppUsage
     public static int e(String tag, String msg, Throwable tr) {
         return Log.println_native(Log.LOG_ID_RADIO, Log.ERROR, tag,
                 msg + '\n' + Log.getStackTraceString(tr));
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 9e8529e..2ee1a09 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -169,6 +170,7 @@
      * IWLAN
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int RIL_RADIO_TECHNOLOGY_IWLAN = 18;
 
     /**
@@ -233,6 +235,7 @@
     private String mDataOperatorAlphaLong;
     private String mDataOperatorAlphaShort;
     private String mDataOperatorNumeric;
+    @UnsupportedAppUsage
     private boolean mIsManualNetworkSelection;
 
     private boolean mIsEmergencyOnly;
@@ -240,16 +243,24 @@
     private int mRilVoiceRadioTechnology;
     private int mRilDataRadioTechnology;
 
+    @UnsupportedAppUsage
     private boolean mCssIndicator;
+    @UnsupportedAppUsage
     private int mNetworkId;
+    @UnsupportedAppUsage
     private int mSystemId;
+    @UnsupportedAppUsage
     private int mCdmaRoamingIndicator;
+    @UnsupportedAppUsage
     private int mCdmaDefaultRoamingIndicator;
+    @UnsupportedAppUsage
     private int mCdmaEriIconIndex;
+    @UnsupportedAppUsage
     private int mCdmaEriIconMode;
 
     private boolean mIsDataRoamingFromRegistration;
 
+    @UnsupportedAppUsage
     private boolean mIsUsingCarrierAggregation;
 
     private int mChannelNumber;
@@ -294,6 +305,7 @@
      * @return newly created ServiceState
      * @hide
      */
+    @UnsupportedAppUsage
     public static ServiceState newFromBundle(Bundle m) {
         ServiceState ret;
         ret = new ServiceState();
@@ -442,6 +454,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getVoiceRegState() {
         return mVoiceRegState;
     }
@@ -456,6 +469,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getDataRegState() {
         return mDataRegState;
     }
@@ -516,6 +530,7 @@
      * @return roaming status
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean getVoiceRoaming() {
         return mVoiceRoamingType != ROAMING_TYPE_NOT_ROAMING;
     }
@@ -525,6 +540,7 @@
      * @return roaming type
      * @hide
      */
+    @UnsupportedAppUsage
     public int getVoiceRoamingType() {
         return mVoiceRoamingType;
     }
@@ -534,6 +550,7 @@
      * @return roaming type
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean getDataRoaming() {
         return mDataRoamingType != ROAMING_TYPE_NOT_ROAMING;
     }
@@ -545,6 +562,7 @@
      * once the data registration phase has completed.
      * @hide
      */
+    @UnsupportedAppUsage
     public void setDataRoamingFromRegistration(boolean dataRoaming) {
         mIsDataRoamingFromRegistration = dataRoaming;
     }
@@ -563,6 +581,7 @@
      * @return roaming type
      * @hide
      */
+    @UnsupportedAppUsage
     public int getDataRoamingType() {
         return mDataRoamingType;
     }
@@ -570,6 +589,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isEmergencyOnly() {
         return mIsEmergencyOnly;
     }
@@ -577,6 +597,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public int getCdmaRoamingIndicator(){
         return this.mCdmaRoamingIndicator;
     }
@@ -584,6 +605,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public int getCdmaDefaultRoamingIndicator(){
         return this.mCdmaDefaultRoamingIndicator;
     }
@@ -591,6 +613,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public int getCdmaEriIconIndex() {
         return this.mCdmaEriIconIndex;
     }
@@ -598,6 +621,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public int getCdmaEriIconMode() {
         return this.mCdmaEriIconMode;
     }
@@ -619,6 +643,7 @@
      * @return long name of operator
      * @hide
      */
+    @UnsupportedAppUsage
     public String getVoiceOperatorAlphaLong() {
         return mVoiceOperatorAlphaLong;
     }
@@ -648,6 +673,7 @@
      * @return short name of operator, null if unregistered or unknown
      * @hide
      */
+    @UnsupportedAppUsage
     public String getVoiceOperatorAlphaShort() {
         return mVoiceOperatorAlphaShort;
     }
@@ -657,6 +683,7 @@
      * @return short name of operator, null if unregistered or unknown
      * @hide
      */
+    @UnsupportedAppUsage
     public String getDataOperatorAlphaShort() {
         return mDataOperatorAlphaShort;
     }
@@ -700,6 +727,7 @@
      * @return numeric format of operator, null if unregistered or unknown
      * @hide
      */
+    @UnsupportedAppUsage
     public String getVoiceOperatorNumeric() {
         return mVoiceOperatorNumeric;
     }
@@ -709,6 +737,7 @@
      * @return numeric format of operator, null if unregistered or unknown
      * @hide
      */
+    @UnsupportedAppUsage
     public String getDataOperatorNumeric() {
         return mDataOperatorNumeric;
     }
@@ -794,6 +823,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static String rilRadioTechnologyToString(int rt) {
         String rtString;
 
@@ -968,12 +998,14 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setVoiceRegState(int state) {
         mVoiceRegState = state;
         if (DBG) Rlog.d(LOG_TAG, "[ServiceState] setVoiceRegState=" + mVoiceRegState);
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setDataRegState(int state) {
         mDataRegState = state;
         if (VDBG) Rlog.d(LOG_TAG, "[ServiceState] setDataRegState=" + mDataRegState);
@@ -997,21 +1029,25 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setVoiceRoaming(boolean roaming) {
         mVoiceRoamingType = (roaming ? ROAMING_TYPE_UNKNOWN : ROAMING_TYPE_NOT_ROAMING);
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setVoiceRoamingType(int type) {
         mVoiceRoamingType = type;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setDataRoaming(boolean dataRoaming) {
         mDataRoamingType = (dataRoaming ? ROAMING_TYPE_UNKNOWN : ROAMING_TYPE_NOT_ROAMING);
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setDataRoamingType(int type) {
         mDataRoamingType = type;
     }
@@ -1019,6 +1055,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void setEmergencyOnly(boolean emergencyOnly) {
         mIsEmergencyOnly = emergencyOnly;
     }
@@ -1026,6 +1063,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void setCdmaRoamingIndicator(int roaming) {
         this.mCdmaRoamingIndicator = roaming;
     }
@@ -1033,6 +1071,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void setCdmaDefaultRoamingIndicator (int roaming) {
         this.mCdmaDefaultRoamingIndicator = roaming;
     }
@@ -1040,6 +1079,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void setCdmaEriIconIndex(int index) {
         this.mCdmaEriIconIndex = index;
     }
@@ -1047,6 +1087,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     public void setCdmaEriIconMode(int mode) {
         this.mCdmaEriIconMode = mode;
     }
@@ -1080,6 +1121,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setOperatorAlphaLong(String longName) {
         mVoiceOperatorAlphaLong = longName;
         mDataOperatorAlphaLong = longName;
@@ -1106,6 +1148,7 @@
      * @param b second obj
      * @return true if two objects equal or both are null
      */
+    @UnsupportedAppUsage
     private static boolean equalsHandlesNulls (Object a, Object b) {
         return (a == null) ? (b == null) : a.equals (b);
     }
@@ -1116,6 +1159,7 @@
      * @param m intent notifier map
      * @hide
      */
+    @UnsupportedAppUsage
     private void setFromNotifierBundle(Bundle m) {
         mVoiceRegState = m.getInt("voiceRegState");
         mDataRegState = m.getInt("dataRegState");
@@ -1149,6 +1193,7 @@
      * @param m intent notifier Bundle
      * @hide
      */
+    @UnsupportedAppUsage
     public void fillInNotifierBundle(Bundle m) {
         m.putInt("voiceRegState", mVoiceRegState);
         m.putInt("dataRegState", mDataRegState);
@@ -1221,6 +1266,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setCssIndicator(int css) {
         this.mCssIndicator = (css != 0);
     }
@@ -1233,10 +1279,12 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getRilVoiceRadioTechnology() {
         return this.mRilVoiceRadioTechnology;
     }
     /** @hide */
+    @UnsupportedAppUsage
     public int getRilDataRadioTechnology() {
         return this.mRilDataRadioTechnology;
     }
@@ -1245,6 +1293,7 @@
      * @Deprecated to be removed Q3 2013 use {@link #getRilDataRadioTechnology} or
      * {@link #getRilVoiceRadioTechnology}
      */
+    @UnsupportedAppUsage
     public int getRadioTechnology() {
         Rlog.e(LOG_TAG, "ServiceState.getRadioTechnology() DEPRECATED will be removed *******");
         return getRilDataRadioTechnology();
@@ -1374,16 +1423,19 @@
 
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getDataNetworkType() {
         return rilRadioTechnologyToNetworkType(mRilDataRadioTechnology);
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getVoiceNetworkType() {
         return rilRadioTechnologyToNetworkType(mRilVoiceRadioTechnology);
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getCssIndicator() {
         return this.mCssIndicator ? 1 : 0;
     }
@@ -1407,6 +1459,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static boolean isGsm(int radioTechnology) {
         return radioTechnology == RIL_RADIO_TECHNOLOGY_GPRS
                 || radioTechnology == RIL_RADIO_TECHNOLOGY_EDGE
@@ -1424,6 +1477,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static boolean isCdma(int radioTechnology) {
         return radioTechnology == RIL_RADIO_TECHNOLOGY_IS95A
                 || radioTechnology == RIL_RADIO_TECHNOLOGY_IS95B
@@ -1441,11 +1495,13 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static boolean bearerBitmapHasCdma(int radioTechnologyBitmap) {
         return (RIL_RADIO_CDMA_TECHNOLOGY_BITMASK & radioTechnologyBitmap) != 0;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static boolean bitmaskHasTech(int bearerBitmask, int radioTech) {
         if (bearerBitmask == 0) {
             return true;
@@ -1517,6 +1573,7 @@
      * voice SS. The voice SS is only used if it is IN_SERVICE (otherwise the base SS is returned).
      * @hide
      * */
+    @UnsupportedAppUsage
     public static ServiceState mergeServiceStates(ServiceState baseSs, ServiceState voiceSs) {
         if (voiceSs.mVoiceRegState != STATE_IN_SERVICE) {
             return baseSs;
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index 95abb91..ed758a9 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -36,21 +37,27 @@
     private static final boolean DBG = false;
 
     /** @hide */
+    @UnsupportedAppUsage
     public static final int SIGNAL_STRENGTH_NONE_OR_UNKNOWN
             = TelephonyProtoEnums.SIGNAL_STRENGTH_NONE_OR_UNKNOWN; // = 0
     /** @hide */
+    @UnsupportedAppUsage
     public static final int SIGNAL_STRENGTH_POOR
             = TelephonyProtoEnums.SIGNAL_STRENGTH_POOR; // = 1
     /** @hide */
+    @UnsupportedAppUsage
     public static final int SIGNAL_STRENGTH_MODERATE
             = TelephonyProtoEnums.SIGNAL_STRENGTH_MODERATE; // = 2
     /** @hide */
+    @UnsupportedAppUsage
     public static final int SIGNAL_STRENGTH_GOOD
             = TelephonyProtoEnums.SIGNAL_STRENGTH_GOOD; // = 3
     /** @hide */
+    @UnsupportedAppUsage
     public static final int SIGNAL_STRENGTH_GREAT
             = TelephonyProtoEnums.SIGNAL_STRENGTH_GREAT; // = 4
     /** @hide */
+    @UnsupportedAppUsage
     public static final int NUM_SIGNAL_STRENGTH_BINS = 5;
     /** @hide */
     public static final String[] SIGNAL_STRENGTH_NAMES = {
@@ -75,24 +82,39 @@
     private static final String MEASUMENT_TYPE_RSCP = "rscp";
 
     /** Parameters reported by the Radio */
+    @UnsupportedAppUsage
     private int mGsmSignalStrength; // Valid values are (0-31, 99) as defined in TS 27.007 8.5
+    @UnsupportedAppUsage
     private int mGsmBitErrorRate;   // bit error rate (0-7, 99) as defined in TS 27.007 8.5
+    @UnsupportedAppUsage
     private int mCdmaDbm;   // This value is the RSSI value
+    @UnsupportedAppUsage
     private int mCdmaEcio;  // This value is the Ec/Io
+    @UnsupportedAppUsage
     private int mEvdoDbm;   // This value is the EVDO RSSI value
+    @UnsupportedAppUsage
     private int mEvdoEcio;  // This value is the EVDO Ec/Io
+    @UnsupportedAppUsage
     private int mEvdoSnr;   // Valid values are 0-8.  8 is the highest signal to noise ratio
+    @UnsupportedAppUsage
     private int mLteSignalStrength;
+    @UnsupportedAppUsage
     private int mLteRsrp;
+    @UnsupportedAppUsage
     private int mLteRsrq;
+    @UnsupportedAppUsage
     private int mLteRssnr;
+    @UnsupportedAppUsage
     private int mLteCqi;
+    @UnsupportedAppUsage
     private int mTdScdmaRscp; // Valid values are -24...-120dBm or INVALID if unknown
     private int mWcdmaSignalStrength;
     private int mWcdmaRscpAsu;  // the WCDMA RSCP in ASU as reported from the HAL
+    @UnsupportedAppUsage
     private int mWcdmaRscp;     // the WCDMA RSCP in dBm
 
     /** Parameters from the framework */
+    @UnsupportedAppUsage
     private int mLteRsrpBoost; // offset to be reduced from the rsrp threshold while calculating
                                 // signal strength level
     private boolean mIsGsm; // This value is set by the ServiceStateTracker
@@ -121,6 +143,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static SignalStrength newFromBundle(Bundle m) {
         SignalStrength ret;
         ret = new SignalStrength();
@@ -133,6 +156,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public SignalStrength() {
         this(true);
     }
@@ -145,6 +169,7 @@
      * @return newly created SignalStrength
      * @hide
      */
+    @UnsupportedAppUsage
     public SignalStrength(boolean gsmFlag) {
         mGsmSignalStrength = 99;
         mGsmBitErrorRate = -1;
@@ -247,6 +272,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public SignalStrength(SignalStrength s) {
         copyFrom(s);
     }
@@ -254,6 +280,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     protected void copyFrom(SignalStrength s) {
         mGsmSignalStrength = s.mGsmSignalStrength;
         mGsmBitErrorRate = s.mGsmBitErrorRate;
@@ -284,6 +311,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public SignalStrength(Parcel in) {
         if (DBG) log("Size of signalstrength parcel:" + in.dataSize());
 
@@ -351,6 +379,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static final Parcelable.Creator<SignalStrength> CREATOR = new Parcelable.Creator() {
         public SignalStrength createFromParcel(Parcel in) {
             return new SignalStrength(in);
@@ -372,6 +401,7 @@
      *      Valid values for all signalstrength fields
      * @hide
      */
+    @UnsupportedAppUsage
     public void validateInput() {
         if (DBG) log("Signal before validate=" + this);
         // TS 27.007 8.5
@@ -546,26 +576,31 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getLteSignalStrength() {
         return mLteSignalStrength;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getLteRsrp() {
         return mLteRsrp;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getLteRsrq() {
         return mLteRsrq;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getLteRssnr() {
         return mLteRssnr;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getLteCqi() {
         return mLteCqi;
     }
@@ -594,6 +629,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getAsuLevel() {
         int asuLevel = 0;
         if (mIsGsm) {
@@ -629,6 +665,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getDbm() {
         int dBm = INVALID;
 
@@ -661,6 +698,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getGsmDbm() {
         int dBm;
 
@@ -680,6 +718,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getGsmLevel() {
         int level;
 
@@ -702,6 +741,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getGsmAsuLevel() {
         // ASU ranges from 0 to 31 - TS 27.007 Sec 8.5
         // asu = 0 (-113dB or less) is very weak
@@ -717,6 +757,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getCdmaLevel() {
         final int cdmaDbm = getCdmaDbm();
         final int cdmaEcio = getCdmaEcio();
@@ -746,6 +787,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getCdmaAsuLevel() {
         final int cdmaDbm = getCdmaDbm();
         final int cdmaEcio = getCdmaEcio();
@@ -777,6 +819,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getEvdoLevel() {
         int evdoDbm = getEvdoDbm();
         int evdoSnr = getEvdoSnr();
@@ -805,6 +848,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getEvdoAsuLevel() {
         int evdoDbm = getEvdoDbm();
         int evdoSnr = getEvdoSnr();
@@ -835,6 +879,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getLteDbm() {
         return mLteRsrp;
     }
@@ -844,6 +889,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getLteLevel() {
         /*
          * TS 36.214 Physical Layer Section 5.1.3
@@ -930,6 +976,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getLteAsuLevel() {
         int lteAsuLevel = 99;
         int lteDbm = getLteDbm();
@@ -973,6 +1020,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getTdScdmaDbm() {
         return this.mTdScdmaRscp;
     }
@@ -985,6 +1033,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getTdScdmaLevel() {
         final int tdScdmaDbm = getTdScdmaDbm();
         int level;
@@ -1006,6 +1055,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getTdScdmaAsuLevel() {
         final int tdScdmaDbm = getTdScdmaDbm();
         int tdScdmaAsuLevel;
@@ -1245,6 +1295,7 @@
      * @param m intent notifier map
      * @hide
      */
+    @UnsupportedAppUsage
     private void setFromNotifierBundle(Bundle m) {
         mGsmSignalStrength = m.getInt("GsmSignalStrength");
         mGsmBitErrorRate = m.getInt("GsmBitErrorRate");
@@ -1282,6 +1333,7 @@
      * @param m intent notifier Bundle
      * @hide
      */
+    @UnsupportedAppUsage
     public void fillInNotifierBundle(Bundle m) {
         m.putInt("GsmSignalStrength", mGsmSignalStrength);
         m.putInt("GsmBitErrorRate", mGsmBitErrorRate);
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 38bc640..9565507 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -19,6 +19,7 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SuppressAutoDoc;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.ActivityThread;
 import android.app.PendingIntent;
 import android.content.ActivityNotFoundException;
@@ -88,6 +89,7 @@
             new ArrayMap<Integer, SmsManager>();
 
     /** A concrete subscription id, or the pseudo DEFAULT_SUBSCRIPTION_ID */
+    @UnsupportedAppUsage
     private int mSubId;
 
     /*
@@ -440,6 +442,7 @@
      * @throws IllegalArgumentException if destinationAddress or text are empty
      * {@hide}
      */
+    @UnsupportedAppUsage
     public void sendTextMessage(
             String destinationAddress, String scAddress, String text,
             PendingIntent sentIntent, PendingIntent deliveryIntent,
@@ -493,6 +496,7 @@
      * PendingIntent, int, boolean, int)
      * @hide
      */
+    @UnsupportedAppUsage
     public void sendTextMessageWithoutPersisting(
             String destinationAddress, String scAddress, String text,
             PendingIntent sentIntent, PendingIntent deliveryIntent, int priority,
@@ -718,6 +722,7 @@
      * @throws IllegalArgumentException if destinationAddress or data are empty
      * {@hide}
      */
+    @UnsupportedAppUsage
     public void sendMultipartTextMessage(
             String destinationAddress, String scAddress, ArrayList<String> parts,
             ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents,
@@ -985,6 +990,7 @@
      * @throws IllegalArgumentException if pdu is NULL
      * {@hide}
      */
+    @UnsupportedAppUsage
     public boolean copyMessageToIcc(byte[] smsc, byte[] pdu,int status) {
         boolean success = false;
 
@@ -1015,6 +1021,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     public boolean
     deleteMessageFromIcc(int messageIndex) {
         boolean success = false;
@@ -1049,6 +1056,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     public boolean updateMessageOnIcc(int messageIndex, int newStatus, byte[] pdu) {
         boolean success = false;
 
@@ -1075,6 +1083,7 @@
      *
      * {@hide}
      */
+    @UnsupportedAppUsage
     public ArrayList<SmsMessage> getAllMessagesFromIcc() {
         List<SmsRawData> records = null;
 
@@ -1187,6 +1196,7 @@
      * @throws IllegalArgumentException if endMessageId < startMessageId
      * {@hide}
      */
+    @UnsupportedAppUsage
     public boolean enableCellBroadcastRange(int startMessageId, int endMessageId, int ranType) {
         boolean success = false;
 
@@ -1229,6 +1239,7 @@
      * @throws IllegalArgumentException if endMessageId < startMessageId
      * {@hide}
      */
+    @UnsupportedAppUsage
     public boolean disableCellBroadcastRange(int startMessageId, int endMessageId, int ranType) {
         boolean success = false;
 
@@ -1346,6 +1357,7 @@
      * @return true if enabled, false otherwise
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isSMSPromptEnabled() {
         ISms iccISms = null;
         try {
diff --git a/telephony/java/android/telephony/SmsMessage.java b/telephony/java/android/telephony/SmsMessage.java
index 57f89e3..91e24a9 100644
--- a/telephony/java/android/telephony/SmsMessage.java
+++ b/telephony/java/android/telephony/SmsMessage.java
@@ -20,6 +20,7 @@
 
 import android.annotation.Nullable;
 import android.annotation.StringDef;
+import android.annotation.UnsupportedAppUsage;
 import android.content.res.Resources;
 import android.os.Binder;
 import android.text.TextUtils;
@@ -107,18 +108,21 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public SmsMessageBase mWrappedSmsMessage;
 
     /** Indicates the subId
      *
      * @hide
      */
+    @UnsupportedAppUsage
     private int mSubId = 0;
 
     /** set Subscription information
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setSubId(int subId) {
         mSubId = subId;
     }
@@ -127,6 +131,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public int getSubId() {
         return mSubId;
     }
@@ -368,6 +373,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static ArrayList<String> fragmentText(String text) {
         // This function is for MO SMS
         TextEncodingDetails ted = (useCdmaFormatForMoSms()) ?
@@ -822,6 +828,7 @@
      *
      * @return true if Cdma format should be used for MO SMS, false otherwise.
      */
+    @UnsupportedAppUsage
     private static boolean useCdmaFormatForMoSms() {
         // IMS is registered with SMS support, check the SMS format supported
         return useCdmaFormatForMoSms(SubscriptionManager.getDefaultSmsSubscriptionId());
@@ -836,6 +843,7 @@
      *
      * @return true if Cdma format should be used for MO SMS, false otherwise.
      */
+    @UnsupportedAppUsage
     private static boolean useCdmaFormatForMoSms(int subId) {
         SmsManager smsManager = SmsManager.getSmsManagerForSubscriptionId(subId);
         if (!smsManager.isImsSmsSupported()) {
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index 2bc43d4..ec26622 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -18,6 +18,7 @@
 
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
@@ -216,6 +217,7 @@
      * Sets the name displayed to the user that identifies this subscription
      * @hide
      */
+    @UnsupportedAppUsage
     public void setDisplayName(CharSequence name) {
         this.mDisplayName = name;
     }
@@ -240,6 +242,7 @@
      * NAME_SOURCE_SIM_SOURCE or NAME_SOURCE_USER_INPUT.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getNameSource() {
         return this.mNameSource;
     }
@@ -298,6 +301,7 @@
      * Sets the color displayed to the user that identifies this subscription
      * @hide
      */
+    @UnsupportedAppUsage
     public void setIconTint(int iconTint) {
         this.mIconTint = iconTint;
     }
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 151b936..119733e 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -28,6 +28,7 @@
 import android.annotation.SuppressAutoDoc;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.UnsupportedAppUsage;
 import android.app.BroadcastOptions;
 import android.app.PendingIntent;
 import android.content.Context;
@@ -86,6 +87,7 @@
 
     /** Indicates the caller wants the default sub id. */
     /** @hide */
+    @UnsupportedAppUsage
     public static final int DEFAULT_SUBSCRIPTION_ID = Integer.MAX_VALUE;
 
     /**
@@ -108,6 +110,7 @@
     public static final int MAX_SUBSCRIPTION_ID_VALUE = DEFAULT_SUBSCRIPTION_ID - 1;
 
     /** @hide */
+    @UnsupportedAppUsage
     public static final Uri CONTENT_URI = Uri.parse("content://telephony/siminfo");
 
     /**
@@ -185,6 +188,7 @@
      * The name_source is from the user
      * @hide
      */
+    @UnsupportedAppUsage
     public static final int NAME_SOURCE_USER_INPUT = 2;
 
     /**
@@ -615,6 +619,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public SubscriptionManager(Context context) {
         if (DBG) logd("SubscriptionManager created");
         mContext = context;
@@ -793,6 +798,7 @@
      * include those that were inserted before, maybe empty but not null.
      * @hide
      */
+    @UnsupportedAppUsage
     public List<SubscriptionInfo> getAllSubscriptionInfoList() {
         if (VDBG) logd("[getAllSubscriptionInfoList]+");
 
@@ -964,6 +970,7 @@
      * all subscriptions that have been seen.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getAllSubscriptionInfoCount() {
         if (VDBG) logd("[getAllSubscriptionInfoCount]+");
 
@@ -1069,6 +1076,7 @@
      * @return the number of records updated
      * @hide
      */
+    @UnsupportedAppUsage
     public int setIconTint(int tint, int subId) {
         if (VDBG) logd("[setIconTint]+ tint:" + tint + " subId:" + subId);
         return setSubscriptionPropertyHelper(subId, "setIconTint",
@@ -1096,6 +1104,7 @@
      * @return the number of records updated or < 0 if invalid subId
      * @hide
      */
+    @UnsupportedAppUsage
     public int setDisplayName(String displayName, int subId, long nameSource) {
         if (VDBG) {
             logd("[setDisplayName]+  displayName:" + displayName + " subId:" + subId
@@ -1113,6 +1122,7 @@
      * @return the number of records updated
      * @hide
      */
+    @UnsupportedAppUsage
     public int setDisplayNumber(String number, int subId) {
         if (number == null) {
             logd("[setDisplayNumber]- fail");
@@ -1130,6 +1140,7 @@
      * @return the number of records updated
      * @hide
      */
+    @UnsupportedAppUsage
     public int setDataRoaming(int roaming, int subId) {
         if (VDBG) logd("[setDataRoaming]+ roaming:" + roaming + " subId:" + subId);
         return setSubscriptionPropertyHelper(subId, "setDataRoaming",
@@ -1143,6 +1154,7 @@
      * SIM_NOT_INSERTED or < 0 if an invalid slot index
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getSlotIndex(int subId) {
         if (!isValidSubscriptionId(subId)) {
             if (DBG) {
@@ -1166,6 +1178,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static int[] getSubId(int slotIndex) {
         if (!isValidSlotIndex(slotIndex)) {
             logd("[getSubId]- fail");
@@ -1187,6 +1200,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static int getPhoneId(int subId) {
         if (!isValidSubscriptionId(subId)) {
             if (DBG) {
@@ -1284,11 +1298,13 @@
      * @return the SubscriptionInfo for the default voice subscription.
      * @hide
      */
+    @UnsupportedAppUsage
     public SubscriptionInfo getDefaultVoiceSubscriptionInfo() {
         return getActiveSubscriptionInfo(getDefaultVoiceSubscriptionId());
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static int getDefaultVoicePhoneId() {
         return getPhoneId(getDefaultVoiceSubscriptionId());
     }
@@ -1317,6 +1333,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setDefaultSmsSubId(int subId) {
         if (VDBG) logd("setDefaultSmsSubId sub id = " + subId);
         try {
@@ -1342,6 +1359,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getDefaultSmsPhoneId() {
         return getPhoneId(getDefaultSmsSubscriptionId());
     }
@@ -1370,6 +1388,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public void setDefaultDataSubId(int subId) {
         if (VDBG) logd("setDataSubscription sub id = " + subId);
         try {
@@ -1390,11 +1409,13 @@
      * @return the SubscriptionInfo for the default data subscription.
      * @hide
      */
+    @UnsupportedAppUsage
     public SubscriptionInfo getDefaultDataSubscriptionInfo() {
         return getActiveSubscriptionInfo(getDefaultDataSubscriptionId());
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getDefaultDataPhoneId() {
         return getPhoneId(getDefaultDataSubscriptionId());
     }
@@ -1433,6 +1454,7 @@
      * an invalid subscription id, i.e. < 0.
      * @hide
      */
+    @UnsupportedAppUsage
     public void clearDefaultsForInactiveSubIds() {
         if (VDBG) logd("clearDefaultsForInactiveSubIds");
         try {
@@ -1449,6 +1471,7 @@
      * @return true if a valid subId else false
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isValidSubscriptionId(int subId) {
         return subId > INVALID_SUBSCRIPTION_ID ;
     }
@@ -1458,21 +1481,25 @@
      * usable subId means its neither a INVALID_SUBSCRIPTION_ID nor a DEFAULT_SUB_ID.
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean isUsableSubIdValue(int subId) {
         return subId >= MIN_SUBSCRIPTION_ID_VALUE && subId <= MAX_SUBSCRIPTION_ID_VALUE;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static boolean isValidSlotIndex(int slotIndex) {
         return slotIndex >= 0 && slotIndex < TelephonyManager.getDefault().getSimCount();
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static boolean isValidPhoneId(int phoneId) {
         return phoneId >= 0 && phoneId < TelephonyManager.getDefault().getPhoneCount();
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static void putPhoneIdAndSubIdExtra(Intent intent, int phoneId) {
         int[] subIds = SubscriptionManager.getSubId(phoneId);
         if (subIds != null && subIds.length > 0) {
@@ -1483,6 +1510,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public static void putPhoneIdAndSubIdExtra(Intent intent, int phoneId, int subId) {
         if (VDBG) logd("putPhoneIdAndSubIdExtra: phoneId=" + phoneId + " subId=" + subId);
         intent.putExtra(PhoneConstants.SUBSCRIPTION_KEY, subId);
@@ -1498,6 +1526,7 @@
      *         is never null but the length maybe 0.
      * @hide
      */
+    @UnsupportedAppUsage
     public @NonNull int[] getActiveSubscriptionIdList() {
         int[] subId = null;
 
@@ -1656,6 +1685,7 @@
      * @return Resources associated with Subscription.
      * @hide
      */
+    @UnsupportedAppUsage
     public static Resources getResourcesForSubId(Context context, int subId) {
         final SubscriptionInfo subInfo =
                 SubscriptionManager.from(context).getActiveSubscriptionInfo(subId);
@@ -1679,6 +1709,7 @@
      * and the SIM providing the subscription is present in a slot and in "LOADED" state.
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isActiveSubId(int subId) {
         try {
             ISub iSub = ISub.Stub.asInterface(ServiceManager.getService("isub"));
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index ae3f7a2..81d0d68 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -28,6 +28,7 @@
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.annotation.TestApi;
+import android.annotation.UnsupportedAppUsage;
 import android.annotation.WorkerThread;
 import android.app.ActivityThread;
 import android.app.PendingIntent;
@@ -155,6 +156,7 @@
 
     private final Context mContext;
     private final int mSubId;
+    @UnsupportedAppUsage
     private SubscriptionManager mSubscriptionManager;
     private TelephonyScanManager mTelephonyScanManager;
 
@@ -168,18 +170,24 @@
      **/
     /** @hide */
     public enum MultiSimVariants {
+        @UnsupportedAppUsage
         DSDS,
+        @UnsupportedAppUsage
         DSDA,
+        @UnsupportedAppUsage
         TSTS,
+        @UnsupportedAppUsage
         UNKNOWN
     };
 
     /** @hide */
+    @UnsupportedAppUsage
     public TelephonyManager(Context context) {
       this(context, SubscriptionManager.DEFAULT_SUBSCRIPTION_ID);
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public TelephonyManager(Context context, int subId) {
         mSubId = subId;
         Context appContext = context.getApplicationContext();
@@ -192,6 +200,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     private TelephonyManager() {
         mContext = null;
         mSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -201,6 +210,7 @@
 
     /** @hide
     /* @deprecated - use getSystemService as described above */
+    @UnsupportedAppUsage
     public static TelephonyManager getDefault() {
         return sInstance;
     }
@@ -228,6 +238,7 @@
      * Returns UNKNOWN for others
      */
     /** {@hide} */
+    @UnsupportedAppUsage
     public MultiSimVariants getMultiSimConfiguration() {
         String mSimConfig =
             SystemProperties.get(TelephonyProperties.PROPERTY_MULTI_SIM_CONFIG);
@@ -288,6 +299,7 @@
     }
 
     /** {@hide} */
+    @UnsupportedAppUsage
     public static TelephonyManager from(Context context) {
         return (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
     }
@@ -319,6 +331,7 @@
     }
 
     /** {@hide} */
+    @UnsupportedAppUsage
     public boolean isMultiSimEnabled() {
         return (multiSimConfig.equals("dsds") || multiSimConfig.equals("dsda") ||
             multiSimConfig.equals("tsts"));
@@ -672,6 +685,7 @@
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
     @Deprecated
+    @UnsupportedAppUsage
     public static final String ACTION_PRECISE_DATA_CONNECTION_STATE_CHANGED =
             "android.intent.action.PRECISE_DATA_CONNECTION_STATE_CHANGED";
 
@@ -1206,6 +1220,7 @@
      */
     /** {@hide} */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getDeviceSoftwareVersion(int slotIndex) {
         ITelephony telephony = getITelephony();
         if (telephony == null) return null;
@@ -1418,6 +1433,7 @@
      *  @param slotIndex of which Nai is returned
      */
     /** {@hide}*/
+    @UnsupportedAppUsage
     public String getNai(int slotIndex) {
         int[] subId = SubscriptionManager.getSubId(slotIndex);
         if (subId == null) {
@@ -1657,6 +1673,7 @@
     }
 
     /** {@hide} */
+    @UnsupportedAppUsage
     private int getPhoneTypeFromProperty(int phoneId) {
         String type = getTelephonyProperty(phoneId,
                 TelephonyProperties.CURRENT_ACTIVE_PHONE, null);
@@ -1691,6 +1708,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getPhoneType(int networkMode) {
         switch(networkMode) {
         case RILConstants.NETWORK_MODE_CDMA:
@@ -1736,6 +1754,7 @@
     /**
      * The contents of the /proc/cmdline file
      */
+    @UnsupportedAppUsage
     private static String getProcCmdLine()
     {
         String cmdline = "";
@@ -1782,6 +1801,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getLteOnCdmaModeStatic() {
         int retVal;
         int curVal;
@@ -1837,6 +1857,7 @@
      * @param subId
      * @hide
      */
+    @UnsupportedAppUsage
     public String getNetworkOperatorName(int subId) {
         int phoneId = SubscriptionManager.getPhoneId(subId);
         return getTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ALPHA, "");
@@ -1864,6 +1885,7 @@
      * @param subId
      * @hide
      */
+    @UnsupportedAppUsage
     public String getNetworkOperator(int subId) {
         int phoneId = SubscriptionManager.getPhoneId(subId);
         return getNetworkOperatorForPhone(phoneId);
@@ -1880,6 +1902,7 @@
      * @param phoneId
      * @hide
      **/
+    @UnsupportedAppUsage
     public String getNetworkOperatorForPhone(int phoneId) {
         return getTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, "");
      }
@@ -1942,6 +1965,7 @@
      * @param subId
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isNetworkRoaming(int subId) {
         int phoneId = SubscriptionManager.getPhoneId(subId);
         return Boolean.parseBoolean(getTelephonyProperty(phoneId,
@@ -1970,6 +1994,7 @@
      * @param subId for which Network CountryIso is returned
      * @hide
      */
+    @UnsupportedAppUsage
     public String getNetworkCountryIso(int subId) {
         return getNetworkCountryIsoForPhone(getPhoneId(subId));
     }
@@ -1985,6 +2010,7 @@
      * @param phoneId for which Network CountryIso is returned
      */
     /** {@hide} */
+    @UnsupportedAppUsage
     public String getNetworkCountryIsoForPhone(int phoneId) {
         try {
             ITelephony telephony = getITelephony();
@@ -2040,6 +2066,7 @@
     /** Current network is IWLAN */
     public static final int NETWORK_TYPE_IWLAN = TelephonyProtoEnums.NETWORK_TYPE_IWLAN; // = 18.
     /** Current network is LTE_CA {@hide} */
+    @UnsupportedAppUsage
     public static final int NETWORK_TYPE_LTE_CA = TelephonyProtoEnums.NETWORK_TYPE_LTE_CA; // = 19.
 
     /** Max network type number. Update as new types are added. Don't add negative types. {@hide} */
@@ -2092,6 +2119,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+   @UnsupportedAppUsage
    public int getNetworkType(int subId) {
        try {
            ITelephony telephony = getITelephony();
@@ -2154,6 +2182,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public int getDataNetworkType(int subId) {
         try{
             ITelephony telephony = getITelephony();
@@ -2189,6 +2218,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public int getVoiceNetworkType(int subId) {
         try{
             ITelephony telephony = getITelephony();
@@ -2216,10 +2246,13 @@
     /** Unknown network class. {@hide} */
     public static final int NETWORK_CLASS_UNKNOWN = 0;
     /** Class of broadly defined "2G" networks. {@hide} */
+    @UnsupportedAppUsage
     public static final int NETWORK_CLASS_2_G = 1;
     /** Class of broadly defined "3G" networks. {@hide} */
+    @UnsupportedAppUsage
     public static final int NETWORK_CLASS_3_G = 2;
     /** Class of broadly defined "4G" networks. {@hide} */
+    @UnsupportedAppUsage
     public static final int NETWORK_CLASS_4_G = 3;
 
     /**
@@ -2228,6 +2261,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getNetworkClass(int networkType) {
         switch (networkType) {
             case NETWORK_TYPE_GPRS:
@@ -2264,6 +2298,7 @@
      *
      * @hide pending API council review
      */
+    @UnsupportedAppUsage
     public String getNetworkTypeName() {
         return getNetworkTypeName(getNetworkType());
     }
@@ -2276,6 +2311,7 @@
      *
      */
     /** {@hide} */
+    @UnsupportedAppUsage
     public static String getNetworkTypeName(int type) {
         switch (type) {
             case NETWORK_TYPE_GPRS:
@@ -2475,6 +2511,7 @@
      */
     /** {@hide} */
     // FIXME Input argument slotIndex should be of type int
+    @UnsupportedAppUsage
     public boolean hasIccCard(int slotIndex) {
 
         try {
@@ -2638,6 +2675,7 @@
      * @param subId for which SimOperator is returned
      * @hide
      */
+    @UnsupportedAppUsage
     public String getSimOperator(int subId) {
         return getSimOperatorNumeric(subId);
     }
@@ -2651,6 +2689,7 @@
      * @see #getSimState
      * @hide
      */
+    @UnsupportedAppUsage
     public String getSimOperatorNumeric() {
         int subId = mSubId;
         if (!SubscriptionManager.isUsableSubIdValue(subId)) {
@@ -2679,6 +2718,7 @@
      * @param subId for which SimOperator is returned
      * @hide
      */
+    @UnsupportedAppUsage
     public String getSimOperatorNumeric(int subId) {
         int phoneId = SubscriptionManager.getPhoneId(subId);
         return getSimOperatorNumericForPhone(phoneId);
@@ -2692,6 +2732,7 @@
      * @param phoneId for which SimOperator is returned
      * @hide
      */
+    @UnsupportedAppUsage
     public String getSimOperatorNumericForPhone(int phoneId) {
         return getTelephonyProperty(phoneId,
                 TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, "");
@@ -2718,6 +2759,7 @@
      * @param subId for which SimOperatorName is returned
      * @hide
      */
+    @UnsupportedAppUsage
     public String getSimOperatorName(int subId) {
         int phoneId = SubscriptionManager.getPhoneId(subId);
         return getSimOperatorNameForPhone(phoneId);
@@ -2728,6 +2770,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public String getSimOperatorNameForPhone(int phoneId) {
          return getTelephonyProperty(phoneId,
                 TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA, "");
@@ -2746,6 +2789,7 @@
      * @param subId for which SimCountryIso is returned
      * @hide
      */
+    @UnsupportedAppUsage
     public String getSimCountryIso(int subId) {
         int phoneId = SubscriptionManager.getPhoneId(subId);
         return getSimCountryIsoForPhone(phoneId);
@@ -2756,6 +2800,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public String getSimCountryIsoForPhone(int phoneId) {
         return getTelephonyProperty(phoneId,
                 TelephonyProperties.PROPERTY_ICC_OPERATOR_ISO_COUNTRY, "");
@@ -2782,6 +2827,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getSimSerialNumber(int subId) {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -2807,6 +2853,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public int getLteOnCdmaMode() {
         return getLteOnCdmaMode(getSubId());
     }
@@ -2822,6 +2869,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public int getLteOnCdmaMode(int subId) {
         try {
             ITelephony telephony = getITelephony();
@@ -2929,6 +2977,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getSubscriberId(int subId) {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -3109,6 +3158,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getGroupIdLevel1(int subId) {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -3158,6 +3208,7 @@
             android.Manifest.permission.READ_SMS,
             android.Manifest.permission.READ_PHONE_NUMBERS
     })
+    @UnsupportedAppUsage
     public String getLine1Number(int subId) {
         String number = null;
         try {
@@ -3244,6 +3295,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getLine1AlphaTag(int subId) {
         String alphaTag = null;
         try {
@@ -3278,6 +3330,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public @Nullable String[] getMergedSubscriberIds() {
         try {
             ITelephony telephony = getITelephony();
@@ -3296,6 +3349,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getMsisdn() {
         return getMsisdn(getSubId());
     }
@@ -3308,6 +3362,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getMsisdn(int subId) {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -3341,6 +3396,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getVoiceMailNumber(int subId) {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -3900,6 +3956,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public int getVoiceMessageCount() {
         return getVoiceMessageCount(getSubId());
     }
@@ -3910,6 +3967,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public int getVoiceMessageCount(int subId) {
         try {
             ITelephony telephony = getITelephony();
@@ -3945,6 +4003,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getVoiceMailAlphaTag(int subId) {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -3991,6 +4050,7 @@
      * @return the IMPI, or null if not present or not loaded
      * @hide
      */
+    @UnsupportedAppUsage
     public String getIsimImpi() {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -4011,6 +4071,7 @@
      * @return the IMS domain name, or null if not present or not loaded
      * @hide
      */
+    @UnsupportedAppUsage
     public String getIsimDomain() {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -4032,6 +4093,7 @@
      *      not present or not loaded
      * @hide
      */
+    @UnsupportedAppUsage
     public String[] getIsimImpu() {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -4050,6 +4112,7 @@
    /**
     * @hide
     */
+    @UnsupportedAppUsage
     private IPhoneSubInfo getSubscriberInfo() {
         // get it each time because that process crashes a lot
         return IPhoneSubInfo.Stub.asInterface(ServiceManager.getService("iphonesubinfo"));
@@ -4115,6 +4178,7 @@
      * @param subId the subscription to check call state for.
      * @hide
      */
+    @UnsupportedAppUsage
     public @CallState int getCallState(int subId) {
         int phoneId = SubscriptionManager.getPhoneId(subId);
         return getCallStateForSlot(phoneId);
@@ -4226,6 +4290,7 @@
    /**
     * @hide
     */
+    @UnsupportedAppUsage
     private ITelephony getITelephony() {
         return ITelephony.Stub.asInterface(ServiceManager.getService(Context.TELEPHONY_SERVICE));
     }
@@ -4310,6 +4375,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public int getCdmaEriIconIndex(int subId) {
         try {
             ITelephony telephony = getITelephony();
@@ -4344,6 +4410,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public int getCdmaEriIconMode(int subId) {
         try {
             ITelephony telephony = getITelephony();
@@ -4374,6 +4441,7 @@
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    @UnsupportedAppUsage
     public String getCdmaEriText(int subId) {
         try {
             ITelephony telephony = getITelephony();
@@ -4846,6 +4914,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public String nvReadItem(int itemID) {
         try {
             ITelephony telephony = getITelephony();
@@ -4926,6 +4995,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean nvResetConfig(int resetType) {
         try {
             ITelephony telephony = getITelephony();
@@ -4962,6 +5032,7 @@
      * {@see SubscriptionManager#getDefaultVoiceSubscriptionId()}
      * {@see SubscriptionManager#getDefaultSmsSubscriptionId()}
      */
+    @UnsupportedAppUsage
     private int getSubId(int preferredSubId) {
         if (SubscriptionManager.isUsableSubIdValue(mSubId)) {
             return mSubId;
@@ -4990,6 +5061,7 @@
      * {@see SubscriptionManager#getDefaultVoiceSubscriptionId()}
      * {@see SubscriptionManager#getDefaultSmsSubscriptionId()}
      */
+    @UnsupportedAppUsage
     private int getPhoneId(int preferredSubId) {
         return SubscriptionManager.getPhoneId(getSubId(preferredSubId));
     }
@@ -5005,6 +5077,7 @@
      * {@hide}
      */
     @VisibleForTesting
+    @UnsupportedAppUsage
     public int getSlotIndex() {
         int slotIndex = SubscriptionManager.getSlotIndex(getSubId());
         if (slotIndex == SubscriptionManager.SIM_NOT_INSERTED) {
@@ -5018,6 +5091,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static void setTelephonyProperty(int phoneId, String property, String value) {
         String propVal = "";
         String p[] = null;
@@ -5095,6 +5169,7 @@
      * @return The value at the given index of settings.
      * @hide
      */
+    @UnsupportedAppUsage
     public static int getIntAtIndex(android.content.ContentResolver cr,
             String name, int index)
             throws android.provider.Settings.SettingNotFoundException {
@@ -5127,6 +5202,7 @@
      * @return true if the value was set, false on database errors
      * @hide
      */
+    @UnsupportedAppUsage
     public static boolean putIntAtIndex(android.content.ContentResolver cr,
             String name, int index, int value) {
         String data = "";
@@ -5168,6 +5244,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static String getTelephonyProperty(int phoneId, String property, String defaultVal) {
         String propVal = null;
         String prop = SystemProperties.get(property);
@@ -5188,12 +5265,14 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public static String getTelephonyProperty(String property, String defaultVal) {
         String propVal = SystemProperties.get(property);
         return propVal == null ? defaultVal : propVal;
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public int getSimCount() {
         // FIXME Need to get it from Telephony Dev Controller when that gets implemented!
         // and then this method shouldn't be used at all!
@@ -5230,6 +5309,7 @@
      *         not present or not loaded
      * @hide
      */
+    @UnsupportedAppUsage
     public String[] getIsimPcscf() {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -5310,6 +5390,7 @@
      *   Authentication error, no memory space available in EFMUK
      * @hide
      */
+    @UnsupportedAppUsage
     public String getIccAuthentication(int subId, int appType, int authType, String data) {
         try {
             IPhoneSubInfo info = getSubscriberInfo();
@@ -5472,6 +5553,7 @@
      * Corresponds to features defined in ImsFeature.
      * @hide
      */
+    @UnsupportedAppUsage
     public @Nullable IImsRegistration getImsRegistration(int slotIndex, int feature) {
         try {
             ITelephony telephony = getITelephony();
@@ -5491,6 +5573,7 @@
      * Corresponds to features defined in ImsFeature.
      * @hide
      */
+    @UnsupportedAppUsage
     public @Nullable IImsConfig getImsConfig(int slotIndex, int feature) {
         try {
             ITelephony telephony = getITelephony();
@@ -5509,6 +5592,7 @@
      * @param Registration state
      * @hide
      */
+    @UnsupportedAppUsage
     public void setImsRegistrationState(boolean registered) {
         try {
             ITelephony telephony = getITelephony();
@@ -5529,6 +5613,7 @@
      * @return the preferred network type, defined in RILConstants.java.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getPreferredNetworkType(int subId) {
         try {
             ITelephony telephony = getITelephony();
@@ -5677,6 +5762,7 @@
      * @return true on success; false on any failure.
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean setPreferredNetworkType(int subId, int networkType) {
         try {
             ITelephony telephony = getITelephony();
@@ -5851,6 +5937,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean setRoamingOverride(List<String> gsmRoamingList,
             List<String> gsmNonRoamingList, List<String> cdmaRoamingList,
             List<String> cdmaNonRoamingList) {
@@ -6705,6 +6792,7 @@
      * @see SubscriptionManager#getDefaultSubscriptionId()
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isImsRegistered() {
        try {
            return getITelephony().isImsRegistered(getSubId());
@@ -6721,6 +6809,7 @@
      * @see SubscriptionManager#getDefaultSubscriptionId()
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isVolteAvailable() {
         try {
             return getITelephony().isVolteAvailable(getSubId());
@@ -6737,6 +6826,7 @@
      * @return true if VT is available, or false if it is unavailable or unknown.
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isVideoTelephonyAvailable() {
         try {
             return getITelephony().isVideoTelephonyAvailable(getSubId());
@@ -6751,6 +6841,7 @@
      * @return true if VoWiFi is available, or false if it is unavailable or unknown.
      * @hide
      */
+    @UnsupportedAppUsage
     public boolean isWifiCallingAvailable() {
        try {
            return getITelephony().isWifiCallingAvailable(getSubId());
@@ -6793,6 +6884,7 @@
     *
     * @hide
     */
+    @UnsupportedAppUsage
     public void setSimOperatorNumericForPhone(int phoneId, String numeric) {
         setTelephonyProperty(phoneId,
                 TelephonyProperties.PROPERTY_ICC_OPERATOR_NUMERIC, numeric);
@@ -6813,6 +6905,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setSimOperatorNameForPhone(int phoneId, String name) {
         setTelephonyProperty(phoneId,
                 TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA, name);
@@ -6833,6 +6926,7 @@
     *
     * @hide
     */
+    @UnsupportedAppUsage
     public void setSimCountryIsoForPhone(int phoneId, String iso) {
         setTelephonyProperty(phoneId,
                 TelephonyProperties.PROPERTY_ICC_OPERATOR_ISO_COUNTRY, iso);
@@ -6853,6 +6947,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setSimStateForPhone(int phoneId, String state) {
         setTelephonyProperty(phoneId,
                 TelephonyProperties.PROPERTY_SIM_STATE, state);
@@ -6958,6 +7053,7 @@
      * @param version baseband version
      * @hide
      */
+    @UnsupportedAppUsage
     public void setBasebandVersionForPhone(int phoneId, String version) {
         setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_BASEBAND_VERSION, version);
     }
@@ -7023,6 +7119,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public void setPhoneType(int phoneId, int type) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             TelephonyManager.setTelephonyProperty(phoneId,
@@ -7052,6 +7149,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public String getOtaSpNumberSchemaForPhone(int phoneId, String defaultValue) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             return TelephonyManager.getTelephonyProperty(phoneId,
@@ -7139,6 +7237,7 @@
      * @param name the alphabetic name of current registered operator.
      * @hide
      */
+    @UnsupportedAppUsage
     public void setNetworkOperatorNameForPhone(int phoneId, String name) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ALPHA, name);
@@ -7161,6 +7260,7 @@
      * @param operator the numeric name (MCC+MNC) of current registered operator
      * @hide
      */
+    @UnsupportedAppUsage
     public void setNetworkOperatorNumericForPhone(int phoneId, String numeric) {
         setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_NUMERIC, numeric);
     }
@@ -7181,6 +7281,7 @@
      * @param isRoaming is network in romaing state or not
      * @hide
      */
+    @UnsupportedAppUsage
     public void setNetworkRoamingForPhone(int phoneId, boolean isRoaming) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             setTelephonyProperty(phoneId, TelephonyProperties.PROPERTY_OPERATOR_ISROAMING,
@@ -7208,6 +7309,7 @@
      * @param type the network type currently in use on the device for data transmission
      * @hide
      */
+    @UnsupportedAppUsage
     public void setDataNetworkTypeForPhone(int phoneId, int type) {
         if (SubscriptionManager.isValidPhoneId(phoneId)) {
             setTelephonyProperty(phoneId,
@@ -7220,6 +7322,7 @@
      * Returns the subscription ID for the given phone account.
      * @hide
      */
+    @UnsupportedAppUsage
     public int getSubIdForPhoneAccount(PhoneAccount phoneAccount) {
         int retval = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
         try {
@@ -7311,6 +7414,7 @@
      * either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE to retrieve the information.
      * @hide
      */
+    @UnsupportedAppUsage
     public ServiceState getServiceStateForSubscriber(int subId) {
         try {
             ITelephony service = getITelephony();
@@ -7971,4 +8075,23 @@
         }
         return UNKNOWN_CARRIER_ID_LIST_VERSION;
     }
+
+
+    /**
+     * How many modems can have simultaneous data connections.
+     * @hide
+     */
+    @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
+    public int getNumberOfModemsWithSimultaneousDataConnections() {
+        try {
+            ITelephony telephony = getITelephony();
+            if (telephony != null) {
+                return telephony.getNumberOfModemsWithSimultaneousDataConnections(
+                        getSubId(), mContext.getOpPackageName());
+            }
+        } catch (RemoteException ex) {
+            // This could happen if binder process crashes.
+        }
+        return 0;
+    }
 }
diff --git a/telephony/java/android/telephony/VoLteServiceState.java b/telephony/java/android/telephony/VoLteServiceState.java
index afef601b..25bb8b4 100644
--- a/telephony/java/android/telephony/VoLteServiceState.java
+++ b/telephony/java/android/telephony/VoLteServiceState.java
@@ -16,6 +16,7 @@
 
 package android.telephony;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -77,6 +78,7 @@
      *
      * @hide
      */
+    @UnsupportedAppUsage
     public VoLteServiceState(int srvccState) {
         initialize();
 
diff --git a/telephony/java/android/telephony/cdma/CdmaCellLocation.java b/telephony/java/android/telephony/cdma/CdmaCellLocation.java
index 7c10569..ee602c0 100644
--- a/telephony/java/android/telephony/cdma/CdmaCellLocation.java
+++ b/telephony/java/android/telephony/cdma/CdmaCellLocation.java
@@ -16,6 +16,7 @@
 
 package android.telephony.cdma;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.telephony.CellLocation;
 
@@ -23,6 +24,7 @@
  * Represents the cell location on a CDMA phone.
  */
 public class CdmaCellLocation extends CellLocation {
+    @UnsupportedAppUsage
     private int mBaseStationId = -1;
 
     /**
@@ -36,6 +38,7 @@
      * to 1296000, both values inclusive (corresponding to a range of -90
      * to +90 degrees). Integer.MAX_VALUE is considered invalid value.
      */
+    @UnsupportedAppUsage
     private int mBaseStationLatitude = INVALID_LAT_LONG;
 
     /**
@@ -44,9 +47,12 @@
      * to 2592000, both values inclusive (corresponding to a range of -180
      * to +180 degrees). Integer.MAX_VALUE is considered invalid value.
      */
+    @UnsupportedAppUsage
     private int mBaseStationLongitude = INVALID_LAT_LONG;
 
+    @UnsupportedAppUsage
     private int mSystemId = -1;
+    @UnsupportedAppUsage
     private int mNetworkId = -1;
 
     /**
@@ -200,6 +206,7 @@
      * @param b second obj
      * @return true if two objects equal or both are null
      */
+    @UnsupportedAppUsage
     private static boolean equalsHandlesNulls(Object a, Object b) {
         return (a == null) ? (b == null) : a.equals (b);
     }
diff --git a/telephony/java/android/telephony/euicc/DownloadableSubscription.java b/telephony/java/android/telephony/euicc/DownloadableSubscription.java
index edf3b08..f1d5bdd 100644
--- a/telephony/java/android/telephony/euicc/DownloadableSubscription.java
+++ b/telephony/java/android/telephony/euicc/DownloadableSubscription.java
@@ -17,6 +17,7 @@
 
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.app.PendingIntent;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -59,6 +60,7 @@
      */
     @Nullable
     @Deprecated
+    @UnsupportedAppUsage
     public final String encodedActivationCode;
 
     @Nullable private String confirmationCode;
@@ -188,6 +190,7 @@
      * @deprecated - Do not use.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void setCarrierName(String carrierName) {
         this.carrierName = carrierName;
     }
@@ -234,6 +237,7 @@
      * @deprecated - Do not use.
      */
     @Deprecated
+    @UnsupportedAppUsage
     public void setAccessRules(UiccAccessRule[] accessRules) {
         this.accessRules = Arrays.asList(accessRules);
     }
diff --git a/telephony/java/android/telephony/euicc/EuiccInfo.java b/telephony/java/android/telephony/euicc/EuiccInfo.java
index a4adf05..28855b2 100644
--- a/telephony/java/android/telephony/euicc/EuiccInfo.java
+++ b/telephony/java/android/telephony/euicc/EuiccInfo.java
@@ -16,6 +16,7 @@
 package android.telephony.euicc;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -43,6 +44,7 @@
             };
 
     @Nullable
+    @UnsupportedAppUsage
     private final String osVersion;
 
     /**
diff --git a/telephony/java/android/telephony/gsm/GsmCellLocation.java b/telephony/java/android/telephony/gsm/GsmCellLocation.java
index 1717802..98ce333 100644
--- a/telephony/java/android/telephony/gsm/GsmCellLocation.java
+++ b/telephony/java/android/telephony/gsm/GsmCellLocation.java
@@ -16,6 +16,7 @@
 
 package android.telephony.gsm;
 
+import android.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.telephony.CellLocation;
 
@@ -91,6 +92,7 @@
      * Set the primary scrambling code.
      * @hide
      */
+    @UnsupportedAppUsage
     public void setPsc(int psc) {
         mPsc = psc;
     }
diff --git a/telephony/java/android/telephony/ims/ImsCallForwardInfo.java b/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
index 2831127..34b8884 100644
--- a/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
+++ b/telephony/java/android/telephony/ims/ImsCallForwardInfo.java
@@ -17,6 +17,7 @@
 package android.telephony.ims;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -30,30 +31,37 @@
     // Refer to ImsUtInterface#CDIV_CF_XXX
     /** @hide */
     // TODO: Make private, do not modify this field directly, use getter.
+    @UnsupportedAppUsage
     public int mCondition;
     // 0: disabled, 1: enabled
     /** @hide */
     // TODO: Make private, do not modify this field directly, use getter.
+    @UnsupportedAppUsage
     public int mStatus;
     // 0x91: International, 0x81: Unknown
     /** @hide */
     // TODO: Make private, do not modify this field directly, use getter.
+    @UnsupportedAppUsage
     public int mToA;
     // Service class
     /** @hide */
     // TODO: Make private, do not modify this field directly, use getter.
+    @UnsupportedAppUsage
     public int mServiceClass;
     // Number (it will not include the "sip" or "tel" URI scheme)
     /** @hide */
     // TODO: Make private, do not modify this field directly, use getter.
+    @UnsupportedAppUsage
     public String mNumber;
     // No reply timer for CF
     /** @hide */
     // TODO: Make private, do not modify this field directly, use getter.
+    @UnsupportedAppUsage
     public int mTimeSeconds;
 
     /** @hide */
     // TODO: Will be removed in the future, use public constructor instead.
+    @UnsupportedAppUsage
     public ImsCallForwardInfo() {
     }
 
diff --git a/telephony/java/android/telephony/ims/ImsCallProfile.java b/telephony/java/android/telephony/ims/ImsCallProfile.java
index 350dfe3..f0d3c89 100644
--- a/telephony/java/android/telephony/ims/ImsCallProfile.java
+++ b/telephony/java/android/telephony/ims/ImsCallProfile.java
@@ -17,6 +17,7 @@
 package android.telephony.ims;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -260,8 +261,10 @@
     /** @hide */
     public int mServiceType;
     /** @hide */
+    @UnsupportedAppUsage
     public int mCallType;
     /** @hide */
+    @UnsupportedAppUsage
     public int mRestrictCause = CALL_RESTRICT_CAUSE_NONE;
 
     /**
@@ -287,8 +290,10 @@
      * a {@link android.os.Binder}.
      */
     /** @hide */
+    @UnsupportedAppUsage
     public Bundle mCallExtras;
     /** @hide */
+    @UnsupportedAppUsage
     public ImsStreamMediaProfile mMediaProfile;
 
     /** @hide */
@@ -568,6 +573,7 @@
      * See {@link #presentationToOir(int)}.
      * @hide
      */
+    @UnsupportedAppUsage
     public static int presentationToOIR(int presentation) {
         switch (presentation) {
             case PhoneConstants.PRESENTATION_RESTRICTED:
diff --git a/telephony/java/android/telephony/ims/ImsExternalCallState.java b/telephony/java/android/telephony/ims/ImsExternalCallState.java
index e158fa8..8d18ae8 100644
--- a/telephony/java/android/telephony/ims/ImsExternalCallState.java
+++ b/telephony/java/android/telephony/ims/ImsExternalCallState.java
@@ -17,6 +17,7 @@
 package android.telephony.ims;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
@@ -58,6 +59,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public ImsExternalCallState(int callId, Uri address, boolean isPullable, int callState,
             int callType, boolean isCallheld) {
         mCallId = callId;
diff --git a/telephony/java/android/telephony/ims/ImsReasonInfo.java b/telephony/java/android/telephony/ims/ImsReasonInfo.java
index 662cc7a6..b981f05 100644
--- a/telephony/java/android/telephony/ims/ImsReasonInfo.java
+++ b/telephony/java/android/telephony/ims/ImsReasonInfo.java
@@ -17,6 +17,7 @@
 package android.telephony.ims;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -583,12 +584,15 @@
 
     // For main reason code
     /** @hide */
+    @UnsupportedAppUsage
     public int mCode;
     // For the extra code value; it depends on the code value.
     /** @hide */
+    @UnsupportedAppUsage
     public int mExtraCode;
     // For the additional message of the reason info.
     /** @hide */
+    @UnsupportedAppUsage
     public String mExtraMessage;
 
     /** @hide */
@@ -605,6 +609,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public ImsReasonInfo(int code, int extraCode) {
         mCode = code;
         mExtraCode = extraCode;
diff --git a/telephony/java/android/telephony/ims/ImsSsInfo.java b/telephony/java/android/telephony/ims/ImsSsInfo.java
index e924a25..3a784c1 100644
--- a/telephony/java/android/telephony/ims/ImsSsInfo.java
+++ b/telephony/java/android/telephony/ims/ImsSsInfo.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -65,15 +66,18 @@
     // 0: disabled, 1: enabled
     /** @hide */
     // TODO: Make private, do not modify this field directly, use getter!
+    @UnsupportedAppUsage
     public int mStatus;
     /** @hide */
     // TODO: Make private, do not modify this field directly, use getter!
+    @UnsupportedAppUsage
     public String mIcbNum;
     /** @hide */
     public int mProvisionStatus = SERVICE_PROVISIONING_UNKNOWN;
 
     /**@hide*/
     // TODO: Remove! Do not use this constructor, instead use public version.
+    @UnsupportedAppUsage
     public ImsSsInfo() {
     }
 
diff --git a/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java b/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
index 137106a..52d72b5 100644
--- a/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
+++ b/telephony/java/android/telephony/ims/ImsStreamMediaProfile.java
@@ -17,6 +17,7 @@
 package android.telephony.ims;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -82,13 +83,16 @@
 
     // Audio related information
     /** @hide */
+    @UnsupportedAppUsage
     public int mAudioQuality;
     /** @hide */
+    @UnsupportedAppUsage
     public int mAudioDirection;
     // Video related information
     /** @hide */
     public int mVideoQuality;
     /** @hide */
+    @UnsupportedAppUsage
     public int mVideoDirection;
     // Rtt related information
     /** @hide */
@@ -156,6 +160,7 @@
     }
 
     /** @hide */
+    @UnsupportedAppUsage
     public ImsStreamMediaProfile() {
         mAudioQuality = AUDIO_QUALITY_NONE;
         mAudioDirection = DIRECTION_SEND_RECEIVE;
diff --git a/telephony/java/android/telephony/ims/ImsVideoCallProvider.java b/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
index b4f60b9..1772401 100644
--- a/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
+++ b/telephony/java/android/telephony/ims/ImsVideoCallProvider.java
@@ -17,6 +17,7 @@
 package android.telephony.ims;
 
 import android.annotation.SystemApi;
+import android.annotation.UnsupportedAppUsage;
 import android.net.Uri;
 import android.os.Handler;
 import android.os.Looper;
@@ -179,6 +180,7 @@
      * Returns binder object which can be used across IPC methods.
      * @hide
      */
+    @UnsupportedAppUsage
     public final IImsVideoCallProvider getInterface() {
         return mBinder;
     }
diff --git a/telephony/java/android/telephony/ims/compat/ImsService.java b/telephony/java/android/telephony/ims/compat/ImsService.java
index cf1efb3..2750e51 100644
--- a/telephony/java/android/telephony/ims/compat/ImsService.java
+++ b/telephony/java/android/telephony/ims/compat/ImsService.java
@@ -17,6 +17,7 @@
 package android.telephony.ims.compat;
 
 import android.annotation.Nullable;
+import android.annotation.UnsupportedAppUsage;
 import android.app.Service;
 import android.content.Intent;
 import android.os.IBinder;
@@ -86,6 +87,7 @@
     /**
      * @hide
      */
+    @UnsupportedAppUsage
     protected final IBinder mImsServiceController = new IImsServiceController.Stub() {
 
         @Override
diff --git a/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java b/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
index 0a12cae..e8fcac1 100644
--- a/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
+++ b/telephony/java/android/telephony/ims/compat/feature/ImsFeature.java
@@ -17,6 +17,7 @@
 package android.telephony.ims.compat.feature;
 
 import android.annotation.IntDef;
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.Intent;
 import android.os.IInterface;
@@ -104,10 +105,12 @@
         mSlotId = slotId;
     }
 
+    @UnsupportedAppUsage
     public int getFeatureState() {
         return mState;
     }
 
+    @UnsupportedAppUsage
     protected final void setFeatureState(@ImsState int state) {
         if (mState != state) {
             mState = state;
diff --git a/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java b/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
index d3d17f4..40ea208 100644
--- a/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
+++ b/telephony/java/android/telephony/ims/compat/feature/MMTelFeature.java
@@ -20,6 +20,7 @@
 import android.os.Message;
 import android.os.RemoteException;
 
+import android.annotation.UnsupportedAppUsage;
 import android.telephony.ims.ImsCallProfile;
 import com.android.ims.internal.IImsCallSession;
 import com.android.ims.internal.IImsCallSessionListener;
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
index e5ed825..23de2fd 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsCallSessionImplBase.java
@@ -28,6 +28,7 @@
 import com.android.ims.internal.IImsCallSession;
 import com.android.ims.internal.IImsVideoCallProvider;
 
+import android.annotation.UnsupportedAppUsage;
 import android.telephony.ims.ImsCallSession;
 
 /**
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
index 2c325ba8..e55c3d0 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsConfigImplBase.java
@@ -16,6 +16,7 @@
 
 package android.telephony.ims.compat.stub;
 
+import android.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.Intent;
 import android.os.RemoteException;
@@ -58,6 +59,7 @@
 
     ImsConfigStub mImsConfigStub;
 
+    @UnsupportedAppUsage
     public ImsConfigImplBase(Context context) {
         mImsConfigStub = new ImsConfigStub(this, context);
     }
@@ -162,6 +164,7 @@
     public void setVideoQuality(int quality, ImsConfigListener listener) throws RemoteException {
     }
 
+    @UnsupportedAppUsage
     public IImsConfig getIImsConfig() { return mImsConfigStub; }
 
     /**
diff --git a/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java b/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
index b2aa080..976c2be 100644
--- a/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
+++ b/telephony/java/android/telephony/ims/compat/stub/ImsUtListenerImplBase.java
@@ -19,6 +19,7 @@
 import android.os.Bundle;
 import android.os.RemoteException;
 
+import android.annotation.UnsupportedAppUsage;
 import android.telephony.ims.ImsCallForwardInfo;
 import android.telephony.ims.ImsReasonInfo;
 import android.telephony.ims.ImsSsData;
diff --git a/telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl b/telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl
index 0d315e5..1ebb697 100644
--- a/telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl
+++ b/telephony/java/com/android/internal/telephony/IPhoneStateListener.aidl
@@ -21,6 +21,7 @@
 import android.telephony.SignalStrength;
 import android.telephony.CellInfo;
 import android.telephony.DataConnectionRealTimeInfo;
+import android.telephony.PhoneCapability;
 import android.telephony.PhysicalChannelConfig;
 import android.telephony.PreciseCallState;
 import android.telephony.PreciseDataConnectionState;
@@ -50,5 +51,6 @@
     void onOemHookRawEvent(in byte[] rawData);
     void onCarrierNetworkChange(in boolean active);
     void onUserMobileDataStateChanged(in boolean enabled);
+    void onPhoneCapabilityChanged(in PhoneCapability capability);
 }
 
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index f9c3940..c59a739 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1531,4 +1531,10 @@
      * @hide
      */
     void refreshUiccProfile(int subId);
+
+    /**
+     * How many modems can have simultaneous data connections.
+     * @hide
+     */
+    int getNumberOfModemsWithSimultaneousDataConnections(int subId, String callingPackage);
 }
diff --git a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index 0127db9..e0e1a7b 100644
--- a/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephonyRegistry.aidl
@@ -21,6 +21,7 @@
 import android.net.NetworkCapabilities;
 import android.os.Bundle;
 import android.telephony.CellInfo;
+import android.telephony.PhoneCapability;
 import android.telephony.PhysicalChannelConfig;
 import android.telephony.ServiceState;
 import android.telephony.SignalStrength;
@@ -74,4 +75,5 @@
     void notifySubscriptionInfoChanged();
     void notifyCarrierNetworkChange(in boolean active);
     void notifyUserMobileDataStateChangedForPhoneId(in int phoneId, in int subId, in boolean state);
+    void notifyPhoneCapabilityChanged(in PhoneCapability capability);
 }
diff --git a/tools/aapt2/format/Container.cpp b/tools/aapt2/format/Container.cpp
index 739555c..d4b4571 100644
--- a/tools/aapt2/format/Container.cpp
+++ b/tools/aapt2/format/Container.cpp
@@ -270,7 +270,8 @@
   }
 
   if (magic != kContainerFormatMagic) {
-    error_ = "magic value doesn't match AAPT";
+    error_ =
+        StringPrintf("magic value is 0x%08x but AAPT expects 0x%08x", magic, kContainerFormatMagic);
     return;
   }
 
diff --git a/tools/aapt2/format/binary/TableFlattener.cpp b/tools/aapt2/format/binary/TableFlattener.cpp
index 6fd4c8d..8641a7c 100644
--- a/tools/aapt2/format/binary/TableFlattener.cpp
+++ b/tools/aapt2/format/binary/TableFlattener.cpp
@@ -133,11 +133,10 @@
   }
 
   void Visit(Array* array) override {
-    for (auto& item : array->elements) {
-      ResTable_map* out_entry = buffer_->NextBlock<ResTable_map>();
-      FlattenValue(item.get(), out_entry);
-      out_entry->value.size = util::HostToDevice16(sizeof(out_entry->value));
-      entry_count_++;
+    const size_t count = array->elements.size();
+    for (size_t i = 0; i < count; i++) {
+      Reference key(android::ResTable_map::ATTR_MIN + i);
+      FlattenEntry(&key, array->elements[i].get());
     }
   }
 
diff --git a/tools/aapt2/format/binary/TableFlattener_test.cpp b/tools/aapt2/format/binary/TableFlattener_test.cpp
index bab7010..af19b98 100644
--- a/tools/aapt2/format/binary/TableFlattener_test.cpp
+++ b/tools/aapt2/format/binary/TableFlattener_test.cpp
@@ -17,7 +17,9 @@
 #include "format/binary/TableFlattener.h"
 
 #include "android-base/stringprintf.h"
+#include "androidfw/TypeWrappers.h"
 
+#include "ResChunkPullParser.h"
 #include "ResourceUtils.h"
 #include "SdkConstants.h"
 #include "format/binary/BinaryResourceParser.h"
@@ -236,6 +238,62 @@
   EXPECT_EQ(attr.max_int, actual_attr->max_int);
 }
 
+TEST_F(TableFlattenerTest, FlattenArray) {
+  auto array = util::make_unique<Array>();
+  array->elements.push_back(util::make_unique<BinaryPrimitive>(uint8_t(Res_value::TYPE_INT_DEC),
+                                                               1u));
+  array->elements.push_back(util::make_unique<BinaryPrimitive>(uint8_t(Res_value::TYPE_INT_DEC),
+                                                               2u));
+  std::unique_ptr<ResourceTable> table =
+      test::ResourceTableBuilder()
+          .SetPackageId("android", 0x01)
+          .AddValue("android:array/foo", ResourceId(0x01010000), std::move(array))
+          .Build();
+
+  std::string result;
+  ASSERT_TRUE(Flatten(context_.get(), {}, table.get(), &result));
+
+  // Parse the flattened resource table
+  ResChunkPullParser parser(result.data(), result.size());
+  ASSERT_TRUE(parser.IsGoodEvent(parser.Next()));
+  ASSERT_EQ(util::DeviceToHost16(parser.chunk()->type), RES_TABLE_TYPE);
+
+  // Retrieve the package of the entry
+  ResChunkPullParser table_parser(GetChunkData(parser.chunk()), GetChunkDataLen(parser.chunk()));
+  const ResChunk_header* package_chunk = nullptr;
+  while (table_parser.IsGoodEvent(table_parser.Next())) {
+    if (util::DeviceToHost16(table_parser.chunk()->type) == RES_TABLE_PACKAGE_TYPE) {
+      package_chunk = table_parser.chunk();
+      break;
+    }
+  }
+
+  // Retrieve the type that proceeds the array entry
+  ASSERT_NE(package_chunk, nullptr);
+  ResChunkPullParser package_parser(GetChunkData(table_parser.chunk()),
+                                    GetChunkDataLen(table_parser.chunk()));
+  const ResChunk_header* type_chunk = nullptr;
+  while (package_parser.IsGoodEvent(package_parser.Next())) {
+    if (util::DeviceToHost16(package_parser.chunk()->type) == RES_TABLE_TYPE_TYPE) {
+      type_chunk = package_parser.chunk();
+      break;
+    }
+  }
+
+  // Retrieve the array entry
+  ASSERT_NE(type_chunk, nullptr);
+  TypeVariant typeVariant((const ResTable_type*) type_chunk);
+  auto entry = (const ResTable_map_entry*)*typeVariant.beginEntries();
+  ASSERT_EQ(util::DeviceToHost16(entry->count), 2u);
+
+  // Check that the value and name of the array entries are correct
+  auto values = (const ResTable_map*)(((const uint8_t *)entry) + entry->size);
+  ASSERT_EQ(values->value.data, 1u);
+  ASSERT_EQ(values->name.ident, android::ResTable_map::ATTR_MIN);
+  ASSERT_EQ((values+1)->value.data, 2u);
+  ASSERT_EQ((values+1)->name.ident, android::ResTable_map::ATTR_MIN + 1);
+}
+
 static std::unique_ptr<ResourceTable> BuildTableWithSparseEntries(
     IAaptContext* context, const ConfigDescription& sparse_config, float load) {
   std::unique_ptr<ResourceTable> table =
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl
index 5631919..12f50c8 100644
--- a/wifi/java/android/net/wifi/IWifiManager.aidl
+++ b/wifi/java/android/net/wifi/IWifiManager.aidl
@@ -126,7 +126,7 @@
 
     void acquireMulticastLock(IBinder binder, String tag);
 
-    void releaseMulticastLock();
+    void releaseMulticastLock(String tag);
 
     void updateInterfaceIpState(String ifaceName, int mode);
 
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index f7de370..b56a758 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -318,6 +318,31 @@
             "android.net.wifi.extra.SUBSCRIPTION_REMEDIATION_METHOD";
 
     /**
+     * Activity Action: lunch OSU (Online Sign Up) view.
+     * Included extras:
+     *
+     * {@link #EXTRA_OSU_NETWORK}: {@link Network} instance associated with OSU AP.
+     * {@link #EXTRA_URL}: String representation of a server URL used for OSU process.
+     *
+     * <p>Note: The broadcast is only delivered to registered receivers - no manifest registered
+     * components will be launched.
+     *
+     * @hide
+     */
+    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+    public static final String ACTION_PASSPOINT_LAUNCH_OSU_VIEW =
+            "android.net.wifi.action.PASSPOINT_LAUNCH_OSU_VIEW";
+
+    /**
+     * The lookup key for a {@link android.net.Network} associated with OSU server.
+     *
+     * Retrieve with {@link android.content.Intent#getParcelableExtra(String)}.
+     *
+     * @hide
+     */
+    public static final String EXTRA_OSU_NETWORK = "android.net.wifi.extra.OSU_NETWORK";
+
+    /**
      * Broadcast intent action indicating that Wi-Fi has been enabled, disabled,
      * enabling, disabling, or unknown. One extra provides this state as an int.
      * Another extra provides the previous state, if available.
@@ -3409,7 +3434,7 @@
                         mService.acquireMulticastLock(mBinder, mTag);
                         synchronized (WifiManager.this) {
                             if (mActiveLockCount >= MAX_ACTIVE_LOCKS) {
-                                mService.releaseMulticastLock();
+                                mService.releaseMulticastLock(mTag);
                                 throw new UnsupportedOperationException(
                                         "Exceeded maximum number of wifi locks");
                             }
@@ -3451,7 +3476,7 @@
             synchronized (mBinder) {
                 if (mRefCounted ? (--mRefCount == 0) : (mHeld)) {
                     try {
-                        mService.releaseMulticastLock();
+                        mService.releaseMulticastLock(mTag);
                         synchronized (WifiManager.this) {
                             mActiveLockCount--;
                         }
diff --git a/wifi/java/android/net/wifi/hotspot2/ProvisioningCallback.java b/wifi/java/android/net/wifi/hotspot2/ProvisioningCallback.java
index 66297fc..ef9c59f 100644
--- a/wifi/java/android/net/wifi/hotspot2/ProvisioningCallback.java
+++ b/wifi/java/android/net/wifi/hotspot2/ProvisioningCallback.java
@@ -85,6 +85,17 @@
     public static final int OSU_FAILURE_SOAP_MESSAGE_EXCHANGE = 11;
 
     /**
+     * The reason code for provisioning failure when a redirect server fails to start.
+     */
+    public static final int OSU_FAILURE_START_REDIRECT_SERVER = 12;
+
+    /**
+     * The reason code for provisioning failure when there is no OSU activity to listen to
+     * {@link WifiManager#ACTION_PASSPOINT_LAUNCH_OSU_VIEW} intent.
+     */
+    public static final int OSU_FAILURE_NO_OSU_ACTIVITY_FOUND = 13;
+
+    /**
      * The status code for provisioning flow to indicate connecting to OSU AP
      */
     public static final int OSU_STATUS_AP_CONNECTING = 1;
@@ -115,6 +126,16 @@
     public static final int OSU_STATUS_INIT_SOAP_EXCHANGE = 6;
 
     /**
+     * The status code for provisioning flow to indicate waiting for a HTTP redirect response.
+     */
+    public static final int OSU_STATUS_WAITING_FOR_REDIRECT_RESPONSE = 7;
+
+    /**
+     * The status code for provisioning flow to indicate a HTTP redirect response is received.
+     */
+    public static final int OSU_STATUS_REDIRECT_RESPONSE_RECEIVED = 8;
+
+    /**
      * Provisioning status for OSU failure
      *
      * @param status indicates error condition