整个项目的文件结构图:
1.建立Azure云服务和Android Application的连接
public void sendMSGToBoard(String fuction) {
new Thread() {
@Override
public void run() {
try {
ServiceClient serviceClient = ServiceClient.createFromConnectionString(connectionString, protocol);
if (serviceClient != null) {
serviceClient.open();
FeedbackReceiver feedbackReceiver = serviceClient.getFeedbackReceiver();
if (feedbackReceiver != null) feedbackReceiver.open();
Message messageToSend = new Message(fuction);
messageToSend.setDeliveryAcknowledgement(DeliveryAcknowledgement.Full);
serviceClient.send(deviceId, messageToSend);
System.out.println("Message sent to device");
FeedbackBatch feedbackBatch = feedbackReceiver.receive(10000);
if (feedbackBatch != null) {
System.out.println("Message feedback received, feedback time: " + feedbackBatch.getEnqueuedTimeUtc().toString());
}
if (feedbackReceiver != null) feedbackReceiver.close();
serviceClient.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}.start();
}
(2)使用commandMSG作为命令的载体传输。
public class CommandMsg implements Serializable {
public String Name;
public Parameters Parameters;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public Parameters getParameter() {
return Parameters;
}
public void setParameter(Parameters param) {
this.Parameters = param;
}
public static class Parameters {
int Position;
String Color;
String Bright;
public String getBright() {
return Bright;
}
public void setBright(String bright) {
Bright = bright;
}
public String getValue() {
return Color;
}
public void setValue(String value) {
Color = value;
}
public int getPosition() {
return Position;
}
public void setPosition(int position) {
Position = position;
}
}
}
(3)使用FeedbackBatch 回调Command发送的状态:
FeedbackBatch feedbackBatch = feedbackReceiver.receive(10000);
if (feedbackBatch != null) {
System.out.println("Message feedback received, feedback time: " + feedbackBatch.getEnqueuedTimeUtc().toString());
}
if (feedbackReceiver != null) feedbackReceiver.close();
serviceClient.close();