Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.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 将从gallery中选择或从camera中捕获的图像添加到另一活动的gridview中_Java_Android_Gridview_Camera_Gallery - Fatal编程技术网

Java 将从gallery中选择或从camera中捕获的图像添加到另一活动的gridview中

Java 将从gallery中选择或从camera中捕获的图像添加到另一活动的gridview中,java,android,gridview,camera,gallery,Java,Android,Gridview,Camera,Gallery,我有一个带有捕获按钮的活动此catpture按钮单击时,会提示用户在做出决定并捕获图像或选择图像后,出现一个警告对话框,要求用户在gallery和camera之间进行选择应用程序当前将图像保存在图像视图中,现在,我如何将图像s保存在另一个活动的gridview中而不是imageview中,并尽可能避免使用sqlite mainactivity.java: public static final int CAMERA_PERM_CODE = 101; public static final

我有一个带有捕获按钮的活动此catpture按钮单击时,会提示用户在做出决定并捕获图像或选择图像后,出现一个警告对话框,要求用户在gallery和camera之间进行选择应用程序当前将图像保存在图像视图中,现在,我如何将图像s保存在另一个活动的gridview中而不是imageview中,并尽可能避免使用sqlite

mainactivity.java:

public static final int CAMERA_PERM_CODE = 101;
    public static final int CAMERA_REQUEST_CODE = 102;
    public static final int GALLERY_REQUEST_CODE = 105;

    DatabaseHelper mDatabaseHelper;
    Cursor data;
    Cursor price;
    ArrayList<myDataClass> listData;
    ArrayAdapter adapter;
    ArrayList arrayList;
    public SwipeMenuListView mListview;
    CustomAdapter custom;
    private TextView total;
    ImageView camera;
    ImageView display1;
    String currentPhotoPath;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_listitemsbought);
        getSupportActionBar().hide();
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        mListview = (SwipeMenuListView) findViewById(R.id.list_items_bought);
        mDatabaseHelper = new DatabaseHelper(this);
        data  = mDatabaseHelper.getDataOfTable();
        total = (TextView) findViewById(R.id.totalpriceofitems);
        listData = new ArrayList<myDataClass>();
        camera = (ImageView) findViewById(R.id.imagetopic);
        display1 = (ImageView) findViewById(R.id.displayimage);

        display1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Listitemsbought.this,savedPics.class);
                overridePendingTransition(R.anim.slide_in,R.anim.slide_out);
                startActivity(intent);
            }
        });

        camera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                askCameraPermission();
            }
        });
       // adapter = new ArrayAdapter<String>(this, R.layout.list_boughts,R.id.Name,listData);

        populateListView();

        final SwipeMenuCreator creator = new SwipeMenuCreator() {

            @Override
            public void create(SwipeMenu menu) {

                // create "delete" item
                SwipeMenuItem deleteItem = new SwipeMenuItem(
                        getApplicationContext());
                // set item background
                deleteItem.setBackground(new ColorDrawable(Color.rgb(0,
                        0, 0)));
                // set item width
                deleteItem.setWidth((250));
                // set a icon
                deleteItem.setIcon(R.drawable.sym_keyboard_delete_holo_dark);
                // add to menu
                menu.addMenuItem(deleteItem);
            }
        };

