[Modify]修复声音卡主页显示bug

This commit is contained in:
wushaocheng
2023-01-13 04:41:08 +08:00
parent f0a08a7fa3
commit e3c28e1813
5 changed files with 82 additions and 71 deletions

View File

@@ -6,10 +6,9 @@ import android.content.ClipboardManager;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.SystemClock;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.view.View;
import android.widget.Chronometer;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
@@ -31,7 +30,6 @@ import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.yizhuan.erban.R;
import com.yizhuan.erban.UIHelper;
import com.yizhuan.erban.audio.SoundSignatureActivity;
import com.yizhuan.erban.audio.helper.AudioPlayerHelper;
import com.yizhuan.erban.audio.helper.OnPlayListener;
import com.yizhuan.erban.avroom.ButtonItemFactory;
@@ -93,7 +91,6 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import static com.yizhuan.erban.ui.user.UserInfoActivity.IdentityState.OWN;
@@ -602,30 +599,7 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
stopAudio();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
// 获取数据并刷新显示
String audioFileUrl = data.getStringExtra(SoundSignatureActivity.AUDIO_FILE);
int audioDuration = data.getIntExtra(SoundSignatureActivity.AUDIO_DURA, 0);
if (!TextUtils.isEmpty(audioFileUrl) && audioDuration != 0) {
mBinding.llAudio.setVisibility(View.VISIBLE);
String url = "";
if (audioFileUrl.contains("http")) {
url = audioFileUrl;
}
if (TextUtils.isEmpty(url)) return;
if (!audioPlaying) {
playAudio(url, audioDuration);
} else {
stopAudio();
}
}
}
stopAudio(0);
}
private void setOfficialMask(String name, String icon) {
@@ -643,15 +617,35 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
public void initVoiceShow(UserInfo.SoundBean audioCard) {
if (audioCard != null && !TextUtils.isEmpty(audioCard.getAudioUrl())) {
mBinding.llAudio.setVisibility(View.VISIBLE);
mBinding.tvAudio.setText(String.valueOf(audioCard.getSecond()));
mBinding.livUser.stopAnimation();
mBinding.llAudio.setOnClickListener(v -> toggleAudio(audioCard));
if (AuthModel.get().getCurrentUid() == userId) {//主态
if (audioCard.getStatus() == 1) {
showSoundCard(audioCard);
} else if (audioCard.getStatus() == 0 || audioCard.getStatus() == 2) {
mBinding.llAudio.setVisibility(View.GONE);
mBinding.llAudioTip.setVisibility(View.VISIBLE);
}
} else if (audioCard.getStatus() == 2) {//客态
showSoundCard(audioCard);
}
} else {
mBinding.llAudio.setVisibility(View.GONE);
if (AuthModel.get().getCurrentUid() == userId) {//主态
mBinding.llAudio.setVisibility(View.GONE);
mBinding.llAudioTip.setVisibility(View.VISIBLE);
} else {
mBinding.llAudio.setVisibility(View.GONE);
mBinding.llAudioTip.setVisibility(View.GONE);
}
}
}
private void showSoundCard(UserInfo.SoundBean audioCard) {
mBinding.llAudio.setVisibility(View.VISIBLE);
mBinding.llAudioTip.setVisibility(View.GONE);
mBinding.tvAudio.setText(String.valueOf(audioCard.getSecond()));
mBinding.livUser.stopAnimation();
mBinding.llAudio.setOnClickListener(v -> toggleAudio(audioCard));
}
private void toggleAudio(UserInfo.SoundBean audioCard) {
String url = "";
if (audioCard.getAudioUrl().contains("http")) {
@@ -661,22 +655,24 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
if (!audioPlaying) {
playAudio(url, audioCard.getSecond());
} else {
stopAudio();
stopAudio(audioCard.getSecond());
}
}
private CountDownTimer timer = null;
private void playAudio(String url, int second) {
if (audioPlaying) return;
audioPlaying = true;
playSvgaBg(mBinding.livUser, "svga/user_sound_play.svga");
startChronometer(second);
mBinding.ivAudioControl.setImageResource(R.drawable.ic_skill_play);
startCountDown(second);
AudioPlayerHelper.get().playInThread(url, new OnPlayListener() {
@Override
public void onError(String error) {
SingleToastUtil.showToast(getString(R.string.me_error_playing));
stopAudio();
stopAudio(second);
}
@Override
@@ -686,42 +682,40 @@ public class UserInfoActivity extends BaseBindingActivity<ActivityUserInfoBindin
@Override
public void onPlaying(long currDuration) {
}
@Override
public void onCompletion() {
stopAudio();
stopAudio(second);
}
});
}
private void startChronometer(int time) {
mBinding.tvAudio.setOnChronometerTickListener(chronometer -> {
long elapsedMillis =
SystemClock.elapsedRealtime() - chronometer.getBase();
int second = (int) (elapsedMillis / 1000);
String showStr = String.format(
Locale.getDefault(),
"%d",
second
);
if (second >= time) {
stopChronometer();// 录制时长超过上限时,停止录制
private void startCountDown(int time) {
timer = new CountDownTimer((time + 1) * 1000L, 1000L) {
@Override
public void onTick(long millisUntilFinished) {
String time = String.valueOf(millisUntilFinished / 1000);
mBinding.tvAudio.setText(time);
}
chronometer.setText(showStr);
});
mBinding.tvAudio.setBase(SystemClock.elapsedRealtime());
mBinding.tvAudio.start();
@Override
public void onFinish() {
}
};
timer.start();
}
private void stopChronometer(){
mBinding.tvAudio.stop();
private void stopCountDown(int second) {
if (timer != null) {
mBinding.tvAudio.setText(String.valueOf(second));
timer.cancel();
}
}
private void stopAudio() {
stopChronometer();
private void stopAudio(int second) {
stopCountDown(second);
if (!audioPlaying) return;
audioPlaying = false;
mBinding.livUser.stopAnimation();

View File

@@ -391,9 +391,6 @@ class UserInfoModifyActivity : BaseViewBindingActivity<ActivityUserInfoModifyBin
}
Method.AUDIO -> {// 刷新声音资源
data?.let {
// 传给上个页面
setResult(RESULT_OK, it)
// 获取数据并刷新显示
audioFileUrl = it.getStringExtra(SoundSignatureActivity.AUDIO_FILE)
val audioDuration = it.getIntExtra(SoundSignatureActivity.AUDIO_DURA, 0)
@@ -401,13 +398,6 @@ class UserInfoModifyActivity : BaseViewBindingActivity<ActivityUserInfoModifyBin
binding.tvSoundTip.visibility = View.GONE
binding.llAudio.visibility = View.VISIBLE
binding.tvAudio.text = audioDuration.toString()
// // 更新用户信息
// val user = UserInfo()
// user.uid = AuthModel.get().currentUid
// user.userVoice = audioFileUrl
// user.voiceDura = audioDuration
// UserModel.get().requestUpdateUserInfo(user)
// .subscribe(userInfoUpdateObserver)
}
}
Method.PHOTO -> {

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -328,7 +328,7 @@
android:layout_height="wrap_content"/>
<LinearLayout
android:id="@+id/ll_audio"
android:id="@+id/llAudio"
android:layout_width="98dp"
android:layout_height="@dimen/dp_28"
android:layout_marginEnd="@dimen/dp_15"
@@ -353,10 +353,9 @@
android:layout_marginStart="@dimen/dp_4"
app:autoPlay="true"/>
<Chronometer
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/tvAudio"
android:layout_marginStart="@dimen/dp_6"
android:format="60"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/white"
@@ -372,6 +371,33 @@
</LinearLayout>
<LinearLayout
android:id="@+id/llAudioTip"
android:layout_width="98dp"
android:layout_height="@dimen/dp_28"
android:layout_marginEnd="@dimen/dp_15"
android:background="@drawable/bg_common_confirm_normal"
android:gravity="center_vertical"
android:orientation="horizontal"
android:visibility="gone">
<ImageView
android:id="@+id/iv_record"
android:layout_width="@dimen/dp_18"
android:layout_height="18dp"
android:layout_marginStart="@dimen/dp_4"
android:src="@drawable/ic_audio_record" />
<androidx.appcompat.widget.AppCompatTextView
android:text="@string/recording_sound_card"
android:textSize="@dimen/sp_12"
android:textColor="@color/white"
android:layout_marginStart="@dimen/dp_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
</LinearLayout>
</LinearLayout>
<TextView

View File

@@ -5051,5 +5051,6 @@
<string name="user_no_room_has_been_added_yet">該用戶暫未加入房間</string>
<string name="sound_has_not_been_saved">聲音還未保存,確認退出嗎?</string>
<string name="sound_has_not_been_recorded_yet">聲音還未錄製完成,確認退出嗎?</string>
<string name="recording_sound_card">錄制聲音卡</string>
</resources>