下面我们就开始讲解具体的开发步骤
1.首先你需要在机智云平台上创建一个项目,然后再创建一个产品,获得到产品的一些信息,后面开发App的时候要用。
2.下载开源的项目,并且吧开源的项目添加到android studio里面。(至于怎么下载安卓studio大家自己百度吧,这个软件可是不好下载的。)
开源项目下载地址
https://github.com/gizwits/GOpenSource_AppKit_Android_AS
3.吧项目导入android studio 里面,并且进行相关的配置,如果你只是想实现简单的收发数据,那么主要用到的文件只有三个
我们在分别介绍一下这三个文件
(1)当你在android studio 里面导入开源的项目以后,首先就要进入配置文件里面进行配置,这时候需要下载一些第三的包,所以你要保证你的电脑联网!!!!,配置以后我们才可以运行起来文件,否则就换闪退
(2)界面的代码(前端),我就只是写了两个按钮和一个文本框
(3) 后端的程序编写,我就直接上代码了
package com.gizwits.opensource.appkit.ControlModule;
import com.gizwits.gizwifisdk.api.GizWifiDevice;
import com.gizwits.gizwifisdk.enumration.GizWifiErrorCode;
import com.gizwits.gizwifisdk.listener.GizWifiDeviceListener
import com.gizwits.opensource.appkit.R;
import com.gizwits.opensource.appkit.CommonModule.GosBaseActivity;
import android.app.ActionBar;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import java.util.concurrent.ConcurrentHashMap;
public class GosDeviceControlActivity extends GosBaseActivity {
//这里就是我机智云李阿敏那个设备的控制页面
/** The tv MAC */
private TextView tvMAC;
/** The GizWifiDevice device */
private GizWifiDevice device; //这个就是你云端对应的那个设备
/** The ActionBar actionBar */
ActionBar actionBar;
//******************************* 定义一下我自己的控件
private Button bt_send,bt_rece;
//******************************* 定义一下我自己设备在云端的数据流
private String light = "LightOn";
private String temp = "temp";
//找到发送消息的缓冲区,就是一个哈希表
//用于发送数据,只要把数据放到这里面数据就会被发送到云端
private ConcurrentHashMap<String , Object> map;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gos_device_control);
initDevice();
setActionBar(true, true, device.getProductName());
initView();
}
private void initView() {
tvMAC = (TextView) findViewById(R.id.tvMAC);
if (null != device) {
tvMAC.setText(device.getProductName());
}
//这个是初始化函数,因为oncreat方法里面引入了这个函数,所以吧点击事件写在这里面也是可以的
bt_send = (Button) findViewById(R.id.MyButton_send);
bt_rece = (Button) findViewById(R.id.MyButton_rece);
bt_send.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//首先要先对map进行初始化
map = new ConcurrentHashMap<>();
map.put(light , true) ; //put 方法里面采用键值对的形式,前面是云端定义的数据点,后面是数据点的值
device.write(map , 0);
}
});
bt_rece.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//首先要对map进行初始化
map = new ConcurrentHashMap<>();
// Toast.makeText(this ,"")
// map.put(temp , 111) ; //put 方法里面采用键值对的形式,前面是云端定义的数据点,后面是数据点的值
// device.write(map , 0);
}
});
}
private void initDevice() {
Intent intent = getIntent();
device = (GizWifiDevice) intent.getParcelableExtra("GizWifiDevice");
device.setListener(listener);
// Log.i("Apptest", device.getDid());
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
this.finish();
break;
}
return super.onOptionsItemSelected(item);
}
private GizWifiDeviceListener listener = new GizWifiDeviceListener() {
@Override
public void didReceiveData(GizWifiErrorCode result, GizWifiDevice device, ConcurrentHashMap<String, Object> dataMap, int sn) {
super.didReceiveData(result, device, dataMap, sn);
//先判断是否为正确回调
//if (result == GizWifiErrorCode.GIZ_SDK_SUCCESS) {
//} //
//********************************* 这样处理和显示数是非常不合理的,因为不能在主线程里面
//进行UI操作,可能会造成线程阻塞从而闪退 , 要使用hanlder机制,进行处理
Log.i("rec", "receive from deceive "+dataMap.toString());
Toast.makeText(GosDeviceControlActivity.this ,dataMap.toString() ,Toast.LENGTH_SHORT).show();
}
};
@Override
protected void onDestroy() {
//界面退出去以后关闭回调函数
device.setListener(null);
super.onDestroy();
}
}
如果要想使用上面的方法实现安卓对机智云的开发需要一定的安卓功底,当然如果你仅仅是学习硬件的,那么你越也可以直接采用下面的方法进行你自己的APP开发
首先呢,你需要在机智云平台上面创建一个你自己的项目,再创建一个产品,然后再创建一个虚拟设备,选择机智云会帮助你创建一个android studio 的项目包,导入安卓studio运行到你的手机上就可以使用了