合并了图片选择 现在能跑起来了

This commit is contained in:
ningwenqiang 2024-09-13 10:58:27 +08:00
parent eb594fcfce
commit 39dc287623
19 changed files with 99 additions and 30 deletions

View File

@ -54,6 +54,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.READ_MEDIA_VISUAL_USER_SELECTED" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.NETWORK_PROVIDER" />

View File

@ -86,6 +86,7 @@ dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])
api files('libs/jcc-bate-0.7.3.jar')
compileOnly fileTree(dir: '../libs', include: ['*.aar'])
api 'androidx.activity:activity:1.9.1'
api rootProject.ext.dependencies["appcompat-androidx"]
api rootProject.ext.dependencies["recyclerview-androidx"]
api rootProject.ext.dependencies["cardview-androidx"]

View File

@ -3,13 +3,21 @@ package com.yunbao.common.utils;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.ImageDecoder;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.PickVisualMediaRequest;
import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.FragmentActivity;
import androidx.core.content.FileProvider;
import com.blankj.utilcode.util.LogUtils;
import com.yalantis.ucrop.UCrop;
import com.yalantis.ucrop.util.FileUtils;
import com.yunbao.common.CommonAppConfig;
@ -39,6 +47,7 @@ public class ProcessImageUtil extends ProcessResultUtil {
private ImageResultCallback mResultCallback;
private boolean mNeedCrop;//是否需要裁剪
private boolean mNeedGif;//允许gif图
ActivityResultLauncher<PickVisualMediaRequest> launcher;
public void setNeedGif(boolean mNeedGif) {
this.mNeedGif = mNeedGif;
@ -117,6 +126,19 @@ public class ProcessImageUtil extends ProcessResultUtil {
return;
}
String path = FileUtils.getPath(mContext, intent.getData());
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
ImageDecoder.Source source = ImageDecoder.createSource(mContext.getContentResolver(), intent.getData());
try {
Bitmap bitmap = ImageDecoder.decodeBitmap(source);
path=BitmapUtil.getInstance().saveBitmap(bitmap);
bitmap.recycle();
} catch (Exception e) {
e.printStackTrace();
mResultCallback.onFailure();
return;
}
}
File file = new File(path);
if (file.exists()) {
mResultCallback.onSuccess(file);
@ -153,6 +175,19 @@ public class ProcessImageUtil extends ProcessResultUtil {
}
}
};
launcher = ((AppCompatActivity) mContext).registerForActivityResult(new ActivityResultContracts.PickVisualMedia(), new androidx.activity.result.ActivityResultCallback<Uri>() {
@Override
public void onActivityResult(Uri result) {
LogUtils.e("result:" + result);
if (result == null) {
mAlumbResultCallback.onFailure();
return;
}
Intent intent = new Intent();
intent.setData(result);
mAlumbResultCallback.onSuccess(intent);
}
});
}
/**
@ -173,15 +208,28 @@ public class ProcessImageUtil extends ProcessResultUtil {
/**
* 相册获取图片
*/
public void getImageByAlumb() {
public void getImageByAlbum() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
showSystemPick();
return;
}
requestPermissions(mAlumbPermissions, mAlumbPermissionCallback);
}
public void getImageByAlumb(boolean needCrop) {
public void getImageByAlbum(boolean needCrop) {
this.mNeedCrop = needCrop;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
showSystemPick();
return;
}
requestPermissions(mAlumbPermissions, mAlumbPermissionCallback);
}
private void showSystemPick() {
PickVisualMediaRequest.Builder builder = new PickVisualMediaRequest.Builder()
.setMediaType(ActivityResultContracts.PickVisualMedia.ImageOnly.INSTANCE);
launcher.launch(builder.build());
}
/**
* 开启摄像头执行照相

View File

@ -35,7 +35,9 @@ public class WordUtil {
public static boolean isNewZh() {
return IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE
|| IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage() == Locale.TRADITIONAL_CHINESE ;
|| IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage() == Locale.TRADITIONAL_CHINESE
|| IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage() == Locale.CHINESE
|| IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage() == Locale.CHINA;
}
public static String getNewString(int res) {

View File

@ -22,7 +22,7 @@ ext {
// "tencent-bugly" : 'com.tencent.bugly:crashreport:2.6.6',//bugly
// "umeng-common" : 'com.umeng.sdk:common:1.5.3',//
// "umeng-analytics" : 'com.umeng.sdk:analytics:7.5.3',//
"ucrop" : 'com.github.yalantis:ucrop:2.2.3',//
"ucrop" : 'com.github.yalantis:ucrop:2.2.9',//
"smartRefreshLayout" : 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0-alpha-20',//
"magicIndicator" : 'com.github.hackware1993:MagicIndicator:1.6.0',//ViewPager指示器
"banner" : 'com.ms:banner:1.0.0',//

View File

@ -237,7 +237,7 @@ public class LiveReportAdapter extends RecyclerView.Adapter {
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
}
}
});

View File

@ -691,7 +691,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
*/
private void setAvatar() {
if (mLiveSdk == Constants.LIVE_SDK_TX) {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
} else {
DialogUitl.showStringArrayDialog(mContext, new Integer[]{
R.string.camera, R.string.alumb}, new DialogUitl.StringArrayDialogCallback() {
@ -700,7 +700,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
}
}
});

