RecordActivity.java 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. package com.edufound.reader.activity;
  2. import android.Manifest;
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.content.pm.PackageManager;
  6. import android.graphics.drawable.AnimationDrawable;
  7. import android.net.Uri;
  8. import android.os.Build;
  9. import android.provider.Settings;
  10. import android.view.ViewGroup;
  11. import android.view.animation.Animation;
  12. import android.view.animation.AnimationUtils;
  13. import android.widget.FrameLayout;
  14. import android.widget.ImageView;
  15. import android.widget.TextView;
  16. import android.widget.Toast;
  17. import com.edufound.reader.R;
  18. import com.edufound.reader.activity.payactivity.EventPayActivity;
  19. import com.edufound.reader.annotation.BindView;
  20. import com.edufound.reader.application.EApplication;
  21. import com.edufound.reader.base.BaseMvpActivity;
  22. import com.edufound.reader.bean.ChannelCodeEnum;
  23. import com.edufound.reader.bean.ThroughType;
  24. import com.edufound.reader.contract.RecordContract;
  25. import com.edufound.reader.cusview.RvListJzvdStd;
  26. import com.edufound.reader.presenter.RecordPresenter;
  27. import com.edufound.reader.util.Consts;
  28. import com.edufound.reader.util.EfunboxUtil;
  29. import com.edufound.reader.util.MMKVUtil;
  30. import com.edufound.reader.util.PermissionsUtil;
  31. import com.edufound.reader.util.ThroughUtil;
  32. import com.orhanobut.logger.Logger;
  33. import androidx.annotation.NonNull;
  34. public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements RecordContract.View {
  35. Activity mActivity;
  36. @BindView(id = R.id.player_frame)
  37. FrameLayout mPlayerFrame;
  38. @BindView(id = R.id.activity_record_jzvideo)
  39. RvListJzvdStd mJzVideoViwe;
  40. @BindView(id = R.id.activity_record_back)
  41. ImageView mBack;
  42. @BindView(id = R.id.activity_record_mike_icon)
  43. ImageView mMikeIcon;
  44. @BindView(id = R.id.activity_record_mike_status)
  45. TextView mRecordStatus;
  46. @BindView(id = R.id.activity_record_demonstration)
  47. FrameLayout mDemonsFrame;
  48. @BindView(id = R.id.activity_record_demonstration_icon)
  49. ImageView mDemonsIcon;
  50. boolean isRecordNow = false;
  51. AnimationDrawable mMikeAnim;
  52. @Override
  53. public int getLayoutId() {
  54. return R.layout.activity_record;
  55. }
  56. @Override
  57. public void initView() {
  58. mActivity = this;
  59. mPresenter = new RecordPresenter();
  60. mPresenter.attachView(this);
  61. mPresenter.bindRecordServices();
  62. mPresenter.createVideoPlayer();
  63. mPresenter.getReadInfo(getIntent());
  64. mJzVideoViwe.setCanPause(false);
  65. mJzVideoViwe.setHideAllUI(true);
  66. addUiClickListener(mBack, o -> {
  67. if (ThroughUtil.mThroughTypeBean != null && ThroughUtil.mThroughTypeBean.getmThroughType().equals(ThroughType.TYPEA.getTypeCode())) {
  68. if (mPresenter.getBackModel() == null || mPresenter.getBackModel().equals("") || mPresenter.getBackModel().equals("home")) {
  69. EApplication.reloadApp(-1);
  70. } else if (mPresenter.getBackModel().equals("app")) {
  71. EApplication.killAppProcess(Consts.getmApplicAtion());
  72. }
  73. } else {
  74. mActivity.finish();
  75. }
  76. });
  77. addUiClickListener(mMikeIcon, o -> {
  78. if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
  79. && checkSelfPermission(Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
  80. // CusToast.getInstance(mActivity).show("未获得录音权限", 2000);
  81. Toast.makeText(mActivity, "未获得录音权限", Toast.LENGTH_SHORT).show();
  82. String isgranted = MMKVUtil.getInstance().decodeString("record_granted");
  83. if (isgranted == null || isgranted.equals("")) {
  84. //一次都没有出来过
  85. PermissionsUtil.verifyAudioPermissions(this);
  86. } else if (isgranted.equals("-1")) {
  87. if (Consts.getUMengChannel().equals(ChannelCodeEnum.MISOUND.getChannelCode())) {
  88. PermissionsUtil.verifyAudioPermissions(this);
  89. } else {
  90. Uri packageURI = Uri.parse("package:" + mActivity.getPackageName());
  91. Intent intent = new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS, packageURI);
  92. startActivity(intent);
  93. }
  94. }
  95. return;
  96. } else {
  97. if (EfunboxUtil.checkLogin(mActivity, getRootView())) {
  98. if (EfunboxUtil.checkIsVip()) {
  99. if (isRecordNow) {
  100. refRecordStatus();
  101. } else {
  102. startRecordStatus();
  103. }
  104. } else {
  105. if (Consts.isIsHaveFlowerEvent()) {
  106. Intent intent = new Intent(getActivity(), EventPayActivity.class);
  107. getActivity().startActivity(intent);
  108. } else {
  109. EfunboxUtil.userPay(getActivity());
  110. }
  111. }
  112. }
  113. }
  114. });
  115. addUiClickListener(mDemonsFrame, o -> {
  116. Animation animation = AnimationUtils.loadAnimation(this, R.anim.activity_record_demonstration_anim);
  117. mDemonsIcon.startAnimation(animation);
  118. mPresenter.clickExampleUI();
  119. });
  120. }
  121. @Override
  122. public void onWindowFocusChanged(boolean hasFocus) {
  123. super.onWindowFocusChanged(hasFocus);
  124. }
  125. @Override
  126. public void onGetDisconnect() {
  127. }
  128. @Override
  129. public void onGetMobileConnect() {
  130. }
  131. @Override
  132. public void onGetWifiConnect() {
  133. }
  134. @Override
  135. public void onLoginSuccess() {
  136. }
  137. @Override
  138. public void showLoading() {
  139. }
  140. @Override
  141. public void hideLoading() {
  142. }
  143. @Override
  144. public void onError(String errMessage) {
  145. }
  146. @Override
  147. public Activity getActivity() {
  148. return mActivity;
  149. }
  150. @Override
  151. protected void onDestroy() {
  152. mPresenter.activityDestroy();
  153. mPresenter.attachView(this);
  154. getRootView().removeAllViews();
  155. mJzVideoViwe = null;
  156. super.onDestroy();
  157. }
  158. @Override
  159. protected void onPause() {
  160. mPresenter.activityPause();
  161. super.onPause();
  162. }
  163. @Override
  164. protected void onResume() {
  165. mPresenter.activityResume();
  166. super.onResume();
  167. }
  168. @Override
  169. public ViewGroup getRootView() {
  170. return findViewById(android.R.id.content);
  171. }
  172. @Override
  173. public void refRecordStatus() {
  174. //正在朗读
  175. if (mMikeAnim != null) {
  176. mMikeAnim.stop();
  177. mMikeAnim = null;
  178. }
  179. mMikeIcon.setBackgroundResource(R.drawable.to_record_icon_mike);
  180. isRecordNow = false;
  181. mRecordStatus.setText("开始朗读");
  182. mPresenter.stopRecord();
  183. Logger.e("重新刷新录音状态,停止之前的录音,并且显示弹窗");
  184. }
  185. @Override
  186. public void startRecordStatus() {
  187. //没有朗读
  188. mMikeIcon.setBackgroundResource(R.drawable.activity_record_start_anim);
  189. mMikeAnim = (AnimationDrawable) mMikeIcon.getBackground();
  190. mMikeAnim.start();
  191. isRecordNow = true;
  192. mRecordStatus.setText("配音中");
  193. mPresenter.startRecord();
  194. }
  195. @Override
  196. public void getReadVideoInfoSuccess() {
  197. }
  198. @Override
  199. public RvListJzvdStd getJZVideoView() {
  200. return mJzVideoViwe;
  201. }
  202. @Override
  203. public void hasShowOtherUI(int visibility) {
  204. mBack.setVisibility(visibility);
  205. ((ViewGroup) mDemonsFrame.getParent()).setVisibility(visibility);
  206. }
  207. @Override
  208. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  209. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  210. if (requestCode == PermissionsUtil.GET_RECODE_AUDIO) {
  211. if (grantResults == null || grantResults.length == 0) {
  212. return;
  213. }
  214. if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  215. //获取成功
  216. MMKVUtil.getInstance().encode("record_granted", "1");
  217. } else if (grantResults[0] == -1) {
  218. //获取失败
  219. MMKVUtil.getInstance().encode("record_granted", "-1");
  220. }
  221. }
  222. }
  223. }