Android MaSuperActivity.kt // Récupérer une image ou une vidéo val singlePickMedia = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri -> // TODO Faire quelque chose de l'image } singlePickMedia.launch( PickVisualMediaRequest( ActivityResultContracts.PickVisualMedia.ImageAndVideo ) ) Android 13+ API 33
Android MaSuperActivity.kt // Récupérer plusieurs images val multiplePickMedia = registerForActivityResult(ActivityResultContracts.PickMultipleVisualMedia()) { uri -> // TODO Faire quelque chose des images et / ou vidéos } // Démarrer le picker avec uniquement des images multiplePickMedia.launch(PickVisualMediaRequest( ActivityResultContracts.PickVisualMedia.ImageOnly)) Android 13+ API 33
Android Trois permissions "dangereuses" pour la vie privée Appareil photo android.permission. CAMERA Micro android.permission. RECORD_AUDIO Localisation android.permission. ACCESS_COARSE_LOCATION ACCESS_FINE_LOCATION
Android Un faux départ sur Android pour le DisplayCutout https://cyrilmottier.com/2018/05/31/fun-with-cutouts Retirées Android 9 (P) Preview 2 Premières APIs Android 9 (P) Preview 1 De retour Android 12 (S)
Android Et sur Android ? MaSuperView.kt // Récupérer l'emplacement du notch val cutout = context.display ?. cutout // API 28 val rect = cutout ? . boundingRects // API 33 val path = cutout ? . cutoutPath Android 9+ API 28 et 33 MaSuperActivity.kt // Récupérer l'angle de haut gauche de l'écran override fun onWindowFocusChanged(hasFocus: Boolean) { super.onWindowFocusChanged(hasFocus) val topLeftCornerRadius = window.decorView .rootWindowInsets.getRoundedCorner( RoundedCorner.POSITION_TOP_LEFT ) ?. radius } Android 12.0+ API 31
Android MaSuperActivity.kt val player = MediaPlayer.create(applicationContext, R.raw.my_song) player.setVolume(0f, 0f) if (HapticGenerator.isAvailable()) { hapticGenerator = HapticGenerator.create(player.getAudioSessionId()) hapticGenerator ?. enabled = true } player.start() Et sur Android ? Android 12.0+ API 31