如何在android studio中将自定义相机捕获图像设置为网格视图

问题描述

我正在开发用于自定义相机和自定义图库的应用。我的图像捕获做得很好,但没有设置为网格视图。我在代码中犯了什么错误?如何将捕获图像设置为我的网格视图以及该图像路径将如何传递到下一个

//Main Activity

public class MainActivity extends AppCompatActivity {
Camera camera;
    ImageView imageView ;
FrameLayout frameLayout;
showCamera showCamera;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        frameLayout=(FrameLayout)findViewById(R.id.frame);
        imageView = (ImageView)findViewById(R.id.imageView);


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

        // Create an instance of Camera
        camera = getCameraInstance();

        showCamera=new showCamera(this,camera);
        frameLayout.addView(showCamera);
        Button captureButton = (Button) findViewById(R.id.captureFront);
        captureButton.setonClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        // get an image from the camera
                         CaptureImage(v);
                        File file = getoutputMediaFile();
                        Log.e("use_pic buttn ",file.getPath());
                        Intent intent = new Intent();
                        intent.putExtra("output",file.getPath());
                    }
                }
        );
        Button gallarybutton = (Button) findViewById(R.id.gallary);
        gallarybutton.setonClickListener(
                new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent i=new Intent(MainActivity.this,Customgallary.class);
                        startActivity(i);

                    }
                }
        );
    }
    Camera.PictureCallback mpictureCallback=new Camera.PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data,Camera camera) {

            File picture_file = getoutputMediaFile();
            if(picture_file== null)
            {
                return;
            }
            else
            {
                try {
                    FileOutputStream fos=new FileOutputStream(picture_file);
                    fos.write(data);
                    camera.startPreview();
                } catch (FileNotFoundException e) {
                    e.printstacktrace();
                } catch (IOException e) {
                    e.printstacktrace();
                }
            }

        }
    };

        private File getoutputMediaFile() {
            String state= Environment.getExternalStorageState();
            if(!state.equals(Environment.MEDIA_MOUNTED))
            {
                return null;
            }
        else
            {
             File folder_gui= new File(Environment.getExternalStorageDirectory()+ File.separator + "GUI");

             if(!folder_gui.exists())
             {
                 folder_gui.mkdir();
             }
             File outputFile= new File(folder_gui,"temp.jpg");
             return  outputFile;

            }
        }


    public void CaptureImage(View v)
    {
        if(camera!=null)
        {
          camera.takePicture(null,null,mpictureCallback);
        }
    }
    /** A safe way to get an instance of the Camera object. */
    public static Camera getCameraInstance(){
        Camera c = null;
        try {
            c = Camera.open(); // attempt to get a Camera instance
        }
        catch (Exception e){
            // Camera is not available (in use or does not exist)
        }
        return c; // returns null if camera is unavailable
    }

    
}

在这代码我有一个错误:我的网格视图没有设置自定义相机的图像捕获

//Customgallary.java


public class Customgallary extends AppCompatActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.image_view);
        Intent intent = getIntent();
        Bitmap bitmap = (Bitmap) intent.getParcelableExtra("output");
        ArrayList<Bitmap> bitmapArray = new ArrayList<Bitmap>();
        bitmapArray.add(bitmap); // Add a bitmap
        //bitmapArray.get(0); // Get first bitmap

        GridView mygrid=findViewById(R.id.gv);
        ImageView iv=findViewById(R.id.imageView);
        Log.e("Helloo",String.valueOf(bitmap));
        ArrayAdapter<Bitmap> adapter = new ArrayAdapter<Bitmap>(this,R.layout.gv_item,bitmapArray);
          mygrid.setAdapter(adapter);





    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)