设置位图后失败的Binder事务

时间:2014-08-14 12:07:03

标签: android bitmap

我可以通过相机或画廊捕捉图像。我还有两个图像视图来设置捕获的图像。但是当我尝试使用传递的两个压缩位图启动一个intent时,我总是得到失败的binder事务:

public class PostFragment extends Fragment implements OnClickListener {

    View post_view;
    Button button1, button0;
    ActionBar actionBar;
    private Uri mImageCaptureUri;
    private ImageView mImageView, mImageView2;
    private AlertDialog dialog;
    private String imagepath = null;
    Bitmap bitmap, bitmap1, bitmap2, bitmap_image1, bitmap_image2;
    String krt, krt1, krt2;

    private static final int PICK_FROM_CAMERA = 1;
    private static final int PICK_FROM_FILE = 3;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        post_view = inflater.inflate(R.layout.postoffer_fragment_layout,
                container, false);

        getActivity().getActionBar().setIcon(R.drawable.ic_offer);

        button1 = (Button) post_view.findViewById(R.id.button1);
        button1.setOnClickListener(this);

        button0 = (Button) post_view.findViewById(R.id.button0);
        button0.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.show();
            }
        });

        captureImageInitialization();

        mImageView = (ImageView) post_view.findViewById(R.id.imageView1);
        mImageView2 = (ImageView) post_view.findViewById(R.id.imageView2);

        return post_view;

    }

    @Override
    public void onClick(View v) {

        if (v.getId() == R.id.button1) {
            // setText() sets the string value of the TextView
            Intent intent = new Intent(getActivity(), OfferInformation.class);
            if (krt1 != "" && krt2 != "") {
                intent.putExtra("image", krt1);
                intent.putExtra("image2", krt2);
                startActivity(intent);
        }

    }

    private void captureImageInitialization() {

        final String[] items = new String[] { "Take from camera",
                "Select from gallery" };
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(),
                android.R.layout.select_dialog_item, items);
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

        builder.setTitle("Select Image");
        builder.setAdapter(adapter, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                if (item == 0) {
                    Intent intent = new Intent(
                            "android.media.action.IMAGE_CAPTURE");
                    startActivityForResult(intent, PICK_FROM_CAMERA);

                } else {

                    Intent intent = new Intent();

                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);

                    startActivityForResult(Intent.createChooser(intent,
                            "Complete action using"), PICK_FROM_FILE);
                }
            }
        });

        dialog = builder.create();
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != Activity.RESULT_OK)
            return;

        switch (requestCode) {
        case PICK_FROM_CAMERA:

            mImageCaptureUri = data.getData();
            imagepath = getPath(mImageCaptureUri);

            if (mImageView.getDrawable() == null) {
                bitmap1 = BitmapFactory.decodeFile(imagepath);
                /*tbd
                 */

            } else if (mImageView.getDrawable() != null
                    && mImageView2.getDrawable() == null) {
                mImageView.setTag("2");
                /*tbd
                 */
            }

        case PICK_FROM_FILE:

            mImageCaptureUri = data.getData();
            imagepath = getPath(mImageCaptureUri);

            if (mImageView.getDrawable() == null) {

                bitmap1 = BitmapFactory.decodeFile(imagepath);
                mImageView.setImageBitmap(bitmap1);

                ByteArrayOutputStream baos1 = new ByteArrayOutputStream();

                bitmap1.compress(Bitmap.CompressFormat.JPEG, 100, baos1);
                byte[] imageBytes1 = baos1.toByteArray();
                krt1 = Base64.encodeToString(imageBytes1, Base64.DEFAULT);

            } else if (mImageView.getDrawable() != null
                    && mImageView2.getDrawable() == null) {

                bitmap2 = BitmapFactory.decodeFile(imagepath);
                mImageView2.setImageBitmap(bitmap2);

                ByteArrayOutputStream baos2 = new ByteArrayOutputStream();

                bitmap2.compress(Bitmap.CompressFormat.JPEG, 100, baos2);
                byte[] imageBytes2 = baos2.toByteArray();
                krt2 = Base64.encodeToString(imageBytes2, Base64.DEFAULT);
            }

            break;

        }
    }

    public String getPath(Uri uri) {
        String res = null;
        String[] proj = { MediaStore.Images.Media.DATA };
        Cursor cursor = getActivity().getContentResolver().query(uri, proj,
                null, null, null);
        if (cursor.moveToFirst()) {
            ;
            int column_index = cursor
                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
            res = cursor.getString(column_index);
        }
        cursor.close();
        return res;

    }

}

0 个答案:

没有答案