Prechádzať zdrojové kódy

1.修改录音界面播放完成自动停止
2.小度白金会员支付(共计5次)
3.修改个别细节问题。
4.修改个别界面返回导致崩溃问题

FailedToRead 3 rokov pred
rodič
commit
1a34edd48f
25 zmenil súbory, kde vykonal 191 pridanie a 121 odobranie
  1. 1 8
      app/src/main/java/com/edufound/reader/activity/MainActivity.java
  2. 5 3
      app/src/main/java/com/edufound/reader/activity/RecordActivity.java
  3. 0 20
      app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java
  4. 8 3
      app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java
  5. 1 0
      app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java
  6. 14 0
      app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java
  7. 3 1
      app/src/main/java/com/edufound/reader/base/BaseActivity.java
  8. 9 4
      app/src/main/java/com/edufound/reader/base/BaseFragment.java
  9. 15 0
      app/src/main/java/com/edufound/reader/bean/UserBean.java
  10. 0 6
      app/src/main/java/com/edufound/reader/botsdk/BotMessageListener.java
  11. 1 1
      app/src/main/java/com/edufound/reader/botsdk/BotRegisterListener.java
  12. 5 0
      app/src/main/java/com/edufound/reader/contract/MyTabFragmentContract.java
  13. 8 1
      app/src/main/java/com/edufound/reader/cusview/RvListJzvdStd.java
  14. 2 2
      app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java
  15. 1 5
      app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java
  16. 5 0
      app/src/main/java/com/edufound/reader/model/MyTabFragmentModel.java
  17. 1 1
      app/src/main/java/com/edufound/reader/presenter/CommentPresenter.java
  18. 35 6
      app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java
  19. 23 7
      app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java
  20. 11 4
      app/src/main/java/com/edufound/reader/presenter/RecordPresenter.java
  21. 41 46
      app/src/main/java/com/edufound/reader/services/RecordServices.java
  22. 1 0
      app/src/main/java/com/edufound/reader/util/OkHttpClient.java
  23. 0 1
      app/src/main/java/com/edufound/reader/util/PermissionsUtil.java
  24. 1 1
      app/src/main/java/com/edufound/reader/videoutil/JZMediaIjk.java
  25. 0 1
      app/src/main/res/layout/activity_userinfo_setting.xml

+ 1 - 8
app/src/main/java/com/edufound/reader/activity/MainActivity.java

@@ -21,6 +21,7 @@ import java.util.HashMap;
 
 import androidx.annotation.NonNull;
 import cn.jzvd.Jzvd;
+import cn.jzvd.JzvdStd;
 import io.reactivex.rxjava3.annotations.Nullable;
 
 public class MainActivity extends BaseMvpActivity<MainPresenter> implements MainContract.View {
@@ -107,24 +108,16 @@ public class MainActivity extends BaseMvpActivity<MainPresenter> implements Main
 
     @Override
     public void onBackPressed() {
-        if (Jzvd.backPress()) {
-            return;
-        }
         super.onBackPressed();
     }
 
     @Override
     protected void onPause() {
-        Logger.e("mainactivity_onPause");
-//        Jzvd.releaseAllVideos();
-//        JzvdStd.goOnPlayOnPause();
         super.onPause();
     }
 
     @Override
     protected void onResume() {
-        Logger.e("mainactivity_onresumt");
-//        JzvdStd.goOnPlayOnResume();
         super.onResume();
     }
 

+ 5 - 3
app/src/main/java/com/edufound/reader/activity/RecordActivity.java

@@ -153,8 +153,10 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
     @Override
     public void refRecordStatus() {
         //正在朗读
-        mMikeAnim.stop();
-        mMikeAnim = null;
+        if (mMikeAnim != null) {
+            mMikeAnim.stop();
+            mMikeAnim = null;
+        }
         mMikeIcon.setBackgroundResource(R.drawable.to_record_icon_mike);
         isRecordNow = false;
         mRecordStatus.setText("开始朗读");
@@ -184,6 +186,6 @@ public class RecordActivity extends BaseMvpActivity<RecordPresenter> implements
     @Override
     public void hasShowOtherUI(int visibility) {
         mBack.setVisibility(visibility);
-        mDemonsFrame.setVisibility(visibility);
+        ((ViewGroup) mDemonsFrame.getParent()).setVisibility(visibility);
     }
 }

+ 0 - 20
app/src/main/java/com/edufound/reader/activity/SmallFullVideoActivity.java

@@ -102,24 +102,4 @@ public class SmallFullVideoActivity extends BaseMvpActivity<SmallFullVideoPresen
         super.onDestroy();
     }
 
