Todos os novos Android 12. Revisão para desenvolvedores

Olá. Meu nome é  Kirill Rozov  e se você está interessado no desenvolvimento do Android, provavelmente já ouviu falar do canal do  Telegram "Android Broadcast" , com notícias diárias para desenvolvedores do Android, e do  canal do YouTube com o mesmo nome . Esta postagem é uma transcrição de texto de um novo vídeo no canal






Realizou-se a conferência Google I / O e aprendemos absolutamente tudo sobre a nova versão do Android, e você também pode experimentar tudo isso no Beta 1, que pode ser instalado no Pixel pelo ar, assim como em vários outros fabricantes permitem que você instale a imagem GSI.





. , - . App Widgets , Android.





Material You

Google Material Design, . , Pixel . Material You Beta Android 12





: " Material You ?" Android, . Material , . . Google





Splash Screen ms

<item name="android:windowSplashScreenBackground">@color/...</item>
<item name="android:windowSplashScreenAnimatableIcon">@drawable/...</item>
<item name=”android:windowSplashScreenIconBackground”>@color/...</item>
<item name=”android:windowSplashScreenBrandingImage”>@drawable/...</item>
      
      



UI

Ripple

UI , Ripple . " " . Ripple





Overscroll

Android 12 (Android View) . iOS overscroll .





RenderEffect API

API, , . iOS API





//     View
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
      
      



//   Window  
Window.setBackgroundBlurRadius(radius: Int)
      
      



//     
<style name="AppTheme">
    <item name="android:windowBackgroundBlurRadius">15dp</item>
</style>
      
      



Android 12 API . , iOS 14 Google API Android. :





  • Android 12+





  • , Material You









  • CheckBox, Switch RadioButton. Todo ,





<appwidget-provider
  ...
  android:targetCellWidth="3"
  android:targetCellHeight="2"
  android:maxResizeWidth="250dp"
  android:maxResizeHeight="110dp">
</appwidget-provider>
      
      



  • , UI XML





<appwidget-provider
  ...
  android:previewLayout="@layout/my_widget_preview"
  android:description="@string/my_widget_des
      
      



  • . Activity





  • API





  • Android 12





DSL Compose, Android. DSL, View, Compose .





Rounded Corner API

Rounded Corner API , .





, Google, , .





// Get the top-right rounded corner from WindowInsets.
final WindowInsets insets = getRootWindowInsets();
final RoundedCorner topRight = insets.getRoundedCorner(POSITION_TOP_RIGHT);
if (topRight == null) {
   return;
}

// Get the location of the close button in window coordinates.
int [] location = new int[2];
closeButton.getLocationInWindow(location);
final int buttonRightInWindow = location[0] + closeButton.getWidth();
final int buttonTopInWindow = location[1];

// Find the point on the quarter circle with a 45 degree angle.
final int offset = (int) (topRight.getRadius() * Math.sin(Math.toRadians(45)));
final int topBoundary = topRight.getCenter().y - offset;
final int rightBoundary = topRight.getCenter().x + offset;

// Check whether the close button exceeds the boundary.
if (buttonRightInWindow < rightBoundary && buttonTopInWindow > topBoundary) {
   return;
}

// Set the margin to avoid truncating.
int [] parentLocation = new int[2];
getLocationInWindow(parentLocation);
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) closeButton.getLayoutParams();
lp.rightMargin = Math.max(buttonRightInWindow - rightBoundary, 0);
lp.topMargin = Math.max(topBoundary - buttonTopInWindow, 0);
closeButton.setLayoutParams(lp);
      
      



Rich Content Insertion

- . Google API drag-&-drop, - Rich Content Insertion. compat API OnReceiveContentListener Jetpack Core 1.5.0, Stable.





Android . :





  • MessagingStyle BigPictureStyle





  • Intent





  • - CallStyle, , .





  • , Custom View, .





""

Activity, . , BroadcastReceiver, Activity. UX . Activity - . ,





Indirect notification activity start (trampoline) from PACKAGE_NAME, \
this should be avoided for performance reasons.
      
      



AVIF

AV1, AVIF. JPG. ?





Compatible Media Transcoding

Android 12 , . Android HEVC (H.265) to AVC (H.264), HDR10 SDR. XML , AndroidManifest.





<?xml version="1.0" encoding="utf-8"?>
<media-capabilities xmlns:android="http://schemas.android.com/apk/res/android">
    <format android:name="HEVC" supported="true"/>
    <format android:name="HDR10" supported="false"/>
    <format android:name="HDR10Plus" supported="false"/>
</media-capabilities>
      
      



<property
    android:name="android.media.PROPERTY_MEDIA_CAPABILITIES"
    android:resource="@xml/media_capabilities" />
      
      



.





