Skip to content

Commit

Permalink
完善回调
Browse files Browse the repository at this point in the history
  • Loading branch information
aaatttcccc committed Jan 4, 2022
1 parent 02990f3 commit 1a6b3db
Show file tree
Hide file tree
Showing 19 changed files with 364 additions and 287 deletions.
19 changes: 19 additions & 0 deletions TestStep.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,22 @@ recyclerView版本:
2. 短时间录制看ui变化
3. 短时间录制后然后关闭本身
4. 录制一个小节点然后按收件BackPressed看看有没有问题

------ 修改回调后的测试示例 -------
1. 选择照片,纯图片1张
2. 选择照片,纯图片2张
3. 选择视频,纯视频1个
4. 选择视频,纯视频2个
5. 选择图片视频,各1个
6. 选择图片视频,2+1
7. 选择图片视频,1+2
8. 选择图片视频,各2个
9. 预览去掉一个,直接确定
10.预览去掉两个,直接确定

1. 拍照1张
2. 拍照2张
3. 录制1个
4. 分段录制1个

1. 录音
121 changes: 67 additions & 54 deletions app/src/main/java/com/zhongjh/cameraapp/phone/MainActivity.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,18 @@
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;

import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.DataBindingUtil;

import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Toast;

import androidx.appcompat.widget.PopupMenu;
import androidx.databinding.DataBindingUtil;

import com.zhongjh.albumcamerarecorder.AlbumCameraRecorderApi;
import com.zhongjh.albumcamerarecorder.album.filter.BaseFilter;
import com.zhongjh.albumcamerarecorder.camera.PreviewVideoActivity;
import com.zhongjh.albumcamerarecorder.camera.constants.FlashModels;
import com.zhongjh.albumcamerarecorder.listener.OnResultCallbackListener;
import com.zhongjh.albumcamerarecorder.settings.AlbumSetting;
Expand All @@ -26,26 +23,26 @@
import com.zhongjh.albumcamerarecorder.settings.MultiMediaSetting;
import com.zhongjh.albumcamerarecorder.settings.RecorderSetting;
import com.zhongjh.cameraapp.BaseActivity;
import com.zhongjh.cameraapp.R;
import com.zhongjh.cameraapp.configuration.CompressionLuBan;
import com.zhongjh.cameraapp.configuration.GifSizeFilter;
import com.zhongjh.cameraapp.configuration.Glide4Engine;
import com.zhongjh.cameraapp.R;
import com.zhongjh.cameraapp.databinding.ActivityMainBinding;
import com.zhongjh.common.entity.LocalFile;
import com.zhongjh.common.entity.MultiMedia;
import com.zhongjh.common.entity.SaveStrategy;
import com.zhongjh.common.enums.MimeType;
import com.zhongjh.common.enums.MultimediaTypes;
import com.zhongjh.progresslibrary.entity.MultiMediaView;
import com.zhongjh.progresslibrary.listener.MaskProgressLayoutListener;
import com.zhongjh.progresslibrary.widget.MaskProgressLayout;
import com.zhongjh.videoedit.VideoEditManager;

import java.util.ArrayList;
import org.jetbrains.annotations.NotNull;

import java.util.List;
import java.util.Set;

import com.zhongjh.common.entity.SaveStrategy;
import com.zhongjh.common.enums.MimeType;
import com.zhongjh.common.enums.MultimediaTypes;

