package com.xscm.moduleutil.activity; import android.webkit.JavascriptInterface; import com.blankj.utilcode.util.ActivityUtils; import com.xscm.moduleutil.utils.logger.Logger; import org.json.JSONObject; /** * 项目名称 qipao-android * 包名:com.yutang.xqipao.ui.h5 * 创建人 王欧 * 创建时间 2020/6/16 1:26 PM * 描述 describe */ public class WebViewBridgeConfig { public static final String NAME = "bridge"; public static final String TYPE_QQ_SERVICE = "qqService"; public static final String TYPE_FEEDBACK = "feedback"; public static final String TYPE_USER_ZONE = "userZone"; public static final String TYPE_RECHARGE = "recharge"; public static final String TYPE_BACK = "onBackPressed"; public static final String TYPE_GAME_RANK = "gameRank";//游戏排行榜 public static final String TYPE_GAME_SOUND = "gameSound";//游戏声音 public static final String TYPE_GAME_END = "gameEnd";//游戏结束 public static final String TYPE_GAME_PAUSE = "gamePause";//游戏暂停 public static final String TYPE_GAME_BEGIN = "gameBegin";//游戏开始 public static final String TYPE_GAME_NEXT = "gameNext";//游戏下一关 private static int gameCount = 0;//游戏次数 private String NextGame = "";//上次游戏名称 private String title = "";//标题 public static final String GAME_EL = "俄罗斯方块";//俄罗斯方块 public static final String GAME_XM = "消灭星星";//消灭星星 public static final String GAME_SB = "神步伐";//神步伐 public static final String GAME_XT = "线条冲刺";//线条冲刺 public static final String GAME_FK = "疯狂赛车";//疯狂赛车 public WebViewBridgeConfig(String title) { this.title = title; } @JavascriptInterface public void postMessage(String json) { Logger.e(json); try { JSONObject jsonObject = new JSONObject(json); String type = jsonObject.getString("type"); JSONObject object = jsonObject.getJSONObject("data"); switch (type) { case TYPE_QQ_SERVICE: serviceUser(); break; case TYPE_FEEDBACK: // ActivityUtils.startActivity(FeedBackActivity.class); break; case TYPE_USER_ZONE: // ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", object.getString("userId")).navigation(); break; case TYPE_RECHARGE: // ARouter.getInstance().build(ARouters.ME_BALANCE).navigation(); break; case TYPE_BACK: try { ActivityUtils.getTopActivity().onBackPressed(); } catch (Exception e) { e.printStackTrace(); } break; } } catch (Exception e) { e.printStackTrace(); } } //跳转QQ客服 private void serviceUser() { // RemoteDataSource.getInstance().serviceUser(new BaseObserver() { // @Override // public void onSubscribe(Disposable d) { // // } // // @Override // public void onNext(String uin) { // try { // String qqUrl = "mqqwpa://im/chat?chat_type=wpa&uin=" + uin + "&version=1"; // ActivityUtils.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(qqUrl))); // } catch (Exception e) { // ToastUtils.showShort("请先安装QQ"); // } // } // // @Override // public void onComplete() { // // } // }); } /** * H5小游戏语音互动调用 * * @param json */ @JavascriptInterface public void common(String json) { // ThreadUtils.runOnUiThread(new Runnable() { // @Override // public void run() { // Logger.e(json); // try { // JSONObject jsonObject = new JSONObject(json); // String type = jsonObject.getString("type"); // JSONObject object = jsonObject.getJSONObject("params"); // switch (type) { // case JOIN_LIVE_ROOM: // quitLiveRoom(); // RtcManager.getInstance().setGame(true); // RtcManager.getInstance().leaveChannel(); // //游戏时关闭房间 // ActivityUtils.finishActivity(RoomActivity.class); // BaseApplication.getInstance().isPlaying = false; // BaseApplication.getInstance().isShow = false; // UserBean userBean = BaseApplication.getInstance().getUser(); // RtcManager.getInstance().loginRoomGame(object.getString("roomId"), userBean.getUser_id(), userBean.getNickname(), ""); // break; // case LEAVE_LIVE_ROOM: // RtcManager.getInstance().leaveChannel(object.getString("roomId")); // RtcManager.getInstance().setAudioUrl(null); // break; // case ROOM_START_PUBLISH_STREAM: // RtcManager.getInstance().applyWheat(String.format("%s_%s", object.getString("roomId"), object.getString("userId"))); // break; // case ROOM_STOP_PUBLISH_STREAM: // RtcManager.getInstance().downWheat(); // break; // case ROOM_MUTE_LOCAL: // RtcManager.getInstance().muteLocalAudioStream(object.getBoolean("mute")); // break; // case ROOM_MUTE_MICROPHONE: // RtcManager.getInstance().muteSpeaker(object.getBoolean("mute")); // break; // case ROOM_SHOW_MESSAGE_DIALOG: // DialogUtils.showDialogFragment(ARouter.getInstance().build(ARouteConstants.ROOM_MSG_DIALOG).navigation()); // break; // case ON_CLOSE_BTN_CLICK: // RtcManager.getInstance().leaveChannel(); // ActivityUtils.finishActivity(H5Activity.class); // break; // case TYPE_QQ_SERVICE: // serviceUser(); // break; // case TYPE_FEEDBACK: // ActivityUtils.startActivity(FeedBackActivity.class); // break; // case TYPE_USER_ZONE: // ARouter.getInstance().build(ARouteConstants.NEW_HOME_PAGE).withString("userId", object.getString("userId")).navigation(); // break; // case TYPE_RECHARGE: // ARouter.getInstance().build(ARouters.ME_BALANCE).navigation(); // break; // case TYPE_BACK: // try { // ActivityUtils.getTopActivity().onBackPressed(); // } catch (Exception e) { // e.printStackTrace(); // } // break; // //游戏排行榜 // case TYPE_GAME_RANK: // switch (title) { // case GAME_EL: // AppLogUtil.reportAppLog(AppLogEvent.A050303); // break; // case GAME_SB: // AppLogUtil.reportAppLog(AppLogEvent.A050403); // break; // case GAME_XM: // AppLogUtil.reportAppLog(AppLogEvent.A050503); // break; // case GAME_XT: // AppLogUtil.reportAppLog(AppLogEvent.A050603); // break; // case GAME_FK: // AppLogUtil.reportAppLog(AppLogEvent.A050703); // break; // } // break; // //游戏开始 // case TYPE_GAME_BEGIN: // switch (title) { // case GAME_EL: // if (!TextUtils.isEmpty(NextGame) && GAME_EL.equals(NextGame)) { // gameCount++; // } // break; // case GAME_SB: // if (!TextUtils.isEmpty(NextGame) && GAME_SB.equals(NextGame)) { // gameCount++; // } // break; // case GAME_XM: // if (!TextUtils.isEmpty(NextGame) && GAME_XM.equals(NextGame)) { // gameCount++; // } // break; // case GAME_XT: // if (!TextUtils.isEmpty(NextGame) && GAME_XT.equals(NextGame)) { // gameCount++; // } // break; // case GAME_FK: // if (!TextUtils.isEmpty(NextGame) && GAME_FK.equals(NextGame)) { // gameCount++; // } // break; // } // if (gameCount == 0) { // gameCount = 1; // } // break; // //游戏结束 // case TYPE_GAME_END: // switch (title) { // case GAME_EL: // AppLogUtil.reportAppLog(AppLogEvent.A050301, "game_count", String.valueOf(gameCount)); // break; // case GAME_SB: // AppLogUtil.reportAppLog(AppLogEvent.A050401, "game_count", String.valueOf(gameCount)); // break; // case GAME_XM: // AppLogUtil.reportAppLog(AppLogEvent.A050501, "game_count", String.valueOf(gameCount)); // break; // case GAME_XT: // AppLogUtil.reportAppLog(AppLogEvent.A050601, "game_count", String.valueOf(gameCount)); // break; // case GAME_FK: // AppLogUtil.reportAppLog(AppLogEvent.A050701, "game_count", String.valueOf(gameCount)); // break; // } // break; // //游戏下一关 // case TYPE_GAME_NEXT: // switch (title) { // case GAME_XM: // AppLogUtil.reportAppLog(AppLogEvent.A050504); // break; // case GAME_XT: // AppLogUtil.reportAppLog(AppLogEvent.A050604); // break; // } // break; // //游戏暂停 // case TYPE_GAME_PAUSE: // break; // //游戏声音 // case TYPE_GAME_SOUND: // switch (title) { // case GAME_EL: // if (!object.getBoolean("sound")) { // AppLogUtil.reportAppLog(AppLogEvent.A050302); // } // break; // case GAME_SB: // if (!object.getBoolean("sound")) { // AppLogUtil.reportAppLog(AppLogEvent.A050402); // } // break; // case GAME_XM: // if (!object.getBoolean("sound")) { // AppLogUtil.reportAppLog(AppLogEvent.A050502); // } // break; // case GAME_XT: // if (!object.getBoolean("sound")) { // AppLogUtil.reportAppLog(AppLogEvent.A050602); // } // break; // case GAME_FK: // if (!object.getBoolean("sound")) { // AppLogUtil.reportAppLog(AppLogEvent.A050702); // } // break; // } // break; // } // } catch (Exception e) { // e.printStackTrace(); // } // } // }); } private void quitLiveRoom() { // if (!TextUtils.isEmpty(BaseApplication.getInstance().playId)) { // NewApi.getInstance().quit(BaseApplication.getInstance().playId, new com.qpyy.libcommon.api.BaseObserver(false, false) { // @Override // public void onSubscribe(Disposable d) { // // } // // @Override // public void onNext(String s) { // // } // // @Override // public void onComplete() { // // } // }); // } } // 调用示例: // window.bridge.common('{"type":"joinStreamLiveRoom","params":{"roomId":"12445435","userId":"12323 ","mute":false}}'); // 调用顺序: // 1、加入直播间 joinStreamLiveRoom // 2、开始推流 startPublishingStreamLiveRoom // 3、打开麦克风 muteMicrophoneLiveRoom /* 加入直播间 joinStreamLiveRoom params : { "roomId":"房间id", } */ public static final String JOIN_LIVE_ROOM = "joinStreamLiveRoom"; /* 离开流房间 推拉流 leaveStreamLiveRoom params : { "roomId":"房间id", } */ public static final String LEAVE_LIVE_ROOM = "leaveStreamLiveRoom"; /* 开始推流 startPublishingStreamLiveRoom params : { "roomId":"房间id", "userId":"用户ID" } */ public static final String ROOM_START_PUBLISH_STREAM = "startPublishingStreamLiveRoom"; /* 停止推流 stopPublishingStreamLiveRoom params : { "roomId":"房间id", "userId":"用户ID" } */ public static final String ROOM_STOP_PUBLISH_STREAM = "stopPublishingStreamLiveRoom"; /* 是否屏蔽远端所有声音 muteSpeakerLiveRoom params : { mute:true // true为关闭,false为打开 } */ public static final String ROOM_MUTE_LOCAL = "muteSpeakerLiveRoom"; /* 是否静音(关闭)麦克风 muteMicrophoneLiveRoom params : { mute:true // true为关闭,false为打开 } */ public static final String ROOM_MUTE_MICROPHONE = "muteMicrophoneLiveRoom"; /* 点击消息按钮 onMessageBtnClick params : { } */ public static final String ROOM_SHOW_MESSAGE_DIALOG = "onMessageBtnClick"; //关闭按钮 public static final String ON_CLOSE_BTN_CLICK = "onCloseBtnClick"; }