diff --git a/FaceUnity/src/main/res/values/strings.xml b/FaceUnity/src/main/res/values/strings.xml
index 799a50e10..e0f66a9b3 100644
--- a/FaceUnity/src/main/res/values/strings.xml
+++ b/FaceUnity/src/main/res/values/strings.xml
@@ -299,7 +299,7 @@
Hip
Head shrink
Thin leg
- No body tracking
+ No message tracking
Body driver
Bust driver
diff --git a/common/src/main/java/com/yunbao/common/bean/HttpCallbackModel.java b/common/src/main/java/com/yunbao/common/bean/HttpCallbackModel.java
index c2369455f..da77d56e5 100644
--- a/common/src/main/java/com/yunbao/common/bean/HttpCallbackModel.java
+++ b/common/src/main/java/com/yunbao/common/bean/HttpCallbackModel.java
@@ -1,10 +1,18 @@
package com.yunbao.common.bean;
-public class HttpCallbackModel extends BaseModel{
+public class HttpCallbackModel extends BaseModel {
private int code;
private String msg;
+ public HttpCallbackModel() {
+ }
+
+ public HttpCallbackModel(int code, String msg) {
+ this.code = code;
+ this.msg = msg;
+ }
+
public int getCode() {
return code;
}
diff --git a/common/src/main/java/com/yunbao/common/bean/LiveAiRobotBean.java b/common/src/main/java/com/yunbao/common/bean/LiveAiRobotBean.java
new file mode 100644
index 000000000..44e8b9f95
--- /dev/null
+++ b/common/src/main/java/com/yunbao/common/bean/LiveAiRobotBean.java
@@ -0,0 +1,138 @@
+package com.yunbao.common.bean;
+
+import androidx.annotation.NonNull;
+
+import com.google.gson.annotations.SerializedName;
+
+/**
+ * 机器人bean
+ */
+public class LiveAiRobotBean extends BaseModel {
+ @SerializedName("ai_name")
+ private String name;
+ @SerializedName("ai_state")
+ private int status;//1=开 0=关
+ @SerializedName("ai_time")
+ private int time;
+ @SerializedName("ai_sayhi")
+ private int autoSeyHiNumber;// 自动打招呼已配置数量
+ @SerializedName("ai_gz")
+ private int autoRequestFollowNumber;//自动求关注已配置数量
+
+ public LiveAiRobotBean() {
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getStatus() {
+ return status;
+ }
+
+ public void setStatus(int status) {
+ this.status = status;
+ }
+
+ public int getTime() {
+ return time;
+ }
+
+ public void setTime(int time) {
+ this.time = time;
+ }
+
+ public int getAutoSeyHiNumber() {
+ return autoSeyHiNumber;
+ }
+
+ public void setAutoSeyHiNumber(int autoSeyHiNumber) {
+ this.autoSeyHiNumber = autoSeyHiNumber;
+ }
+
+ public int getAutoRequestFollowNumber() {
+ return autoRequestFollowNumber;
+ }
+
+ public void setAutoRequestFollowNumber(int autoRequestFollowNumber) {
+ this.autoRequestFollowNumber = autoRequestFollowNumber;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "LiveAiRobotBean{" +
+ "name='" + name + '\'' +
+ ", status=" + status +
+ ", time=" + time +
+ ", autoSeyHiNumber=" + autoSeyHiNumber +
+ ", autoRequestFollowNumber=" + autoRequestFollowNumber +
+ '}';
+ }
+
+ /**
+ * 机器人消息
+ */
+ public static class Message {
+ public static final int TYPE_SAY_HI=1;//自动打招呼
+ public static final int TYPE_FOLLOW=3;//自动求关注
+ @SerializedName("id")
+ private int id;
+ @SerializedName("uid")
+ private int uid;
+ @SerializedName("type")
+ private int type;
+ @SerializedName("content")
+ private String content;
+
+ public Message() {
+ }
+
+ public int getId() {
+ return id;
+ }
+
+ public void setId(int id) {
+ this.id = id;
+ }
+
+ public int getUid() {
+ return uid;
+ }
+
+ public void setUid(int uid) {
+ this.uid = uid;
+ }
+
+ public int getType() {
+ return type;
+ }
+
+ public void setType(int type) {
+ this.type = type;
+ }
+
+ public String getContent() {
+ return content;
+ }
+
+ public void setContent(String content) {
+ this.content = content;
+ }
+
+ @NonNull
+ @Override
+ public String toString() {
+ return "Message{" +
+ "id=" + id +
+ ", uid=" + uid +
+ ", type=" + type +
+ ", content='" + content + '\'' +
+ '}';
+ }
+ }
+}
diff --git a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java
index ba403f483..576df8487 100644
--- a/common/src/main/java/com/yunbao/common/http/PDLiveApi.java
+++ b/common/src/main/java/com/yunbao/common/http/PDLiveApi.java
@@ -9,8 +9,10 @@ import com.yunbao.common.bean.CustomSidebarInfoModel;
import com.yunbao.common.bean.EnterRoomNewModel;
import com.yunbao.common.bean.FaceBookUpModel;
import com.yunbao.common.bean.HourRank;
+import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.bean.IMLoginModel;
import com.yunbao.common.bean.LinkMicUserBeanV2;
+import com.yunbao.common.bean.LiveAiRobotBean;
import com.yunbao.common.bean.LiveInfoModel;
import com.yunbao.common.bean.LiveRoomActivityBanner;
import com.yunbao.common.bean.MsgSwitchDetailModel;
@@ -354,42 +356,51 @@ public interface PDLiveApi {
/**
* 设置随机PK开关
+ *
* @param pk 1=开,0=关
*/
@GET("/api/public/?service=Livepk.setRandomPKType")
Observable>> changeRandomPkSwitch(@Query("random_pk") int pk);
+
/**
* 获取自由PK次数
*/
@GET("/api/public/?service=Livepk.getActivePkNum")
Observable> getFreePkNumber();
+
/**
* 发起随机PK
*/
@GET("/api/public/?service=Livepk.setRandomPK")
Observable> randomPK();
+
/**
* 随机PK后调用接口给后台记录
*/
@GET("/api/public/?service=Livepk.startRandomPK")
- Observable> startRandomPK(@Query("pkuid")String pkuid);
+ Observable> startRandomPK(@Query("pkuid") String pkuid);
+
/**
* 自由PK开始后调用接口扣掉次数
*/
@GET("/api/public/?service=Livepk.setActivePkNum")
Observable> setFreePkNum();
+
/**
* 随机PK搜索用户
+ *
* @param cs 简体关键字/uid
* @param ct 繁体关键字/uid
*/
@GET("/api/public/?service=Livepk.searchUser")
- Observable>> randomPkSearchUser(@Query("jian_key")String cs,@Query("fan_key")String ct);
+ Observable>> randomPkSearchUser(@Query("jian_key") String cs, @Query("fan_key") String ct);
+
/**
* 拒绝随机PK
*/
@GET("/api/public/?service=Livepk.setBanRandomPK")
Observable> setBanRandomPK();
+
/**
* 拒绝随机PK
*/
@@ -403,6 +414,7 @@ public interface PDLiveApi {
Observable> getAnchorPrankTurntable(
@Query("anchor_id") String anchor_id
);
+
/**
* 提交整蛊
*/
@@ -418,6 +430,7 @@ public interface PDLiveApi {
@Query("turntable_six") String turntable_six,
@Query("status") String status
);
+
/**
* 转盘整蛊结束后调用的接口
*/
@@ -431,7 +444,7 @@ public interface PDLiveApi {
* 获取整蛊列表
*/
@GET("/api/public/?service=Prank.prankList")
- Observable>> prankList( @Query("anchor_id") String anchor_id);
+ Observable>> prankList(@Query("anchor_id") String anchor_id);
/**
* 设置礼物整蛊
@@ -443,6 +456,7 @@ public interface PDLiveApi {
@Query("gift_num") String gift_num,
@Query("prank_content") String prank_content
);
+
/**
* 删除礼物整蛊
*/
@@ -451,58 +465,67 @@ public interface PDLiveApi {
@Query("anchor_id") String anchor_id,
@Query("prank_index") String prank_index
);
+
/**
* 设置机器人开关
*/
@GET("/api/public/?service=Live.setAnchorAiState")
- Observable>> setAnchorAiState(
+ Observable> setAnchorAiState(
@Query("ai_state") String ai_state
);
+
/**
* 获取机器人信息
*/
@GET("/api/public/?service=Live.getAnchorAiState")
- Observable>> getAnchorAiState(
+ Observable> getAnchorAiState(
);
+
/**
* 修改机器人信息
*/
@GET("/api/public/?service=Live.setAnchorAiState")
- Observable>> getAnchorAiState(
+ Observable> setAnchorAiState(
@Query("name") String name,
@Query("value") String value
);
- /**
+
+ /**
* 获取机器人自定义话术
- * @param type 1(自定义打招呼) 3(自定义求关注)
+ *
+ * @param type 1(自定义打招呼) 3(自定义求关注)
*/
@GET("/api/public/?service=Live.getAiAutomaticSpeech")
- Observable>> getAiAutomaticSpeech(
+ Observable>> getAiAutomaticSpeech(
@Query("type") String type
);
+
/**
* 机器人添加话术
*/
@GET("/api/public/?service=Live.addAiAutomaticSpeech")
- Observable>> addAiAutomaticSpeech(
+ Observable> addAiAutomaticSpeech(
@Query("type") String type,
@Query("content") String content
);
+
/**
* 机器人删除话术
*/
@GET("/api/public/?service=Live.delAiAutomaticSpeech ")
- Observable>> delAiAutomaticSpeech (
- @Query("type") String type,
- @Query("id") String id
- );
- /**
- * 机器人修改话术
- */
- @GET("/api/public/?service=Live.updateAiAutomaticSpeech ")
- Observable>> updateAiAutomaticSpeech (
+ Observable> delAiAutomaticSpeech(
@Query("type") String type,
@Query("id") String id
);
+ /**
+ * 机器人修改话术
+ */
+ @GET("/api/public/?service=Live.updateAiAutomaticSpeech ")
+ Observable> updateAiAutomaticSpeech(
+ @Query("type") String type,
+ @Query("id") String id,
+ @Query("content") String content
+ );
+
}
diff --git a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java
index b5ff172fb..4e6e91a91 100644
--- a/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java
+++ b/common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java
@@ -14,6 +14,7 @@ import com.yunbao.common.bean.EnterRoomNewModel;
import com.yunbao.common.bean.HttpCallbackModel;
import com.yunbao.common.bean.LinkMicUserBean;
import com.yunbao.common.bean.LinkMicUserBeanV2;
+import com.yunbao.common.bean.LiveAiRobotBean;
import com.yunbao.common.bean.LiveInfoModel;
import com.yunbao.common.bean.LiveRoomActivityBanner;
import com.yunbao.common.bean.NobleRankHideUserListModel;
@@ -21,7 +22,6 @@ import com.yunbao.common.bean.NobleTrumpetModel;
import com.yunbao.common.bean.PkRankBean;
import com.yunbao.common.bean.PrankGiftBean;
import com.yunbao.common.bean.PrankHttpTurntableBean;
-import com.yunbao.common.bean.PrankTurntableBean;
import com.yunbao.common.bean.RandomPkUserBean;
import com.yunbao.common.bean.RankPkInfoBean;
import com.yunbao.common.bean.SetAttentsModel;
@@ -39,7 +39,6 @@ import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;
-import retrofit2.http.Query;
/**
@@ -879,7 +878,7 @@ public class LiveNetManager {
/**
* 整蛊结束
*/
- public void endPrankTurntable(String mLiveUid,HttpCallback callback){
+ public void endPrankTurntable(String mLiveUid, HttpCallback callback) {
API.get().pdLiveApi(mContext)
.endPrankTurntable(mLiveUid)
.subscribeOn(Schedulers.io())
@@ -898,6 +897,132 @@ public class LiveNetManager {
}
+ public void getAiRobotStatus(HttpCallback callback) {
+ API.get().pdLiveApi(mContext)
+ .getAnchorAiState()
+ .subscribeOn(Schedulers.io())
+ .subscribe(responseModel -> {
+ if (callback != null) {
+ callback.onSuccess(responseModel.getData().getInfo());
+ }
+ }, new Consumer() {
+ @Override
+ public void accept(Throwable throwable) throws Exception {
+ if (callback != null) {
+ callback.onError(throwable.getMessage());
+ }
+ }
+ }).isDisposed();
+ }
+
+ public void setAiRobotStatus(String status, HttpCallback callback) {
+ API.get().pdLiveApi(mContext)
+ .setAnchorAiState(status)
+ .subscribeOn(Schedulers.io())
+ .subscribe(responseModel -> {
+ if (callback != null) {
+ callback.onSuccess(null);
+ }
+ }, new Consumer() {
+ @Override
+ public void accept(Throwable throwable) throws Exception {
+ if (callback != null) {
+ callback.onError(throwable.getMessage());
+ }
+ }
+ }).isDisposed();
+ }
+
+ public void setAiRobotDate(String name, String value, HttpCallback callback) {
+ API.get().pdLiveApi(mContext)
+ .setAnchorAiState(name, value)
+ .subscribeOn(Schedulers.io())
+ .subscribe(responseModel -> {
+ if (callback != null) {
+ callback.onSuccess(null);
+ }
+ }, new Consumer() {
+ @Override
+ public void accept(Throwable throwable) throws Exception {
+ if (callback != null) {
+ callback.onError(throwable.getMessage());
+ }
+ }
+ }).isDisposed();
+ }
+
+ public void getAiRobotBody(int type, HttpCallback> callback) {
+ API.get().pdLiveApi(mContext)
+ .getAiAutomaticSpeech(type + "")
+ .subscribeOn(Schedulers.io())
+ .subscribe(responseModel -> {
+ if (callback != null) {
+ callback.onSuccess(responseModel.getData().getInfo());
+ }
+ }, new Consumer() {
+ @Override
+ public void accept(Throwable throwable) throws Exception {
+ if (callback != null) {
+ callback.onError(throwable.getMessage());
+ }
+ }
+ }).isDisposed();
+ }
+
+ public void addAiRobotBody(int type, String content, HttpCallback callback) {
+ API.get().pdLiveApi(mContext)
+ .addAiAutomaticSpeech(type + "", content)
+ .subscribeOn(Schedulers.io())
+ .subscribe(responseModel -> {
+ if (callback != null) {
+ callback.onSuccess(new HttpCallbackModel(responseModel.getData().getCode(), responseModel.getData().getMsg()));
+ }
+ }, new Consumer() {
+ @Override
+ public void accept(Throwable throwable) throws Exception {
+ if (callback != null) {
+ callback.onError(throwable.getMessage());
+ }
+ }
+ }).isDisposed();
+ }
+
+ public void updateAiRobotBody(int type, int id, String content, HttpCallback callback) {
+ API.get().pdLiveApi(mContext)
+ .updateAiAutomaticSpeech(type + "", id + "", content)
+ .subscribeOn(Schedulers.io())
+ .subscribe(responseModel -> {
+ if (callback != null) {
+ callback.onSuccess(new HttpCallbackModel(responseModel.getData().getCode(), responseModel.getData().getMsg()));
+ }
+ }, new Consumer() {
+ @Override
+ public void accept(Throwable throwable) throws Exception {
+ if (callback != null) {
+ callback.onError(throwable.getMessage());
+ }
+ }
+ }).isDisposed();
+ }
+
+ public void delAiRobotBody(int type, int id, HttpCallback callback) {
+ API.get().pdLiveApi(mContext)
+ .delAiAutomaticSpeech(type + "", id + "")
+ .subscribeOn(Schedulers.io())
+ .subscribe(responseModel -> {
+ if (callback != null) {
+ callback.onSuccess(new HttpCallbackModel(responseModel.getData().getCode(), responseModel.getData().getMsg()));
+ }
+ }, new Consumer() {
+ @Override
+ public void accept(Throwable throwable) throws Exception {
+ if (callback != null) {
+ callback.onError(throwable.getMessage());
+ }
+ }
+ }).isDisposed();
+ }
+
/**
* 直播间取消网络请求
*/
diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveRobotSettingDialogFragment.java b/live/src/main/java/com/yunbao/live/dialog/LiveRobotSettingDialogFragment.java
index 13eeae167..6f413f971 100644
--- a/live/src/main/java/com/yunbao/live/dialog/LiveRobotSettingDialogFragment.java
+++ b/live/src/main/java/com/yunbao/live/dialog/LiveRobotSettingDialogFragment.java
@@ -2,23 +2,29 @@ package com.yunbao.live.dialog;
import android.app.ActionBar;
import android.os.Bundle;
+import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
+import com.yunbao.common.bean.LiveAiRobotBean;
import com.yunbao.common.dialog.AbsDialogFragment;
+import com.yunbao.common.http.base.HttpCallback;
+import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.live.R;
import androidx.annotation.Nullable;
+import java.util.List;
+
/**
* 机器人设置
*/
public class LiveRobotSettingDialogFragment extends AbsDialogFragment implements View.OnClickListener {
-
+ private static String TAG = "AI机器人";
@Override
protected int getLayoutId() {
@@ -43,15 +49,64 @@ public class LiveRobotSettingDialogFragment extends AbsDialogFragment implements
params.gravity = Gravity.BOTTOM;
window.setAttributes(params);
}
+
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
- Bundle bundle = getArguments();
- if (bundle == null) {
- return;
- }
+ initDate();
+ }
+ private void initDate() {
+ LiveNetManager.get(mContext)
+ .getAiRobotStatus(new HttpCallback() {
+ @Override
+ public void onSuccess(LiveAiRobotBean data) {
+ Log.i(TAG, "onSuccess: " + data.toString());
+ initListType1();
+ }
+ @Override
+ public void onError(String error) {
+
+ }
+ });
+ }
+
+ private void initListType1() {
+ LiveNetManager.get(mContext)
+ .getAiRobotBody(LiveAiRobotBean.Message.TYPE_SAY_HI, new HttpCallback>() {
+ @Override
+ public void onSuccess(List data) {
+ Log.i(TAG, "onSuccess: " + data.size());
+ for (LiveAiRobotBean.Message message : data) {
+ Log.i(TAG, "onSuccess: message=" + message.toString());
+ }
+ initListType2();
+ }
+
+ @Override
+ public void onError(String error) {
+
+ }
+ });
+ }
+
+ private void initListType2() {
+ LiveNetManager.get(mContext)
+ .getAiRobotBody(LiveAiRobotBean.Message.TYPE_FOLLOW, new HttpCallback>() {
+ @Override
+ public void onSuccess(List data) {
+ Log.i(TAG, "onSuccess: " + data.size());
+ for (LiveAiRobotBean.Message message : data) {
+ Log.i(TAG, "onSuccess: message=" + message.toString());
+ }
+ }
+
+ @Override
+ public void onError(String error) {
+
+ }
+ });
}
@Override
diff --git a/live/src/main/res/layout/dialog_live_robot_setting.xml b/live/src/main/res/layout/dialog_live_robot_setting.xml
index d7ba7721e..8d8001e4a 100644
--- a/live/src/main/res/layout/dialog_live_robot_setting.xml
+++ b/live/src/main/res/layout/dialog_live_robot_setting.xml
@@ -1,11 +1,75 @@
-
+ android:layout_height="400dp"
+ android:background="#000">
+
-
\ No newline at end of file
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java
index 4e4e1eeec..3517a8fbd 100644
--- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java
+++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java
@@ -7,7 +7,9 @@ import android.widget.ImageView;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.utils.WordUtil;
+import com.yunbao.live.dialog.LiveRobotSettingDialogFragment;
import com.yunbao.main.R;
+import com.yunbao.main.activity.MainActivity;
/**
* Created by cxf on 2018/9/22.
@@ -36,6 +38,11 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder {
img_trophy = (ImageView) findViewById(R.id.img_trophy);
ImgLoader.display(mContext, "https://downs.yaoulive.com/gif_trophy.gif", img_trophy);
+
+ img_trophy.setOnClickListener(v -> {
+ LiveRobotSettingDialogFragment fragment=new LiveRobotSettingDialogFragment();
+ fragment.show(((MainActivity)mContext).getSupportFragmentManager(),"LiveRobotSettingDialogFragment");
+ });
}
@Override