融云Im单独一个拍照或者拍摄插件Plugin
融云Im单独一个拍照或者拍摄插件Plugin
单独一个拍摄Plugin方便用户,也使插件栏丰富点。
一、效果图:
二、思路:
关键怎么从ImagePlugin里面摘拍照功能出来。
三、关键代码:
public class MyCameraPlugin implements IPluginModule, IPluginRequestPermissionResultCallback {Conversation.ConversationType conversationType;String targetId;private int mRequestCode = -1;protected PictureSelectionConfig config = PictureSelectionConfig.getInstance();public static String cameraPath;private Fragment currentFragment;@Overridepublic Drawable obtainDrawable(Context context) {return context.getResources().getDrawable(R.drawable.rc_ext_plugin_camera_selector);}@Overridepublic String obtainTitle(Context context) {return context.getString(com.yiban1314.yiban.R.string.camera);}@Overridepublic void onClick(Fragment currentFragment, RongExtension extension, int index) {conversationType = extension.getConversationType();targetId = extension.getTargetId();mRequestCode = ((index + 1) << 8) + (PictureConfig.CHOOSE_REQUEST & 0xff);this.currentFragment = currentFragment;cameraPath = "";String[] permissions = new String[] {Manifest.permission.CAMERA};if (PermissionCheckUtil.checkPermissions(currentFragment.getContext(), permissions)) {startOpenCamera(currentFragment);} else {ImDialogUtils.okAndCancel(currentFragment.getContext(), R.string.rc_permission_tip_camera_title, R.string.rc_permission_tip_camera, R.string.go_open, R.string.cancel, new View.OnClickListener() {@Overridepublic void onClick(View view) {extension.requestPermissionForPluginResult(permissions,IPluginRequestPermissionResultCallback.REQUEST_CODE_PERMISSION_PLUGIN,MyCameraPlugin.this);}});}}protected void startOpenCamera(Fragment currentFragment) {try {Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);if (currentFragment.getActivity() != null && currentFragment.getActivity().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY)) {Uri imageUri;if (SdkVersionUtils.checkedAndroid_Q()) {imageUri = MediaUtils.createImageUri(currentFragment.getActivity().getApplicationContext());if (imageUri != null) {cameraPath = imageUri.toString();}} else {int chooseMode =config.chooseMode == PictureConfig.TYPE_ALL? PictureConfig.TYPE_IMAGE: config.chooseMode;File cameraFile =PictureFileUtils.createCameraFile(currentFragment.getActivity().getApplicationContext(),chooseMode,config.cameraFileName,config.suffixType);cameraPath = cameraFile.getAbsolutePath();imageUri = PictureFileUtils.parUri(currentFragment.getActivity(), cameraFile);}cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);currentFragment.getActivity().startActivityForResult(cameraIntent, PictureConfig.REQUEST_CAMERA);}} catch (Exception e) {e.printStackTrace();}}@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) {}
有问题或者需要完整代码的私信我,我每天都看私信的