This commit is contained in:
Ваше Имя
2025-09-24 15:48:24 +04:00
parent 7b78d9bfc2
commit 3c9f2eaf15
8 changed files with 132 additions and 48 deletions
@@ -1,57 +1,52 @@
package com.example.myapplication
import android.Manifest
import android.content.pm.PackageManager
import android.graphics.Bitmap
import android.os.Bundle
import android.widget.Button
import android.widget.ImageView
import android.widget.Toast
import android.widget.EditText
import androidx.activity.ComponentActivity
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.content.ContextCompat
import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity() {
private lateinit var btnCamera: Button
private lateinit var imageView: ImageView
private lateinit var etInput: EditText
private lateinit var btnAdd: Button
private lateinit var recyclerView: RecyclerView
private lateinit var adapter: NoteAdapter
// Новый контракт
private val takePicturePreview = registerForActivityResult(
ActivityResultContracts.TakePicturePreview()
) { bitmap: Bitmap? ->
if (bitmap != null) {
imageView.setImageBitmap(bitmap)
} else {
Toast.makeText(this, "Фото не получено", Toast.LENGTH_SHORT).show()
}
}
// Запрос разрешения на камеру
private val requestCameraPermission = registerForActivityResult(
ActivityResultContracts.RequestPermission()
) { granted ->
if (granted) {
takePicturePreview.launch(null)
} else {
Toast.makeText(this, "Разрешение на камеру не выдано", Toast.LENGTH_SHORT).show()
}
}
private lateinit var db: AppDatabase
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
btnCamera = findViewById(R.id.btnCamera)
imageView = findViewById(R.id.imageView)
etInput = findViewById(R.id.etInput)
btnAdd = findViewById(R.id.btnAdd)
recyclerView = findViewById(R.id.recyclerView)
btnCamera.setOnClickListener {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
== PackageManager.PERMISSION_GRANTED
) {
takePicturePreview.launch(null)
} else {
requestCameraPermission.launch(Manifest.permission.CAMERA)
adapter = NoteAdapter(emptyList())
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = adapter
db = AppDatabase.getDatabase(this)
// Добавляем заметку
btnAdd.setOnClickListener {
val text = etInput.text.toString()
if (text.isNotEmpty()) {
lifecycleScope.launch {
db.noteDao().insert(NoteEntity(text = text))
}
etInput.text.clear()
}
}
// Подписываемся на изменения
lifecycleScope.launch {
db.noteDao().getAll().collect { notes ->
adapter.update(notes)
}
}
}