Merge branch 'refs/heads/新潘多拉6.8.1' into 新潘多拉_6.8.2

# Conflicts:
#	app/tmp/full-r8-config.txt
#	config.gradle
#	lib_faceunity/src/main/java/io/agora/beautyapi/faceunity/agora/SWManager.java
This commit is contained in:
ningwenqiang 2024-09-27 18:07:04 +08:00
commit 257b4c51aa
26 changed files with 137 additions and 42 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

@ -796,8 +796,8 @@
<string name="facebook_client_token">6e90a23e0679c8d21b0888d5fa755535</string>
<string name="twitter_key">ui10vIggex2F043HnztYNuA3g</string>
<string name="twitter_secret">J8jvBBeJoZbVojbkWUrvsj0K0UUkuV69CqQ7CEobhJn6tvAKpQ</string>
<string name="twitter_key">JDd7XEXr0kLcx0KkkJGUbD4MQ</string>
<string name="twitter_secret">aq0eV4R1pqMK_AAeKRWnjPr7ErGMGgTPGgZJdm73WeRY-Kluws</string>
<string name="twitter_key2">ZWRrZnRUNlBlcHVxMXpsMzVmb2k6MTpjaQ</string>
<string name="twitter_secret2">aq0eV4R1pqMK_AAeKRWnjPr7ErGMGgTPGgZJdm73WeRY-Kluws</string>

View File

@ -835,8 +835,9 @@
<string name="facebook_app_id">977019710454991</string>
<string name="facebook_client_token">6e90a23e0679c8d21b0888d5fa755535</string>
<string name="twitter_key">ui10vIggex2F043HnztYNuA3g</string>
<string name="twitter_secret">J8jvBBeJoZbVojbkWUrvsj0K0UUkuV69CqQ7CEobhJn6tvAKpQ</string>
<string name="twitter_key">JDd7XEXr0kLcx0KkkJGUbD4MQ</string>
<string name="twitter_secret">aq0eV4R1pqMK_AAeKRWnjPr7ErGMGgTPGgZJdm73WeRY-Kluws</string>
<string name="twitter_key2">F8t7PgspJ8Xl2k09ccqmnmynf</string>
<string name="twitter_secret2">aq0eV4R1pqMK_AAeKRWnjPr7ErGMGgTPGgZJdm73WeRY-Kluws</string>

View File

@ -641,8 +641,8 @@
<string name="facebook_app_id">977019710454991</string>
<string name="facebook_client_token">6e90a23e0679c8d21b0888d5fa755535</string>
<string name="twitter_key">ui10vIggex2F043HnztYNuA3g</string>
<string name="twitter_secret">J8jvBBeJoZbVojbkWUrvsj0K0UUkuV69CqQ7CEobhJn6tvAKpQ</string>
<string name="twitter_key">JDd7XEXr0kLcx0KkkJGUbD4MQ</string>
<string name="twitter_secret">aq0eV4R1pqMK_AAeKRWnjPr7ErGMGgTPGgZJdm73WeRY-Kluws</string>
<string name="user_task_text1">Complete the new person\'s pre task</string>
<string name="user_task_text2">Unlock custom features</string>

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

@ -5,11 +5,16 @@ import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.hardware.camera2.CameraManager;
import android.net.Uri;
import android.text.TextUtils;
import android.view.SurfaceView;
import android.widget.FrameLayout;
import androidx.annotation.NonNull;
import androidx.core.content.res.ResourcesCompat;
import com.blankj.utilcode.util.LogUtils;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.bean.SwTokenModel;
@ -65,6 +70,7 @@ public class SWManager extends BaseCacheManager {
private ImageTrackOptions imageTrackOptions = null;
private onDrPkJoinSuccessListener onDrPkJoinSuccessListener;
String openCameraId = "1";
public void setOnDrPkJoinSuccessListener(SWManager.onDrPkJoinSuccessListener onDrPkJoinSuccessListener) {
this.onDrPkJoinSuccessListener = onDrPkJoinSuccessListener;
@ -254,7 +260,20 @@ public class SWManager extends BaseCacheManager {
*/
public void switchCamera() {
if (mRtcEngine != null) {
mRtcEngine.switchCamera();
if (openCameraId.equals("0")) {
mRtcEngine.switchCamera("1");
openCameraId = "1";
} else {
mRtcEngine.switchCamera("0");
openCameraId = "0";
}
}
}
public void resetCamera() {
LogUtils.e("重置摄像头", openCameraId);
if (mRtcEngine != null && !TextUtils.isEmpty(openCameraId)) {
mRtcEngine.switchCamera(openCameraId);
}
}
@ -526,6 +545,9 @@ public class SWManager extends BaseCacheManager {
});
}
public void release() {
}
public interface onRtcEngineListener {
void onOpenSuccess(String channel, int uid);

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

@ -732,7 +732,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() {
@ -741,7 +741,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum();
}
}
});

View File

@ -782,7 +782,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() {
@ -791,7 +791,7 @@ public class LiveNewReadySwViewHolder extends AbsViewHolder implements View.OnCl
if (tag == R.string.camera) {
mImageUtil.getImageByCamera();
} else {
mImageUtil.getImageByAlumb();
mImageUtil.getImageByAlbum(true);
}
}
});

View File

@ -504,8 +504,9 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
public void onResume() {
mPaused = false;
Log.i("摄像头", "onResume: " + isNeedOpenCamera);
swManager.resetCamera();
if (isNeedOpenCamera) {
RCRTCEngine.getInstance().getDefaultVideoStream().startCamera(new IRCRTCResultDataCallback<Boolean>() {
/*RCRTCEngine.getInstance().getDefaultVideoStream().startCamera(new IRCRTCResultDataCallback<Boolean>() {
@Override
public void onSuccess(Boolean data) {
//设置摄像头最大缩放比例
@ -519,7 +520,7 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
public void onFailed(RTCErrorCode errorCode) {
Log.i("摄像头", "onFailed: 打开摄像头失败 " + errorCode);
}
});
});*/
}
}
@ -549,6 +550,8 @@ public class LivePushSwViewHolder extends AbsRyLivePushViewHolder implements ITX
public void release() {
super.release();
Bus.getOff(this);
onDestroy();
SWManager.get().release();
LiveHttpUtil.cancel(LiveHttpConsts.LINK_MIC_TX_MIX_STREAM);
rtcRoom = null;
}

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,
@ -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

@ -514,7 +514,7 @@ public class MainHttpUtil {
HttpClient.getInstance().get("Login.getCode", MainHttpConsts.GET_REGISTER_CODE)
.params("mobile", mobile)
.params("sign", sign)
.params("source", "1")
.params("source", "2")
.params("langue", WordUtil.isNewZh()?"chinese":"english")
.execute(callback);
}
@ -537,7 +537,7 @@ public class MainHttpUtil {
.params("Ticket", Ticket)
.params("MacAddress", macUitl.getNewMac())
.params("Imei", uuid)
.params("source", "1")
.params("source", "2")
.params("langue", WordUtil.isNewZh()?"chinese":"english")
.execute(callback);
}
@ -647,7 +647,7 @@ public class MainHttpUtil {
HttpClient.getInstance().get("Login.getCode", MainHttpConsts.GET_FIND_PWD_CODE)
.params("mobile", mobile)
.params("country_code", country_code)
.params("source", "1")
.params("source", "2")
.params("langue", WordUtil.isNewZh()?"chinese":"english")
.execute(callback);
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

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;