View File

@ -673,7 +673,7 @@ public class LiveNewReadySwViewHolder extends AbsViewHolder implements View.OnCl
*/
private void setAvatar() {
if (mLiveSdk == Constants.LIVE_SDK_TX) {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum(true);
} else {
DialogUitl.showStringArrayDialog(mContext, new Integer[]{
R.string.camera, R.string.alumb}, new DialogUitl.StringArrayDialogCallback() {
@ -682,7 +682,7 @@ public class LiveNewReadySwViewHolder extends AbsViewHolder implements View.OnCl
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum(true);
}
}
});

View File

@ -35,7 +35,6 @@ import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveChooseClassActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
import com.yunbao.live.adapter.LiveReadyShareAdapter;
import com.yunbao.common.bean.LiveRoomTypeBean;
import com.yunbao.live.dialog.LiveRoomTypeDialogFragment;
@ -262,7 +261,7 @@ public class LiveReadyRyViewHolder extends AbsViewHolder implements View.OnClick
*/
private void setAvatar() {
if (mLiveSdk == Constants.LIVE_SDK_TX) {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
} else {
DialogUitl.showStringArrayDialog(mContext, new Integer[]{
R.string.camera, R.string.alumb}, new DialogUitl.StringArrayDialogCallback() {
@ -271,7 +270,7 @@ public class LiveReadyRyViewHolder extends AbsViewHolder implements View.OnClick
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
}
}
});

View File

@ -285,7 +285,7 @@ public class LiveReadyViewHolder extends AbsViewHolder implements View.OnClickLi
*/
private void setAvatar() {
if (mLiveSdk == Constants.LIVE_SDK_TX) {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
} else {
DialogUitl.showStringArrayDialog(mContext, new Integer[]{
R.string.camera, R.string.alumb}, new DialogUitl.StringArrayDialogCallback() {
@ -294,7 +294,7 @@ public class LiveReadyViewHolder extends AbsViewHolder implements View.OnClickLi
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
}
}
});

View File

@ -218,7 +218,7 @@ public class CompleteUserInfoActivity extends AbsActivity {
if (isCamera) {
cameraUtil.getImageByCamera();
} else {
cameraUtil.getImageByAlumb();
cameraUtil.getImageByAlbum();
}
});
new XPopup.Builder(mContext).asCustom(userAvatarPopup).show();

View File

@ -546,7 +546,7 @@ public class EditProfileActivity extends AbsActivity {
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else if (tag == R.string.alumb) {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum(true);
} else {
RouteUtil.forwardUserAvatarSelect();
}

View File

@ -33,8 +33,6 @@ import com.yunbao.main.R;
import java.io.File;
import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Route(path = RouteUtil.PATH_FEEDBACK_EDIT_ACTIVITY)
public class FeedbackEditActivity extends AbsActivity {
@ -299,7 +297,7 @@ public class FeedbackEditActivity extends AbsActivity {
loadingDialog = DialogUitl.loadingDialog(mContext);
loadingDialog.show();
if (tag == 1) {
imageUtil.getImageByAlumb(false);
imageUtil.getImageByAlbum(false);
} else {
imageUtil.getImageByCamera(false);
}

View File

@ -41,6 +41,7 @@ import androidx.viewpager.widget.ViewPager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.LogUtils;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.jakewharton.rxbinding3.view.RxView;
@ -137,7 +138,7 @@ import com.yunbao.main.views.MainHomeViewHolder;
import com.yunbao.main.views.MainMeViewHolder;
import com.yunbao.main.views.MainMessageViewHolder;
import com.yunbao.video.utils.VideoStorge;
import com.yunbao.common.CommonAppContext;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@ -224,7 +225,6 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
super.create();
getWindow().requestFeature(Window.FEATURE_ACTIVITY_TRANSITIONS);
getWindow().setSharedElementEnterTransition(new FullAdToBannerTransition(1, 0.4f, new DecelerateInterpolator()));
}
@Override
@ -235,6 +235,11 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
@Override
protected void main() {
LogUtils.e("MainActivity",
"语言:"+IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage(),
"测试文本:"+getString(R.string.hot)
);
ToastUtil.showDebug("打包时间:"+CommonAppConfig.BUILD_TIME+"\n系统语言:"+IMLoginManager.get(CommonAppContext.sInstance).getLocaleLanguage());
//初始化声网
SWAuManager.get().initRtcEngine(this);
ActivityCompat.postponeEnterTransition(this);
@ -352,6 +357,8 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
frameLayout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
mViewList.add(frameLayout);
}
mainHomeComViewHolder = new MainHomeComViewHolder(mContext, MainActivity.this, mViewList.get(0));
mViewPager.setAdapter(new ViewPagerAdapter(mViewList));
mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
@ -1281,7 +1288,7 @@ public class MainActivity extends AbsActivity implements MainAppBarLayoutListene
return;
}
if (position == 0) {
mainHomeComViewHolder = new MainHomeComViewHolder(mContext, MainActivity.this, parent);
//mainHomeComViewHolder = new MainHomeComViewHolder(mContext, MainActivity.this, parent);
vh = mainHomeComViewHolder;
} else if (position == 1) {
mainHomeViewHolder = new MainHomeViewHolder(mContext, parent);

View File

@ -409,7 +409,7 @@ public class MessageHiConfigActivity extends AbsActivity {
}
}
});
imageUtil.getImageByAlumb();
imageUtil.getImageByAlbum();
loading = DialogUitl.loadingDialog(mContext);
loading.show();
}

