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