拍照,选择照片

来源:互联网 发布:python qrcode 编辑:程序博客网 时间:2024/05/01 17:23

https://github.com/bingoogolapple/BGAPhotoPicker-Android
// ——————– 以下4个库是必须依赖的 —————————-
compile ‘com.android.support:recyclerview-v7:25.1.0’
compile ‘com.jph.takephoto:takephoto_library:4.0.3’
compile ‘cn.bingoogolapple:bga-photopicker:1.2.3@aar’
compile ‘cn.bingoogolapple:bga-adapter:1.1.8@aar’
compile ‘pub.devrel:easypermissions:0.2.1’
// ——————– 以上4个库是必须依赖的 —————————-
package docom.com.choosephotos;

import android.Manifest;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.TextView;
import android.widget.Toast;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import cn.bingoogolapple.photopicker.activity.BGAPhotoPickerActivity;
import cn.bingoogolapple.photopicker.activity.BGAPhotoPickerPreviewActivity;
import cn.bingoogolapple.photopicker.widget.BGASortableNinePhotoLayout;
import pub.devrel.easypermissions.AfterPermissionGranted;
import pub.devrel.easypermissions.EasyPermissions;

public class MainActivity extends AppCompatActivity implements View.OnClickListener,
BGASortableNinePhotoLayout.Delegate, EasyPermissions.PermissionCallbacks {
//
private CheckBox mEditableCb;//是否可编辑
private CheckBox mPlusCb;//是否显示加号
private CheckBox mSortableCb;//是否拖拽排序
//
private CheckBox mTakePhotoCb;//是否开启拍照功能
private BGASortableNinePhotoLayout mPhotosSnpl;//添加照片

//private TextView tv_cancel;private TextView tv_determine;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    initView();    setListener();    processLogic(savedInstanceState);}private void processLogic(Bundle savedInstanceState) {    mEditableCb.setChecked(mPhotosSnpl.isEditable());    mPlusCb.setChecked(mPhotosSnpl.isPlusEnable());    mSortableCb.setChecked(mPhotosSnpl.isSortable());}private void setListener() {    mEditableCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {        @Override        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {            mPhotosSnpl.setEditable(checked);        }    });    mPlusCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {        @Override        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {            mPhotosSnpl.setPlusEnable(checked);        }    });    mSortableCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {        @Override        public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {            mPhotosSnpl.setSortable(checked);        }    });    // 设置拖拽排序控件的代理    mPhotosSnpl.setDelegate(this);}private void initView() {    //    mEditableCb = (CheckBox) findViewById(R.id.cb_moment_add_editable);    mPlusCb = (CheckBox) findViewById(R.id.cb_moment_add_plus);    mSortableCb = (CheckBox) findViewById(R.id.cb_moment_add_sortable);    //    mTakePhotoCb = (CheckBox) findViewById(R.id.cb_moment_add_take_photo);//是否开启拍照    mPhotosSnpl = (BGASortableNinePhotoLayout) findViewById(R.id.snpl_moment_add_photos);//添加照片    //    tv_cancel = (TextView) findViewById(R.id.tv_cancel);    tv_cancel.setOnClickListener(this);    tv_determine = (TextView) findViewById(R.id.tv_determine);    tv_determine.setOnClickListener(this);}@Overridepublic void onClick(View view) {    switch (view.getId()) {        case R.id.tv_cancel:            finish();            break;        case R.id.tv_determine:            break;    }}//选择照片 TODO startprivate static final int REQUEST_CODE_PERMISSION_PHOTO_PICKER = 1;private static final int REQUEST_CODE_CHOOSE_PHOTO            = 1;private static final int REQUEST_CODE_PHOTO_PREVIEW           = 3;@Overridepublic void onClickAddNinePhotoItem(BGASortableNinePhotoLayout sortableNinePhotoLayout, View view, int position, ArrayList<String> models) {    choicePhotoWrapper();}@AfterPermissionGranted(REQUEST_CODE_PERMISSION_PHOTO_PICKER)private void choicePhotoWrapper() {    String[] perms = {Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.CAMERA};    if (EasyPermissions.hasPermissions(this, perms)) {        // 拍照后照片的存放目录,改成你自己拍照后要存放照片的目录。如果不传递该参数的话就没有拍照功能        File takePhotoDir = new File(Environment.getExternalStorageDirectory(), "BGAPhotoPickerTakePhoto");        startActivityForResult(BGAPhotoPickerActivity.newIntent(this,                mTakePhotoCb.isChecked() ? takePhotoDir : null,                mPhotosSnpl.getMaxItemCount() - mPhotosSnpl.getItemCount(),                null, false), REQUEST_CODE_CHOOSE_PHOTO);    } else {        EasyPermissions.requestPermissions(this, "图片选择需要以下权限:\n\n1.访问设备上的照片\n\n2.拍照",                REQUEST_CODE_PERMISSION_PHOTO_PICKER, perms);    }}@Overridepublic void onClickDeleteNinePhotoItem(BGASortableNinePhotoLayout sortableNinePhotoLayout, View view, int position, String model, ArrayList<String> models) {    mPhotosSnpl.removeItem(position);}@Overridepublic void onClickNinePhotoItem(BGASortableNinePhotoLayout sortableNinePhotoLayout, View view, int position, String model, ArrayList<String> models) {}//选择照片 TODO end//期限申请@Overridepublic void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {    EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);}@Overridepublic void onPermissionsGranted(int requestCode, List<String> perms) {}@Overridepublic void onPermissionsDenied(int requestCode, List<String> perms) {    if (requestCode == REQUEST_CODE_PERMISSION_PHOTO_PICKER) {        Toast.makeText(this, "您拒绝了「图片选择」所需要的相关权限!", Toast.LENGTH_SHORT).show();    }}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {    super.onActivityResult(requestCode, resultCode, data);    if (resultCode == RESULT_OK && requestCode == REQUEST_CODE_CHOOSE_PHOTO) {        mPhotosSnpl.addMoreData(BGAPhotoPickerActivity.getSelectedImages(data));    } else if (requestCode == REQUEST_CODE_PHOTO_PREVIEW) {        mPhotosSnpl.setData(BGAPhotoPickerPreviewActivity.getSelectedImages(data));    }}

}

原创粉丝点击