-    @Override
-    public void onBackPressed() {
-        if (Jzvd.backPress()) {
-            return;
-        }
-        super.onBackPressed();
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        Jzvd.releaseAllVideos();
-        JzvdStd.goOnPlayOnPause();
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        JzvdStd.goOnPlayOnResume();
-    }
 }

+ 8 - 3
app/src/main/java/com/edufound/reader/activity/UserInfoSettingActivity.java

@@ -5,11 +5,13 @@ import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.graphics.Color;
+import android.text.InputFilter;
 import android.text.TextUtils;
 import android.view.KeyEvent;
 import android.view.View;
 import android.view.inputmethod.EditorInfo;
 import android.view.inputmethod.InputMethodManager;
+import android.widget.EditText;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -63,7 +65,7 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
     LinearLayout mSwitchLayout;
 
     @BindView(id = R.id.activity_userinfo_setting_nickname)
-    TextView mNickName;
+    EditText mNickName;
     @BindView(id = R.id.activity_userinfo_setting_gender_male)
     FrameLayout mGenderMale;
     @BindView(id = R.id.activity_userinfo_setting_gender_female)
@@ -198,9 +200,10 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
                     return;
                 }
                 hideSoftInput();
-
                 Consts.getmConstsUserBean().setNickName(mNickName.getText().toString().trim());
                 mPresenter.upadteMyInfo(Consts.getmConstsUserBean());
+            } else {
+                mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
             }
 
         });
