|  | @@ -62,6 +62,7 @@ import com.cooleshow.base.widgets.CommonDialog;
 | 
	
		
			
				|  |  |  import com.cooleshow.base.widgets.DialogUtil;
 | 
	
		
			
				|  |  |  import com.cooleshow.base.widgets.ViewConvertListener;
 | 
	
		
			
				|  |  |  import com.cooleshow.base.widgets.ViewHolder;
 | 
	
		
			
				|  |  | +import com.cooleshow.musictuner.utils.MusicTunerHelper;
 | 
	
		
			
				|  |  |  import com.cooleshow.student.BuildConfig;
 | 
	
		
			
				|  |  |  import com.cooleshow.student.api.APIService;
 | 
	
		
			
				|  |  |  import com.cooleshow.student.bean.alipay.AuthResult;
 | 
	
	
		
			
				|  | @@ -137,6 +138,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
 | 
	
		
			
				|  |  |      private ShareAction mShareAction;
 | 
	
		
			
				|  |  |      private URI webSocketUri = URI.create("BuildConfig.BASE_STU_SOCKET_URL");
 | 
	
		
			
				|  |  |      private String mImageBase64;
 | 
	
		
			
				|  |  | +    private MusicTunerHelper mMusicTunerHelper;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      public static AccompanyFragment newInstance(String url) {
 | 
	
		
			
				|  |  |          AccompanyFragment fragment = new AccompanyFragment();
 | 
	
	
		
			
				|  | @@ -263,6 +265,7 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public void onSendMessage(String message) {
 | 
	
		
			
				|  |  | +        Log.i("accom", "message:" + message);
 | 
	
		
			
				|  |  |          if (webView != null) {
 | 
	
		
			
				|  |  |              webView.evaluateJavascript("postMessage('" + message + "')", new ValueCallback<String>() {
 | 
	
		
			
				|  |  |                  @Override
 | 
	
	
		
			
				|  | @@ -1320,7 +1323,9 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
 | 
	
		
			
				|  |  |          EventBus.getDefault().unregister(this);
 | 
	
		
			
				|  |  |          MidiPlayerUtils.getInstance().stopPlay();
 | 
	
		
			
				|  |  |          UMShareAPI.get(mContext).release();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +        if (mMusicTunerHelper != null) {
 | 
	
		
			
				|  |  | +            mMusicTunerHelper.release();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
	
		
			
				|  | @@ -1945,6 +1950,38 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    @Override
 | 
	
		
			
				|  |  | +    public void cloudToggleFollow(String mode) {
 | 
	
		
			
				|  |  | +        new RxPermissions(this)
 | 
	
		
			
				|  |  | +                .request(Manifest.permission.RECORD_AUDIO)
 | 
	
		
			
				|  |  | +                .subscribe(permission -> {
 | 
	
		
			
				|  |  | +                    if (permission) {
 | 
	
		
			
				|  |  | +                        handleCloudFollow(mode);
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                });
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void handleCloudFollow(String mode) {
 | 
	
		
			
				|  |  | +        if (mMusicTunerHelper == null) {
 | 
	
		
			
				|  |  | +            mMusicTunerHelper = new MusicTunerHelper(new MusicTunerHelper.OnEventListener() {
 | 
	
		
			
				|  |  | +                @Override
 | 
	
		
			
				|  |  | +                public void onResult(float pitchInHz) {
 | 
	
		
			
				|  |  | +                    runOnUiThread(new Runnable() {
 | 
	
		
			
				|  |  | +                        @Override
 | 
	
		
			
				|  |  | +                        public void run() {
 | 
	
		
			
				|  |  | +                            sendCloudToggleFollowResult(pitchInHz);
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    });
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            });
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +        if (TextUtils.equals(mode, "start")) {
 | 
	
		
			
				|  |  | +            mMusicTunerHelper.start();
 | 
	
		
			
				|  |  | +        } else {
 | 
	
		
			
				|  |  | +            mMusicTunerHelper.stop();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |      private void sendSavePicCallBack(String api, String result, String uuid) {
 | 
	
		
			
				|  |  |          JSONObject jsonObject = new JSONObject();
 | 
	
		
			
				|  |  |          JSONObject contentJson = new JSONObject();
 | 
	
	
		
			
				|  | @@ -2265,6 +2302,18 @@ public class AccompanyFragment extends BaseMVPFragment<FragmentAccompanyBinding,
 | 
	
		
			
				|  |  |          ShareHelper.parseShareContactData(mImageBase64, data);
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +    private void sendCloudToggleFollowResult(float result) {
 | 
	
		
			
				|  |  | +        try {
 | 
	
		
			
				|  |  | +            JSONObject jsonObject = new JSONObject();
 | 
	
		
			
				|  |  | +            JSONObject contentJson = new JSONObject();
 | 
	
		
			
				|  |  | +            jsonObject.put("api", "cloudFollowTime");
 | 
	
		
			
				|  |  | +            contentJson.put("frequency", result);
 | 
	
		
			
				|  |  | +            jsonObject.put("content", contentJson);
 | 
	
		
			
				|  |  | +            onSendMessage(jsonObject.toString());
 | 
	
		
			
				|  |  | +        } catch (JSONException e) {
 | 
	
		
			
				|  |  | +            e.printStackTrace();
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * 发送支付结果
 |