相机相册以及动态权限

if (Build.VERSION.SDK_INT >= 23) {
    String[] mPermissionList = new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.CAMERA
    };
    ActivityCompat.requestPermissions(this, mPermissionList, 123);
}
Intent intentToPickPic = new Intent(Intent.ACTION_PICK, null);
intentToPickPic.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/jpeg");

startActivityForResult(intentToPickPic,1);

相机

/*Intent intentToTakePhoto = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intentToTakePhoto, 1);*/

获取

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1 && resultCode == RESULT_OK) {

        Uri uri = data.getData();

      //  touxiang.setImageBitmap(bitmap);
        fileByUri = getFileByUri(uri, PushPhoto_activity.this);

    } /*else if (requestCode == 2) {

    }*/
}

日志拦截器

private RetrofitClient() {
    Retrofit retrofit = new Retrofit
            .Builder()
            .baseUrl(Api.BaseApi)
            .client(client())
            .addConverterFactory(GsonConverterFactory.create())
            .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
            .build();
    dataSevent = retrofit.create(DataSevent.class);
}

private OkHttpClient client() {
    OkHttpClient.Builder builder = new OkHttpClient.Builder()
           .addInterceptor(new LogginInterceptor());
    return builder.build();
}

package com.alearth;

import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.alearth.api.Api;
import com.alearth.api.IServer;
import com.alearth.bean.PushFile;
import com.google.gson.Gson;
import com.google.gson.JsonObject;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.annotation.Target;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.Unbinder;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
import rx.Observable;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

public class MineActivity extends AppCompatActivity {

    private static final int ALBUM_REQUEST_CODE = 0;
    @BindView(R.id.push_img)
    TextView pushImg;
    /*@BindView(R.id.head_img)
    SimpleDraweeView headImg;*/
    @BindView(R.id.get_HeadImg)
    TextView getHeadImg;
    @BindView(R.id.header_Img)
    ImageView headerImg;
    private Unbinder unbinder;

    //
    String fileName = "p1.jpg";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mine);
        unbinder = ButterKnife.bind(this);


    }

   

    //获取上传头像
    private void getImg() {
    }

    @OnClick({R.id.push_img, R.id.get_HeadImg})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.push_img:
                //upLoadImg();
                //获取相册的图片
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
                photoPickerIntent.setType("image/*");
                startActivityForResult(photoPickerIntent, ALBUM_REQUEST_CODE);

                //上传头像

                break;
            case R.id.get_HeadImg:
                getImg();
                break;
        }
    }

    private void upLoadImg(File targetFile) {


        //File targetFile = new File(Environment.getExternalStorageDirectory()+"/Android/p1.jpg");
        Log.i("aaa", targetFile+"");
        Retrofit retrofit =  new Retrofit.Builder()
                .baseUrl(Api.AD)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .build();
        IServer iServer = retrofit.create(IServer.class);
        //addFormDataPart()第一个参数为表单名字,这是和后台约定好的
        //TODO  第一个重要的对象MultipartBody
        MultipartBody.Builder builder = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("uid", "16926");
        //注意,file是后台约定的参数,如果是多图,file[],如果是单张图片,file就行
        builder.addFormDataPart("file", targetFile.getName(),
        //TODO  第二个重要的对象RequestBody
        RequestBody.create(MediaType.parse("image/jpg"),targetFile));

        RequestBody requestBody = builder.build();
        //开始
        Observable <JsonObject> jsonObjectObservable = iServer.pushImg(requestBody);
        jsonObjectObservable.subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Subscriber <JsonObject>() {
                    @Override
                    public void onCompleted() {
                    }
                    @Override
                    public void onError(Throwable e) {
                        Log.i("jiba","这是失败===="+e.getMessage());
                    }

                    @Override
                    public void onNext(JsonObject jsonObject) {
                        Log.i("jiba","这是成功的===="+jsonObject.toString());
                        Gson gson = new Gson();
                        PushFile pushFile = gson.fromJson(jsonObject.toString(), PushFile.class);
                        Toast.makeText(MineActivity.this,pushFile.getMsg(),Toast.LENGTH_SHORT).show();
                    }
                });

    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        switch (requestCode) {
            case ALBUM_REQUEST_CODE:
                if (resultCode == RESULT_OK) {
                    Uri uri = data.getData();
                    File file = new File(uri.getPath());
                    //File fileByUri = getFileByUri(uri, this);
                    upLoadImg(file);
                }
                break;
        }
    }
    public static File getFileByUri(Uri uri, Context context) {
        String path = null;
        if ("file".equals(uri.getScheme())) {
            path = uri.getEncodedPath();
            if (path != null) {
                path = Uri.decode(path);
                ContentResolver cr = context.getContentResolver();
                StringBuffer buff = new StringBuffer();
                buff.append("(").append(MediaStore.Images.ImageColumns.DATA).append("=").append("'" + path + "'").append(")");
                Cursor cur = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new String[]{MediaStore.Images.ImageColumns._ID, MediaStore.Images.ImageColumns.DATA}, buff.toString(), null, null);
                int index = 0;
                int dataIdx = 0;
                for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
                    index = cur.getColumnIndex(MediaStore.Images.ImageColumns._ID);
                    index = cur.getInt(index);
                    dataIdx = cur.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
                    path = cur.getString(dataIdx);
                }
                cur.close();
                if (index == 0) {
                } else {
                    Uri u = Uri.parse("content://media/external/images/media/" + index);
                    System.out.println("temp uri is :" + u);
                }
            }
            if (path != null) {
                return new File(path);
            }
        } else if ("content".equals(uri.getScheme())) {
            // 4.2.2以后
            String[] proj = {MediaStore.Images.Media.DATA};
            Cursor cursor = context.getContentResolver().query(uri, proj, null, null, null);
            if (cursor.moveToFirst()) {
                int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
                path = cursor.getString(columnIndex);
            }
            cursor.close();
            return new File(path);
        } else {
        }
        return null;
    }
    @Override
    protected void onDestroy() {
        if (unbinder != null) {
            unbinder.unbind();
        }
        super.onDestroy();
    }
}

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值