diff --git a/Documentation/workflow/HowToAddNewApiLevel.md b/Documentation/workflow/HowToAddNewApiLevel.md
index d8fdd239207..07665812f19 100644
--- a/Documentation/workflow/HowToAddNewApiLevel.md
+++ b/Documentation/workflow/HowToAddNewApiLevel.md
@@ -54,13 +54,174 @@ acceptable "breaks":
When Google announces that the APIs are frozen, additional work such as enumification is needed.
----- Somewhat outdated docs below, update when we do this year's stabilization ----
+There have been many, many attempts to "automate" the enumification process in the past, to varying
+degrees of success. The main problem is that no automated process is going to be perfect, so
+they all rely on a human verifying and modifying the results.
+
+However this verification process is long and tedious. Doing it correctly requires almost as much
+effort as doing the full process manually. Thus it generally isn't done correctly and many errors
+slip in, leaving our users with bad bindings that are hard to fix in the future without breaking API.
+
+Currently we have taken the opposite approach and do the process completely manually, but we
+have invested in tooling to make the process as easy as possible.
+
+This tooling is BindingStudio:
+https://github.com/jpobst/BindingStudio
+
+It's a Winforms app, so it only runs on Windows. It's ugly as sin, and has very poor UX. However,
+it prompts you with the exact decisions you need to make, and handles as much dirty work as possible,
+allowing enumification to be done in a few days.
+
+### Extract constants from API
+
+Using BindingStudio:
+
+- Update `CURRENT_API_LEVEL` in MainForm.cs
+- Choose `Tools` -> `Add API Level Constants`
+ - Fill in existing `map.csv`: `xamarin-android/src/Mono.Android/map.csv`
+ - Fill in new `api.xml`: ex: `xamarin-android/src/Mono.Android/obj/Debug/net6.0/android-32/mcw/api.xml`
+- Choose `File` -> `Save`
+
+This adds all the new possible constants from the API level to `map.csv`. They will be
+marked with a `?` indicating no determination has been made if they should be enumified or not.
+
+Example:
+```
+?,32,android/media/Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL,1,,,,
+?,32,android/media/Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE,0,,,,
+?,32,android/media/Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_OTHER,-1,,,,
+```
+
+### Creating enums
+
+Using BindingStudio:
+
+- Choose `File` -> `Open Constant Map`
+- Choose existing `map.csv`: `xamarin-android/src/Mono.Android/map.csv`
+
+The left tree view will be populated with every type that has possible constants that require
+a decision. Clicking a tree node will show the grid of all constants in the type. The ones
+that need to be handled are the ones with `Action` = `None`. (The others are shown because
+sometimes the correct action is to add a new constant to an existing enum.)
+
+Select the row(s) containing the constants you want to act on. (Use Control and Shift to select
+multiple rows.) There are 3 possible options for constants:
+
+1) Ignore
+
+If the constant(s) should not be part of an enum (like `Math.PI`), click the `Ignore` toolbar
+button to leave them as constants.
+
+2) Add to existing enum
+
+If the constant(s) should be added to an existing enum:
+- Click the `Add to existing enum` toolbar button.
+- The dialog will show all other enums in this type
+- Choose the existing enum to add the new constant(s) to
+- After accepting the dialog, you may need to click the grid to cause it to refresh
+- The constant(s) will be marked as `Enumify` with the `EnumFullType` you specified
+- The enum member names may need to be tweaked by changing the `EnumMember` column
+
+3) Create a new enum
+
+If the constant(s) should be added to a brand new enum:
+- Click the `Create Enum` toolbar button
+- In the dialog, a suggested enum namespace and name will be pre-populated. This may need to be
+ tweaked as needed.
+ - Mark `Is Flags` if this should be a `[Flags]` enum type.
+- After accepting the dialog, you may need to click the grid to cause it to refresh
+- The constant(s) will be marked as `Enumify` with the `EnumFullType` you specified
+- The enum member names may need to be tweaked by changing the `EnumMember` column
+
+Once decisions have been made for all new constants in a type, use the left tree view to move
+to the next type. You should periodically save your progress with `File` -> `Save` in case
+BindingStudio crashes.
+
+The left tree view can be updated by saving and reopening the `map.csv` file.
+
+### Extract methods that possibly need enums
-5) enumification
+Using BindingStudio:
-See `build-tools/enumification-helpers/README`. Usually it takes many days to complete...
+- Update the file paths in `MainForm.FindAPILevelMethodsToolStripMenuItem_Click`
+- Run BindingStudio and choose `Tools` -> `Find API Level Methods`
-Enumification work can be delayed and only the final API has to be enumified.
+This will create a file of every method in the new API level that takes an `int` as a parameter
+or returns an `int` as a return value. Each method will be marked with a `?` in the file
+to indicate a decision needs to be made to ignore it or map it to an enum.
+
+Example:
+```
+?,32,android/media,AudioAttributes,getSpatializationBehavior,return,
+?,32,android/media,AudioAttributes$Builder,setSpatializationBehavior,sb,
+```
+
+### Mapping methods
+
+Using BindingStudio:
+
+- Choose `File` -> `Open Constant Map`
+ - Choose existing `map.csv`: `xamarin-android/src/Mono.Android/map.csv`
+- Choose `File` -> `Open Method Map`
+ - Choose the new `.csv` created in the previous step
+
+The left tree will populate with every method that possibly should be enumified and
+needs a decision to be made. Clicking a method shows the Android documentation for
+the method to help make the decision, as well as an area to input the decision.
+
+Note a method may show up multiple times, once for each parameter or return type
+(Parameter Name = "return") that is an int. Each one may require a different action.
+
+There are 3 possible options for a method parameter/return type:
+
+1) Unknown
+
+You don't how to handle this method currently, so leaving it in the initial state
+of "Unknown" will leave it alone until a decision can be made.
+
+2) Ignore
+
+The method parameter/return type should remain an `int` and not be converted to an enum.
+
+Ex:
+```
+int Add (int value1, int value2) { ... }
+```
+
+Click the "Ignore" radio button and then the "Save" button.
+
+3) Enumify
+
+The method parameter/return type should be changed to an enum.
+
+Ex:
+```
+void AudioAttributesBuilder.SetSpatializationBehavior (int sb) { ... }
+```
+
+- Choose the "Enumify" radio option
+- Use the DropDown in the middle to select the enum to use
+ - When selected, the members of that enum will be shown in the box below the enum
+- Alternatively, search for a enum by enum member name using the Search box in the right
+ - If desired enum is found, clicking it will populate dropdown
+- Click "Save"
+
+Use `File` -> `Save` to save your work often!
+
+### Finishing the method map
+
+The official `methodmap.csv` uses a slightly different format than the one used for enumification.
+
+Using BindingStudio:
+- Ensure the "new api level method map" CSV file is loaded.
+- Choose `Tools` -> `Export Final Method Map`
+- Choose a temporary file name
+- Open the temporary file, copy the contents to the bottom of the official:
+ - xamarin-android/src/Mono.Android/methodmap.csv
+
+Congrats! Enumification is complete!
+
+---- Somewhat outdated docs below, update when we do this year's stabilization ----
6) new AndroidManifest.xml elements and attributes
diff --git a/build-tools/api-merge/merge-configuration.xml b/build-tools/api-merge/merge-configuration.xml
index d79b02c90cb..6cc9ce1595d 100644
--- a/build-tools/api-merge/merge-configuration.xml
+++ b/build-tools/api-merge/merge-configuration.xml
@@ -20,7 +20,7 @@
-
+
@@ -36,6 +36,6 @@
-
+
\ No newline at end of file
diff --git a/build-tools/api-xml-adjuster/Makefile b/build-tools/api-xml-adjuster/Makefile
index d319d763dad..9a75ef399c1 100644
--- a/build-tools/api-xml-adjuster/Makefile
+++ b/build-tools/api-xml-adjuster/Makefile
@@ -17,7 +17,7 @@ API_XML_TOOL = $(BUILDBIN)/api-xml-adjuster.exe
RUNTIME = mono --debug
RUN_CLASS_PARSE = $(RUNTIME) $(CLASS_PARSE)
RUN_API_XML_TOOL = $(RUNTIME) $(API_XML_TOOL)
-API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Sv2
+API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
XML_OUTPUT_DIR = .
diff --git a/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs b/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs
index 47a8edf7276..836000ac72b 100644
--- a/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs
+++ b/build-tools/xaprepare/xaprepare/ConfigAndData/BuildAndroidPlatforms.cs
@@ -40,7 +40,7 @@ class BuildAndroidPlatforms
new AndroidPlatform (apiName: "Q", apiLevel: 29, platformID: "29", include: "v10.0", framework: "v10.0"),
new AndroidPlatform (apiName: "R", apiLevel: 30, platformID: "30", include: "v11.0", framework: "v11.0"),
new AndroidPlatform (apiName: "S", apiLevel: 31, platformID: "31", include: "v12.0", framework: "v12.0"),
- new AndroidPlatform (apiName: "Sv2", apiLevel: 32, platformID: "Sv2", include: "v12.0.99",framework: "v12.0.99", stable: false),
+ new AndroidPlatform (apiName: "Sv2", apiLevel: 32, platformID: "32", include: "v12.0.99", framework: "v12.0.99", stable: false),
};
// These are here until we can drop "legacy" targets and use only .NET6+
diff --git a/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs b/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs
index 31b2a3eded5..77d9baaeabb 100644
--- a/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs
+++ b/build-tools/xaprepare/xaprepare/ConfigAndData/Dependencies/AndroidToolchain.cs
@@ -63,7 +63,7 @@ public AndroidToolchain ()
new AndroidPlatformComponent ("platform-29_r01", apiLevel: "29", pkgRevision: "1"),
new AndroidPlatformComponent ("platform-30_r01", apiLevel: "30", pkgRevision: "1"),
new AndroidPlatformComponent ("platform-31_r01", apiLevel: "31", pkgRevision: "1"),
- new AndroidPlatformComponent ("platform-Sv2_r01", apiLevel: "Sv2", pkgRevision: "1"),
+ new AndroidPlatformComponent ("platform-32_r01", apiLevel: "32", pkgRevision: "1"),
new AndroidToolchainComponent ("sources-31_r01", destDir: Path.Combine ("platforms", $"android-31", "src"), pkgRevision: "1", dependencyType: AndroidToolchainComponentType.BuildDependency),
diff --git a/src/Mono.Android/Profiles/api-Sv2.params.txt b/src/Mono.Android/Profiles/api-32.params.txt
similarity index 99%
rename from src/Mono.Android/Profiles/api-Sv2.params.txt
rename to src/Mono.Android/Profiles/api-32.params.txt
index 02708bec630..725b0bf661d 100644
--- a/src/Mono.Android/Profiles/api-Sv2.params.txt
+++ b/src/Mono.Android/Profiles/api-32.params.txt
@@ -6856,6 +6856,9 @@ package android.hardware.camera2.params
copyElements(int[] destination, int offset)
equals(java.lang.Object obj)
getElement(int column, int row)
+ class DeviceStateSensorOrientationMap
+ equals(java.lang.Object obj)
+ getSensorOrientation(long deviceState)
class ExtensionSessionConfiguration
#ctor(int extension, java.util.List outputs, java.util.concurrent.Executor executor, android.hardware.camera2.CameraExtensionSession.StateCallback listener)
class InputConfiguration
@@ -18985,12 +18988,12 @@ package android.view
interface ActionProvider.VisibilityListener
onActionProviderVisibilityChanged(boolean isVisible)
interface AttachedSurfaceControl
- addOnSurfaceTransformHintChangedListener(android.view.AttachedSurfaceControl.OnSurfaceTransformHintChangedListener listener)
+ addOnBufferTransformHintChangedListener(android.view.AttachedSurfaceControl.OnBufferTransformHintChangedListener listener)
applyTransactionOnDraw(android.view.SurfaceControl.Transaction t)
buildReparentTransaction(android.view.SurfaceControl child)
- removeOnSurfaceTransformHintChangedListener(android.view.AttachedSurfaceControl.OnSurfaceTransformHintChangedListener listener)
- interface AttachedSurfaceControl.OnSurfaceTransformHintChangedListener
- onSurfaceTransformHintChanged(int hint)
+ removeOnBufferTransformHintChangedListener(android.view.AttachedSurfaceControl.OnBufferTransformHintChangedListener listener)
+ interface AttachedSurfaceControl.OnBufferTransformHintChangedListener
+ onBufferTransformHintChanged(int hint)
class Choreographer
postFrameCallback(android.view.Choreographer.FrameCallback callback)
postFrameCallbackDelayed(android.view.Choreographer.FrameCallback callback, long delayMillis)
diff --git a/src/Mono.Android/map.csv b/src/Mono.Android/map.csv
index cb80905c0b0..ba86a607fc0 100644
--- a/src/Mono.Android/map.csv
+++ b/src/Mono.Android/map.csv
@@ -3418,6 +3418,8 @@ A,0,,0,Android.Media.AudioFlags,None,,
E,21,android/media/AudioAttributes.FLAG_AUDIBILITY_ENFORCED,1,Android.Media.AudioFlags,AudibilityEnforced,keep,
E,21,android/media/AudioAttributes.FLAG_HW_AV_SYNC,16,Android.Media.AudioFlags,HwAvSync,keep,
E,24,android/media/AudioAttributes.FLAG_LOW_LATENCY,256,Android.Media.AudioFlags,LowLatency,keep,
+E,32,android/media/AudioAttributes.SPATIALIZATION_BEHAVIOR_AUTO,0,Android.Media.AudioSpatializationBehavior,Auto,remove,
+E,32,android/media/AudioAttributes.SPATIALIZATION_BEHAVIOR_NEVER,1,Android.Media.AudioSpatializationBehavior,Never,remove,
E,21,android/media/AudioAttributes.USAGE_ALARM,4,Android.Media.AudioUsageKind,Alarm,keep,
E,21,android/media/AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY,11,Android.Media.AudioUsageKind,AssistanceAccessibility,keep,
E,21,android/media/AudioAttributes.USAGE_ASSISTANCE_NAVIGATION_GUIDANCE,12,Android.Media.AudioUsageKind,AssistanceNavigationGuidance,keep,
@@ -3490,24 +3492,45 @@ E,10,android/media/AudioFormat.CHANNEL_IN_Z_AXIS,8192,Android.Media.ChannelIn,ZA
I,0,android/media/AudioFormat.CHANNEL_INVALID,0,,,,
A,0,,0,Android.Media.ChannelOut,None,,
E,10,android/media/AudioFormat.CHANNEL_OUT_5POINT1,252,Android.Media.ChannelOut,FivePointOne,keep,
-E,10,android/media/AudioFormat.CHANNEL_OUT_7POINT1,1020,Android.Media.ChannelOut,SevenPointOne,keep,
+E,32,android/media/AudioFormat.CHANNEL_OUT_5POINT1POINT2,3145980,Android.Media.ChannelOut,FivePointOnePointTwo,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_5POINT1POINT4,737532,Android.Media.ChannelOut,FivePointOnePointFour,remove,
+E,10,android/media/AudioFormat.CHANNEL_OUT_7POINT1,1020,Android.Media.ChannelOut,SevenPointOne,remove,
E,23,android/media/AudioFormat.CHANNEL_OUT_7POINT1_SURROUND,6396,Android.Media.ChannelOut,C7point1Surround,keep,
+E,32,android/media/AudioFormat.CHANNEL_OUT_7POINT1POINT2,3152124,Android.Media.ChannelOut,SevenPointOnePointTwo,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_7POINT1POINT4,743676,Android.Media.ChannelOut,SevenPointOnePointFour,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_9POINT1POINT4,202070268,Android.Media.ChannelOut,NinePointOnePointFour,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_9POINT1POINT6,205215996,Android.Media.ChannelOut,NinePointOnePointSix,remove,
E,10,android/media/AudioFormat.CHANNEL_OUT_BACK_CENTER,1024,Android.Media.ChannelOut,BackCenter,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_BACK_LEFT,64,Android.Media.ChannelOut,BackLeft,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_BACK_RIGHT,128,Android.Media.ChannelOut,BackRight,keep,
+E,32,android/media/AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_CENTER,8388608,Android.Media.ChannelOut,BottomFrontCenter,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_LEFT,4194304,Android.Media.ChannelOut,BottomFrontLeft,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_BOTTOM_FRONT_RIGHT,16777216,Android.Media.ChannelOut,BottomFrontRight,remove,
E,10,android/media/AudioFormat.CHANNEL_OUT_DEFAULT,1,Android.Media.ChannelOut,Default,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_FRONT_CENTER,16,Android.Media.ChannelOut,FrontCenter,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_FRONT_LEFT,4,Android.Media.ChannelOut,FrontLeft,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_FRONT_LEFT_OF_CENTER,256,Android.Media.ChannelOut,FrontLeftOfCenter,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_FRONT_RIGHT,8,Android.Media.ChannelOut,FrontRight,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_FRONT_RIGHT_OF_CENTER,512,Android.Media.ChannelOut,FrontRightOfCenter,keep,
+E,32,android/media/AudioFormat.CHANNEL_OUT_FRONT_WIDE_LEFT,67108864,Android.Media.ChannelOut,FrontWideLeft,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_FRONT_WIDE_RIGHT,134217728,Android.Media.ChannelOut,FrontWideRight,remove,
E,10,android/media/AudioFormat.CHANNEL_OUT_LOW_FREQUENCY,32,Android.Media.ChannelOut,LowFrequency,keep,
+E,32,android/media/AudioFormat.CHANNEL_OUT_LOW_FREQUENCY_2,33554432,Android.Media.ChannelOut,LowFrequency2,remove,
E,10,android/media/AudioFormat.CHANNEL_OUT_MONO,4,Android.Media.ChannelOut,Mono,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_QUAD,204,Android.Media.ChannelOut,Quad,keep,
E,21,android/media/AudioFormat.CHANNEL_OUT_SIDE_LEFT,2048,Android.Media.ChannelOut,SideLeft,keep,
E,21,android/media/AudioFormat.CHANNEL_OUT_SIDE_RIGHT,4096,Android.Media.ChannelOut,SideRight,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_STEREO,12,Android.Media.ChannelOut,Stereo,keep,
E,10,android/media/AudioFormat.CHANNEL_OUT_SURROUND,1052,Android.Media.ChannelOut,Surround,keep,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_BACK_CENTER,262144,Android.Media.ChannelOut,OutTopBackCenter,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_BACK_LEFT,131072,Android.Media.ChannelOut,OutTopBackLeft,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_BACK_RIGHT,524288,Android.Media.ChannelOut,OutTopBackRight,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_CENTER,8192,Android.Media.ChannelOut,OutTopCenter,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_FRONT_CENTER,32768,Android.Media.ChannelOut,OutTopFrontCenter,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_FRONT_LEFT,16384,Android.Media.ChannelOut,OutTopFrontLeft,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_FRONT_RIGHT,65536,Android.Media.ChannelOut,OutTopFrontRight,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_SIDE_LEFT,1048576,Android.Media.ChannelOut,OutTopSideLeft,remove,
+E,32,android/media/AudioFormat.CHANNEL_OUT_TOP_SIDE_RIGHT,2097152,Android.Media.ChannelOut,OutTopSideRight,remove,
E,28,android/media/AudioFormat.ENCODING_AAC_ELD,15,Android.Media.Encoding,AacEld,keep,
E,28,android/media/AudioFormat.ENCODING_AAC_HE_V1,11,Android.Media.Encoding,AacHeV1,keep,
E,28,android/media/AudioFormat.ENCODING_AAC_HE_V2,12,Android.Media.Encoding,AacHeV2,keep,
@@ -4545,6 +4568,9 @@ I,29,android/media/Session2Command$Result.RESULT_INFO_SKIPPED,1,,,,
I,29,android/media/Session2Command$Result.RESULT_SUCCESS,0,,,,
E,29,android/media/Session2Token.TYPE_SESSION,0,Android.Media.MediaSessionType,Session,remove,
E,29,android/media/Session2Token.TYPE_SESSION_SERVICE,1,Android.Media.MediaSessionType,SessionService,remove,
+E,32,android/media/Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_MULTICHANNEL,1,Android.Media.SpatializerImmersiveLevel,Multichannel,remove,
+E,32,android/media/Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_NONE,0,Android.Media.SpatializerImmersiveLevel,None,remove,
+E,32,android/media/Spatializer.SPATIALIZER_IMMERSIVE_LEVEL_OTHER,-1,Android.Media.SpatializerImmersiveLevel,Other,remove,
E,23,android/media/SyncParams.AUDIO_ADJUST_MODE_DEFAULT,0,Android.Media.AudioAdjustMode,Default,keep,
E,23,android/media/SyncParams.AUDIO_ADJUST_MODE_RESAMPLE,2,Android.Media.AudioAdjustMode,Resample,keep,
E,23,android/media/SyncParams.AUDIO_ADJUST_MODE_STRETCH,1,Android.Media.AudioAdjustMode,Stretch,keep,
@@ -7310,6 +7336,7 @@ E,28,android/os/Build$VERSION_CODES.P,28,Android.OS.BuildVersionCodes,P,remove,
E,29,android/os/Build$VERSION_CODES.Q,29,Android.OS.BuildVersionCodes,Q,remove,
E,30,android/os/Build$VERSION_CODES.R,30,Android.OS.BuildVersionCodes,R,remove,
E,31,android/os/Build$VERSION_CODES.S,31,Android.OS.BuildVersionCodes,S,remove,
+E,32,android/os/Build$VERSION_CODES.S_V2,32,Android.OS.BuildVersionCodes,SV2,remove,
A,0,,0,Android.OS.DebugShow,Default,remove,
E,10,android/os/Debug.SHOW_CLASSLOADER,2,Android.OS.DebugShow,Classloader,remove,
E,10,android/os/Debug.SHOW_FULL_DETAIL,1,Android.OS.DebugShow,FullDetail,remove,
@@ -8907,6 +8934,7 @@ I,25,android/R$attr.shortcutId,16844072,,,,
I,25,android/R$attr.shortcutLongLabel,16844074,,,,
I,25,android/R$attr.shortcutShortLabel,16844073,,,,
I,0,android/R$attr.shouldDisableView,16843246,,,,
+I,32,android/R$attr.shouldUseDefaultUnfoldTransition,16844364,,,,
I,15,android/R$attr.showAsAction,16843481,,,,
I,0,android/R$attr.showDefault,16843258,,,,
I,15,android/R$attr.showDividers,16843561,,,,
@@ -9598,6 +9626,9 @@ I,0,android/R$drawable.title_bar_tall,17301670,,,,
I,0,android/R$drawable.toast_frame,17301654,,,,
I,0,android/R$drawable.zoom_plate,17301655,,,,
I,23,android/R$id.accessibilityActionContextClick,16908348,,,,
+I,32,android/R$id.accessibilityActionDragCancel,16908375,,,,
+I,32,android/R$id.accessibilityActionDragDrop,16908374,,,,
+I,32,android/R$id.accessibilityActionDragStart,16908373,,,,
I,28,android/R$id.accessibilityActionHideTooltip,16908357,,,,
I,30,android/R$id.accessibilityActionImeEnter,16908372,,,,
I,26,android/R$id.accessibilityActionMoveWindow,16908354,,,,
@@ -12577,6 +12608,9 @@ E,10,android/util/TypedValue.TYPE_NULL,0,Android.Util.DataType,Null,keep,
E,10,android/util/TypedValue.TYPE_REFERENCE,1,Android.Util.DataType,Reference,keep,
E,10,android/util/TypedValue.TYPE_STRING,3,Android.Util.DataType,String,keep,
E,19,android/view/accessibility/AccessibilityEvent.CONTENT_CHANGE_TYPE_CONTENT_DESCRIPTION,4,Android.Views.Accessibility.ContentChangeTypes,ContentDescription,remove,
+E,32,android/view/accessibility/AccessibilityEvent.CONTENT_CHANGE_TYPE_DRAG_CANCELLED,512,Android.Views.Accessibility.ContentChangeTypes,DragCancelled,remove,
+E,32,android/view/accessibility/AccessibilityEvent.CONTENT_CHANGE_TYPE_DRAG_DROPPED,256,Android.Views.Accessibility.ContentChangeTypes,DragDropped,remove,
+E,32,android/view/accessibility/AccessibilityEvent.CONTENT_CHANGE_TYPE_DRAG_STARTED,128,Android.Views.Accessibility.ContentChangeTypes,DragStarted,remove,
E,28,android/view/accessibility/AccessibilityEvent.CONTENT_CHANGE_TYPE_PANE_APPEARED,16,Android.Views.Accessibility.ContentChangeTypes,PaneAppeared,remove,
E,28,android/view/accessibility/AccessibilityEvent.CONTENT_CHANGE_TYPE_PANE_DISAPPEARED,32,Android.Views.Accessibility.ContentChangeTypes,PaneDisappeared,remove,
E,28,android/view/accessibility/AccessibilityEvent.CONTENT_CHANGE_TYPE_PANE_TITLE,8,Android.Views.Accessibility.ContentChangeTypes,PaneTitle,remove,
@@ -13371,6 +13405,12 @@ I,0,android/view/Surface.SURFACE_BLUR_FREEZE,16,,,,
I,0,android/view/Surface.SURFACE_DITHER,4,,,,
I,0,android/view/Surface.SURFACE_FROZEN,2,,,,
I,0,android/view/Surface.SURFACE_HIDDEN,1,,,,
+E,32,android/view/SurfaceControl.BUFFER_TRANSFORM_IDENTITY,0,Android.View.BufferTransform,Identity,remove,
+E,32,android/view/SurfaceControl.BUFFER_TRANSFORM_MIRROR_HORIZONTAL,1,Android.View.BufferTransform,MirrorHorizontal,remove,
+E,32,android/view/SurfaceControl.BUFFER_TRANSFORM_MIRROR_VERTICAL,2,Android.View.BufferTransform,MirrorVertical,remove,
+E,32,android/view/SurfaceControl.BUFFER_TRANSFORM_ROTATE_180,3,Android.View.BufferTransform,Rotate180,remove,
+E,32,android/view/SurfaceControl.BUFFER_TRANSFORM_ROTATE_270,7,Android.View.BufferTransform,Rotate270,remove,
+E,32,android/view/SurfaceControl.BUFFER_TRANSFORM_ROTATE_90,4,Android.View.BufferTransform,Rotate90,remove,
E,28,android/view/textclassifier/SelectionEvent.ACTION_ABANDON,107,Android.Views.TextClassifiers.SelectionAction,Abandon,remove,
E,28,android/view/textclassifier/SelectionEvent.ACTION_COPY,101,Android.Views.TextClassifiers.SelectionAction,Copy,remove,
E,28,android/view/textclassifier/SelectionEvent.ACTION_CUT,103,Android.Views.TextClassifiers.SelectionAction,Cut,remove,
@@ -13459,6 +13499,7 @@ E,26,android/view/View.AUTOFILL_TYPE_LIST,3,Android.Views.AutofillType,List,remo
E,26,android/view/View.AUTOFILL_TYPE_NONE,0,Android.Views.AutofillType,None,remove,
E,26,android/view/View.AUTOFILL_TYPE_TEXT,1,Android.Views.AutofillType,Text,remove,
E,26,android/view/View.AUTOFILL_TYPE_TOGGLE,2,Android.Views.AutofillType,Toggle,remove,
+E,32,android/view/View.DRAG_FLAG_ACCESSIBILITY_ACTION,1024,Android.Views.DragFlags,AccessibilityAction,remove,
E,24,android/view/View.DRAG_FLAG_GLOBAL,256,Android.Views.DragFlags,Global,remove,
E,24,android/view/View.DRAG_FLAG_GLOBAL_PERSISTABLE_URI_PERMISSION,64,Android.Views.DragFlags,GlobalPersistableUriPermission,remove,
E,24,android/view/View.DRAG_FLAG_GLOBAL_PREFIX_URI_PERMISSION,128,Android.Views.DragFlags,GlobalPrefixUriPermission,remove,
diff --git a/src/Mono.Android/methodmap.csv b/src/Mono.Android/methodmap.csv
index dfd16940d0a..23354010aa9 100644
--- a/src/Mono.Android/methodmap.csv
+++ b/src/Mono.Android/methodmap.csv
@@ -3237,3 +3237,10 @@
31,android/widget,RemoteViews,setViewLayoutWidth,units,Android.Util.ComplexUnitType
31,android/widget,RemoteViews,setViewOutlinePreferredRadius,units,Android.Util.ComplexUnitType
31,android/widget,RemoteViews$RemoteCollectionItems,writeToParcel,flags,Android.OS.ParcelableWriteFlags
+
+32,android/media,AudioAttributes,getSpatializationBehavior,return,Android.Media.AudioSpatializationBehavior
+32,android/media,AudioAttributes$Builder,setSpatializationBehavior,sb,Android.Media.AudioSpatializationBehavior
+32,android/media,Spatializer,getImmersiveAudioLevel,return,Android.Media.SpatializerImmersiveLevel
+32,android/service/voice,VisibleActivityInfo,writeToParcel,flags,Android.OS.ParcelableWriteFlags
+32,android/view,I:AttachedSurfaceControl,getBufferTransformHint,return,Android.View.BufferTransform
+32,android/view,I:AttachedSurfaceControl$OnBufferTransformHintChangedListener,onBufferTransformHintChanged,p0,Android.View.BufferTransform