import android.os.Message;
import android.os.Messenger;
import android.os.PowerManager;
-import android.os.RemoteException;
import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.util.Log;
Util.shutdown();
}
}, 1000);
- }else if (Constants.ACTION_TEMP_RESULT_SEND_TIMEOUT.equals(paramIntent.getAction())){
+ } else if (Constants.ACTION_TEMP_RESULT_SEND_TIMEOUT.equals(paramIntent.getAction())) {
TemperatureUtil.getInstance().sendTempResult();
}
this.invokeHandlerServiceChain.processUserRequest(paramIntent, this.connection, this.runtime);
//定时,3个小时获取一次天气
}
- public void sendAntiStatus(){
- if(Config.custom_name.equals("AA")) {
+ public void sendAntiStatus() {
+ if (Config.custom_name.equals("AA")) {
Intent intent = new Intent();
if (antiService.getCurrentAntiStatus()) {
intent.setAction(ACTION_ANTI_OFF0);
intent.putExtra(KEY_ANTI_EVENT, 0);
- }else {
+ } else {
intent.setAction(ACTION_ANTI_OFF0);
intent.putExtra(KEY_ANTI_EVENT, 1);
}
}
@Override
- public void getServerReady() throws RemoteException {
+ public void getServerReady() {
+ ICLogger.d("requestServerReady...");
protocolAPIHelper.requestServerReady();
}
ICLogger.d("require call == > type is " + type + " remote user id is == > " + remoteUserId);
}
+ @Override
+ public void requireCallByAccount(int type, String account) {
+ StringMessage talk = protocolAPIHelper.requireCallByAccount(runtime, type, account);
+ connection.send(talk);
+ }
+
@Override
public void test() {
//触发测试
//设置通讯录,白名单(10个)
public void handleBP14(Connection connection, String cmd, Runtime runtime) {
// IWBP14,867155030001063,357444,9b44529b|13554820016,,,,,,,,,
-/**
- * IWBP14,353456789012345,080835,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx,
- * D3590D54|135xxxxxxxxxx#
- */
+ /**
+ * IWBP14,353456789012345,080835,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx,
+ * D3590D54|135xxxxxxxxxx#
+ */
String[] cmdlist = cmd.split(CMDSPLIT);
String[] phnums = new String[]{"", "", "", "", "", "", "", "", "", ""};
StringBuffer sb = new StringBuffer().append("recv phone Numbs ");
private static final String CMDSPLIT = ",";
public static final String defaultServerIP = "watch.gatorcn.com";
public static final int defaultServerPort = 27015;
+ private boolean hasLogin = false;
+
+ public void getServerReady() {
+ ICLogger.d("getServerReady...");
+ //在登录的时候,会通知的了
+ //可以加个flag
+ if (hasLogin) {
+ serverReady();
+ }
+ }
+
// public static final String defaultServerIP = "snickersun.oicp.net";
// public static final int defaultServerPort = 54944;
AP32,//BP32回复
AP34,//BP34回复
AP50,//app端发起视频通话到手表
+ BP50,//手表端发起请求到手机
/*终端发起*/
BP00,//开机对时
BP01,//AP01返回
cmdMap.put(CMD_TYPE.BP34, "BP34");
cmdMap.put(CMD_TYPE.BP35, "BP35");
cmdMap.put(CMD_TYPE.AP50, "AP50");
+ cmdMap.put(CMD_TYPE.BP50, "BP50");
}
}
//根据协议添加头尾以及IMEI号
- private static String AddHeader(Runtime runtime, String msg) {
+ private static String addHeader(Runtime runtime, String msg) {
/*
( CHAR 1
%04X HEX_STRING 4
byte[] msg.lenght
) CHAR 1
*/
-
String len = String.format("%04X", 1 + 4 + 4 + 15 + msg.length() + 1);
return new StringBuffer(CMDHEADER).append(len).append("0106").append(runtime.IMEI()).append(msg).append(
CMDEND).toString();
}
+
+ public StringMessage BP50(Runtime runtime, int type, String account) {
+ StringBuffer sb = new StringBuffer();
+ sb.append(cmdMap.get(CMD_TYPE.BP50));
+ sb.append(CMDSPLIT);
+ sb.append(account);
+ String targetResult = addHeader(runtime, sb.toString());
+ ICLogger.d("targetResult==> " + targetResult);
+ return genStringMessage(cmdMap.get(CMD_TYPE.BP50), targetResult);
+ }
+
/**/
public static StringMessage genStringMessage(String cmdName, String msg) {
//设置cmdName,在这里配置进去的msg没有实际用到
TimeUtil.getSystemTimeHHmmss() + CMDSPLIT +
MakeFriendsBtHelper.getSelfAddress() + CMDSPLIT +
split.length + CMDSPLIT + btAddress);
- String msg = AddHeader(runtime,
+ String msg = addHeader(runtime,
sb.toString()
);
StringMessage stringMessage = genStringMessage(cmdMap.get(CMD_TYPE.BP35), msg);
public StringMessage BPXX_REPLY(Runtime ds, CMD_TYPE type, String index, boolean success) {
StringMessage ret = null;
if (success) {
- ret = genStringMessage(cmdMap.get(type), AddHeader(ds, cmdMap.get(type) + index + "1"));
+ ret = genStringMessage(cmdMap.get(type), addHeader(ds, cmdMap.get(type) + index + "1"));
} else {
- ret = genStringMessage(cmdMap.get(type), AddHeader(ds, cmdMap.get(type) + index + "0"));
+ ret = genStringMessage(cmdMap.get(type), addHeader(ds, cmdMap.get(type) + index + "0"));
}
return ret;
}
.append(ds.getMccAndMnc())
.toString();
- return genStringMessage(cmdMap.get(CMD_TYPE.BP00), AddHeader(ds, msg));
+ return genStringMessage(cmdMap.get(CMD_TYPE.BP00), addHeader(ds, msg));
}
//时间同步,等同于登录成功回复
}
}
appendContact(ds, numbers, names);
+ //不管有没有数据,都要通知UI。
+ RemoteCallbackList<IFZDCallback> fzdCallback = mRuntime.getVideoCallCallback();
+ ICLogger.d("onContractsLoaded...");
+ int i = fzdCallback.beginBroadcast();
+ try {
+ while (i > 0) {
+ i--;
+ IFZDCallback broadcastItem = fzdCallback.getBroadcastItem(i);
+ //通知UI层数据已经准备好了,可以去获取了。
+ broadcastItem.onContractsLoaded();
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ fzdCallback.finishBroadcast();
+ }
} else {
ICLogger.e("AP06 format error1 !");
connection.send(BPXX_REPLY(ds, CMD_TYPE.BP06, cmdlist[1], false));
StringMessage ret = null;
StringBuilder sb = new StringBuilder(cmdMap.get(CMD_TYPE.BP11));
sb.append(CMDSPLIT).append(MSGType).append(CMDSPLIT).append(MSGCount);
- ret = genStringMessage(cmdMap.get(CMD_TYPE.BP11), AddHeader(ds, sb.toString()));
+ ret = genStringMessage(cmdMap.get(CMD_TYPE.BP11), addHeader(ds, sb.toString()));
return ret;
}
} else {
sb.append(0);
}
- ret = genStringMessage(cmdMap.get(CMD_TYPE.BP12), AddHeader(ds, sb.toString()));
+ ret = genStringMessage(cmdMap.get(CMD_TYPE.BP12), addHeader(ds, sb.toString()));
return ret;
}
.append("0,0,0")
.toString();
- StringMessage ret = genStringMessage(cmdMap.get(CMD_TYPE.BP33), AddHeader(ds, msg));
+ StringMessage ret = genStringMessage(cmdMap.get(CMD_TYPE.BP33), addHeader(ds, msg));
return ret;
}
return null;
}
- StringMessage ret = genStringMessage(cmdMap.get(CMD_TYPE.BP30), AddHeader(ds, sb.toString()));
+ StringMessage ret = genStringMessage(cmdMap.get(CMD_TYPE.BP30), addHeader(ds, sb.toString()));
return ret;
}
StringMessage ret = null;
StringBuilder sb = new StringBuilder(cmdMap.get(CMD_TYPE.BP32));
sb.append(CMDSPLIT).append(cmdMap.get(CMD_TYPE.AP26));
- ret = genStringMessage(cmdMap.get(CMD_TYPE.BP32), AddHeader(ds, sb.toString()));
+ ret = genStringMessage(cmdMap.get(CMD_TYPE.BP32), addHeader(ds, sb.toString()));
return ret;
}
switch (type) {
case AP03: //登录包
handleAP03(mRuntime, mConnection, cmd);
+ hasLogin = true;
ICLogger.i("服务器收到登录包");
mConnection.DeliverCMDMessageToSystem("login", cmd);//通知下面线程状态变化
serverReady();
String[] split = cmd.split(CMDSPLIT);
//服务器下发AP50,频道创建的秒为单位的时间戳,亲情号,频道ID,加入频道所需的token凭证
if (split.length == 5) {
- //开启拨号UI
- Intent intent = new Intent();
- //在VideoCall里有个接收者,收到了消息会拉起视频通话
- intent.setAction("com.ic.video_call.action.DO_CALL");
//调用声网SDK 加入频道的uid参数 手表端暂时固定为2
- intent.putExtra("targetId", split[1]);
- intent.putExtra("selfId", 2);
- intent.putExtra("channel", split[3]);
- intent.putExtra("token", split[4]);
- mRuntime.getContextProxy().context.sendBroadcast(intent);
+ String targetId = split[2];
+ String channel = split[3];
+ String token = split[4];
+ ICLogger.d("targetId ==> " + targetId);
+ ICLogger.d("channel ==> " + channel);
+ ICLogger.d("token ==> " + token);
//TODO:回复服务器
ICLogger.d("send broadcast...to video call...");
+ dispatchAP50(targetId, channel, token);
} else {
ICLogger.d("parse cmd error == > " + split.length);
}
}
+ private void dispatchAP50(String userName, String channel, String token) {
+ //收到服务器时间消息的时候认为服务器已经准备好了
+ RemoteCallbackList<IFZDCallback> fzdCallback = mRuntime.getVideoCallCallback();
+ int i = fzdCallback.beginBroadcast();
+ try {
+ while (i > 0) {
+ i--;
+ //1是视频通话,0是语音通话
+ fzdCallback.getBroadcastItem(i).onCallingByUserName(userName, channel, "1", token);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ } finally {
+ fzdCallback.finishBroadcast();
+ }
+ }
+
private void serverReady() {
//收到服务器时间消息的时候认为服务器已经准备好了
RemoteCallbackList<IFZDCallback> fzdCallback = mRuntime.getVideoCallCallback();
while (i > 0) {
i--;
fzdCallback.getBroadcastItem(i).onServerReady();
+ fzdCallback.getBroadcastItem(i).onBRIdLoaded("0");
}
} catch (Exception e) {
e.printStackTrace();