API Change Statistics

The overall difference between API Levels l-preview and 21 is approximately 4.63%.


Total of Differences, by Number and Type

The table below lists the numbers of program elements (packages, classes, constructors, methods, and fields) that were added, changed, or removed. The table includes only the highest-level program elements — that is, if a class with two methods was added, the number of methods added does not include those two methods, but the number of classes added does include that class.

Type Additions Changes Removals Total
Packages 6 54 1 61
Classes and Interfaces 92 302 26 420
Constructors 24 3 5 32
Methods 575 84 131 790
Fields 624 379 141 1144
Total 1321 822 304 2447

Changed Packages, Sorted by Percentage Difference

Percentage Difference* Package
73 android.media.session
61 android.service.voice
47 android.media.tv
47 android.bluetooth.le
32 android.hardware.camera2
24 android.app.job
21 android.transition
20 android.speech.tts
19 android.hardware.display
18 android.hardware
18 android.service.notification
18 android.content.pm
16 android.text.style
13 android.app.admin
11 java.util.concurrent
9 android.media
8 android.hardware.camera2.params
6 android
5 android.graphics.drawable
5 android.app
5 android.webkit
4 android.provider
4 android.telephony
3 android.net.wifi
3 android.appwidget
3 android.net
2 android.view.inputmethod
2 android.graphics
2 android.service.dreams
1 android.util
1 android.view
1 android.view.textservice
1 android.os
1 android.service.wallpaper
1 android.media.audiofx
1 java.util
1 android.bluetooth
<1 android.graphics.drawable.shapes
<1 android.printservice
<1 android.nfc.cardemulation
<1 android.content
<1 android.widget
<1 android.accessibilityservice
<1 android.renderscript
<1 android.test.mock
<1 android.text
<1 android.location
<1 android.app.backup
<1 android.content.res
<1 java.util.concurrent.locks
<1 android.view.accessibility
<1 android.inputmethodservice
<1 android.accounts
<1 android.system

* See Calculation of Change Percentages, below.


Changed Classes and Interfaces, Sorted by Percentage Difference