View File

@ -586,7 +586,7 @@ public class MyWebViewActivity extends AbsActivity {
if (tag == com.yunbao.main.R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
}
}
});

View File

@ -49,7 +49,7 @@ public class OneLoginActivity extends AbsActivity {
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
}
}
});

View File

@ -174,7 +174,12 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O
boolean isAnchor = IMLoginManager.get(mContext).getUserInfo().anchorUserType();
if (isAnchor) {
String[] permissions;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
permissions = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO
};
} else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.TIRAMISU) {
permissions = new String[]{
//Manifest.permission.READ_MEDIA_IMAGES, 去掉选择图片的权限到里面选择封面的时候再去申请
Manifest.permission.CAMERA,
@ -200,7 +205,12 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O
boolean isAnchor = IMLoginManager.get(mContext).getUserInfo().anchorUserType();
if (isAnchor) {
String[] permissions;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
permissions = new String[]{
Manifest.permission.CAMERA,
Manifest.permission.RECORD_AUDIO
};
} else if (Build.VERSION.SDK_INT == Build.VERSION_CODES.TIRAMISU) {
permissions = new String[]{
Manifest.permission.READ_MEDIA_IMAGES,
Manifest.permission.CAMERA,
@ -239,9 +249,9 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O
JSONObject obj = JSON.parseObject(info[0]);
JSONObject obj1 = JSON.parseObject(info1[0]);
try {
if(code==201){ //声网
if (code == 201) { //声网
LiveSwAnchorActivity.forward(mContext, Constants.LIVE_SDK_SW, JSON.parseObject(obj.getString("android"), LiveKsyConfigBean.class));
}else if(code==200){//融云
} else if (code == 200) {//融云
LiveRyAnchorActivity.forward(mContext, obj.getIntValue("live_sdk"), JSON.parseObject(obj.getString("android"), LiveKsyConfigBean.class));
}
} catch (Exception e) {
@ -316,7 +326,7 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O
if (i == R.id.btn_close) {
} else if (i == R.id.btn_live) {
if (isWifiProxy(mContext) || checkVPN((ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE))) {
ToastUtil.show(WordUtil.isNewZh()?"檢測開啓了VPN或者代理請先關閉VPN或者代理再開播。":
ToastUtil.show(WordUtil.isNewZh() ? "檢測開啓了VPN或者代理請先關閉VPN或者代理再開播。" :
"It is detected that VPN or proxy is turned on. Please turn off VPN or proxy before starting the broadcast.");
DebugUtils.runDebugCode(() -> mCallback.onLiveClick());
} else {
@ -332,6 +342,7 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O
}
}
}
private boolean isWifiProxy(Context context) {
final boolean IS_ICS_OR_LATER = Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH;
String proxyAddress;
@ -353,6 +364,7 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O
boolean isVpnConn = networkInfo == null ? false : networkInfo.isConnected();
return isVpnConn;
}
@Override
public void onDestroy() {
super.onDestroy();

View File

@ -6,6 +6,7 @@ import android.content.Context;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AccelerateInterpolator;
import androidx.annotation.Nullable;
import com.google.android.exoplayer2.C;
import com.google.android.exoplayer2.DefaultLoadControl;