Stack Overflow em Português Asked by José Otavio on January 17, 2021
Boa tarde, estou tentando tirar uma foto com a câmera do celular e salvar ela em um banco de dados, porem eu não consigo recuperar o bitmap da imagem, eu consigo abrir a camera e tirar a foto mas na hora de entrar no onActivityResult o app nao entra na classe, aqui oque estou tentando fazer:
private fun abrirCamera() {
Intent(MediaStore.ACTION_IMAGE_CAPTURE).also { takePictureIntent ->
// Ensure that there's a camera activity to handle the intent
takePictureIntent.resolveActivity(packageManager)?.also {
// Create the File where the photo should go
val photoFile: File? = try {
createImageFile()
} catch (ex: IOException) {
// Error occurred while creating the File
null
}
// Continue only if the File was successfully created
if (photoFile != null) {
photoFile?.also {
val photoURI: Uri = FileProvider.getUriForFile(
this,
"com.example.xamodeliveryloja.fileprovider",
it
)
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI)
startActivityForResult(takePictureIntent, PICK_IMAGE_CODE)
}
}
}
}
}
@Throws(IOException::class)
private fun createImageFile(): File {
// Create an image file name
val timeStamp: String = SimpleDateFormat("ddMMyyy_HHmmss").format(Date())
val storageDir: File? = getExternalFilesDir(Environment.DIRECTORY_PICTURES)
return File.createTempFile(
"JPEG_${timeStamp}_", /* prefix */
".jpg", /* suffix */
storageDir /* directory */
).apply {
// Save a file: path for use with ACTION_VIEW intents
currentPhotoPath = absolutePath
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
try {
when(requestCode){
PICK_IMAGE_CODE ->
if(resultCode == Activity.RESULT_OK && data != null){
//val thumbnail = MediaStore.Images.Media.getBitmap(
//contentResolver, imageUri)
// bitFotoSelecionada = data.extras?.get("data") as Bitmap
// colocaFotoProduto.setImageBitmap(bitFotoSelecionada)
val file = File(currentPhotoPath)
val bitmap = MediaStore.Images.Media.getBitmap(contentResolver, Uri.fromFile(file))
if(bitmap != null){
colocaFotoProduto.setImageBitmap(resize(this,bitmap,100F,100F))
bitFotoSelecionada = bitmap
}
}
PICK_IMAGE ->
if(resultCode == Activity.RESULT_OK && data != null){
val uri = data.data
bitFotoSelecionada = MediaStore.Images.Media.getBitmap(this.contentResolver, uri)
colocaFotoProduto.setImageBitmap(resize(this,bitFotoSelecionada,100F,100F))
}
}
}catch (e: Exception){
e.printStackTrace()
}
}
Estou ultilizando este metodo pois preciso que a qualidade da imagem seja boa, segui a documentação da google aqui, este codigo funciona no meu emulador no pc mas ja testei em 2 celulares um com android 6 e um com o android 8 porem nem um dos dois entra na onActivityResult, consigo pegar a imagem usando o metodo de miniaturas
private fun abrirCamera() {
val intent = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
startActivityForResult(intent, PICK_IMAGE_CODE)
}
com este funciona normalmente porem a qualidade fica muito ruim
Boa tarde, consegui solucionar o problema peço desculpas pelo importuno era um erro besta mas eu nao estava conseguindo debugar no meu celular pq ele e bem velho consegui debugar em outro e descobri o problema estava nesse IF
resultCode == Activity.RESULT_OK && data != null
Answered by José Otavio on January 17, 2021
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP