From d029d03997d699a8d5f162929d4d33d272e1abc8 Mon Sep 17 00:00:00 2001 From: wushaocheng <15876365887@163.com> Date: Wed, 11 Jan 2023 15:06:21 +0800 Subject: [PATCH] =?UTF-8?q?[Modify]=E5=A3=B0=E9=9F=B3=E7=AD=BE=E5=90=8D?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AE=8C=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/assets/svga/user_sound_play.svga | Bin 0 -> 5411 bytes .../main/java/com/yizhuan/erban/UIHelper.java | 4 +- .../erban/audio/SoundSignatureActivity.kt | 61 ++++++++++-- .../erban/audio/viewmodel/SoundViewModel.kt | 30 +++++- .../erban/ui/user/UserInfoActivity.java | 87 +++++++++++++----- .../erban/ui/user/UserInfoModifyActivity.kt | 3 +- .../res/drawable-xhdpi/ic_skill_pause.png | Bin 1893 -> 0 bytes .../res/drawable-xhdpi/ic_skill_pause.webp | Bin 0 -> 966 bytes .../main/res/drawable-xhdpi/ic_skill_play.png | Bin 1781 -> 0 bytes .../res/drawable-xhdpi/ic_skill_play.webp | Bin 0 -> 822 bytes .../main/res/layout/activity_user_info.xml | 42 ++++++--- .../res/mipmap-xhdpi/user_sound_play.webp | Bin 0 -> 304 bytes .../user/bean/UserInfo.java | 2 +- 13 files changed, 178 insertions(+), 51 deletions(-) create mode 100644 app/src/main/assets/svga/user_sound_play.svga delete mode 100644 app/src/main/res/drawable-xhdpi/ic_skill_pause.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_skill_pause.webp delete mode 100644 app/src/main/res/drawable-xhdpi/ic_skill_play.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_skill_play.webp create mode 100644 app/src/main/res/mipmap-xhdpi/user_sound_play.webp diff --git a/app/src/main/assets/svga/user_sound_play.svga b/app/src/main/assets/svga/user_sound_play.svga new file mode 100644 index 0000000000000000000000000000000000000000..7de9152ea16932ee73b236fc846b53641c4d1747 GIT binary patch literal 5411 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 N;fF8;;2+38smEB_nIHfF literal 0 HcmV?d00001 diff --git a/app/src/main/java/com/yizhuan/erban/UIHelper.java b/app/src/main/java/com/yizhuan/erban/UIHelper.java index a37e61ae1..2ec34ab8b 100644 --- a/app/src/main/java/com/yizhuan/erban/UIHelper.java +++ b/app/src/main/java/com/yizhuan/erban/UIHelper.java @@ -23,6 +23,7 @@ import com.yizhuan.erban.ui.webview.CommonWebViewActivity; import com.yizhuan.xchat_android_core.UriProvider; import com.yizhuan.xchat_android_core.statistic.StatisticManager; import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol; +import com.yizhuan.xchat_android_core.user.bean.UserInfo; import com.yizhuan.xchat_android_library.utils.ResUtil; @@ -136,9 +137,10 @@ public class UIHelper { mActivity.startActivityForResult(intent, requestCode); } - public static void showSoundAct(Activity mActivity, int requestCode, String label) { + public static void showSoundAct(Activity mActivity, int requestCode, String label, UserInfo.SoundBean audioCard) { StatisticManager.Instance().onEvent(StatisticsProtocol.EVENT_MY_SOUND, ResUtil.getString(R.string.yizhuan_erban_uihelper_03) + label); Intent intent = new Intent(mActivity, SoundSignatureActivity.class); + intent.putExtra(SoundSignatureActivity.AUDIO_BEAN, audioCard); mActivity.startActivityForResult(intent, requestCode); } diff --git a/app/src/main/java/com/yizhuan/erban/audio/SoundSignatureActivity.kt b/app/src/main/java/com/yizhuan/erban/audio/SoundSignatureActivity.kt index 0bafaa9ad..d609e8067 100644 --- a/app/src/main/java/com/yizhuan/erban/audio/SoundSignatureActivity.kt +++ b/app/src/main/java/com/yizhuan/erban/audio/SoundSignatureActivity.kt @@ -19,7 +19,6 @@ import com.opensource.svgaplayer.SVGAParser import com.opensource.svgaplayer.SVGAVideoEntity import com.yizhuan.erban.R import com.yizhuan.erban.audio.helper.AudioPlayerHelper -import com.yizhuan.erban.audio.presenter.RecordingVoicePresenter import com.yizhuan.erban.audio.viewmodel.SoundViewModel import com.yizhuan.erban.base.BaseViewBindingActivity import com.yizhuan.erban.common.widget.dialog.DialogManager.OkCancelDialogListener @@ -29,6 +28,7 @@ import com.yizhuan.xchat_android_core.file.FileModel import com.yizhuan.xchat_android_core.room.model.AvRoomModel import com.yizhuan.xchat_android_core.statistic.StatisticManager import com.yizhuan.xchat_android_core.statistic.protocol.StatisticsProtocol +import com.yizhuan.xchat_android_core.user.bean.UserInfo.SoundBean import com.yizhuan.xchat_android_library.utils.ResUtil import com.yizhuan.xchat_android_library.utils.SingleToastUtil import io.reactivex.SingleObserver @@ -43,6 +43,7 @@ class SoundSignatureActivity : BaseViewBindingActivity { + refreshButtonView(SoundViewModel.STATE_RECORD_NORMAL) + } + 1 -> { + val showStr = String.format( + Locale.getDefault(), + "%ds / %ds", + 0, + MAX_RECORD_VOICE_DURATION + ) + binding.tvSoundTime.text = showStr + soundViewModel.audioState = SoundViewModel.STATE_RECORD_SUCCESS + soundViewModel.audioUrl = audioCard.audioUrl ?: "" + refreshButtonView(SoundViewModel.STATE_RECORD_SAVE_SUCCESS) + } + 2 -> { + val showStr = String.format( + Locale.getDefault(), + "%ds / %ds", + 0, + MAX_RECORD_VOICE_DURATION + ) + binding.tvSoundTime.text = showStr + soundViewModel.audioState = SoundViewModel.STATE_RECORD_SUCCESS + soundViewModel.audioUrl = audioCard.audioUrl ?: "" + refreshButtonView(SoundViewModel.STATE_RECORD_AUDIT_SUCCESS) + } + else -> { + refreshButtonView(SoundViewModel.STATE_RECORD_NORMAL) + } + } } private fun setListener() { @@ -136,7 +169,7 @@ class SoundSignatureActivity : BaseViewBindingActivity {//保存按钮 finishRecord() @@ -251,7 +285,7 @@ class SoundSignatureActivity : BaseViewBindingActivity { binding.ivSoundStatus.post { binding.ivSoundStatus.setImageResource(R.drawable.ic_pause_record) } @@ -271,6 +305,15 @@ class SoundSignatureActivity : BaseViewBindingActivity { + binding.ivSoundStatus.post { binding.ivSoundStatus.setImageResource(R.drawable.ic_pause_record) } + binding.tvRecordTip.text = getString(R.string.click_to_listen) + binding.groupRsRecord.visibility = View.VISIBLE + binding.groupSaveSound.visibility = View.INVISIBLE + binding.groupDeleteSound.visibility = View.VISIBLE + binding.tvUnderReview.visibility = View.GONE + binding.svgRecorder.stopAnimation() + } } } @@ -286,7 +329,7 @@ class SoundSignatureActivity : BaseViewBindingActivity { try { ClipboardManager cm = (ClipboardManager) UserInfoActivity.this.getSystemService(Context.CLIPBOARD_SERVICE); @@ -607,7 +609,22 @@ public class UserInfoActivity extends BaseBindingActivity toggleAudio(skillEntity.getPropVals())); + mBinding.tvAudio.setText(String.valueOf(audioCard.getSecond())); + mBinding.livUser.stopAnimation(); + mBinding.llAudio.setOnClickListener(v -> toggleAudio(audioCard)); } else { mBinding.llAudio.setVisibility(View.GONE); } } - private void toggleAudio(List list) { - if (ListUtils.isListEmpty(list)) return; + private void toggleAudio(UserInfo.SoundBean audioCard) { String url = ""; - for (String s : list) { - if (s.contains("http")) { - url = s; - } + if (audioCard.getAudioUrl().contains("http")) { + url = audioCard.getAudioUrl(); } if (TextUtils.isEmpty(url)) return; if (!audioPlaying) { - playAudio(url); + playAudio(url, audioCard.getSecond()); } else { stopAudio(); } } - private void playAudio(String url) { + private void playAudio(String url, int second) { if (audioPlaying) return; audioPlaying = true; - mBinding.livUser.start(); + playSvgaBg(mBinding.livUser, "svga/user_sound_play.svga"); + startChronometer(second); mBinding.ivAudioControl.setImageResource(R.drawable.ic_skill_play); AudioPlayerHelper.get().playInThread(url, new OnPlayListener() { @@ -681,10 +697,34 @@ public class UserInfoActivity extends BaseBindingActivity { + long elapsedMillis = + SystemClock.elapsedRealtime() - chronometer.getBase(); + int second = (int) (elapsedMillis / 1000); + String showStr = String.format( + Locale.getDefault(), + "%d", + second + ); + if (second >= time) { + stopChronometer();// 录制时长超过上限时,停止录制 + } + chronometer.setText(showStr); + }); + mBinding.tvAudio.setBase(SystemClock.elapsedRealtime()); + mBinding.tvAudio.start(); + } + + private void stopChronometer(){ + mBinding.tvAudio.stop(); + } + private void stopAudio() { + stopChronometer(); if (!audioPlaying) return; audioPlaying = false; - mBinding.livUser.stop(); + mBinding.livUser.stopAnimation(); mBinding.ivAudioControl.setImageResource(R.drawable.ic_skill_pause); AudioPlayerHelper.get().endPlay(); } @@ -701,7 +741,6 @@ public class UserInfoActivity extends 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 X=0dst@U1~000000NkvXXu0mjfR0&C> diff --git a/app/src/main/res/drawable-xhdpi/ic_skill_play.webp b/app/src/main/res/drawable-xhdpi/ic_skill_play.webp new file mode 100644 index 0000000000000000000000000000000000000000..9a8d3677d60489e0dc1545055fc8f8122c2aa584 GIT binary patch literal 822 zcmWIYbaT^VW?%?+bqWXzu<%g?vh|e@a0tXd)|#Ypbk)36fx>^Gb6JkL*ZViWzO~Ia z{rz8w+iu<~)nBT!-aI$`?9cQIW|JOoDF6Phx}L%R;cJE;Th)9sxTP3!=X5RP5tyUv zkYj!EwNGp|pYx12MQ>RYH=W*eg~=wOW_{WFNt<$N^LYe=b7I509y>`KNRs|}cA40N z^r&A|ehnY&&ZNEl>C`cWL9uAvmiNJmELoBY)B4Uxo;g@u@$FE|p7yQz(^`u)A{%a~ zEeemYx;N>l&m8`L)0VFGk`sKN{`QrjSC7)G4Uf5tx+-`7?D<5Bu`{y?s>>m{SA?+*kSz<{~<^>qFD^YznT z7w-iLG;BBVd-q3c>69QZ&9A$SBjc6&?t*v`hu=o54SKyO$m^<}&b9>`KL@NVdbmNj zo8N0HZ~5G-d)>YMaxd);oqM8ZlCYL}(5wH4B0kz=y^Bh^T-9*W=KN<6s;@oDG9yhW z!TR(j9UzL%%8EL~!jaDXtNxOS?`0q|Ybf(+D5$GSo223iLQ8g7_%u|eU4LZJ_ZWzF z2qZF{*<2>*8YluntsKG$^DaL(;5iIJIxaI9fL5?L3V@N~A(k1>AK(36dmn_j1=SAN zy!W5?yb^@MI}8|~Ra%wDUM~fryG|{f2Io(%0@(mWB1%9j!Yu)Qz>)!M6zE5h(I_oRT z(Bq{E4pL-dv8eo|CIKf7#TH~jC#0_bEc=||bC%DMi1+5 - + + + android:format="60" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:textColor="@color/white" + android:textSize="@dimen/sp_14" + tools:text="60" /> + + diff --git a/app/src/main/res/mipmap-xhdpi/user_sound_play.webp b/app/src/main/res/mipmap-xhdpi/user_sound_play.webp new file mode 100644 index 0000000000000000000000000000000000000000..60b365c7dea05a39b07bbcdb727f88872ed13e7e GIT binary patch literal 304 zcmWIYbaT^SWMBw)bqWXzu<(%qvh`gZI0fDt{QqqKpG(@)t6ApVyDtt6F^mZe8X7zz zW^z&%EDT%?4-Y3EXjD>Ya&BsDW-3zg>{5wO+mX8CO8mLS4<&b}yZjg3nS1*~oWka} z(hPXPhFy2B#};_UE#|9Gi~M${V)txOt&XLc&z}UXP?)xC?_{5Dk)xM3sLT}C>{{yn zto`f?$<24mVvd_ynm(R1=XA1MF5mvHnf3CO@6-RztMRi+`1|Wm#?!|k4+CfNym99T0BlNvmjD0& literal 0 HcmV?d00001 diff --git a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java index 362d5ac51..cf5e2c739 100644 --- a/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java +++ b/core/src/main/java/com/yizhuan/xchat_android_core/user/bean/UserInfo.java @@ -821,7 +821,7 @@ public class UserInfo implements Serializable { * 声音签名 */ @Data - public static class SoundBean { + public static class SoundBean implements Serializable{ private long uid; private String audioUrl;//音频七牛云url private Integer second;//时间