/**
* 配置版
*
Expand All @@ -58,6 +55,7 @@ public class MainActivity extends BaseActivity {
ActivityMainBinding mBinding;

GlobalSetting mGlobalSetting;
AlbumSetting mAlbumSetting;

@GlobalSetting.ScreenOrientation
int requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
Expand Down Expand Up @@ -89,7 +87,7 @@ protected void onCreate(Bundle savedInstanceState) {
mBinding.mplImageList.setMaskProgressLayoutListener(new MaskProgressLayoutListener() {

@Override
public void onItemAdd(View view, MultiMediaView multiMediaView, int alreadyImageCount, int alreadyVideoCount, int alreadyAudioCount) {
public void onItemAdd(@NotNull View view, @NotNull MultiMediaView multiMediaView, int alreadyImageCount, int alreadyVideoCount, int alreadyAudioCount) {
// 点击添加
boolean isOk = getPermissions(false);
if (isOk) {
Expand All @@ -98,26 +96,25 @@ public void onItemAdd(View view, MultiMediaView multiMediaView, int alreadyImage
}

@Override
@SuppressWarnings({"unchecked", "rawtypes"})
public void onItemClick(View view, MultiMediaView multiMediaView) {
public void onItemClick(@NotNull View view, @NotNull MultiMediaView multiMediaView) {
// 点击详情
if (multiMediaView.getType() == MultimediaTypes.PICTURE || multiMediaView.getType() == MultimediaTypes.VIDEO) {
MultiMediaSetting.openPreviewData(MainActivity.this, REQUEST_CODE_CHOOSE,
mGlobalSetting.openPreviewData(MainActivity.this, REQUEST_CODE_CHOOSE,
mBinding.mplImageList.getImagesAndVideos(),
mBinding.mplImageList.getImagesAndVideos().indexOf(multiMediaView));
}
}

@Override
public void onItemStartUploading(MultiMediaView multiMediaView) {
public void onItemStartUploading(@NotNull MultiMediaView multiMediaView) {
// 开始模拟上传 - 指刚添加后的。这里可以使用你自己的上传事件
MyTask timer = new MyTask(multiMediaView);
timers.put(multiMediaView, timer);
timer.schedule();
}

@Override
public void onItemClose(View view, MultiMediaView multiMediaView) {
public void onItemClose(@NotNull View view, @NotNull MultiMediaView multiMediaView) {
// 停止上传
MyTask myTask = timers.get(multiMediaView);
if (myTask != null) {
Expand All @@ -127,12 +124,12 @@ public void onItemClose(View view, MultiMediaView multiMediaView) {
}

@Override
public void onItemAudioStartDownload(View view, String url) {
public void onItemAudioStartDownload(@NotNull View view, @NotNull String url) {

}

@Override
public boolean onItemVideoStartDownload(View view, MultiMediaView multiMediaView) {
public boolean onItemVideoStartDownload(@NotNull View view, @NotNull MultiMediaView multiMediaView) {
return false;
}

Expand Down Expand Up @@ -174,7 +171,7 @@ protected void openMain(int alreadyImageCount, int alreadyVideoCount, int alread
CameraSetting cameraSetting = initCameraSetting();

// 相册设置
AlbumSetting albumSetting = initAlbumSetting();
mAlbumSetting = initAlbumSetting();

// 录音机设置
RecorderSetting recorderSetting = new RecorderSetting();
Expand All @@ -199,7 +196,7 @@ protected void openMain(int alreadyImageCount, int alreadyVideoCount, int alread
if (mBinding.cbAlbum.isChecked())
// 开启相册功能
{
mGlobalSetting.albumSetting(albumSetting);
mGlobalSetting.albumSetting(mAlbumSetting);
}
if (mBinding.cbCamera.isChecked())
// 开启拍摄功能
Expand Down Expand Up @@ -255,45 +252,61 @@ protected void openMain(int alreadyImageCount, int alreadyVideoCount, int alread
if (mBinding.cbIsActivityResult.isChecked()) {
mGlobalSetting.forResult(REQUEST_CODE_CHOOSE);
} else {
mGlobalSetting.forResult(new OnResultCallbackListener<LocalFile>() {
initForResult();
}
}

private void initForResult() {
mGlobalSetting.forResult(new OnResultCallbackListener() {

@Override
public void onResult(List<LocalFile> result, boolean fromPreview) {
@Override
public void onResult(List<LocalFile> result) {
for (LocalFile localFile : result) {
// 绝对路径,AndroidQ如果存在不属于自己App下面的文件夹则无效
Log.i(TAG, "onResult 绝对路径:" + localFile.getPath());
Log.i(TAG, "onResult Uri:" + localFile.getUri());
Log.i(TAG, "onResult 文件大小: " + localFile.getSize());
Log.i(TAG, "onResult 视频音频长度: " + localFile.getDuration());
Log.i(TAG, "onResult 类型:" + localFile.getType());
Log.i(TAG, "onResult 具体类型:" + localFile.getMimeType());
Log.i(TAG, "onResult 宽高: " + localFile.getWidth() + "x" + localFile.getHeight());
}
getMaskProgressLayout().addLocalFileStartUpload(result);
}

@Override
public void onResultFromPreview(List<MultiMedia> result, boolean apply) {
for (MultiMedia multiMedia : result) {
// 绝对路径,AndroidQ如果存在不属于自己App下面的文件夹则无效
Log.i(TAG, "onResult id:" + multiMedia.getId());
Log.i(TAG, "onResult 绝对路径:" + multiMedia.getPath());
Log.i(TAG, "onResult Uri:" + multiMedia.getUri());
Log.i(TAG, "onResult 文件大小: " + multiMedia.getSize());
Log.i(TAG, "onResult 视频音频长度: " + multiMedia.getDuration());
Log.i(TAG, "onResult 类型:" + multiMedia.getType());
Log.i(TAG, "onResult 具体类型:" + multiMedia.getMimeType());
Log.i(TAG, "onResult 宽高: " + multiMedia.getWidth() + "x" + multiMedia.getHeight());
}
// 倒数循环判断,如果不存在,则删除
for (int i = getMaskProgressLayout().getImagesAndVideos().size() - 1; i >= 0; i--) {
int k = 0;
for (LocalFile localFile : result) {
// 绝对路径,AndroidQ如果存在不属于自己App下面的文件夹则无效
Log.i(TAG, "绝对路径:" + localFile.getPath());
Log.i(TAG, "Uri:" + localFile.getUri());
Log.i(TAG, "文件大小: " + localFile.getSize());
Log.i(TAG, "视频音频长度: " + localFile.getDuration());
Log.i(TAG, "类型:" + localFile.getType());
Log.i(TAG, "具体类型:" + localFile.getMimeType());
Log.i(TAG, "宽高: " + localFile.getWidth() + "x" + localFile.getHeight());
}
if (fromPreview) {
// 循环判断,如果不存在,则删除
for (int i = getMaskProgressLayout().getImagesAndVideos().size() - 1; i >= 0; i--) {
int k = 0;
for (LocalFile localFile : result) {
if (!getMaskProgressLayout().getImagesAndVideos().get(i).equals(localFile)) {
k++;
}
}
if (k == result.size()) {
// 所有都不符合,则删除
getMaskProgressLayout().removePosition(i);
}
if (!getMaskProgressLayout().getImagesAndVideos().get(i).equals(localFile)) {
k++;
}
} else {
getMaskProgressLayout().addLocalFileStartUpload(result);
}
if (k == result.size()) {
// 所有都不符合,则删除
getMaskProgressLayout().removePosition(i);
}
}
}

@Override
public void onCancel() {
@Override
public void onCancel() {

}
});
}
}
});
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,14 @@
import com.zhongjh.cameraapp.configuration.GifSizeFilter;
import com.zhongjh.cameraapp.configuration.Glide4Engine;
import com.zhongjh.cameraapp.databinding.ActivityMainCustomCameraviewBinding;
import com.zhongjh.common.entity.SaveStrategy;
import com.zhongjh.common.enums.MimeType;
import com.zhongjh.common.enums.MultimediaTypes;
import com.zhongjh.progresslibrary.entity.MultiMediaView;
import com.zhongjh.progresslibrary.listener.MaskProgressLayoutListener;
import com.zhongjh.progresslibrary.widget.MaskProgressLayout;

import java.util.ArrayList;

import com.zhongjh.common.entity.SaveStrategy;
import com.zhongjh.common.enums.MimeType;
import com.zhongjh.common.enums.MultimediaTypes;
import org.jetbrains.annotations.NotNull;

/**
* 自定义CameraView
Expand Down Expand Up @@ -66,7 +65,7 @@ protected void onCreate(Bundle savedInstanceState) {
mBinding.mplImageList.setMaskProgressLayoutListener(new MaskProgressLayoutListener() {

@Override
public void onItemAdd(View view, MultiMediaView multiMediaView, int alreadyImageCount, int alreadyVideoCount, int alreadyAudioCount) {
public void onItemAdd(@NotNull View view, @NotNull MultiMediaView multiMediaView, int alreadyImageCount, int alreadyVideoCount, int alreadyAudioCount) {
// 点击添加
boolean isOk = getPermissions(false);
if (isOk) {
Expand All @@ -75,38 +74,37 @@ public void onItemAdd(View view, MultiMediaView multiMediaView, int alreadyImage
}

@Override
@SuppressWarnings({"unchecked", "rawtypes"})
public void onItemClick(View view, MultiMediaView multiMediaView) {
public void onItemClick(@NotNull View view, @NotNull MultiMediaView multiMediaView) {
// 点击详情
if (multiMediaView.getType() == MultimediaTypes.PICTURE || multiMediaView.getType() == MultimediaTypes.VIDEO) {
MultiMediaSetting.openPreviewData(MainCustomCameraViewActivity.this, REQUEST_CODE_CHOOSE,
mGlobalSetting.openPreviewData(MainCustomCameraViewActivity.this, REQUEST_CODE_CHOOSE,
mBinding.mplImageList.getImagesAndVideos(),
mBinding.mplImageList.getImagesAndVideos().indexOf(multiMediaView));
}
}

@Override
public void onItemStartUploading(MultiMediaView multiMediaView) {
public void onItemStartUploading(@NotNull MultiMediaView multiMediaView) {
// 开始模拟上传 - 指刚添加后的。这里可以使用你自己的上传事件
MyTask timer = new MyTask(multiMediaView);
timers.put(multiMediaView, timer);
timer.schedule();
}

@Override
public void onItemClose(View view, MultiMediaView multiMediaView) {
public void onItemClose(@NotNull View view, @NotNull MultiMediaView multiMediaView) {
// 停止上传
timers.get(multiMediaView).cancel();
timers.remove(multiMediaView);
}

@Override
public void onItemAudioStartDownload(View view, String url) {
public void onItemAudioStartDownload(@NotNull View view, @NotNull String url) {

}

@Override
public boolean onItemVideoStartDownload(View view, MultiMediaView multiMediaView) {
public boolean onItemVideoStartDownload(@NotNull View view, @NotNull MultiMediaView multiMediaView) {
return false;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

import androidx.appcompat.app.AppCompatActivity;

import com.zhongjh.albumcamerarecorder.settings.GlobalSetting;
import com.zhongjh.albumcamerarecorder.settings.MultiMediaSetting;
import com.zhongjh.cameraapp.configuration.Glide4Engine;
import com.zhongjh.cameraapp.R;
Expand Down Expand Up @@ -48,14 +49,12 @@ protected void onCreate(Bundle savedInstanceState) {

// 独立预览相片功能
mBinding.btnPreview.setOnClickListener(v -> {
// 这个可以放在Application初始化类型、解析图片类,也可以不需要,但是如果你要单独使用预览图功能,必须提前设置这个
MultiMediaSetting.init().choose(MimeType.ofAll()).imageEngine(new Glide4Engine())
// 设置路径和7.0保护路径等等,只影响录制拍照的路径,选择路径还是按照当前选择的路径
.allStrategy(new SaveStrategy(true, "com.zhongjh.cameraapp.fileprovider", "preview"));
GlobalSetting globalSetting = MultiMediaSetting.from(MainListActivity.this).choose(MimeType.ofAll());
globalSetting.allStrategy(new SaveStrategy(true, "com.zhongjh.cameraapp.fileprovider", "preview"));
ArrayList<Integer> list = new ArrayList<>();
list.add(R.drawable.ic_camera_enhance_black_24dp);
list.add(R.drawable.ic_play_arrow_white_24dp);
MultiMediaSetting.openPreviewResourceId(MainListActivity.this, list, 0);
globalSetting.openPreviewResourceId(MainListActivity.this, list, 0);
});

// 这是灵活配置能选择xx张图片,xx个视频,xx个音频的用法示例
Expand Down
Loading

0 comments on commit 1a6b3db

Please sign in to comment.