629 lines
25 KiB
Java
629 lines
25 KiB
Java
package com.ubt.jimu.blockly.command;
|
|
|
|
import android.app.Activity;
|
|
import android.content.Context;
|
|
import android.text.TextUtils;
|
|
import android.util.Log;
|
|
import android.webkit.JavascriptInterface;
|
|
import android.webkit.WebView;
|
|
import com.ubt.jimu.JimuApplication;
|
|
import com.ubt.jimu.R;
|
|
import com.ubt.jimu.base.cache.Cache;
|
|
import com.ubt.jimu.base.cache.Constants;
|
|
import com.ubt.jimu.base.db.diy.DiyHelper;
|
|
import com.ubt.jimu.base.db.starcourse.CourseDbHandler;
|
|
import com.ubt.jimu.base.entities.ActionResult;
|
|
import com.ubt.jimu.base.entities.Constant;
|
|
import com.ubt.jimu.base.entities.Course;
|
|
import com.ubt.jimu.base.entities.Robot;
|
|
import com.ubt.jimu.blockly.JimuRobot;
|
|
import com.ubt.jimu.blockly.Utils;
|
|
import com.ubt.jimu.blockly.bean.BlocklyProject;
|
|
import com.ubt.jimu.blockly.command.interaction.AbstractBlocklyInteraction;
|
|
import com.ubt.jimu.blockly.command.interaction.BlocklyInteraction;
|
|
import com.ubt.jimu.blockly.command.interaction.BlocklyUpload;
|
|
import com.ubt.jimu.blockly.command.result.JavaResultBean;
|
|
import com.ubt.jimu.blockly.feature.audio.AudioParams;
|
|
import com.ubt.jimu.blockly.feature.audio.AudioPlayer;
|
|
import com.ubt.jimu.blockly.feature.audio.AudioRecoder;
|
|
import com.ubt.jimu.blockly.feature.course.BlocklyDomCompare;
|
|
import com.ubt.jimu.blockly.feature.sensor.SensorObservable;
|
|
import com.ubt.jimu.blockly.feature.sensor.SensorObserver;
|
|
import com.ubt.jimu.blockly.view.DialogBlocklyWebView;
|
|
import com.ubt.jimu.course.repository.JimuCourse;
|
|
import com.ubt.jimu.course.repository.JimuCourseMission;
|
|
import com.ubt.jimu.course.repository.JimuCourseTask;
|
|
import com.ubt.jimu.discover.CourseHelper;
|
|
import com.ubt.jimu.discover.IAccomplishEventListener;
|
|
import com.ubt.jimu.discover.view.AccomplishWithoutUserDialog;
|
|
import com.ubt.jimu.diy.DiyRobotDbHandler;
|
|
import com.ubt.jimu.unity.ModelType;
|
|
import com.ubt.jimu.unity.bluetooth.UnityActivity;
|
|
import com.ubt.jimu.utils.DeviceUtils;
|
|
import com.ubt.jimu.utils.JsonHelper;
|
|
import com.ubt.jimu.utils.LogUtils;
|
|
import com.ubt.jimu.utils.SPUtils;
|
|
import com.ubtech.permission.JimuPermissionRequest;
|
|
import com.ubtech.permission.PermissionRequestListener;
|
|
import com.ubtech.utils.FileHelper;
|
|
import com.ubtech.utils.PermissionHelper;
|
|
import com.ubtech.utils.XLog;
|
|
import com.ubtrobot.log.ALog;
|
|
import java.io.File;
|
|
import org.json.JSONArray;
|
|
import org.json.JSONException;
|
|
import org.json.JSONObject;
|
|
|
|
/* loaded from: classes.dex */
|
|
public class JimuJavascriptInterface {
|
|
private Context context;
|
|
private Course course;
|
|
private DialogBlocklyWebView dialogBlocklyWebView;
|
|
private JavaScriptCommand javaScriptCommand;
|
|
private JimuRobot jimuRobot;
|
|
private WebView webView;
|
|
private final String TAG = JimuJavascriptInterface.class.getSimpleName();
|
|
private final String BLOCKLY_INTERVAL = "continueSteps";
|
|
private final String SOUND_FILE_MODEL_ID = "0";
|
|
private int platformType = 1;
|
|
private AbstractBlocklyInteraction transportAction = new BlocklyInteraction(new BlocklyUpload());
|
|
|
|
public JimuJavascriptInterface(WebView webView, Context context, JimuRobot jimuRobot) {
|
|
this.jimuRobot = jimuRobot;
|
|
this.webView = webView;
|
|
this.context = context;
|
|
this.javaScriptCommand = new JavaScriptCommand(webView, context, jimuRobot, this.transportAction);
|
|
}
|
|
|
|
private String getBlocklyProjectId(String str) {
|
|
try {
|
|
JSONObject jSONObject = new JSONObject(str);
|
|
if (jSONObject.has("xmlId")) {
|
|
return jSONObject.getString("xmlId");
|
|
}
|
|
return null;
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String DeleteXml(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.deleteXml(getBlocklyProjectId(str)));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String EditXml(String str) {
|
|
BlocklyProject blocklyProject = (BlocklyProject) JsonHelper.a(str, (Class<?>) BlocklyProject.class);
|
|
if (blocklyProject != null) {
|
|
return JsonHelper.a(this.javaScriptCommand.editXml(blocklyProject.getXmlName(), blocklyProject.getXmlContent(), blocklyProject.getXmlId(), blocklyProject.getBlocklyVersion(), blocklyProject.getDefaultName()));
|
|
}
|
|
JavaResultBean javaResultBean = new JavaResultBean();
|
|
javaResultBean.retCode = JavaResultBean.RESULT_EXCEPTION;
|
|
javaResultBean.retMsg = "unknow input";
|
|
return JsonHelper.a(javaResultBean);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String ReadXml(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.readXml(getBlocklyProjectId(str)));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String ReadXmlList() {
|
|
return JsonHelper.a(this.javaScriptCommand.xmlList());
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String SaveXml(String str) {
|
|
BlocklyProject blocklyProject = (BlocklyProject) JsonHelper.a(str, (Class<?>) BlocklyProject.class);
|
|
if (blocklyProject != null) {
|
|
return JsonHelper.a(this.javaScriptCommand.saveXml(blocklyProject.getXmlName(), blocklyProject.getXmlContent(), blocklyProject.getBlocklyVersion(), blocklyProject.getDefaultName()));
|
|
}
|
|
JavaResultBean javaResultBean = new JavaResultBean();
|
|
javaResultBean.retCode = JavaResultBean.RESULT_EXCEPTION;
|
|
javaResultBean.retMsg = "unknow input";
|
|
return JsonHelper.a(javaResultBean);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String addCustomSound(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.addCustomSound(str));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void cancelRecordAudio() {
|
|
AudioRecoder.getInstance().stopRecod();
|
|
File parentFile = new File(AudioRecoder.getInstance().getFileName()).getParentFile();
|
|
if (parentFile == null || !parentFile.exists()) {
|
|
return;
|
|
}
|
|
FileHelper.a(parentFile);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void courseSuccessPopup(String str) {
|
|
LogUtils.c("courseId:" + str + " " + str);
|
|
final IAccomplishEventListener iAccomplishEventListener = new IAccomplishEventListener() { // from class: com.ubt.jimu.blockly.command.JimuJavascriptInterface.4
|
|
@Override // com.ubt.jimu.discover.IAccomplishEventListener
|
|
public void onPlayAgain(Course course) {
|
|
JimuJavascriptInterface.this.webView.reload();
|
|
}
|
|
|
|
@Override // com.ubt.jimu.discover.IAccomplishEventListener
|
|
public void onPlayContinue(Course course) {
|
|
((UnityActivity) JimuJavascriptInterface.this.context).setIsBack(true);
|
|
((UnityActivity) JimuJavascriptInterface.this.context).closeBlockly();
|
|
}
|
|
};
|
|
final AccomplishWithoutUserDialog a = AccomplishWithoutUserDialog.a(this.course);
|
|
a.a(iAccomplishEventListener);
|
|
String userId = Cache.getInstance().getUserId();
|
|
if (!"local".equals(userId) && !TextUtils.isEmpty(userId)) {
|
|
if (Course.STATUS_COMPLETED.equals(this.course.getStatus())) {
|
|
a.show(((Activity) this.context).getFragmentManager(), "course");
|
|
return;
|
|
}
|
|
CourseHelper courseHelper = new CourseHelper(new CourseHelper.IUploadCourseListener() { // from class: com.ubt.jimu.blockly.command.JimuJavascriptInterface.5
|
|
@Override // com.ubt.jimu.discover.CourseHelper.IUploadCourseListener
|
|
public void onFailed() {
|
|
JimuJavascriptInterface.this.dialogBlocklyWebView.hideWait();
|
|
JimuJavascriptInterface.this.webView.postDelayed(new Runnable() { // from class: com.ubt.jimu.blockly.command.JimuJavascriptInterface.5.1
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
JimuJavascriptInterface.this.dialogBlocklyWebView.commonTips(JimuJavascriptInterface.this.dialogBlocklyWebView.getString(R.string.network_error), 2);
|
|
}
|
|
}, 500L);
|
|
}
|
|
|
|
@Override // com.ubt.jimu.discover.CourseHelper.IUploadCourseListener
|
|
public void onFinished() {
|
|
JimuJavascriptInterface.this.dialogBlocklyWebView.hideWait();
|
|
}
|
|
|
|
@Override // com.ubt.jimu.discover.CourseHelper.IUploadCourseListener
|
|
public void onStart() {
|
|
}
|
|
|
|
@Override // com.ubt.jimu.discover.CourseHelper.IUploadCourseListener
|
|
public void onSuccess(ActionResult actionResult) {
|
|
if (actionResult != null && actionResult.getCourse() != null && actionResult.getFlag() == 0) {
|
|
a.show(((Activity) JimuJavascriptInterface.this.context).getFragmentManager(), "course");
|
|
return;
|
|
}
|
|
CourseDbHandler.setCourseComplete(JimuJavascriptInterface.this.course);
|
|
AccomplishWithoutUserDialog a2 = AccomplishWithoutUserDialog.a(JimuJavascriptInterface.this.course, actionResult);
|
|
a2.a(((Activity) JimuJavascriptInterface.this.context).getFragmentManager(), "course", actionResult);
|
|
a2.a(iAccomplishEventListener);
|
|
}
|
|
});
|
|
String b = SPUtils.b(Constant.SelectRobot.INTERSTELLAR_ADVENTURE_SELECT_PACKAGE_KEY);
|
|
long parseLong = Long.parseLong(str);
|
|
if (Constant.SelectRobot.INTERSTELLAR_ADVENTURE_NEW_PACKAGE_COSMOS.equals(b) || Constant.SelectRobot.INTERSTELLAR_ADVENTURE_NEW_PACKAGE_STEM.equals(b) || Constant.SelectRobot.INTERSTELLAR_ADVENTURE_NEW_PACKAGE_UPGRADED.equals(b)) {
|
|
parseLong += 24;
|
|
}
|
|
courseHelper.a(parseLong);
|
|
this.dialogBlocklyWebView.showWait();
|
|
return;
|
|
}
|
|
String storyName = this.course.getStoryName();
|
|
LogUtils.c("storyName:" + storyName + " " + str);
|
|
if (Constant.SelectRobot.ASTROBOT_MINI.equals(storyName)) {
|
|
if (!TextUtils.isEmpty(str)) {
|
|
SPUtils.b(Constant.SelectRobot.LOCAL_USER_COSMOS_FLAG_NEW, Integer.parseInt(str));
|
|
}
|
|
} else if (!TextUtils.isEmpty(str)) {
|
|
SPUtils.b(Constant.SelectRobot.LOCAL_USER_COSMOS_FLAG_OLD, Integer.parseInt(str));
|
|
}
|
|
CourseDbHandler.setCourseComplete(this.course);
|
|
a.show(((Activity) this.context).getFragmentManager(), "course");
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String customSoundList() {
|
|
return JsonHelper.a(this.javaScriptCommand.customSoundList(Cache.getInstance().getUserId()));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String deleteCustomMotion(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.deleteCustomMotion(str));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public boolean deleteCustomSound(String str) {
|
|
return this.javaScriptCommand.deleteCustomSound(Cache.getInstance().getUserId(), str);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String getBlocklyProjectDescription(String str) {
|
|
return FileHelper.b(this.jimuRobot.getSamplePath() + str + ".desc", "");
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String getCustomMotion(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.getCustomMotion(str));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String getCustomMotionList() {
|
|
return JsonHelper.a(this.javaScriptCommand.getMotionList());
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String getDeviceDirection() {
|
|
return this.dialogBlocklyWebView.getDirection() == null ? "" : this.dialogBlocklyWebView.getDirection().getValue();
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String getInitProgramInfo() {
|
|
return this.jimuRobot.getProgram() == null ? "" : JsonHelper.a(this.jimuRobot.getProgram());
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String getMotionList() {
|
|
return TextUtils.isEmpty(this.jimuRobot.getMotion()) ? "{}" : this.jimuRobot.getMotion();
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String getServoID() {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(JimuRobot.ACTIONS);
|
|
sb.append(this.jimuRobot.getAction());
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getServo())) {
|
|
sb.append("&");
|
|
sb.append(JimuRobot.SERVOS);
|
|
sb.append(this.jimuRobot.getServo());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getInfraredId())) {
|
|
sb.append("&");
|
|
sb.append(JimuRobot.INFRARED_ID);
|
|
sb.append(this.jimuRobot.getInfraredId());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getTouchId())) {
|
|
sb.append("&");
|
|
sb.append(JimuRobot.TOUCH_ID);
|
|
sb.append(this.jimuRobot.getTouchId());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getGyroscopeId())) {
|
|
sb.append("&");
|
|
sb.append(JimuRobot.GYROSCOPE_ID);
|
|
sb.append(this.jimuRobot.getGyroscopeId());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getCircleServos())) {
|
|
sb.append("&");
|
|
sb.append(JimuRobot.CIRCLE_SERVOS);
|
|
sb.append(this.jimuRobot.getCircleServos());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getLights())) {
|
|
sb.append("&");
|
|
sb.append(JimuRobot.LIGHTS);
|
|
sb.append(this.jimuRobot.getLights());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getColorId())) {
|
|
sb.append("&colorId=");
|
|
sb.append(this.jimuRobot.getColorId());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getUnicornId())) {
|
|
sb.append("&unicornId=");
|
|
sb.append(this.jimuRobot.getUnicornId());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getMotor())) {
|
|
sb.append("&motor=");
|
|
sb.append(this.jimuRobot.getMotor());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getIsLithium())) {
|
|
sb.append("&isLithium=");
|
|
sb.append(this.jimuRobot.getIsLithium());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getUltrasonicId())) {
|
|
sb.append("&ultrasonicId=");
|
|
sb.append(this.jimuRobot.getUltrasonicId());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getModelType())) {
|
|
sb.append("&modelType=");
|
|
sb.append(this.jimuRobot.getModelType());
|
|
}
|
|
if (!TextUtils.isEmpty(this.jimuRobot.getModelId())) {
|
|
sb.append("&modelID=");
|
|
sb.append(this.jimuRobot.getModelId());
|
|
}
|
|
String g = JimuApplication.l().g();
|
|
sb.append("&");
|
|
sb.append(JimuRobot.LANGUAGE);
|
|
sb.append(g);
|
|
sb.append("&");
|
|
sb.append(JimuRobot.BLUE_STATE);
|
|
sb.append(this.jimuRobot.getBlueState());
|
|
sb.append("&");
|
|
sb.append(JimuRobot.MODEL_TYPE);
|
|
sb.append(SPUtils.a(Constant.Black.BLACK_MODEL_TYPE_KEY, 0));
|
|
sb.append("&platformType=");
|
|
sb.append(this.platformType);
|
|
Robot robot = Cache.getInstance().getRobot();
|
|
String logPath = String.valueOf(ModelType.DEFAULT.getType()).equals(this.jimuRobot.getServerModelType()) ? robot != null ? DiyRobotDbHandler.getLogPath(ModelType.DEFAULT, robot.getModelName()) : "" : DiyHelper.getInstance().queryForUUid(this.jimuRobot.getModelId()) == null ? DiyRobotDbHandler.getLogPath(ModelType.PLAYER_DATA, this.jimuRobot.getModelId()) : DiyHelper.getInstance().queryForUUid(this.jimuRobot.getModelId()).getFilePath();
|
|
sb.append("&modelLogo=");
|
|
sb.append(logPath);
|
|
String userId = Cache.getInstance().getUserId();
|
|
if ("local".equals(userId)) {
|
|
userId = DeviceUtils.a(this.context);
|
|
}
|
|
sb.append("&");
|
|
sb.append("userId=");
|
|
sb.append(userId);
|
|
sb.append("&");
|
|
sb.append("edit=");
|
|
sb.append(((UnityActivity) this.context).code != 1007 ? 1 : 0);
|
|
if (1 == this.dialogBlocklyWebView.getModuleType()) {
|
|
JimuCourse jimuCourse = Cache.getInstance().getJimuCourse();
|
|
JimuCourseTask jimuCourseTask = Cache.getInstance().getJimuCourseTask();
|
|
JimuCourseMission courseMission = Cache.getInstance().getCourseMission();
|
|
if (robot != null && jimuCourse != null && jimuCourseTask != null && courseMission != null) {
|
|
String str = Constants.COURSE_RESOURCE_PATH + jimuCourse.getId();
|
|
sb.append("&");
|
|
sb.append("packageId=");
|
|
sb.append(Cache.getInstance().getPackageId());
|
|
sb.append("&");
|
|
sb.append("modelId=");
|
|
sb.append(robot.getModelId());
|
|
sb.append("&");
|
|
sb.append("modelID=");
|
|
sb.append(robot.getModelName());
|
|
sb.append("&");
|
|
sb.append("modelName=");
|
|
sb.append(robot.getModelDescriptionLangeage());
|
|
sb.append("&");
|
|
sb.append("moveType=");
|
|
sb.append(robot.getMoveType());
|
|
sb.append("&");
|
|
sb.append("level=");
|
|
sb.append(jimuCourse.getFolderName());
|
|
sb.append("&");
|
|
sb.append("stage=");
|
|
sb.append(jimuCourseTask.getFolderName());
|
|
sb.append("&");
|
|
sb.append("mission=");
|
|
sb.append(courseMission.getFolderName());
|
|
sb.append("&");
|
|
sb.append("missionId=");
|
|
sb.append(courseMission.getId());
|
|
sb.append("&");
|
|
sb.append("sourcePath=");
|
|
sb.append(str);
|
|
}
|
|
} else {
|
|
sb.append("&");
|
|
sb.append(JimuRobot.IS_FIRST);
|
|
sb.append(this.jimuRobot.firstOpen());
|
|
}
|
|
Course course = this.course;
|
|
if (course != null) {
|
|
String nameKey = course.getNameKey();
|
|
String replace = TextUtils.isEmpty(nameKey) ? "" : nameKey.replace("course_", "");
|
|
sb.append("&");
|
|
sb.append("courseId=");
|
|
sb.append(replace);
|
|
sb.append("&");
|
|
sb.append("serialName=");
|
|
sb.append("AstroBot");
|
|
sb.append("&");
|
|
sb.append("sourcePath=");
|
|
sb.append(Utils.getStarCourseDirPath());
|
|
}
|
|
String tTSToken = Cache.getInstance().getTTSToken();
|
|
LogUtils.c("ttsToken:" + tTSToken);
|
|
if (!TextUtils.isEmpty(tTSToken)) {
|
|
sb.append("&");
|
|
sb.append("tok=");
|
|
sb.append(tTSToken);
|
|
String valueOf = Cache.getInstance().getLoginUserIntId() > 0 ? String.valueOf(Cache.getInstance().getLoginUserIntId()) : DeviceUtils.a(this.context);
|
|
sb.append("&");
|
|
sb.append("cuid=");
|
|
sb.append(valueOf);
|
|
}
|
|
String sb2 = sb.toString();
|
|
XLog.a("Chrome", sb2);
|
|
return sb2;
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public boolean hasRecordAuthority() {
|
|
if (PermissionHelper.a(this.context, "android.permission.RECORD_AUDIO")) {
|
|
return PermissionHelper.a(this.context, "android.permission.RECORD_AUDIO");
|
|
}
|
|
this.webView.post(new Runnable() { // from class: com.ubt.jimu.blockly.command.JimuJavascriptInterface.2
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
JimuPermissionRequest.a((Activity) JimuJavascriptInterface.this.context, (PermissionRequestListener) null);
|
|
}
|
|
});
|
|
return false;
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String helpUrl() {
|
|
String str = "https://jimu.ubtrobot.com/jimu/help_new/help_new.html?language=" + JimuApplication.l().g();
|
|
this.javaScriptCommand.helpUrl();
|
|
return str;
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public boolean isTablet() {
|
|
return true;
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void playAudio(String str) {
|
|
this.javaScriptCommand.playAudio(str);
|
|
}
|
|
|
|
public void playCurrentRecordAudio() {
|
|
AudioPlayer.getInstance().play(AudioRecoder.getInstance().getFileName());
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void recordContentViewEnd(String str) {
|
|
this.javaScriptCommand.recordContentViewEnd(str);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void recordContentViewStart(String str) {
|
|
this.javaScriptCommand.recordContentViewStart(str);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void recordEvent(String str, String str2) {
|
|
this.javaScriptCommand.recordEvent(str, str2);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void registerSensorObserver(String str) {
|
|
SensorObservable.getInstance().addObserver((SensorObserver) JsonHelper.a(str, (Class<?>) SensorObserver.class));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void registerSensorObservers(String str) {
|
|
try {
|
|
JSONArray jSONArray = new JSONArray(str);
|
|
for (int i = 0; i < jSONArray.length(); i++) {
|
|
JSONObject jSONObject = jSONArray.getJSONObject(i);
|
|
if (jSONObject != null) {
|
|
SensorObservable.getInstance().addObserver((SensorObserver) JsonHelper.a(jSONObject.toString(), (Class<?>) SensorObserver.class));
|
|
}
|
|
}
|
|
} catch (JSONException e) {
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String renameAudio(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.renameAudio(str));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String renameMotion(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.renameMotion(str));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String renameProject(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.renameProject(str));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void resignActiveBranch() {
|
|
ALog.a(this.TAG).d("重新激活分支");
|
|
SensorObservable.getInstance().reActiveObserver();
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String saveCustomMotion(String str) {
|
|
return JsonHelper.a(this.javaScriptCommand.saveCustomMotion(str));
|
|
}
|
|
|
|
public void setCourse(Course course) {
|
|
this.course = course;
|
|
}
|
|
|
|
public void setDialogBlocklyWebView(DialogBlocklyWebView dialogBlocklyWebView) {
|
|
this.dialogBlocklyWebView = dialogBlocklyWebView;
|
|
}
|
|
|
|
protected void setJSResult(String str, String... strArr) {
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append("javascript:");
|
|
sb.append(str);
|
|
sb.append("(");
|
|
if (strArr != null && strArr.length > 0) {
|
|
for (int i = 0; i < strArr.length; i++) {
|
|
sb.append("'");
|
|
sb.append(strArr[i]);
|
|
sb.append("'");
|
|
if (i < strArr.length - 1) {
|
|
sb.append(",");
|
|
}
|
|
}
|
|
}
|
|
sb.append(")");
|
|
final String sb2 = sb.toString();
|
|
Log.i(this.TAG, sb2);
|
|
this.webView.post(new Runnable() { // from class: com.ubt.jimu.blockly.command.JimuJavascriptInterface.1
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
JimuJavascriptInterface.this.webView.loadUrl(sb2);
|
|
}
|
|
});
|
|
}
|
|
|
|
public void setJimuRobot(JimuRobot jimuRobot) {
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public boolean startRecordAudio() {
|
|
if (!PermissionHelper.a(this.context, "android.permission.RECORD_AUDIO")) {
|
|
this.webView.post(new Runnable() { // from class: com.ubt.jimu.blockly.command.JimuJavascriptInterface.3
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
JimuPermissionRequest.a((Activity) JimuJavascriptInterface.this.context, (PermissionRequestListener) null);
|
|
}
|
|
});
|
|
return false;
|
|
}
|
|
String formatId = Utils.getFormatId(System.currentTimeMillis());
|
|
try {
|
|
return AudioRecoder.getInstance().startRecord((this.jimuRobot.getCustomSounds() + formatId) + File.separator + formatId + AudioParams.AAC);
|
|
} catch (Exception e) {
|
|
e.printStackTrace();
|
|
Log.e(this.TAG, "录音失败");
|
|
return false;
|
|
}
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void stopPlayAudio() {
|
|
AudioPlayer.getInstance().stop();
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void stopRecordAudio() {
|
|
AudioRecoder.getInstance().stopRecod();
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void successDeal(String str) {
|
|
this.javaScriptCommand.successDeal(str);
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void unRegisterAllSensorObserver() {
|
|
ALog.a(this.TAG).d("删除所有的观察者");
|
|
SensorObservable.getInstance().deleteObservers();
|
|
SensorObservable.getInstance().clearActiveObserver();
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void unRegisterSensorObserver(String str) {
|
|
ALog.a(this.TAG).d("删除观察者:" + str);
|
|
SensorObservable.getInstance().deleteObserver((SensorObserver) JsonHelper.a(str, (Class<?>) SensorObserver.class));
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public String verifyCourse(String str, String str2) {
|
|
String check = new BlocklyDomCompare().check(str, str2);
|
|
Log.i(this.TAG, check);
|
|
return check;
|
|
}
|
|
|
|
@JavascriptInterface
|
|
@Deprecated
|
|
public String versionSwitch(String str) {
|
|
return "";
|
|
}
|
|
|
|
@JavascriptInterface
|
|
public void recordEvent(String str) {
|
|
this.javaScriptCommand.recordEvent(str);
|
|
}
|
|
}
|