[Modify]修复声音卡主页显示bug
This commit is contained in:
@@ -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();
|
||||
|
@@ -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 -> {
|
||||
|
BIN
app/src/main/res/drawable-xhdpi/ic_audio_record.webp
Normal file
BIN
app/src/main/res/drawable-xhdpi/ic_audio_record.webp
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
@@ -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
|
||||
|
@@ -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>
|
Reference in New Issue
Block a user