基于android Studio的安卓软件接入机智云

文章主要讲解安卓接入机智云平台的方法,点击一个按钮实现数据的发送,点击另一个按钮实现数据的接收


我使用的方法是:使用一个机智云的开源框架,(相当于是一个协议栈),对源码进行修改然后,和配置,在添加上自己的代码就可以实现简单的功能了。

当然做安卓的开发还是需要有一定的安卓基础的,不过如果你实在不会安卓,仅仅是会硬件也没有关系,下面会有一些别的博主的视频,以及你可以自己在机智云上面建立一个虚拟的安卓app,然后机智云平台会自己吧你建立的安卓程序打包,然后你就可以在你的手机上面使用你建立的app了

不喜欢看文字的朋友大家可以直接去看这个博主的视频,里面讲解特别详细,(感谢这个博主),下面是链接,爱奇艺的视频

相关的视频
http://www.iqiyi.com/paopao/u/2343470149/video/
博主:andorid攻城狮小徐

在视频里面需要你下载一个安卓studio的开源项目,基于开源项目来开发程序
https://github.com/gizwits/GOpenSource_AppKit_Android_AS

androidStudio开发品台的机智云开发开源框架:只要在安卓studio里面导入这个开源框架,里面就已经集成好了机智云的一些功能,就相当于是一个协议栈,我们只需要根据自己的需要
进行修改就可以了

还有与之相关的博客
https://blog.csdn.net/xh870189248/article/details/75529253

下面我们就开始讲解具体的开发步骤

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运行到你的手机上就可以使用了

在这里插入图片描述

小白上路,如有不妥,望请见谅。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值