Java 将从gallery中选择或从camera中捕获的图像添加到另一活动的gridview中
我有一个带有捕获按钮的活动此catpture按钮单击时,会提示用户在做出决定并捕获图像或选择图像后,出现一个警告对话框,要求用户在gallery和camera之间进行选择应用程序当前将图像保存在图像视图中,现在,我如何将图像s保存在另一个活动的gridview中而不是imageview中,并尽可能避免使用sqlite mainactivity.java: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
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);
}
}