MediaManager 3.0 集图片选择,视频选择,视频播放,语音录制(amr)的发布

一:需要含权限的, 要在调用方法前,获取权限完毕(即获取权限成功后,在调用下面的方法)

下载地址:compile 'com.jxdt.media.manager:media:3.0.2'

开启日志 MediaLog.setIsDebug(true);//默认不开启(Log.e)

二:图片展示回调

class OnImageListener implements OnImageLoaderListener {

    @Override
    public void onImageLoading(Context context, String path, ImageView imageView) {
        //展示的 图片
        //可以选择使用 Glide
    }

    @Override
    public boolean onImageDelete(Context context, MediaEntity imageEntity) {
       //返回 true 表示删除图片 false 不删除图片
       //在主线程里执行的
        return true;
    }


}

三:内置的媒体对象 MediaEntity

//文件夹id
public String folderId;
//文件夹名字
public String folderName;
//文件夹路径
public String folderPath;
//文件路径
public String filePathSource;
//文件创建时间
public long fileTime;
//文件id
public String fileId;
//文件类型(png,jpg,mp4....)
public String mediaType;
//文件类 1 图片 2 视频
public int fileType;
//文件大小
public String fileSize;
//文件名称
public String imageName;
// 经度
public int imageAngle;
//视频时长(毫秒)
public String videoLength;
//视频标题
public String videoTitle;
//视频缩略图
public String videoThumbnails;
//裁剪或者压缩的图片路径
public String filePath;
//false 不可以删除 (默认为true)
public boolean isDelete = true; 
 

四:图片操作

//选择更多图片 max 最多选择图片的数量 path 已选择的图片(已选择的图片会 选择列表回显)
public void getMoreConfig(int max, ArrayList<String> path) {
    DataConfig.getNewBuild()
            .setOnImageLoaderListener(new OnImageListener())
            .onDataImageOption()
            .setMaxCount(max)
            .setOptionPaths(path)
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_OPTION_REQ);
}

 

//选择更多图片
public void getMoreConfig(int max, ArrayList<MediaEntity> path) {
    DataConfig.getNewBuild()
            .setOnImageLoaderListener(new OnImageListener())
            .onDataImageOption()
            .setMaxCount(max)
            .setOptions(path)
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_OPTION_REQ);
}

//设置预览(只显示图片)path 图片url,index 从第几张图片开始
public void setImagePreview(ArrayList<String> path, int index) {
    DataConfig.getNewBuild()
            .setOnImageLoaderListener(new OnImageListener())
            .onDataImageOption()
            .setOptionPaths(path)
            .setImageIndex(index)
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_PRIVATE);
}

//预览图片 可以 删除
public void setImagePreviewDel(ArrayList<String> path, int index) {
    DataConfig.getNewBuild()
            .setOnImageLoaderListener(new OnImageListener())
            .onDataImageOption()
            .setOptionPaths(path)
            .setImageIndex(index)
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_PRIVATE_DEL_REQ);
}

 

//选择图片并且  裁剪图
public void getImageCrop() {
    DataConfig.getNewBuild()
            .setOnImageLoaderListener(new OnImageListener())
            .onDataCrop()
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_OPTION_CROP_IN_REQ);

}

//系统相机拍照
public void getSysImage() {
    Context con = activity.getApplicationContext();
    String pck = con.getPackageName();
    DataConfig.getNewBuild()
            .setAuthority(pck)
            .setOnImageLoaderListener(new OnImageListener())
            .onDataTake()
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_TAKE_OUT_REQ);

}
//系统裁剪 path 一张图片
public void getSysImageCrop(String path) {
    Context con = activity.getApplicationContext();
    String pck = con.getPackageName();
    DataConfig.getNewBuild()
            .setAuthority(pck)
            .setOnImageLoaderListener(new OnImageListener())
            .onDataCrop()
            .setImagePath(path)
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_CROP_OUT);

}
//裁剪 path 一张图片
public void getImageCrop(String path) {
    DataConfig.getNewBuild()
            .setOnImageLoaderListener(new OnImageListener())
            .onDataCrop()
            .setImagePath(path)
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_CROP_IN_REQ);

}

五:视频

//系统录制视频
public void getSysVideo() {
    Context con = activity.getApplicationContext();
    String pck = con.getPackageName();
    DataConfig.getNewBuild()
            .setAuthority(pck)
            .onDataTake()
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_VIDEO_TAKE_OUT_REQ);

}
//相机预览
public void onCameraPreview() {
    DataConfig.getNewBuild()
            .build(activity, DataConfig.TASK_CAMERA_PREVIEW);
}

setGainType(false, true)  视频选择 

setGainType(true, true)图片和视频选择(默认)

setGainType(true, false)  视频图片

//选择更多视频  
public void getVideoMoreConfig(int max) {
    DataConfig.getNewBuild()
            .setOnImageLoaderListener(new OnImageListener())
            .onDataImageOption()
            .setMaxCount(max)
            .setGainType(false, true)
            .onSetDataComplete()
            .build(activity, DataConfig.TASK_IMAGE_OPTION_REQ);
}
 

    

六:录制语音(amr)使用MediaRecorder录制