- 1080p 30 9 Pixel 4. , Pixel 4 Snapdragon 845 6 . (





Performance Class

Android 12, Performance Class. , Android. , .





if (Build.VERSION.MEDIA_PERFORMANCE_CLASS >= Build.VERSION_CODES.S) {
   // Provide the most premium experience for highest performing devices
   ...
}
else if (Build.VERSION.MEDIA_PERFORMANCE_CLASS == Build.VERSION_CODES.R)
   // Provide a  high quality experience
   ...
}
else {
   // Remove extras to keep experience functional
   ...
}
      
      



Class 12 Android 12 , , , / . , Android 13 class 12, .





  • .





  • .. 108 .





  • ,





  • Camera2 API CameraX Extentions





Android 11 . 80% . Google . Android , , , .





targetSdk=S, , .





val locationPermissionRequest = registerForActivityResult(
        ActivityResultContracts.RequestMultiplePermissions()
    ) { permissions ->
        when {
            permissions.getOrDefault(Manifest.permission.ACCESS_FINE_LOCATION, false) -> {
                //  
            }
            permissions.getOrDefault(Manifest.permission.ACCESS_COARSE_LOCATION, false) -> {
                //  
            } else -> {
                //    
            }
        }
    }

// ...

locationPermissionRequest.launch(
    arrayOf(
       Manifest.permission.ACCESS_FINE_LOCATION,
       Manifest.permission.ACCESS_COARSE_LOCATION
    )
)
      
      



, , .





Nearby Bluetooth

Android Bluetooth, , . - Android 12 : BLUETOOTH_SCAN BLUETOOTH_CONNECT. BLUETOOTH_SCAN Bluetooth , BLUETOOTH_CONNECT - .





, .





Exact alarm permission

- Android . , , . alarm-, SCHEDULE_EXACT_ALARM, exact alram- AlarmManager SecurityException.



permission runtime, .



alarm- . , , , . Google Play .





//    excat alarm   <package_id> 
if (!alarmManager.canScheduleExactAlarms()) {
    startActivityForResult(
        Intent(Settings.ACTION_REQUEST_SCHEDULE_EXACT_ALARM, "package:<package_id>")
    )
}
      
      



Clipboard

, . , . copy-paste ? .





Foreground Service

Android 12, Android - Foreground Service , . Service ForegroundServiceStartNotAllowedException



.





:





  • High Priority Push





  • broadcast- ACTION_BOOT_COMPLETED



    , ACTION_LOCKED_BOOT_COMPLETED



    , ACTION_MY_PACKAGE_REPLACED















  • Exact alarm









API Expedited Jobs, WorkManager 2.7.0. Android 12 API JobScheduler, Android Foreground Service.





OneTimeWorkRequestBuilder<T>().apply {
    setInputData(inputData)
    setExpedited(OutOfQuotaPolicy.RUN_AS_NON_EXPEDITED_WORK_REQUEST)
}.build()
      
      



Expedited job , . Expedited Job Foreground Service job JobScheduler:





  • - . job , expedited job.





  • Expedited job , Battery Saver Doze Mode.





  • expedited job , job , , . job.





Foreground Service

, ? ? Foreground Service, . Android 12 , Foreground Service, 5 . UX . , , , . c API Notification.Builder.setForegroundServiceBehavior().





Notification.Builder(context)
         .setForegroundServiceBehavior(Notification.BEHAVIOR_IMMEDIATE_DISPLAY)
         .build();
      
      



Android iOS , iOS. , status bar , - . , .





Privay Dashboard

Android 12 , . Beta.





Android 11 - . ( ), :









  • job alert





  • push , high-priority FCM





, job, alarm , .





" " , , -.





, , 200 . HIGH_SAMPLING_RATE_SENSORS, .





exported Manifest

AndroidManifest android:exported=true|false



, . false, intent-filter , true. , Slack.





targetSdk=S - exported, , Logcat .





Installation did not succeed.
The application could not be installed: INSTALL_FAILED_VERIFICATION_FAILURE
List of apks:
[0] '...app-debug.apk'
Installation failed due to: 'null'
      
      



Android Studio 2020.3.1 Arctic Fox Android Lint . , . Manifest Merger exported .





Android 12, , :





  • ART





  • Build , ().





  • App Standby bucket - Restrictive.





  • Bouncy Castle





  • Backup ( ) , .





  • PendingIntent





  • PiP





  • Web intent . Android App Links, domain





  • SameSite WebView





  • Private Compute Core - . , Smart Reply. . -.





  • . Google Play






O lançamento do Android 12 está previsto para este outono, mas antes disso estamos gravando várias versões Beta, que vão deliciar as novidades apresentadas no Google I / O. Lembre-se que com o lançamento do Android 12, você precisará adaptar seus aplicativos para o Android 11. Nos comentários, estou aguardando suas impressões sobre o Android 12: o que você gostou, o que não gostou e o que mais você esperava do atualização do robô verde.








All Articles