I can not display the image taken with the camera in an ImageView!

1

I'm trying to capture a photo and display it in an ImageView, then send it via WebService to an external server

I have the problem when I show the imageview, it does not show me anything. But the name of the image if it shows it to me in an Edittext, and it is also saved in the memory card

I leave my Activity.java

import android.annotation.TargetApi;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.media.ExifInterface;
import android.media.MediaScannerConnection;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Environment;
import android.os.StrictMode;
import android.provider.MediaStore;
import android.provider.Settings;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.RelativeLayout;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.Toast;

import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;

public class Modificar extends AppCompatActivity {

    String correo,correo1,correo2;
    String pass;
    Session session = null;
    String mensaje;
    String imageName;

    String status;
    TextView tvnombre,
            tvfolio,
            tvasunto,
            tvfecha,
            tvdireccion,
            tvtelefono,
            tvlugar,
            tvestado;
    EditText txobservaciones, nombreImagen;
    Button actualizar, borrar, turnar;
    ImageView imagen;

    RadioButton activo,pendiente,concluido,noprocede;
    RadioGroup grupo;
    Spinner spin;
    ProgressDialog pdialog = null;

    private Uri output;
    private String foto;
    private File file;
    private static String APP_DIRECTORY = "MyPictureApp/";
    private static String MEDIA_DIRECTORY = APP_DIRECTORY + "PictureApp";

    private final int PHOTO_CODE = 200;
    private final int SELECT_PICTURE = 300;
    private RelativeLayout mRlView;
    private String mPath;
    FloatingActionButton fab;

    private RequestQueue requestQueue;
    private static final String URL = "http://lahuerta.gob.mx/WebService/actualizar.php";
    private StringRequest request;
    Context ctx;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_modificar);
        this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        ctx=this;
        Intent intent = getIntent();
        String nombre = intent.getStringExtra("nombre");
        final String folio = intent.getStringExtra("folio");
        String asunto = intent.getStringExtra("asunto");
        String fecha = intent.getStringExtra("fecha");
        String direccion = intent.getStringExtra("direccion");
        String telefono = intent.getStringExtra("telefono");
        String lugar = intent.getStringExtra("lugar");
        final String estado = intent.getStringExtra("estado");
        final String observaciones = intent.getStringExtra("observaciones");

        tvnombre = (TextView)findViewById(R.id.tvnombre);
        tvasunto = (TextView)findViewById(R.id.tvasunto);
        tvfolio = (TextView)findViewById(R.id.tvfolio);
        tvfecha = (TextView)findViewById(R.id.tvfecha);
        tvdireccion = (TextView)findViewById(R.id.tvdireccion);
        tvestado = (TextView)findViewById(R.id.tvestado);
        tvtelefono = (TextView)findViewById(R.id.tvtelefono);
        tvlugar = (TextView)findViewById(R.id.tvlugar);
        txobservaciones = (EditText)findViewById(R.id.txobservaciones);
        actualizar = (Button)findViewById(R.id.btnmodificar);
        borrar = (Button)findViewById(R.id.btnborrar);
        turnar = (Button)findViewById(R.id.btnturnar);
        activo = (RadioButton)findViewById(R.id.radioActivo);
        pendiente = (RadioButton)findViewById(R.id.radioPendiente);
        concluido = (RadioButton)findViewById(R.id.radioConcluido);
        noprocede = (RadioButton)findViewById(R.id.radioNoprocede);
        grupo = (RadioGroup)findViewById(R.id.radioGroup);
        spin = (Spinner)findViewById(R.id.spturnar);
        nombreImagen = (EditText)findViewById(R.id.edimagen);
        imagen = (ImageView)findViewById(R.id.imageView);
        mRlView = (RelativeLayout)findViewById(R.id.activity_modificar);


        tvnombre.setText(nombre);
        tvasunto.setText(asunto);
        String nFolio = folio;
        tvfolio.setText("Folio: "+folio);
        tvfecha.setText(fecha);
        tvdireccion.setText(direccion);
        tvtelefono.setText(telefono);
        tvlugar.setText(lugar);
        tvestado.setText(estado);
        txobservaciones.setText(observaciones);     

        requestQueue = Volley.newRequestQueue(this);

//Aqui uso el floatingbutton para las acciones de captura

            fab = (FloatingActionButton) findViewById(R.id.fab);
            fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                   showOptions();
                }
            });


        }

//Aqui doy a elegir la opcion de Camara o Galeria

    private void showOptions(){
            final CharSequence[] option = {"Tomar foto", "Elegir de galeria", "Cancelar"};
            final AlertDialog.Builder builder = new AlertDialog.Builder(Modificar.this);
            builder.setTitle("Eleige una opción");
            builder.setItems(option, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    if(option[which] == "Tomar foto"){
                        getCamara();
                    }else if(option[which] == "Elegir de galeria"){
                        Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                        intent.setType("image/*");
                        startActivityForResult(intent.createChooser(intent, "Selecciona app de imagen"), SELECT_PICTURE);
                    }else {
                        dialog.dismiss();
                    }
                }
            });
            builder.show();
        }

//Aqui creo el directorio y mando a llamar la camara

        private void getCamara(){
            File file = new File(Environment.getExternalStorageDirectory(), MEDIA_DIRECTORY);
            boolean isDirectoryCreated = file.exists();

            if(!isDirectoryCreated)
                isDirectoryCreated = file.mkdirs();

            if(isDirectoryCreated){
                Long timestamp = System.currentTimeMillis() / 1000;
                imageName = timestamp.toString() + ".jpg";

                mPath = Environment.getExternalStorageDirectory() + File.separator + MEDIA_DIRECTORY
                        + File.separator + imageName;

                File newFile = new File(mPath);

                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(newFile));
                startActivityForResult(intent, PHOTO_CODE);
            }

//Aqui recivo la respuesta y trato de mostrar la imagen en un ImageView

     @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(resultCode == RESULT_OK){
                switch (requestCode){
                    case PHOTO_CODE:
                        MediaScannerConnection.scanFile(this,
                                new String[]{mPath}, null,
                                new MediaScannerConnection.OnScanCompletedListener() {
                                    @Override
                                    public void onScanCompleted(String path, Uri uri) {
                                        Log.i("ExternalStorage", "Scanned " + path + ":");
                                        Log.i("ExternalStorage", "-> Uri = " + uri);
                                    }
                                });

                        Bitmap bitmap = BitmapFactory.decodeFile(mPath);
                        imagen.setImageBitmap(bitmap);
                        nombreImagen.setText(imageName);
                        break;
                    case SELECT_PICTURE:
                        Uri path = data.getData();
                        imagen.setImageURI(path);
                        nombreImagen.setText(imageName);
                        break;
                }
            }
    
asked by Sharly Infinitywars 29.03.2017 в 20:11
source

0 answers