Kotlin | Вопросы собесов
2.57K subscribers
28 photos
962 links
Download Telegram
🤔 Как бы передавал фотографию в редактор?

Передача фото в редактор зависит от типа редактора:
1. Внешний редактор (например, Google Photos, Snapseed).
2. Встроенный редактор внутри приложения.

🚩Передача фото во внешний редактор (Intent)

Если редактор — другое приложение, используем Intent.ACTION_EDIT.
Как передать фото в редактор?
fun openPhotoEditor(context: Context, uri: Uri) {
val intent = Intent(Intent.ACTION_EDIT).apply {
setDataAndType(uri, "image/*")
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) // Разрешение на чтение
}
context.startActivity(Intent.createChooser(intent, "Выберите редактор"))
}


🚩Передача в `Activity` своего приложения (FileProvider)

Если редактор — внутри приложения, можно передавать фото через Intent с Uri.
Отправка фото в редактор
fun openEditor(context: Context, photoFile: File) {
val uri = FileProvider.getUriForFile(context, "${context.packageName}.fileprovider", photoFile)

val intent = Intent(context, PhotoEditorActivity::class.java).apply {
putExtra("PHOTO_URI", uri.toString())
}

context.startActivity(intent)
}


Получение фото в редакторе (PhotoEditorActivity)
class PhotoEditorActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

val uriString = intent.getStringExtra("PHOTO_URI")
val uri = uriString?.let { Uri.parse(it) }

uri?.let {
imageView.setImageURI(it) // Показываем фото
}
}
}


🚩Если фото приходит в `byte[]` (с сервера)

Если фото уже в памяти (byte[]), можно передать его как Parcelable.
Отправка
val bitmap = ... // Получили Bitmap
val byteArray = ByteArrayOutputStream().apply {
bitmap.compress(Bitmap.CompressFormat.PNG, 100, this)
}.toByteArray()

val intent = Intent(context, PhotoEditorActivity::class.java).apply {
putExtra("PHOTO_BYTES", byteArray)
}

context.startActivity(intent)


Получение
val byteArray = intent.getByteArrayExtra("PHOTO_BYTES")
byteArray?.let {
val bitmap = BitmapFactory.decodeByteArray(it, 0, it.size)
imageView.setImageBitmap(bitmap)
}


Ставь 👍 и забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
🤔 Как работает Mutex в корутинах?

Это механизм синхронизации, который позволяет исключить одновременный доступ нескольких корутин к ресурсу.


Ставь 👍 если знал ответ, 🔥 если нет
Забирай 📚 Базу знаний
Please open Telegram to view this post
VIEW IN TELEGRAM
💊3🔥1