本帖最后由 yeqishi 于 2014-11-19 10:34:29 编辑

解决方案 »

  1.   

    public void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(uri, "image/*");
    // 设置裁剪
    intent.putExtra("crop", "true");
    // aspectX aspectY 是宽高的比例
    intent.putExtra("aspectX", 1);
    intent.putExtra("aspectY", 1);
    // outputX outputY 是裁剪图片宽高
    intent.putExtra("outputX", 320);
    intent.putExtra("outputY", 320);
    intent.putExtra("return-data", true);
    startActivityForResult(intent, RESULT_REQUEST_CODE); }
      

  2.   

    我用note3 4.4没有问题,用mtk的就有,你说的这个我回去试一下,感谢回复
      

  3.   

    2#兄弟,我们调用的方法是一样的,但是问题在MTK和其他的一些4.4机器上都是有的,调用com.android.camera.action.CROP之后,返回的resultCode是0,还有谁能帮忙看下啊
      

  4.   

    你拍照的照片存储位置是外部SD卡还是内部存储卡?插了SD吗?如果你的存储位置是手机并且SD卡已经插入,那么可能是手机的问题,因为android4.4源代码中,作为次要存储位置只有读取权限而没有写入权限,这要看手机开发商是否修改过
      

  5.   

    5#兄弟,感谢回复
        我的存储路径是通过Uri path = Uri.fromFile(new File(Environment
                        .getExternalStorageDirectory(),"temp.jpg"));方式获取的,这个路径是设备的内部存储路径呀。
      

  6.   

    private void cropImageUri(Uri uri, int requestCode){
    Intent intent = new Intent("com.android.camera.action.CROP");
    intent.setDataAndType(uri, "image/*");
    intent.putExtra("crop", "true");
    intent.putExtra("aspectX", aspectX);
    intent.putExtra("aspectY", aspectY);
    intent.putExtra("outputX", outputX);
    intent.putExtra("outputY", outputY);
    intent.putExtra("scale", true);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
    intent.putExtra("return-data", false);
    intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
    intent.putExtra("noFaceDetection", true); // no face detection
    startActivityForResult(intent, requestCode);
    }
    这个函数存在问题,裁减时打开图片的uri与保存图片的uri相同,产生冲突,导致裁减完成后图片的大小变成0Byte。
    可将相机照片保存在另外的位置,将intent.setDataAndType(uri, "image/*");中的uri换成相机照片倮存的路径即可。
      

  7.   

    楼主,我模拟机测试没问题,但是我手机测试,选择完图片然后跳出图库停止运行,代码如下
    package com.example.getlocalpicdemo;import android.app.Activity;
    import android.content.Intent;
    import android.graphics.Bitmap;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.ImageView;public class MainActivity extends Activity { //定义一个requestCode常量
    private static final int SELECT_REQUESTCODE=1;
    private static final int CUTTING_REQUESTCODE=2;

    private ImageView img;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Button btn=(Button) findViewById(R.id.selectButton);
    img=(ImageView) findViewById(R.id.img);
    btn.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
    Intent intent=new Intent();
    intent.setAction(Intent.ACTION_GET_CONTENT);
    intent.setType("image/*");
    startActivityForResult(intent,SELECT_REQUESTCODE);
    }
    });
    } @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(resultCode==RESULT_OK)
    {
    switch(requestCode){
    case SELECT_REQUESTCODE:
    Intent a=new Intent();
    // 设置裁剪
    a.putExtra("crop", "true");
    a.setAction("com.android.camera.action.CROP");
    a.putExtra("return-data", true);
    //设置裁剪图片的比例
    a.putExtra("aspectX", 1);
    a.putExtra("aspectY", 1);
    //设置获得裁剪图片的大小
    a.putExtra("outputX", 400);
    a.putExtra("outputY", 400);

    a.setDataAndType(data.getData(), "image/*");
    startActivityForResult(a, CUTTING_REQUESTCODE);
    case CUTTING_REQUESTCODE:
    Bitmap bm=data.getParcelableExtra("data");
    img.setImageBitmap(bm);

    }

    }

    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
    }}