Solucionado (ver solução)
Solucionado
(ver solução)
7
respostas

Erro na Linha Bitmap.createScaledBitmap

Boa Tarde, no curso android II, estou na parte que você utiliza a camera, para tirar uma foto.

porém ele da esse erro no android monitor.

FATAL EXCEPTION: main
  java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=567, result=-1, data=null} to activity {com.dionisiofilho.agendaonline/com.dionisiofilho.agendaonline.MainActivity}: java.lang.NullPointerException
 at android.app.ActivityThread.deliverResults(ActivityThread.java:3500)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3543)
at android.app.ActivityThread.access$1200(ActivityThread.java:159)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:5419)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:511)
at com.dionisiofilho.agendaonline.MainActivity.onActivityResult(MainActivity.java:255)
at android.app.Activity.dispatchActivityResult(Activity.java:5563)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3496)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3543) 
at android.app.ActivityThread.access$1200(ActivityThread.java:159) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
 at android.os.Looper.loop(Looper.java:176) 
 at android.app.ActivityThread.main(ActivityThread.java:5419) 
 at java.lang.reflect.Method.invokeNative(Native Method) 
  at java.lang.reflect.Method.invoke(Method.java:525) 
  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 
  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 
  at dalvik.system.NativeStart.main(Native Method)

MainActivity

if (resultCode == Activity.RESULT_OK) {
            if (requestCode == CODIGO_CAMERA) {


                ImageView img_usuario = (ImageView) findViewById(R.id.img_usuario);
                Bitmap bitmap = BitmapFactory.decodeFile(caminhofoto);

                Bitmap bitmapreduzido = Bitmap.createScaledBitmap(bitmap, 300, 300, true);
                img_usuario.setImageBitmap(bitmap);
                img_usuario.setScaleType(ImageView.ScaleType.FIT_XY);

            }
        }
7 respostas

Oi Dionisio, tudo bem ?

Me mostra o código que você chama a câmera por favor, acredito que possa estar com algum probleminha lá.

Abraços

Fala Matheus, Segue o código abraço.

if (ActivityCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
                ActivityCompat.requestPermissions(MainActivity.this, new String[]{android.Manifest.permission.CAMERA}, 124);

            }
            Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            caminhofoto = getExternalFilesDir(null) + "/" + System.currentTimeMillis() + ".jpg";
            File arquivofoto = new File(caminhofoto);
            camera.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(arquivofoto));
            startActivityForResult(camera, CODIGO_CAMERA);

Cara,

você tá testando isso em qual versão de S.O ?

além disso você tem as permissões registradas no manifest ?

Seu código aparentemente está correto ! Abraço

Matheus Estou usando a versão 6.0 no emulador mas como não tem como abrir a camera pelo amulador, instalei o app em um cel com a versão 4.3 do android.

Sim no manifest coloquei a permissão para a camera.

não estou entendendo o erro, eu abro a camera normal, tiro a foto, mas quando clico em salvar.

ele apresenta esse erro.

Aí o que acontece, eu comentei a linha do CreateScale, e refiz a instalação do app e rodei. ele abre a camera normal tira a foto e quando clico em salvar, ele já não apresenta erro. mas também não consegue recuperar a foto e setar no ImageView.

Alguma ideia do que pode ser?

solução!

Então, aparentemente ele não tá conseguindo armazenar a foto para você no local indicado.

Confirma se tem essa linha no manifest :


<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="br.com.caelum.fj57design">

    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- restante -->

Outra coisa que você pode fazer é dar um Log e ver o atributo caminhoFoto para verificar se este cara não está vindo nulo. Caso não esteja você consegue ir até o local e verificar se existe a foto lá.

Faz isso e fala o resultado ?

Fala Matheus, Avançamos.. rsrs

olha deu certo, porém quero tirar uma dúvida, quando eu tiro a foto em modo retrato, ela me retorna em modo paisagem. Como faço para alterar isso?

e como faço para criar um Log, que nem você me indicou para verificar se a imagem existe no diretório que setei.

Abraço.

Dionísio!

O log a gente tem a classe Log, que vimos no início do primeiro curso, você passaria o caminho da foto para ser exibido pra você.

Sobre a foto, isso acontece em alguns aparelhos, pra você resolver isso o image View tem um método chamado setRotation que você passa em graus a rotação que ele deve fazer.

Espero ter ajudado

Depois você finaliza esse topico por gentileza indicando a resposta correta