Link Turbo Engine接入

Link Turbo Engine接入

1. 流程示意图:

2. 添加appid信息

在自身应用AndroidManifest.xml中添加开发者联盟创建应用时生成的appid信息,name为"com.huawei.hms.client.appid",value为"appid=",用自己注册的appid。

AndroidManifest.xml

android:name="com.huawei.hms.client.appid"

android:value="appid=******" />

3. 创建LocalSocket客户端并注册

应用启动,创建LocalSocket客户端,建议与系统LocalSocket服务器的通信通道,然后向系统注册。

创建LocalSocket客户端

ApiTest.java

public Boolean openLocalSocket() {

try {

Log.d(TAG, "Enter OpenSocket");

// 1.create socket, socketName is resmon

clientSocket = new LocalSocket();

clientSocketAddr = new LocalSocketAddress(NAME_SOCKET, LocalSocketAddress.Namespace.ABSTRACT);

// 2.connect server

clientSocket.connect(clientSocketAddr);

Log.i(TAG, "openLocalSocket success");

// 3.new Thread to receive msg from server

final BufferedReader readStream = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

new Thread(new Runnable() {

@Override

public void run() {

try {

String respMsg;

int readed = 0;

while (readed != -1) {

char[] revMsg = new char[BUFFER_SIZE];

char[] msgType = new char[2];

// 4.received msg from server, include msg head and body, head len is 42 Bytes

readed = readStream.read(revMsg, 0, BUFFER_SIZE);

/**

* 5. get msgType(MSGTYPE_BEGIN_INDEX = 6,

* MSGTYPE_END_INDEX = 7),

* revMsg[MSGTYPE_BEGIN_INDEX] == 1 is reqMsg,

* revMsg[MSGTYPE_BEGIN_INDEX] == 2 is respMsg

*/

msgType[0] = revMsg[MSGTYPE_BEGIN_INDEX];

msgType[1] = revMsg[MSGTYPE_END_INDEX];

int bodyBegin = RESP_HEAD_LEN;

if (msgType[0] == 1) {

bodyBegin = REQ_HEAD_LEN;

}

/**

* 6. get body msg. bodyBegin is REQ_HEAD_LEN=44 or RESP_HEAD_LEN=46

* and translate to json string

*/

respMsg = String.valueOf(revMsg, bodyBegin, revMsg.length - bodyBegin);

respMsg = respMsg.trim();

MainActivity.MyHandler handler = MainActivity.getMyHandler();

Message msg = new Message();

msg.what = MSG_RECEIVE;

msg.obj = respMsg;

handler.sendMessage(msg);

Log.d(TAG, "---------> revMsg is : " + respMsg);

}

} catch (IOException e) {

Log.d(TAG, e.getMessage());

}

}

}).start();

} catch (IOException e) {

Log.d(TAG, e.getMessage());

return false;

}

return true;

}

注册部分:

ApiTest.java

public Boolean registerApp() {

try {

if (clientSocket == null) {

Log.w(TAG, "please open socket first!!!");

return false;

}

MsgHeader msgHeader = new MsgHeader();

// 1.generate msg head,hdrData is byte[]

byte[] hdrData = msgHeader.getNewHeaderMsg(registerMessage.length());

// 2.generate msg head and body, body is as this:

byte[] msgByte = registerMessage.getBytes();

byte[] newByte = concatByte(hdrData, msgByte);

writeSocket(newByte);

Log.d(TAG, "send msg: " + registerMessage);

} catch (IOException e) {

Log.d(TAG, e.getMessage());

return false;

}

return true;

}

4. 查询系统可用网络接口等信息

代码如下:

ApiTest.java

public Boolean getAvailableNetInterface() {

try {

if (clientSocket == null) {

Log.e(TAG, "please open socket first");

return false;

}

MsgHeader msgHeader = new MsgHeader();

byte[] hdrData = msgHeader.getNewHeaderMsg(getAvailableNetInterfaceMessage.length());

Log.d(TAG, "hdrData = " + Arrays.toString(hdrData));

byte[] msgByte = getAvailableNetInterfaceMessage.getBytes();

byte[] newByte = concatByte(hdrData, msgByte);

Log.d(TAG, "newByte = " + Arrays.toString(newByte));

writeSocket(newByte);

Log.d(TAG, "send msg: " + getAvailableNetInterfaceMessage);

} catch (IOException e) {

Log.d(TAG, e.getMessage());

return false;

}

return true;

}

5. 应用结束,解除注册。

代码如下:

ApiTest.java

public Boolean unRegisterApp() {

try {

if (clientSocket == null) {

Log.w(TAG, "please open socket first");

return false;

}

MsgHeader msgHeader = new MsgHeader();

byte[] hdrData = msgHeader.getNewHeaderMsg(unRegisterMessage.length());

Log.d(TAG, "unRegisterApp hdrData = " + Arrays.toString(hdrData));

byte[] msgByte = unRegisterMessage.getBytes();

byte[] newByte = concatByte(hdrData, msgByte);

writeSocket(newByte);

Log.d(TAG, "send msg: " + unRegisterMessage);

} catch (IOException e) {

Log.d(TAG, e.getMessage());

return false;

}

return true;

}

养生小贴士

LOL后期最强ADC排行榜, 第一名站撸一切!
💡 小知识

LOL后期最强ADC排行榜, 第一名站撸一切!

📅 07-13 👍 374
深蹲训练:每天做多少个才合适?
💡 小知识

深蹲训练:每天做多少个才合适?

📅 01-09 👍 634
古稀之年意思
💡 小知识

古稀之年意思

📅 11-04 👍 370