Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从gridview的照相机中检索照片?_Java_Android_Gridview - Fatal编程技术网

Java 如何从gridview的照相机中检索照片?

Java 如何从gridview的照相机中检索照片?,java,android,gridview,Java,Android,Gridview,我正在开发一个应用程序,在第一个活动中,它保存一张照片,并显示在imageview中,但同时我希望在另一个活动中创建一个gridview,它将恢复每个捕获的图像,并按顺序显示 到目前为止,我可以拍摄照片,将其保存在图库中,并在imageview上显示,但当我转到其他活动时,它显示gridview从图库检索所有照片,有人能帮我吗?这是我的日程安排: 拍摄并保存照片的活动: public class Main2Activity extends AppCompatActivity { private

我正在开发一个应用程序,在第一个活动中,它保存一张照片,并显示在imageview中,但同时我希望在另一个活动中创建一个gridview,它将恢复每个捕获的图像,并按顺序显示

到目前为止,我可以拍摄照片,将其保存在图库中,并在imageview上显示,但当我转到其他活动时,它显示gridview从图库检索所有照片,有人能帮我吗?这是我的日程安排:

拍摄并保存照片的活动:

public class Main2Activity extends AppCompatActivity {
private Uri uri;
private static final int CAMERA = 1;
private String caminhoDaImagem;
ImageView imageViewFoto;
private EditText etCliente;
private EditText etPostes;
private EditText etObservacao;
String mCurrentPhotoPath;
String imgSaved;
private Button botao;

@Override
public void onBackPressed() {                                           //Botão BACK padrão do android
    startActivity(new Intent(this, MainActivity.class)); //O efeito ao ser pressionado do botão (no caso abre a activity)
    //finishAffinity();                                                //Método para matar a activity e não deixa-lá indexada na pilhagem
    return;
}

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main2);
    final Button btnSalvarRelatorio = (Button) findViewById(R.id.btnAvancar);
    Button btnAvancar = (Button) findViewById(R.id.btnAvancar);


    //CÓDIGO NECESSÁRIO PARA A PERMISSÃO A MEMÓRIA INTERNA
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
            != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1000);
    }


    //PERMISSÃO DE ACESSO Á CAEMRA
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.CAMERA}, 0);
    }


    findViewById(R.id.btnTirarFotos).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            tirarFoto();
        }

    });

    findViewById(R.id.btnAvancar).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            chamar3Activity();

        }
    });
}


/*public void onRequestPermissionResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResult) {

    switch (requestCode) {
        case 1000:
            if (grantResult[0] == PackageManager.PERMISSION_GRANTED) {
                Toast.makeText(this, "Permissão Concedida!", Toast.LENGTH_SHORT).show();
            } else {
                Toast.makeText(this, "Permissão não Concedida!", Toast.LENGTH_SHORT).show();
                finish();
            }
    }


}*/


private void chamar3Activity() {


    Intent novaintent = new Intent();
    novaintent.setClass(Main2Activity.this, Main3Activity.class);
    startActivity(novaintent);
    finish();

}


//DANDO A FUNÇÃO AO BOTÃO DE TIRAR FOTO
public void tirarFoto() {

    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intent, 1);

}

//SALVANDO IMAGEM DA CAMERA E DIRECIONANDO ELA A UM IMAGEVIEW
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {


    if (requestCode == 1) {
        if (resultCode == RESULT_OK) {

            File file = null;
            try {
                file = createImageFile();
            } catch (IOException ex) {
                // Error occurred while creating the File
            }

        }
        Bitmap image = (Bitmap) data.getExtras().get("data");
        ImageView imageview = (ImageView) findViewById(R.id.imageView2);
        imageview.setImageBitmap(image);
        // Chame este método pra obter a URI da imagem
        Uri uri = getImageUri(getApplicationContext(), image);

        // Em seguida chame este método para obter o caminho do arquivo
        File file = new File(getRealPathFromURI(uri));


    } else if (resultCode == RESULT_CANCELED) {
        Toast.makeText(this, "CANCELADO", Toast.LENGTH_LONG).show();
    }

    super.onActivityResult(requestCode, resultCode, data);
}

public Uri getImageUri(Context inContext, Bitmap inImage) {
    ByteArrayOutputStream bytes = new ByteArrayOutputStream();
    inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
    String path = MediaStore.Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);
    return Uri.parse(path);
}

public String getRealPathFromURI(Uri uri) {
    Cursor cursor = getContentResolver().query(uri, null, null, null, null);
    cursor.moveToFirst();
    int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
    return cursor.getString(idx);
}

private File createImageFile() throws IOException {
    // Create an image file name
    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmm").format(new Date());
    String imageFileName = "JPEG_" + timeStamp + "_";
    File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES);
    File image = File.createTempFile(
            imageFileName,  /* prefix */
            ".jpg",         /* suffix */
            storageDir      /* directory */
    );


    // Save a file: path for use with ACTION_VIEW intents
    mCurrentPhotoPath = image.getAbsolutePath();
    Toast.makeText(this, mCurrentPhotoPath, Toast.LENGTH_LONG).show();
    return image;
}
**将显示网格视图的活动:**

public class MainActivity extends AppCompatActivity {

GridView gv;
ArrayList<File> list;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    list = imageRead(Environment.getExternalStorageDirectory());
    gv = (GridView) findViewById(R.id.gv);
    gv.setAdapter(new GridAdapter());

}

class GridAdapter extends BaseAdapter{

    @Override
    public int getCount() {
        return list.size();
    }

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        convertView = getLayoutInflater().inflate(R.layout.single_grid, parent, false);
        ImageView imageView = convertView.findViewById(R.id.imageView);

        imageView.setImageURI(Uri.parse( getItem(position) . toString()));

        return convertView;
    }
}

ArrayList<File> imageRead(File root){
    ArrayList<File> a = new ArrayList<>();

    File[] files = root.listFiles();
    for(int i =0; i< files.length; i++){
        if(files[i].isDirectory()){
              a.addAll(imageRead(files[i]));
        }
        else{
            if( files[i].getName().endsWith(".jpg")){
                a.add(files[i]);
            }
        }
    }
     return a;
}
public类MainActivity扩展了AppCompatActivity{
GridView gv;
数组列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list=imageRead(Environment.getExternalStorageDirectory());
gv=(GridView)findViewById(R.id.gv);
gv.setAdapter(新的GridAdapter());
}
类GridAdapter扩展了BaseAdapter{
@凌驾
public int getCount(){
返回list.size();
}
@凌驾
公共对象getItem(int位置){
返回列表。获取(位置);
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
convertView=GetLayoutFlater()。充气(R.layout.single_grid,父项,false);
ImageView ImageView=convertView.findViewById(R.id.ImageView);
setImageURI(Uri.parse(getItem(position.toString()));
返回视图;
}
}
ArrayList imageRead(文件根目录){
ArrayList a=新的ArrayList();
File[]files=root.listFiles();
对于(int i=0;i
请参见:另外,请确保在此网站上用英语写问题,以便每个人都能理解。对不起,我将重写我要求的内容,并保留上面的代码,因为我还不能发布另一个问题:您好,我正在开发一个应用程序,在第一个活动中,它会保存一张照片,并在imageview中显示,但是同时,我希望在另一个活动中创建一个gridview,它将恢复每个捕获的图像,并按顺序显示。到目前为止,我可以拍摄一张照片,保存在图库中,并在imageview上显示,但当我转到另一个活动时,它会显示gridview从图库中检索所有照片,有人可以帮助我吗?这是我的工作日程安排:请在问题中加入这一点-不要在评论中添加这一点。