// set creator
        mListview.setMenuCreator(creator);




        // Left
        mListview.setSwipeDirection(SwipeMenuListView.DIRECTION_LEFT);


    }

    private void askCameraPermission() {
        if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED){
            ActivityCompat.requestPermissions(this,new String[] {Manifest.permission.CAMERA}, CAMERA_PERM_CODE);
        }else {
            alert();
        }
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == CAMERA_PERM_CODE){
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                alert();
            }
        }else {
            Toast.makeText(this,"Camera Permission is required to use camera.",Toast.LENGTH_SHORT).show();
        }
    }

    private void alert() {
        new AlertDialog.Builder(Listitemsbought.this)
                .setTitle(null)
                .setMessage("Do you want to open gallery or take a new photo")

                // Specifying a listener allows you to take an action before dismissing the dialog.
                // The dialog is automatically dismissed when a dialog button is clicked.
                .setPositiveButton("Open Camera", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        dispatchTakePictureIntent();
                    }
                })
                // A null listener allows the button to dismiss the dialog and take no further action.
                .setNegativeButton("Gallery", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Intent gallery = new Intent(Intent.ACTION_PICK,MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                        startActivityForResult(gallery, GALLERY_REQUEST_CODE);
                    }
                })
                .setIcon(android.R.drawable.ic_menu_camera)
                .show();

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if(requestCode == CAMERA_REQUEST_CODE){
            if(resultCode == Activity.RESULT_OK){
                File f = new File(currentPhotoPath);
                display1.setImageURI(Uri.fromFile(f));
                Log.d("tag", "ABsolute Url of Image is " + Uri.fromFile(f));

                Intent mediaScanIntent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
                Uri contentUri = Uri.fromFile(f);
                mediaScanIntent.setData(contentUri);
                this.sendBroadcast(mediaScanIntent);




            }

        }

        if(requestCode == GALLERY_REQUEST_CODE){
            if(resultCode == Activity.RESULT_OK){
                Uri contentUri = data.getData();
                String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
                String imageFileName = "JPEG_" + timeStamp +"."+getFileExt(contentUri);
                Log.d("tag", "onActivityResult: Gallery Image Uri:  " +  imageFileName);
                display1.setImageURI(contentUri);




            }

        }
    }

    private String getFileExt(Uri contentUri) {
        ContentResolver c = getContentResolver();
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        return mime.getExtensionFromMimeType(c.getType(contentUri));
    }


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

        // Save a file: path for use with ACTION_VIEW intents
        currentPhotoPath = image.getAbsolutePath();
        return image;
    }


    private void dispatchTakePictureIntent() {
        Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        // Ensure that there's a camera activity to handle the intent
        if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
            // Create the File where the photo should go
            File photoFile = null;
            try {
                photoFile = createImageFile();
            } catch (IOException ex) {

            }
            // Continue only if the File was successfully created
            if (photoFile != null) {
                Uri photoURI = FileProvider.getUriForFile(this,
                        "com.example.medicnes.fileprovider",
                        photoFile);
                takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, photoURI);
                startActivityForResult(takePictureIntent, CAMERA_REQUEST_CODE);
            }
        }
    }

    private void populateListView(){

        while (data.moveToNext()){
            listData.add(new myDataClass(data.getString(data.getColumnIndex("Name")),data.getString(data.getColumnIndex("Amount")),data.getString(data.getColumnIndex("Price"))));
        }

            total.setText(mDatabaseHelper.getPriceSum());


        custom = new CustomAdapter(listData, this);

        mListview.setAdapter(custom);

        //custom.notifyDataSetChanged();


    }
    public class CustomAdapter extends BaseAdapter
    {
        private Context context;
        private List<String> strings;

        public class ViewHolder {

            TextView textName;
            TextView textAmount;
            TextView textPrice;

        }

        public List<myDataClass> parkingList;

        private CustomAdapter(List<myDataClass> apps, Context context) {
            this.parkingList = apps;
            this.context = context;
            arrayList = new ArrayList<myDataClass>();
            arrayList.addAll(parkingList);
        }

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

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

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



        @Override
        public View getView(int position, View convertView, final ViewGroup parent)
        {
            View rowView = convertView;
            ViewHolder viewHolder = null;
            if (rowView == null) {
                LayoutInflater inflater = getLayoutInflater();
                rowView = inflater.inflate(R.layout.list_boughts, parent, false);
                viewHolder = new ViewHolder();
                viewHolder.textName = rowView.findViewById(R.id.Name);
                viewHolder.textAmount = rowView.findViewById(R.id.sdadprice);
                viewHolder.textPrice = rowView.findViewById(R.id.dfsdfad);
                rowView.setTag(viewHolder);
            } else {
                viewHolder = (ViewHolder) convertView.getTag();
            }
            // here setting up names and images
            viewHolder.textName.setText(parkingList.get(position).getProdaname() + "");
            viewHolder.textAmount.setText(parkingList.get(position).getAmount());
            viewHolder.textPrice.setText(parkingList.get(position).getPrice());
            System.out.println(parkingList.get(position).getPrice());

            mListview.setOnMenuItemClickListener(new SwipeMenuListView.OnMenuItemClickListener() {
                @Override
                public boolean onMenuItemClick(int position, SwipeMenu menu, int index) {
                    // delete

                    mDatabaseHelper.delete(parkingList.get(position).getProdaname());
                    System.out.println(parkingList.get(position).getProdaname());
                    listData.remove(index);
                    custom.notifyDataSetChanged();
                    populateListView();
                    // false : close the menu; true : not close the menu
                    return false;
                }
            });

            return rowView;
        }
    }