Percentage
Difference*
Class or Interface
100 android.media.session.MediaSessionManager
90 android.media.tv.TvInputManager
84 android.media.session.MediaSession.Callback
80 android.media.MediaCodecList
75 android.content.pm.LauncherApps
66 android.bluetooth.le.BluetoothLeAdvertiser
66 android.bluetooth.le.ScanRecord
66 android.graphics.LightingColorFilter
66 android.graphics.PorterDuffColorFilter
66 android.media.session.MediaController
63 android.media.tv.TvInputInfo
63 android.R.transition
62 android.bluetooth.le.AdvertiseCallback
58 android.telephony.SmsManager
57 android.hardware.camera2.DngCreator
53 android.bluetooth.le.ScanCallback
52 android.util.Range
50 android.hardware.Camera.AutoFocusCallback
50 android.hardware.Camera.AutoFocusMoveCallback
50 android.hardware.Camera.ErrorCallback
50 android.hardware.Camera.FaceDetectionListener
50 android.hardware.Camera.OnZoomChangeListener
50 android.hardware.Camera.PictureCallback
50 android.hardware.Camera.PreviewCallback
50 android.hardware.Camera.ShutterCallback
50 android.hardware.camera2.CameraManager
50 android.provider.ContactsContract.Contacts.StreamItems
50 android.provider.ContactsContract.RawContacts.StreamItems
50 android.provider.ContactsContract.StreamItemPhotos
50 android.provider.ContactsContract.StreamItemPhotosColumns
50 android.provider.ContactsContract.StreamItems
50 android.provider.ContactsContract.StreamItems.StreamItemPhotos
50 android.provider.ContactsContract.StreamItemsColumns
50 android.view.ViewAnimationUtils
49 android.media.tv.TvContract.Channels
47 android.media.session.MediaSession
45 android.transition.ChangeTransform
42 android.app.ActivityManager.AppTask
42 android.bluetooth.le.ScanFilter.Builder
42 android.graphics.ColorMatrixColorFilter
42 android.provider.ContactsContract.CommonDataKinds.Note
42 android.webkit.PermissionRequest
42 android.media.tv.TvContract.Programs.Genres
42 android.service.voice.VoiceInteractionSession
38 android.R.dimen
38 android.media.session.MediaController.Callback
35 android.speech.tts.TextToSpeech
33 android.bluetooth.le.BluetoothLeScanner
33 android.bluetooth.le.ScanSettings.Builder
33 android.media.MediaFormat
33 android.media.tv.TvContract
33 android.provider.ContactsContract.CommonDataKinds.Callable
33 android.provider.ContactsContract.CommonDataKinds.GroupMembership
33 android.provider.ContactsContract.CommonDataKinds.Identity
33 android.provider.ContactsContract.CommonDataKinds.Photo
33 android.provider.MediaStore.Audio.Radio
33 android.renderscript.ScriptC
33 android.service.notification.NotificationListenerService.Ranking
33 android.speech.tts.UtteranceProgressListener
33 android.transition.AutoTransition
33 android.transition.Explode
32 android.webkit.CookieManager
30 android.media.audiofx.Virtualizer
30 android.media.tv.TvInputService.Session
30 android.webkit.WebResourceResponse
29 android.hardware.camera2.CameraDevice
28 android.media.Ringtone
28 android.media.tv.TvView
28 android.service.voice.VoiceInteractionService
28 android.view.WindowInsets
28 android.app.admin.DevicePolicyManager
27 android.bluetooth.le.AdvertiseSettings.Builder
27 android.provider.ContactsContract.CommonDataKinds.Contactables
27 android.provider.ContactsContract.Data
26 android.service.notification.NotificationListenerService
26 android.app.job.JobInfo
25 android.graphics.drawable.RippleDrawable
25 android.media.RemoteControlClient.MetadataEditor
25 android.provider.ContactsContract.CommonDataKinds.Event
25 android.transition.Slide
24 android.media.session.PlaybackState
24 android.view.inputmethod.CursorAnchorInfo
24 android.widget.ProgressBar
23 android.transition.Visibility
23 android.speech.tts.SynthesisCallback
22 android.os.PowerManager
22 android.app.Notification.MediaStyle
22 android.hardware.camera2.CameraCaptureSession
21 android.bluetooth.le.ScanSettings
21 android.media.session.MediaController.TransportControls
20 android.bluetooth.le.AdvertiseSettings
20 android.os.Vibrator
20 android.provider.ContactsContract.PhoneLookup
20 android.speech.tts.TextToSpeechService
20 android.text.InputFilter.LengthFilter
19 android.speech.tts.SynthesisRequest
18 android.R.id
18 android.view.inputmethod.CursorAnchorInfo.Builder
18 android.R.interpolator
18 android.R.style
18 android.transition.ChangeBounds
17 android.provider.ContactsContract.CommonDataKinds.SipAddress
17 android.os.UserManager
17 android.bluetooth.le.ScanFilter
17 android.net.VpnService.Builder
16 android.graphics.drawable.AnimatedStateListDrawable
16 android.hardware.Camera.Area
16 android.hardware.Camera.Size
16 android.hardware.camera2.params.StreamConfigurationMap
16 android.provider.ContactsContract.Contacts.Entity
16 android.widget.CheckedTextView
16 android.widget.CompoundButton
15 android.media.tv.TvContract.Programs
15 android.provider.ContactsContract.CommonDataKinds.Nickname
15 android.media.MediaCodec
14 android.app.job.JobInfo.Builder
14 android.media.Image
14 android.net.Network
14 android.provider.ContactsContract.CommonDataKinds.Website
14 android.provider.ContactsContract.QuickContact
14 android.transition.ChangeClipBounds
14 android.transition.TransitionSet
14 android.util.Size
14 android.util.SizeF
14 android.widget.AbsSeekBar
14 android.widget.FrameLayout
13 android.bluetooth.le.ScanResult
12 android.provider.ContactsContract.Contacts
12 android.view.FrameStats
12 android.app.admin.DeviceAdminReceiver
12 android.provider.ContactsContract.CommonDataKinds.StructuredName
11 java.util.Locale
11 android.appwidget.AppWidgetProviderInfo
11 android.media.MediaMetadata
11 android.app.Fragment
11 android.hardware.display.VirtualDisplay
11 android.media.CamcorderProfile
11 android.media.MediaRecorder.VideoEncoder
11 android.provider.ContactsContract.CommonDataKinds.Organization
11 android.transition.Fade
10 android.net.wifi.WifiManager
10 android.view.Display
10 android.content.pm.PackageInfo
10 android.provider.ContactsContract.CommonDataKinds.Email
10 android.speech.tts.TextToSpeech.Engine
10 android.os.Build
10 android.media.tv.TvInputService
10 android.service.notification.NotificationListenerService.RankingMap
10 android.view.textservice.TextInfo
9 android.media.MediaCodecInfo.CodecCapabilities
9 android.R.attr
9 android.bluetooth.BluetoothGatt
9 android.app.ActivityManager.RecentTaskInfo
9 android.app.KeyguardManager
9 android.app.job.JobParameters
9 android.content.RestrictionEntry
9 android.content.pm.InstrumentationInfo
9 android.media.MediaCodec.CryptoException
9 android.provider.ContactsContract.ContactOptionsColumns
9 android.widget.ActionMenuView
9 android.widget.EdgeEffect
8 android.provider.CallLog.Calls
8 android.media.AudioManager
8 android.provider.ContactsContract.CommonDataKinds.StructuredPostal
8 android.media.AudioFormat
8 android.hardware.Camera.CameraInfo
8 android.hardware.display.DisplayManager
8 android.provider.ContactsContract
8 android.webkit.CookieSyncManager
8 android.app.AlarmManager
8 android.net.ConnectivityManager
8 android.widget.Toolbar
7 android.view.Window
7 android.media.MediaRecorder.AudioEncoder
7 android.net.LinkAddress
7 android.net.NetworkRequest.Builder
7 android.os.PowerManager.WakeLock
7 android.provider.ContactsContract.CommonDataKinds.Relation
7 android.provider.ContactsContract.GroupsColumns
7 android.provider.ContactsContract.RawContactsColumns
7 android.transition.Transition
7 android.bluetooth.BluetoothAdapter
7 android.graphics.Outline
7 android.hardware.Camera.Face
7 android.hardware.camera2.CaptureFailure
6 android.provider.ContactsContract.CommonDataKinds.Im
6 android.app.ActionBar.LayoutParams
6 android.app.ActivityOptions
6 android.media.MediaMetadata.Builder
6 android.media.MediaRecorder.OutputFormat
6 java.util.concurrent.ScheduledThreadPoolExecutor
6 android.view.inputmethod.InputConnection
6 android.hardware.Sensor
5 android.bluetooth.BluetoothGattServerCallback
5 android.content.pm.PackageManager
5 android.app.AppOpsManager
5 android.graphics.drawable.shapes.Shape
5 android.provider.Settings
5 android.net.NetworkCapabilities
5 android.app.Notification.Builder
5 android.media.MediaPlayer.TrackInfo
5 android.net.ProxyInfo
5 android.provider.Telephony.ThreadsColumns
5 android.widget.DatePicker
5 android.widget.ImageView
5 android.widget.GridLayout
5 android.app.Activity
5 android.location.SettingInjectorService
5 android.webkit.WebSyncManager
4 android.app.ActivityManager
4 android.app.backup.BackupAgent
4 android.bluetooth.BluetoothGattCallback
4 android.graphics.BitmapFactory.Options
4 android.provider.ContactsContract.CommonDataKinds.Phone
4 android.content.pm.ActivityInfo
4 android.telephony.TelephonyManager
4 android.media.RemoteController
4 android.webkit.WebViewClient
4 android.graphics.Path
4 android.graphics.ImageFormat
4 android.provider.ContactsContract.ContactsColumns
4 android.os.Build.VERSION_CODES
4 android.view.KeyEvent
4 android.app.Notification
4 android.appwidget.AppWidgetHost
4 android.net.wifi.WpsInfo
4 android.provider.VoicemailContract.Voicemails
3 android.printservice.PrintService
3 android.widget.Switch
3 android.hardware.camera2.CaptureResult
3 android.content.Context
3 android.content.pm.ApplicationInfo
3 android.appwidget.AppWidgetManager
3 android.content.res.AssetManager
3 android.hardware.camera2.CameraMetadata
3 android.app.UiModeManager
3 android.inputmethodservice.InputMethodService
3 android.graphics.drawable.Drawable
3 android.media.MediaMetadataEditor
3 android.graphics.Canvas
3 android.service.notification.StatusBarNotification
3 android.util.Rational
2 android.os.Bundle
2 android.media.SoundPool
2 android.media.MediaPlayer
2 android.net.wifi.WifiConfiguration
2 android.nfc.cardemulation.CardEmulation
2 android.provider.Telephony.BaseMmsColumns
2 android.content.pm.PermissionInfo
2 android.test.mock.MockPackageManager
2 android.view.accessibility.AccessibilityWindowInfo
2 android.service.wallpaper.WallpaperService.Engine
2 android.util.DisplayMetrics
2 android.service.dreams.DreamService
2 android.view.inputmethod.InputMethodManager
2 android.view.inputmethod.InputConnectionWrapper
2 android.widget.TextView
2 android.util.ArrayMap
1 android.Manifest.permission
1 android.app.ActivityManager.RunningAppProcessInfo
1 android.provider.ContactsContract.DataColumns
1 android.graphics.Paint
1 android.os.Parcel
1 android.os.Message
1 android.provider.Telephony.TextBasedSmsColumns
1 android.view.inputmethod.BaseInputConnection
1 android.webkit.WebChromeClient
1 android.widget.VideoView
1 android.widget.PopupWindow
1 android.content.res.TypedArray
1 android.text.SpannableStringBuilder
1 android.media.RemoteControlClient
1 java.util.concurrent.locks.AbstractQueuedLongSynchronizer
1 java.util.concurrent.locks.AbstractQueuedSynchronizer
1 android.accounts.AccountManager
1 android.webkit.WebView
1 android.app.FragmentTransaction
1 android.hardware.camera2.CameraCharacteristics
1 android.media.MediaDrm
1 android.view.ViewGroup
1 android.view.View
1 android.app.ActionBar
1 android.view.accessibility.AccessibilityNodeInfo
1 android.hardware.Camera
1 android.accessibilityservice.AccessibilityService
1 android.media.MediaRecorder
1 android.view.ViewParent
1 android.hardware.SensorManager
1 android.test.mock.MockContext
1 android.content.ContextWrapper
<1 android.hardware.camera2.CaptureRequest
<1 android.media.AudioTrack
<1 android.content.Intent
<1 android.view.WindowManager.LayoutParams
<1 android.content.ContentResolver
<1 android.provider.Settings.Secure
<1 android.widget.AbsListView
<1 android.media.MediaCodecInfo.CodecProfileLevel
<1 android.provider.Settings.System
<1 android.hardware.Camera.Parameters
<1 android.view.MotionEvent
<1 android.system.OsConstants

* See Calculation of Change Percentages, below.


Calculation of Change Percentages

The percent change statistic reported for all elements in the "to" API Level specification is defined recursively as follows:

Percentage difference = 100 * (added + removed + 2*changed)
                        -----------------------------------
                        sum of public elements in BOTH APIs

where added is the number of packages added, removed is the number of packages removed, and changed is the number of packages changed. This definition is applied recursively for the classes and their program elements, so the value for a changed package will be less than 1, unless every class in that package has changed. The definition ensures that if all packages are removed and all new packages are added, the change will be 100%.