//设置回调
MediaRecorderManager.getInstance().setOnRecorderListener(onMediaRecorder);
//设置储存路径
MediaRecorderManager.getInstance().setAudioOutput(getVoicePath());
//设置最大录制时长(妙)
MediaRecorderManager.getInstance().setRecordTotalTime(10);
//开始录制
MediaRecorderManager.getInstance().setMediaVoiceStart();
//录制暂停
MediaRecorderManager.getInstance().stopMedia();
//录制继续
MediaRecorderManager.getInstance().setMediaResume();
//录制停止
MediaRecorderManager.getInstance().setMediaStop();
//获取录制存储地址(如果有暂停 8.0 以下要调用此方法)
String path=MediaRecorderManager.getInstance().getAudioPath();

录制监听

class OnMediaRecorder implements MediaRecorderManager.OnMediaRecorderListener {

    @Override
    public void onRecorderState(int state, long progressTime) {
        MediaLog.e("录制开始");
    }

    @Override
    public void onRecorderTime(long recordTotalTime, long progressTime) {
        MediaLog.e("录制中..." + progressTime + "/" + recordTotalTime);
    }

    @Override
    public void onVoiceAmplitude(double maxAmplitude) {
        MediaLog.e("录制声音获取=" + maxAmplitude);
    }

    @Override
    public void onRecorderTimeOut(long recordTotalTime, long progressTime) {
        MediaLog.e("录制声音超时");
       
    }

  
}

录制的语音播放 使用MediaPlayer播放

//播放监听
MediaPlayerManager.getInstance().setOnMediaListener(onMediaPlayer);
//播放初始化
MediaPlayerManager.getInstance().onMediaPlayerInit();
//设置播放源并且播放""网络音频,path 本地储存音频
MediaPlayerManager.getInstance().setDataSourcePlay("", path);

播放监听

   class OnMediaPlayer implements MediaPlayerManager.OnMediaPlayerListener {

        @Override
        public void onVideoSizeChanged(MediaPlayer mp, int width, int height) {

        }

        @Override
        public void onBufferingUpdate(MediaPlayer mp, int percent) {

        }
        /**
         * @param mp
         * @param state  100:准备完成(开始播放)
         *               101:播放暂停
         *               102:播放完成
         *               103:停止播放
         *               104:播放进度
         *               105:开始缓冲
         *               106:缓冲结束
         * @param source 播放的url
         */
        @Override
        public void onPayState(MediaPlayer mp, int state, String source) {
     
        }

        @Override
        public void onError(MediaPlayer mp, int what, int extra) {

        }
    }

七:选择图片,截图,视频数据的回调 在onActivityResult

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        boolean isOk = photoManager.onActivityResult(requestCode, resultCode, data);
        if (!isOk) {
            return;
        }
     } 

public boolean onActivityResult(int requestCode, int resultCode, Intent data) {
         
        boolean isOk = false;
        ArrayList<MediaEntity>  imageRes = new ArrayList();
        switch (resultCode) {
            case DataConfig.TASK_IMAGE_PRIVATE_DEL_REQ:
                //预览删除
                Bundle bundle = data.getExtras();
                imageRes = (ArrayList<MediaEntity>) bundle.get(DataConfig.TASK_DATA_RESULT);
                if (imageRes == null) {
                    imageRes = new ArrayList();
                }
                isOk = true;
                break;
            case DataConfig.TASK_IMAGE_OPTION_COMPLETE_RES:
                //选择图片,视频完成
                bundle = data.getExtras();
                imageRes = (ArrayList<MediaEntity>) bundle.get(DataConfig.TASK_DATA_RESULT);
                if (imageRes == null) {
                    imageRes = new ArrayList();
                }
                isOk = true;
                break;
            case DataConfig.TASK_IMAGE_CROP_COMPLETE_RES:
                //应用内裁剪完成
                String imagePath = data.getStringExtra("arg0");
                MediaEntity img = new MediaEntity();
                img.filePathSource = imagePath;
                imageRes.add(img);
                isOk = true;
                break;
        }
         if (isOk) {
            DataConfig.onConfiReset();
            return true;
        }
        switch (requestCode) {
            case DataConfig.TASK_IMAGE_CROP_COMPLETE_OUT_REQ:
                //系统裁剪完成
                if (resultCode != Activity.RESULT_OK) {
                    //裁剪放弃
                    break;
                }
                String imagePath = DataConfig.getBuild().getDataCrop().getSysImagePath();
                MediaEntity img = new MediaEntity();
                img.filePathSource = imagePath;
                imageRes.add(img);
                isOk = true;
                break;
            case DataConfig.TASK_IMAGE_TAKE_OUT_REQ:
                //系统拍照
                if (resultCode != Activity.RESULT_OK) {
                    //系统拍照放弃
                    break;
                }
                imagePath = DataConfig.getBuild().getDataTake().getSysImagePath();
                img = new MediaEntity();
                img.filePathSource = imagePath;
                imageRes.add(img);
                isOk = true;
                break;
            case DataConfig.TASK_VIDEO_TAKE_OUT_REQ:
                //系统录制视频
                if (resultCode != Activity.RESULT_OK) {
                    //系统录制视频放弃
                    break;
                }
                String videoPath = DataConfig.getBuild().getDataTake().getSysVideoPath();
                img = new MediaEntity();
                img.filePathSource = videoPath;
                imageRes.add(img);
                isOk = true;
                break;
        }
        DataConfig.onConfiReset();
        return isOk;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值