public static final int-CAMERA\u PERM\u code=101;
公共静态最终int摄像机\u请求\u代码=102;
公共静态最终int画廊申请代码=105;
数据库助手mDatabaseHelper;
光标数据;
光标价格;
ArrayList列表数据;
阵列适配器;
ArrayList ArrayList;
公共SwipMenuListView-mListview;
定制适配器定制;
私有文本视图总数;
影像摄像机;
图像视图显示1;
串电流光路;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_ListItemsBull);
getSupportActionBar().hide();
getWindow().setFlags(WindowManager.LayoutParams.FLAG_全屏,
WindowManager.LayoutParams.FLAG(全屏);
mListview=(SwipeMenuListView)findViewById(R.id.list\u items\u Bunded);
mDatabaseHelper=newdatabasehelper(此);
data=mDatabaseHelper.getDataOfTable();
total=(TextView)findViewById(R.id.totalpriceofitems);
listData=newarraylist();
camera=(ImageView)findViewById(R.id.imagetopic);
display1=(ImageView)findViewById(R.id.displayimage);
display1.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
Intent Intent=new Intent(listitemsbound.this,savedPics.class);
覆盖转换(R.anim.滑入,R.anim.滑出);
星触觉(意向);
}
});
camera.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
askCameraPermission();
}
});
//adapter=newarrayadapter(this,R.layout.list_boughts,R.id.Name,listData);
populateListView();
最终SwipeMenuCreator=新SwipeMenuCreator(){
@凌驾
创建公共空白(SwipMenu菜单){
//创建“删除”项
SwipeMenuItem deleteItem=新SwipeMenuItem(
getApplicationContext());
//设置项目背景
deleteItem.setBackground(新的可绘制颜色)(颜色为rgb(0,
0, 0)));
//设置项目宽度
deleteItem.setWidth((250));
//设置一个图标
deleteItem.setIcon(右可绘制、符号键盘、删除、全息、暗);
//添加到菜单
菜单.添加菜单项(删除项);
}
};
//集合创建者
mListview.setMenuCreator(创建者);
//左
mListview.setSwipeDirection(SwipeMenu.DIRECTION_左);
}
私有无效askCameraPermission(){
if(ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA)!=PackageManager.permission\u已授予){
ActivityCompat.requestPermissions(这是新字符串[]{Manifest.permission.CAMERA},CAMERA_PERM_代码);
}否则{
警惕();
}
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
if(requestCode==CAMERA\u PERM\u CODE){
if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION\u已授予){
警惕();
}
}否则{
Toast.makeText(这是“使用相机需要相机权限。”,Toast.LENGTH_SHORT).show();
}
}
私有无效警报(){
新建AlertDialog.Builder(ListItemsBught.this)
.setTitle(空)
.setMessage(“您想打开图库还是拍摄新照片”)
//指定侦听器允许您在关闭对话框之前执行操作。
//单击对话框按钮时,对话框将自动关闭。
.setPositiveButton(“打开相机”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog,int which){
DispatchTakePictureContent();
}
})
//空侦听器允许按钮关闭对话框,不采取进一步的操作。
.setNegativeButton(“Gallery”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int which){
意图库=新意图(Intent.ACTION\u PICK、MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI);
startActivityForResult(图库、图库请求代码);
}
})
.setIcon(安卓.R.drawable.ic\u菜单\u摄像头)
.show();
}
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
if(请求代码==摄像机请求代码){
if(resultCode==Activity.RESULT\u确定){
文件f=新文件(currentPhotoPath);
display1.setImageURI(Uri.fromFile(f));
Log.d(“tag”,“图像的绝对Url为”+Uri.fromFile(f));
Intent mediaScanIntent=新的Intent(Intent.ACTION\u MEDIA\u SCANNER\u SCAN\u文件);
uricontenturi=Uri.fromFile(f);
mediaScanIntent.setData(contentUri);
这是sendBroadcast(mediaSca)
File mainfolder = getDir("datafolder", Context.MODE_PRIVATE);
Bitmap bitmap = BitmapFactory.decode(currentphotopath);
String name = new SimpleDateFormate("dd_mm_yyyy_hhss") + ".jpg"; // this or generate new file name each time user uploads.
File file = new File(mainfolder, name);
FileOutputStreme fout = new FIleOutputStreme(file);
bitmap.compress(jpg, 100, fout);
fout.close();

//listing all the files in mainfolder and set to gridview
File[] files = mainfolder.listFiles();
customView cview = new customView(this, files);
gridview.setAdapter(cview);
public class customview extends ArrayAdapter{
private Files[] files;
.
.`
.

public customview (Activity activity, Files[] fls){
files = fls;
}

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

Bitmap bitmap = BitmapFactory.decode(files[position].getAbsolutePath());
imageview.setImageBitmap(bitmap);
}
}