拍照,选择照片
来源:互联网 发布: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)); }}
}
- 拍照,系统选择照片
- 拍照,选择照片功能
- 拍照,选择照片
- Android仿微信选择照片,拍照
- 拍照,选择照片并且剪裁
- 选择照片、拍照裁剪上传
- android 选择照片(相册/拍照/切图)
- 拍照、选择照片功能的实现
- Android开发--拍照选择照片裁剪
- Android自定义ViewGroup (选择照片或者拍照)
- Android 从相册选择照片 手机拍照
- Android 中拍照、相册选择、裁剪照片
- Android7.0 拍照 选择照片 权限 实现
- android 调用系统拍照、选择本地照片
- Android调用手机拍照以及从相册选择照片
- Android调用手机拍照以及从相册选择照片
- Android调用手机拍照以及从相册选择照片
- Android调用手机拍照以及从相册选择照片,剪裁
- Java安全模型之——代码签名和认证
- RadioButton去掉小圆圈、设置图片、文字居于图片下方
- Thinkphp5.0的common与命名空间
- stm32 RTC
- 同时引入jQuery和其它库
- 拍照,选择照片
- PolicyException: 无法获取所需的权限HttpException (0x80004005): 未能加载文件或程序集
- SAP登录IP绑定校验
- Android MediaCodec
- docker之数据存储
- 012 一个打了激素的数组3
- angular的添加隐藏于显示
- 使用HTML5+CSS+JS框架有那些好处
- CentOS 7 中安装Maven以及设置国内镜像地址