需要我的应用程序拍摄照片或上传照片,并在任何时候在另一个活动中显示它

时间:2013-07-04 13:26:25

标签: android android-intent

我是java开发的新手。我正在开发一个具有个人资料页面的应用程序,其中包含用户名,First& lastname,phone#etc(这些信息由SharedPreference保存)。在同一页面中,我点击图片ImageButton,它将它带到另一个活动,用户可以从画廊上传图片或拍照。

问题1-(相机活动)我可以使用相机拍摄照片,因为我正在使用相机应用程序,但它不会留在那里也会保存在图库中

case R.id.takepic:
            Intent intent = new       Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(intent, cameraData);

protected void onActivityResult(int requestCode, int resultCode, Intent    imageReturnedIntent) {
    super.onActivityResult(requestCode, resultCode, imageReturnedIntent);

case cameraData:
        if (resultCode == RESULT_OK) {
        Bundle extras =imageReturnedIntent.getExtras();
        bmp = (Bitmap) extras.get("data");
        imagepreview.setImageBitmap(bmp);

问题2:我不确定如何将上传的图片带到另一个活动(MainActivity)

我真的很感激,如果有人能告诉我如何将我的照片带回我的MainActivity或保存,以便我可以通过调用它来在任何其他活动中使用它。

我已经完成了一些搜索,但我真的很难理解如何保存图像并检索它是如何工作的,因此无法让它工作。请帮忙。感谢

1 个答案:

答案 0 :(得分:0)

On Click事件只需编写此代码

case R.id.iv_attachment_pic:
        CharSequence[] names = { "From Galary", "From Camera" };
        new AlertDialog.Builder(context)
                .setTitle("Select an option")
                .setItems(names, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int pos) {
                        // TODO Auto-generated method stub
                        if (pos == 0) {
                            Intent i = new Intent(
                                    Intent.ACTION_PICK,
                                    android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                            startActivityForResult(i, GET_GAL_IMG);
                        } else {
                            Intent i = new Intent(
                                    android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
                            startActivityForResult(i, GET_CAM_IMG);
                        }

                    }
                })
                .setNegativeButton(android.R.string.cancel,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int which) {
                            }
                        }).create().show();
        break;

并将其恢复为主要活动,只需使用像这样的活动结果

@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    switch (requestCode) {

    case 2:
        if (resultCode == -1) {
            encodedImageString = null;
            Uri selectedImage = intent.getData();
            String[] filePathColumn = { MediaStore.Images.Media.DATA };
            Cursor cursor = context.getContentResolver().query(
                    selectedImage, filePathColumn, null, null, null);
            cursor.moveToFirst();
            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String filePath = cursor.getString(columnIndex);
            cursor.close();
            bmp_image = BitmapFactory.decodeFile(filePath);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            iv_attachment.setImageBitmap(bmp_image);
            if (bmp_image.compress(Bitmap.CompressFormat.JPEG, 50, baos)) {
                byte[] image = baos.toByteArray();
                encodedImageString = Base64.encodeToString(image,
                        Base64.DEFAULT);
            } else {
                System.out.println("Compreesion returned false");
                Log.d("Compress", "Compreesion returned false");
            }
        }

        break;
    case 3:
        if (resultCode == -1) {
            encodedImageString = null;
            bmp_image = null;
            Bundle extras = intent.getExtras();
            bmp_image = (Bitmap) extras.get("data");
            iv_attachment.setImageBitmap(bmp_image);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            if (bmp_image.compress(Bitmap.CompressFormat.JPEG, 50, baos)) {
                byte[] image = baos.toByteArray();
                encodedImageString = Base64.encodeToString(image,
                        Base64.DEFAULT);
            } else {
                System.out.println("Compreesion returned false");
                Log.d("Compress", "Compreesion returned false");
            }

        }
        break;
    }
}

此处GET_GAL_IMG和GET_CAM_IMG是两个变量,iv_attachment是主要活动中的imageview