调用相册,相机

第一步:

相关权限;

         

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />


创建一个类Api:

public class Api {
     public  static  final  String banner="https://www.zhaoapi.cn/ad/getAd";
     public static final String syfenlei="https://www.zhaoapi.cn/product/getCatagory";
     public static final String ctouxiang="https://www.zhaoapi.cn/file/upload";
}



mainActivity



private static final int CHOOSE_PICTURE = 0;
private static final int TAKE_PICTURE = 1;
private static final int CROP_SMALL_PICTURE = 2;
private static Uri tempUri;


final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

builder.setTitle("设置头像");
String[] items={"选择本地照片","拍照"};
builder.setNegativeButton("取消",null);
builder.setItems(items, new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        switch (which){
            case CHOOSE_PICTURE:
                Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");
                startActivityForResult(intent,CHOOSE_PICTURE);
                break;

            case TAKE_PICTURE:
                Intent intent1=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                tempUri=Uri.fromFile(new File(Environment.getExternalStorageDirectory(),"image.jpg"));
                intent1.putExtra(MediaStore.EXTRA_OUTPUT,tempUri);
                startActivityForResult(intent1,TAKE_PICTURE);
                break;
        }
    }
});
builder.create().show();
// 上传头像
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode){
        case TAKE_PICTURE:
            startPhotoZoom(tempUri);
            break;
        case CHOOSE_PICTURE:
            startPhotoZoom(data.getData());
            break;
        case CROP_SMALL_PICTURE:
            if(data!=null){
                setImageToView(data);
            }
            break;
    }
}
private void startPhotoZoom(Uri uri) {
    if(uri==null){
        Log.i("tag","The uri is not exist");
    }
    tempUri=uri;
    Intent in=new Intent("com.android.camera.action.CROP");
    in.setDataAndType(uri,"image/*");
    //设置裁剪
    in.putExtra("crop","true");
    in.putExtra("aspectX",1);
    in.putExtra("aspectY",1);
    //宽高
    in.putExtra("outputX",150);
    in.putExtra("outputY",150);
    in.putExtra("return-data",true);
    startActivityForResult(in,CROP_SMALL_PICTURE);
}
private void setImageToView(Intent data) {
    Bundle extras=data.getExtras();
    if(extras!=null){
        Bitmap photo=extras.getParcelable("data");
        touxiang.setImageBitmap(photo);
        saveImage(photo);
        File file=new File(getActivity().getCacheDir()+"/aa.jpg");
        OkHttpClient ck=new OkHttpClient();
        MultipartBody.Builder builder=new MultipartBody.Builder().setType(MultipartBody.FORM);
        builder.addFormDataPart("file",file.getName(), RequestBody.create(MediaType.parse("image/*"),file));
        Request request=new Request.Builder().url(Api.ctouxiang).post(builder.build()).build();
        ck.newCall(request).enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Toast.makeText(getActivity(), "上传头像失败", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {
                try {
                    JSONObject json=new JSONObject(response.body().string());
                    final String msg = json.optString("msg");
                    getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            Toast.makeText(getActivity(), "上传头像成功", Toast.LENGTH_SHORT).show();
                        }
                    });
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }
}
private void saveImage(Bitmap photo) {
    File file=new File(getActivity().getCacheDir()+"/aa.jpg");
    try {
        BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(file));
        photo.compress(Bitmap.CompressFormat.JPEG,100,bos);
        bos.flush();
        bos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值