@@ -270,7 +273,9 @@ public class UserInfoSettingActivity extends BaseMvpActivity<UserInfoSettingPres
 
     @Override
     public void getUserInfoSuccess(UserBean bean) {
-//        m
+        if (bean.getNickName().length() <= 6) {
+            mNickName.setFilters(new InputFilter[]{new InputFilter.LengthFilter(6)});
+        }
         mNickName.setText(bean.getNickName());
         mGrade.setText(EfunboxUtil.getCNGradeByEnum(bean.getGrade()));
         if (bean.getGender().equals("1")) {

+ 1 - 0
app/src/main/java/com/edufound/reader/adapter/SlideVideoAdapter.java

@@ -32,6 +32,7 @@ import androidx.annotation.NonNull;
 import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
 import cn.jzvd.JZDataSource;
+import cn.jzvd.Jzvd;
 import cn.jzvd.JzvdStd;
 
 public class SlideVideoAdapter extends RecyclerView.Adapter<VideoHolder> {

+ 14 - 0
app/src/main/java/com/edufound/reader/apiserver/UserApiServerImpl.java

@@ -48,6 +48,15 @@ public class UserApiServerImpl implements userApiServer {
 
 
     /**
+     * 根据百度UID注册
+     */
+    @Override
+    public void registerUserId(Activity activity, String userJson, Callback callback) {
+        OkHttpClient.doPostAsync(activity, HttpInfo.Builder().addParamJson(userJson).setUrl(API + "/user/registerUserId"), callback);
+    }
+
+
+    /**
      * 更新用户信息
      */
     @Override
@@ -99,6 +108,11 @@ interface userApiServer {
 
     void registerMobile(Activity activity, String userJson, Callback callback);
 
+    /**
+     * 根据百度UID注册
+     */
+    void registerUserId(Activity activity, String userJson, Callback callback);
+
     /*
      * 更新用户信息
      * */

+ 3 - 1
app/src/main/java/com/edufound/reader/base/BaseActivity.java

@@ -378,6 +378,8 @@ public abstract class BaseActivity extends AppCompatActivity {
                                 map.put("channel", Consts.getUmengChannel());
                                 map.put("mobileNo", phone);
                                 map.put("nickName", EfunboxUtil.setPhoneMiddle(phone));
+                                Logger.e("Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId():" + Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
+                                map.put("userId", Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
                                 if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
                                     //如果没有,默认给一年级
                                     map.put("grade", "PRIMARY_FIRST_GRADE");
@@ -386,7 +388,7 @@ public abstract class BaseActivity extends AppCompatActivity {
                                 }
                                 String json = getGson().toJson(map);
                                 Logger.e("json:" + json);
-                                userApiServer.registerMobile(topActivity, json, new Callback() {
+                                userApiServer.registerUserId(topActivity, json, new Callback() {
                                     @Override
                                     public void onSuccess(HttpInfo info) throws IOException {
                                         Logger.e("手机号注册成功:" + info.getRetDetail());

+ 9 - 4
app/src/main/java/com/edufound/reader/base/BaseFragment.java

@@ -84,10 +84,11 @@ public abstract class BaseFragment extends Fragment {
 
     @Override
     public void onDestroyView() {
-        BotRegisterListener.removeListener(mBotIntentCallBack);
+
         super.onDestroyView();
     }
 
+
     /**
      * 初始化视图
      *
@@ -120,8 +121,10 @@ public abstract class BaseFragment extends Fragment {
 
     @Override
     public void onDestroy() {
-        super.onDestroy();
+        Logger.e("base fragment onDestroy");
+        BotRegisterListener.removeListener(mBotIntentCallBack);
         clearDisposable();
+        super.onDestroy();
     }
 
     @SuppressLint("AutoDispose")
@@ -226,6 +229,8 @@ public abstract class BaseFragment extends Fragment {
                                 map.put("channel", Consts.getUmengChannel());
                                 map.put("mobileNo", phone);
                                 map.put("nickName", EfunboxUtil.setPhoneMiddle(phone));
+                                Logger.e("Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId():" + Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
+                                map.put("userId", Consts.getmConstsBaiDuUserBean().getUserInfo().getUserId());
                                 if (MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE).equals("") || MMKVUtil.getInstance().decodeString(MMKVEncodeKey.USER_GRADE) == null) {
                                     //如果没有,默认给一年级
                                     map.put("grade", "PRIMARY_FIRST_GRADE");
@@ -235,7 +240,7 @@ public abstract class BaseFragment extends Fragment {
 
                                 String json = mGson.toJson(map);
                                 Logger.e("json:" + json);
-                                userApiServer.registerMobile(topActivity, json, new Callback() {
+                                userApiServer.registerUserId(topActivity, json, new Callback() {
                                     @Override
                                     public void onSuccess(HttpInfo info) throws IOException {
                                         Logger.e("手机号注册成功:" + info.getRetDetail());
@@ -314,7 +319,7 @@ public abstract class BaseFragment extends Fragment {
             Logger.e("msg:" + msg);
             Logger.e("token:" + token);
             if (purchaseResult.equals("SUCCESS")) {
-                //成功
+                //成功,但是重新获取信息没有给返回
                 BotRegisterListener.getBaiDuVipInfo();
             } else if (purchaseResult.equals("ERROR")) {
                 //支付失败

+ 15 - 0
app/src/main/java/com/edufound/reader/bean/UserBean.java

@@ -1,5 +1,7 @@
 package com.edufound.reader.bean;
 
+import com.edufound.reader.util.EfunboxUtil;
+
 public class UserBean {
 
     private String avatar;
@@ -40,6 +42,16 @@ public class UserBean {
 
     private String wechatName;
 
+    private String userId;
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
     public void setAvatar(String avatar) {
         this.avatar = avatar;
     }
@@ -117,6 +129,9 @@ public class UserBean {
     }
 
     public String getNickName() {
+        if (this.nickName == null || this.nickName.equals("") && (this.mobile != null || !this.mobile.equals(""))) {
+            this.nickName = EfunboxUtil.setPhoneMiddle(this.mobile);
+        }
         return this.nickName;
     }
 

+ 0 - 6
app/src/main/java/com/edufound/reader/botsdk/BotMessageListener.java

@@ -30,7 +30,6 @@ public class BotMessageListener implements IBotMessageListener {
      */
     public void addCallback(@NonNull final IBotIntentCallback botIntentCallback) {
         callbacks.add(botIntentCallback);
-        Logger.e("添加callbacks--callbacks:" + callbacks.size());
     }
 
     /**
@@ -39,16 +38,13 @@ public class BotMessageListener implements IBotMessageListener {
      * @param botIntentCallback 被移除的意图监听
      */
     public void removeCallback(@NonNull final IBotIntentCallback botIntentCallback) {
-        Logger.e("移除callback");
         callbacks.remove(botIntentCallback);
-        Logger.e("移除callback--callbacks:" + callbacks.size());
     }
 
     /**
      * 移除所有监听意图
      */
     public void clearCallback() {
-        Logger.e("clearCallback--clearCallback:" + callbacks.size());
         callbacks.clear();
     }
 
@@ -95,7 +91,6 @@ public class BotMessageListener implements IBotMessageListener {
 
     @Override
     public void onClickLink(String url, HashMap<String, String> paramMap) {
-        Logger.e("onClickLink:" + callbacks.size());
 //        for (IBotIntentCallback callback : callbacks) {
 //            callback.onClickLink(url, paramMap);
 //        }
@@ -111,7 +106,6 @@ public class BotMessageListener implements IBotMessageListener {
 
     @Override
     public void onHandleScreenNavigatorEvent(int event) {
-        Logger.e("onHandleScreenNavigatorEvent:" + callbacks.size());
 //        for (IBotIntentCallback callback : callbacks) {
 //            callback.onHandleScreenNavigatorEvent(event);
 //        }

+ 1 - 1
app/src/main/java/com/edufound/reader/botsdk/BotRegisterListener.java

@@ -16,6 +16,7 @@ public class BotRegisterListener {
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //如果是百度。就注册百度的接口
             BotMessageListener.getInstance().addCallback(iBotIntentCallback);
+            Logger.e("注册百度接口:"+(iAccountChargeMsgListener==null));
             BotSdk.getInstance().setAccountAndChargeListener(iAccountChargeMsgListener);
         }
     }
@@ -23,7 +24,6 @@ public class BotRegisterListener {
     public static void removeListener(IBotIntentCallback iBotIntentCallback) {
         if (Consts.getUmengChannel().equals(ChannelCodeEnum.BAIDU.getChannelCode())) {
             //如果是百度。就删除百度
-            Logger.e("移除百度监听接口");
             BotMessageListener.getInstance().removeCallback(iBotIntentCallback);
             BotSdk.getInstance().setAccountAndChargeListener(null);
         }

+ 5 - 0
app/src/main/java/com/edufound/reader/contract/MyTabFragmentContract.java

@@ -17,6 +17,9 @@ public interface MyTabFragmentContract {
 
         void getMyInfo(Activity activity, Callback callback);
 
+        void changeMyRecordStatusById(Activity activity, String json, Callback callback);
+
+
     }
 
     interface View extends BaseView {
@@ -46,6 +49,8 @@ public interface MyTabFragmentContract {
 
         void getAuth();
 
+        void changeMyRecordStatusById(String json);
+
 
     }
 }

+ 8 - 1
app/src/main/java/com/edufound/reader/cusview/RvListJzvdStd.java

@@ -29,6 +29,7 @@ import android.widget.TextView;
 import android.widget.Toast;
 
 import com.edufound.reader.R;
+import com.orhanobut.logger.Logger;
 
 import java.text.SimpleDateFormat;
 import java.util.ArrayDeque;
@@ -274,7 +275,7 @@ public class RvListJzvdStd extends Jzvd {
         super.onStateAutoComplete();
         changeUiToComplete();
         cancelDismissControlViewTimer();
-        bottomProgressBar.setProgress(100);
+//        bottomProgressBar.setProgress(100);
     }
 
     @Override
@@ -291,6 +292,11 @@ public class RvListJzvdStd extends Jzvd {
         startButton.performClick();
     }
 
+
+    public JZDataSource getjzDataSource() {
+        return jzDataSource;
+    }
+
     /**
      * 双击
      */
@@ -1075,4 +1081,5 @@ public class RvListJzvdStd extends Jzvd {
     public String getVideoTitle() {
         return jzDataSource.title;
     }
+
 }

+ 2 - 2
app/src/main/java/com/edufound/reader/fragment/MyTabFragment.java

@@ -231,9 +231,9 @@ public class MyTabFragment extends BaseMvpFragment<MyTabFragmentPresenter> imple
 
     @Override
     public void onDestroy() {
+//        isNeedLoad = true;
+//        mPresenter.onDestory(mGridLayout);
         super.onDestroy();
-        isNeedLoad = true;
-        mPresenter.onDestory(mGridLayout);
     }
 
     @Override

+ 1 - 5
app/src/main/java/com/edufound/reader/fragment/RecommendFragment.java

@@ -79,6 +79,7 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
     @Override
     protected void initView(View view) {
         mRootView = view;
+        mRootView.setVisibility(View.INVISIBLE);
         mPresenter = new RecommendFragmentPresenter(getContext());
         mPresenter.attachView(this);
         mRecyclerView = view.findViewById(R.id.fragment_recommend_recyclerview);
@@ -146,8 +147,6 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
         }
 
         addUiClickListener(mToRecordLayout, o -> {
-            Logger.e("点击我要录音了:" + mPresenter.getCurPlayVideo());
-            Logger.e("exampleId:" + mPresenter.getCurVideoExampleId());
             Bundle bundle = new Bundle();
             bundle.putString("exampleId", mPresenter.getCurVideoExampleId().toString());
             toNextActivity(RecordActivity.class, bundle);
@@ -173,15 +172,12 @@ public class RecommendFragment extends BaseMvpFragment<RecommendFragmentPresente
 
     @Override
     public void onPause() {
-        Jzvd.releaseAllVideos();
-        JzvdStd.goOnPlayOnPause();
         mPresenter.fragmentPause(mRecyclerView);
         super.onPause();
     }
 
     @Override
     public void onResume() {
-        JzvdStd.goOnPlayOnResume();
         mPresenter.fragmentResume(mRecyclerView);
         super.onResume();
     }

+ 5 - 0
app/src/main/java/com/edufound/reader/model/MyTabFragmentModel.java

@@ -22,4 +22,9 @@ public class MyTabFragmentModel implements MyTabFragmentContract.Model {
         OkHttpClient.doGetAsync(activity, new HttpInfo.Builder().setUrl(API + "/user/my"), callback);
     }
 
+    @Override
+    public void changeMyRecordStatusById(Activity activity, String json, Callback callback) {
+        OkHttpClient.doPutAsync(activity, new HttpInfo.Builder().setUrl(API + "/userRead").addParamJson(json), callback);
+    }
+
 }

+ 1 - 1
app/src/main/java/com/edufound/reader/presenter/CommentPresenter.java

@@ -146,7 +146,7 @@ public class CommentPresenter extends BasePresenter<CommentContract.View> implem
                     public void run() {
                         mCommentItemAdapter.notifyDataSetChanged();
                         mView.moveRecyclearView(0);
-                        mView.setMaxCommentCount(mDataList.size());
+                        mView.setMaxCommentCount(commentSize++);
                         mView.doPostsSuccess();
                     }
                 });

+ 35 - 6
app/src/main/java/com/edufound/reader/presenter/MyTabFragmentPresenter.java

@@ -194,6 +194,21 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         });
     }
 
+    @Override
+    public void changeMyRecordStatusById(String json) {
+        mModel.changeMyRecordStatusById(mView.getActivity(), json, new Callback() {
+            @Override
+            public void onSuccess(HttpInfo info) throws IOException {
+                Logger.e("改变状态成功:" + info.getRetDetail());
+            }
+
+            @Override
+            public void onFailure(HttpInfo info) throws IOException {
+                Logger.e("改变状态失败");
+            }
+        });
+    }
+
 
     private void setGridItemView(GridLayout gridLayout, int index) {
 
@@ -221,10 +236,8 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
         likeAmount.setText(EfunboxUtil.checkNum10000(reader.getLikeAmount()));
         commentAmount.setText(EfunboxUtil.checkNum10000(reader.getCommentAmount()));
         favoritesAmount.setText(EfunboxUtil.checkNum10000(reader.getFavoritesAmount()));
-        switch (reader.getStatus()) {
-            case "NORMAL":
-                checkLayout.setVisibility(View.GONE);
-                break;
+        if (!reader.getStatus().equals("CHECK")) {
+            checkLayout.setVisibility(View.GONE);
         }
 //        if (index < 10) {
 //            //测试用
@@ -250,6 +263,9 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
                         public void onAnimationEnd(Animator animator) {
                             gridLayout.removeView(view);
                             mView.loadMoreItem();
+                            mView.setRecordSize(mDataList.size() - 1);
+                            changeMyRecordStatusById("{\"id\": " + reader.getId() + ", \t\"status\": \"DEL\" }");
+
                         }
 
                         @Override
@@ -266,10 +282,23 @@ public class MyTabFragmentPresenter extends BasePresenter<MyTabFragmentContract.
                 }
             });
 
-
         });
-        mView.addUiClick(imgPriv, o -> {
 
+        if (reader.getStatus().equals("DISABLE")) {
+            imgPriv.setImageResource(R.drawable.adapter_item_record_pri);
+        } else if (reader.getStatus().equals("NORMAL")) {
+            imgPriv.setImageResource(R.drawable.adapter_item_record_pub);
+        }
+        mView.addUiClick(imgPriv, o -> {
+            if (reader.getStatus().equals("DISABLE")) {
+                //当前是隐藏状态,需要公开
+                changeMyRecordStatusById("{\"id\": " + reader.getId() + ", \t\"status\": \"NORMAL\" }");
+                imgPriv.setImageResource(R.drawable.adapter_item_record_pub);
+            } else if (reader.getStatus().equals("NORMAL")) {
+                //当前正常状态,需要隐藏
+                changeMyRecordStatusById("{\"id\": " + reader.getId() + ", \t\"status\": \"DISABLE\" }");
+                imgPriv.setImageResource(R.drawable.adapter_item_record_pri);
+            }
         });
         mView.addUiClick(view, o -> {
             Bundle bundle = new Bundle();

+ 23 - 7
app/src/main/java/com/edufound/reader/presenter/RecommendFragmentPresenter.java

@@ -42,6 +42,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
 import androidx.recyclerview.widget.OrientationHelper;
 import androidx.recyclerview.widget.RecyclerView;
 import cn.jzvd.Jzvd;
+import cn.jzvd.JzvdStd;
 
 public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentContract.View> implements RecommendFragmentContract.Presenter {
 
@@ -75,22 +76,22 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
             }
         });
         rv.setClipToOutline(true);
+        initBroadcastReceiver();
         loadType = type;
         if (type == 0) {
             //推荐的接口
             initVideoDate(rv, startPosition);
             getRecommendDataList();
-            initBroadcastReceiver();
         } else if (type == 1) {
             //关注的所有人的所有视频
             initVideoDate(rv, startPosition);
             getMyFollowAllVideo();
-            initBroadcastReceiver();
         } else if (type == 2) {
             //上级页面传的json
             mDataList = ((BaseActivity) mView.getActivity()).getGson().fromJson(mView.getDataJson(), new TypeToken<List<UserRecordBean>>() {
             }.getType());
             initVideoDate(rv, startPosition);
+            mView.getRootView().setVisibility(View.VISIBLE);
             mView.getRootView().post(new Runnable() {
                 @Override
                 public void run() {
@@ -185,18 +186,31 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
 
     @Override
     public void fragmentPause(RecyclerView rv) {
+        Logger.e("fragmentPause");
+        Jzvd.releaseAllVideos();
+        JzvdStd.goOnPlayOnPause();
         if (rv.getChildCount() > 0) {
             RvListJzvdStd player = rv.getChildAt(0).findViewById(R.id.slidevideo_video);
-            player.pauseVideo();
+//            player.pauseVideo();
         }
     }
 
     @Override
     public void fragmentResume(RecyclerView rv) {
-        if (rv.getChildCount() > 0) {
-            RvListJzvdStd player = rv.getChildAt(0).findViewById(R.id.slidevideo_video);
-            player.startVideoAfterPreloading();
-        }
+        Logger.e("fragmentResume---loadType:" + loadType);
+        mView.getRootView().postDelayed(new Runnable() {
+            @Override
+            public void run() {
+                if (rv.getChildCount() > 0) {
+                    Logger.e("rv.getChildCount() > 0");
+                    RvListJzvdStd player = rv.getChildAt(0).findViewById(R.id.slidevideo_video);
+                    if (player == null) {
+                        Logger.e("竟然是空的");
+                    }
+                    player.startVideoAfterPreloading();
+                }
+            }
+        }, 800);
     }
 
     @Override
@@ -236,6 +250,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                     public void run() {
                         mAdapter.notifyDataSetChanged();
                         mPageIndex++;
+                        mView.getRootView().setVisibility(View.VISIBLE);
                     }
 
 
@@ -361,6 +376,7 @@ public class RecommendFragmentPresenter extends BasePresenter<RecommendFragmentC
                     public void run() {
                         mAdapter.notifyDataSetChanged();
                         mPageIndex++;
+                        mView.getRootView().setVisibility(View.VISIBLE);
                     }
                 });
             }

+ 11 - 4
app/src/main/java/com/edufound/reader/presenter/RecordPresenter.java

@@ -136,7 +136,8 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
     @Override
     public void onVideoCompletion() {
         if (playType.equals("READ")) {
-            stopRecord();
+            Logger.e("onVideoCompletion里面的停止");
+            mView.refRecordStatus();
         }
     }
 
@@ -161,7 +162,9 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
 
     @Override
     public void onVideoInfoListener(int what, int extra) {
-
+        if (mView == null || mView.getJZVideoView() == null) {
+            return;
+        }
         switch (mView.getJZVideoView().state) {
             case Jzvd.STATE_PLAYING:
                 //已经开始播放了
@@ -170,6 +173,7 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
                     mRecordServices.startRecord(mView.getActivity(), mRecordUserRead.getId(), mRecordUserRead.getLessonText());
                     mView.getJZVideoView().setCanPause(false);
                 }
+
                 break;
         }
     }
@@ -183,6 +187,7 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
 
     @Override
     public void startRecord() {
+        Logger.e("startRecord--startRecord--startRecord");
         mView.hasShowOtherUI(View.INVISIBLE);
         playType = "READ";
         initVideoPlayer(recordUrl);
@@ -192,7 +197,7 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
     @Override
     public void stopRecord() {
         mView.hasShowOtherUI(View.VISIBLE);
-        mView.getJZVideoView().pauseVideo();
+        mView.getJZVideoView().reset();
         mRecordServices.stopRecord();
 //        mView.getJZVideoView().setCanPause(true);
 //        initVideoPlayer(recordUrl);
@@ -208,6 +213,7 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
 
     @Override
     public void activityDestroy() {
+
         mView.getJZVideoView().pauseVideo();
         mRecordServices.stopRecord();
         mRecordServices.desrotyRecord();
@@ -215,7 +221,7 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
         if (Consts.getmRecordSaveFile() != null && (!Consts.getmRecordSaveFile().equals(""))) {
             DataCleanManager.delFileBeforeTime(Consts.getmRecordSaveFile().getAbsolutePath().substring(0, Consts.getmRecordSaveFile().getAbsolutePath().lastIndexOf("/")), 0);
         }
-        Jzvd.releaseAllVideos();
+//        Jzvd.releaseAllVideos();
 //        Intent intent = new Intent(BackPageReceiver.BACK_HOME_REF_VIDEO_ITEM);
 ////        intent.putExtra("recordId", );
 //        mView.getActivity().sendBroadcast(intent);
@@ -264,6 +270,7 @@ public class RecordPresenter extends BasePresenter<RecordContract.View> implemen
         @Override
         public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
             mRecordServices = ((RecordServices.RecordServicesBind) iBinder).getService();
+            mRecordServices.initChiVox();
             mRecordServices.setRecordCallBack(new RecordServices.RecordCallBack() {
                 @Override
                 public void onRecordStart() {

+ 41 - 46
app/src/main/java/com/edufound/reader/services/RecordServices.java

@@ -39,7 +39,7 @@ public class RecordServices extends Service {
     private String mUploadBody;
     private RecordCallBack mRecordCallBack;
     boolean isRecording = false;
-
+    boolean mRecordCreate = false;
 
     @Nullable
     @Override
@@ -66,48 +66,43 @@ public class RecordServices extends Service {
     }
 
 
-    void initChiVox(Context context, String name, String refText) {
-        runOnWorkerThread(new Runnable() {
-            @Override
-            public void run() {
-                JSONObject cfg = new JSONObject();
-                try {
-                    String provisionPath = AIEngineHelper.extractResourceOnce(Consts.getmApplicAtion(), "aiengine.provision", false);
-                    cfg.put("appKey", ChivoxBean.appKey); // 设置AppKey
-                    cfg.put("secretKey", ChivoxBean.secretKey); // 设置SecretKey
-                    cfg.put("provision", provisionPath);
-
-                    //获取sdk版本
-                    String version = SdkInfo.singleton().version;//获取二次封装SDK版本
-                    String commonversion = SdkInfo.singleton().commonSdkVersion;//获取通用SDK版本
-                    { // cloud
-                        JSONObject cloud = new JSONObject();
-                        cloud.put("enable", 1);
-                        cfg.put("cloud", cloud);
-                    }
-
-                    // 创建引擎,本调用不会阻塞UI线程,待创建成功后,会通过Engine.CreateCallback回调
-                    Engine.create(Consts.getmApplicAtion(), cfg, new Engine.CreateCallback() {
-                        @Override
-                        public void onSuccess(Engine engine) {
-                            // 创建成功, 请保存engine对象用于后续评测
-                            mAiengine = engine;
-                            Logger.e("初始化录音成功");
-                            startRecord(context, name, refText);
-                        }
-
-                        @Override
-                        public void onFail(RetValue err) {
-                            // 创建失败, 请查看e.errId和e.error分析原因。
-                            Logger.e(err.errId + ", " + err.error);
-                        }
-                    });
-
-                } catch (Exception ex) {
-                    ex.printStackTrace();
+    public void initChiVox() {
+        JSONObject cfg = new JSONObject();
+        try {
+            String provisionPath = AIEngineHelper.extractResourceOnce(Consts.getmApplicAtion(), "aiengine.provision", false);
+            cfg.put("appKey", ChivoxBean.appKey); // 设置AppKey
+            cfg.put("secretKey", ChivoxBean.secretKey); // 设置SecretKey
+            cfg.put("provision", provisionPath);
+
+            //获取sdk版本
+            String version = SdkInfo.singleton().version;//获取二次封装SDK版本
+            String commonversion = SdkInfo.singleton().commonSdkVersion;//获取通用SDK版本
+            JSONObject cloud = new JSONObject();
+            cloud.put("enable", 1);
+            cfg.put("cloud", cloud);
+
+            // 创建引擎,本调用不会阻塞UI线程,待创建成功后,会通过Engine.CreateCallback回调
+            Engine.create(Consts.getmApplicAtion(), cfg, new Engine.CreateCallback() {
+                @Override
+                public void onSuccess(Engine engine) {
+                    // 创建成功, 请保存engine对象用于后续评测
+                    mAiengine = engine;
+                    Logger.e("mAiengine is null:" + (mAiengine == null));
+                    Logger.e("初始化录音成功");
+                    mRecordCreate = true;
                 }
-            }
-        });
+
+                @Override
+                public void onFail(RetValue err) {
+                    // 创建失败, 请查看e.errId和e.error分析原因。
+                    Logger.e(err.errId + ", " + err.error);
+                    mRecordCreate = false;
+                }
+            });
+
+        } catch (Exception ex) {
+            ex.printStackTrace();
+        }
     }
 
 
@@ -115,10 +110,7 @@ public class RecordServices extends Service {
      * 开始录音(如果没有初始化,就初始化,初始化了直接往下走)
      * */
     public void startRecord(Context context, String name, String refText) {
-        if (mAiengine == null) {
-            initChiVox(context, name, refText);
-            return;
-        }
+        Logger.e("mAiengine:" + (mAiengine == null));
         JSONObject param = new JSONObject();
         try {
             param.put("coreProvideType", "cloud");
@@ -211,6 +203,7 @@ public class RecordServices extends Service {
             isRecording = false;
             mRecordCallBack.onRecordStop();
         }
+        Logger.e("stopRecord==ret.errId:" + ret.errId);
     }
 
 
@@ -272,8 +265,10 @@ public class RecordServices extends Service {
 
 
     public void desrotyRecord() {
+        Logger.e("desrotyRecord");
         if (mAiengine != null) {
             mAiengine.destroy();
+            mAiengine = null;
         }
     }
 

+ 1 - 0
app/src/main/java/com/edufound/reader/util/OkHttpClient.java

@@ -76,6 +76,7 @@ public class OkHttpClient {
         Logger.e("postUid:" + Consts.getUID());
         OkHttpUtil.getDefault(activity).doUploadFileAsync(info.addHead("uid", Consts.getUID()).build());
     }
+
 }
 
 

+ 0 - 1
app/src/main/java/com/edufound/reader/util/PermissionsUtil.java

@@ -13,7 +13,6 @@ public class PermissionsUtil {
     private static String[] PERMISSION_AUDIO = new String[]{Manifest.permission.RECORD_AUDIO};
 
     public static void verifyAudioPermissions(Activity activity) {
-        Logger.e("获取录音权限");
         int permission = ActivityCompat.checkSelfPermission(activity, Manifest.permission.RECORD_AUDIO);
         if (permission != PackageManager.PERMISSION_GRANTED) {
             Logger.e("获取录音权限:permission != PackageManager.PERMISSION_GRANTED");

+ 1 - 1
app/src/main/java/com/edufound/reader/videoutil/JZMediaIjk.java

@@ -96,7 +96,7 @@ public class JZMediaIjk extends JZMediaInterface implements IMediaPlayer.OnPrepa
                 ijkMediaPlayer.setScreenOnWhilePlaying(true);
                 ijkMediaPlayer.prepareAsync();
 
-                if (jzvd.textureView.getSurfaceTexture() != null) {
+                if (jzvd.textureView.getSurfaceTexture() != null && ijkMediaPlayer != null) {
                     ijkMediaPlayer.setSurface(new Surface(jzvd.textureView.getSurfaceTexture()));
                 }
             } catch (IOException e) {

+ 0 - 1
app/src/main/res/layout/activity_userinfo_setting.xml

@@ -143,7 +143,6 @@
                                                 android:hint="请输入昵称"
                                                 android:imeOptions="actionDone"
                                                 android:lines="1"
-                                                android:maxLength="6"
                                                 android:paddingLeft="35dp"
                                                 android:singleLine="true"
                                                 android:text=""