2021年3月3日更新
导入需要导入的资源
assets
和libs
文件夹
assets
:为Android Studio新增的资源文件夹。将需要的模块放置在app
-src
-main
文件夹中,和java
、res
为同级目录
libs
:可放置离线jar包,应将文件夹创建\复制到工程目录app
根目录下(如果已有libs目录,应将将提供lib文件夹得资源包复制到你的工程下的app\libs
目录下)。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HvT4UAof-1615865297231)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20210302090149.png)]
将提供的libs文件夹内的所有文件/文件夹复制到工程目录下的libs文件夹内
Modules
,点击侧栏中的加号[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rnMx0d0S-1615865297236)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20201111190123.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0T9JpxZ-1615865297239)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20201111190323.png)]
当左边libs文件夹内的jar包出现三角时,证明导入成功,可以使用了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vKKFXOET-1615865297241)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20201111191722.png)]
需要在Adnroid Studio内引用.so文件,在工程app文件夹的根目录中找到build.gradle
,并在内添加如下字段:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-epG1PWHZ-1615865297242)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20210302091748.png)]
找到提供的assets
文件夹,将其复制到工程目录的app\src\main
目录下,如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2yf1Ucxn-1615865297243)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20210302092220.png)]
将提供的libs文件夹内的所有文件/文件夹复制到工程目录下的libs文件夹内
jar包放入libs文件夹内后,在需要导入的jar包上右键,选择“Add As Library......”(如图)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pB5W1kt3-1615865297244)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20210302090516.png)]
看到左边libs文件夹内的jar包出现三角时,证明导入成功,可以使用了
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQC3SiuF-1615865297244)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20201111191722.png)]
需要在Adnroid Studio内引用.so文件,在工程app文件夹的根目录中找到build.gradle
,并在内添加如下字段:
sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ew2uXFO4-1615865297245)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20210302091748.png)]
找到提供的assets
文件夹,将其复制到工程目录的app\src\main
目录下,如图:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q2jm2ouv-1615865297246)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20210302092220.png)]
创建工程时就可以选择版本。如果忘记选择的是什么版本,可按照本教程检查/更改。
硬件、版本限制为最低SDK版本不能低于15,即Android 4.0.3
按下Ctrl + Alt + Shift + S
快捷键,打开APP配置(如图),检查Min SDK版本是不是15。设置完成后点击OK
即可。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Q1Bv9wF5-1615865297247)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20201111192215.png)]
或者打开app目录
下的build.gradle
,修改配置内的"minSdkVersion"
,修改后要点击"Sync"
同步配置
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VtRpLTjp-1615865297248)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20210302093125.png)]
因为企想提供的
嵌入式Android开发套件
最高版本是Android 4.0.3
即SDK 15
依据个人习惯
按下Ctrl + Alt + S
或点击左上角File
菜单,选择Settings
打开Android Studio设置(如图),在左上搜索栏输入KeyMap
,设置按键风格,更改为Eclipse
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WlwbVeUZ-1615865297249)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20201111193058.png)]
在左上角搜索Auto
,在侧栏二级菜单找到Editor - General - Code Completion
,设置代码自动提示补全。
需要注意的是:取消勾选Match case,代表关闭大小写区分,可以更方便。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9X9r8CSd-1615865297250)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/QQ%E6%88%AA%E5%9B%BE20201111193708.png)]
注:各个版本界面不同,但操作大体相同
Start a new Android Studio project
即可开始第一个 Android 程序的开发。
第一个创建工程(Start a new Android Studio project)
,来到如下图界面(各个版本界面不同),此界面主要用于给APP命名、APP的包名设置、工程文件存储目录。选择好后点击Next来到下一步。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QotzUmh5-1615865297251)(https://yp.nyanon.online/data/User/admin/home/image/gallery/blog/20201110/%E6%96%B0%E5%BB%BA%E6%96%87%E4%BB%B6%E5%A4%B9/%E5%9B%BE%E7%89%872.png)]
"Project"
显示更多内容。方法:SocketClient.getInstance().CreatConnect(); |
---|
简介:使用Socket进行服务器连接 |
参数:无 |
返回值:String类型,“0”为成功,“1”为失败 |
调用示例: |
//设置用户名、密码、IP地址
ControlUtils.setUser(bizi_user, bizi_pass, SocketClient.ip);
//创建链接
SocketClient.getInstance().creatConnect();
//获取链接状态
SocketClient.getInstance().login(new LoginCallback() {
@Override
public void onEvent(final String s) {
//新建可操作UI的线程
runOnUiThread(new Runnable() {
@Override
public void run() {
if (s.equals(ConstantUtil.Success)) {
//成功
} else if (s.equals(ConstantUtil.Failure)) {
//失败
} else {
//出现未知错误
}
}
});
}
});
方法:control(String SensorType,String BoardId,String CmdCode,String Channel,String Command)翻译:控制指令(传感器类型,传感器板号ID,指令,通道,指令) |
---|
简介:发送单控控制指令 |
参数:SensorType——设备类型BoardId——板号CmdCode——cmd指令Channel——通道Command——开关指令 |
返回值(如果需要使用):boolean类型 true为成功 false为失败; |
调用示例: |
ControlUtils.control(ConstantUtil.RelayType, "10",
ConstantUtil.CmdCode_1,
ConstantUtil.Channel_ALL,
ConstantUtil.Open);
方法:ControlUtils.getData();Controlutils.getFaceData(); |
---|
简介:getData()//获取设备数据getFaceData()//获取打卡信息 |
参数:DeviceBeangetName()//打卡姓名getTime()//打卡时间getDevice()//获取设备列表信息getSensorType()//获取设备类型getValue()//获取值getBoardId//获取板号 |
返回值:onResult(final DeviceBean,Device bean)。返回一个方法,内部值需要使用上面的参数自取 |
调用示例: |
//获取数据
ControlUtils.getData();
//获取人脸数据
ControlUtils.getFaceData();
//创建链接(不知道能不能用)
SocketClient.getInstance().creatConnect();
//开始从服务器获取数据
SocketClient.getInstance().getData(new DataCallback<DeviceBean>() {
@Override
public void onResult(final DeviceBean getdata) {
//新建可操作UI的线程
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
//使用try防止报错闪退
try {
//获取打卡ID
if (!TextUtils.isEmpty(getdata.getName())) {
AppConfig.card_name = getdata.getName();
}
//获取打卡时间
if (!TextUtils.isEmpty(getdata.getTime())) {
AppConfig.card_time = getdata.getTime();
}
if (getdata.getDevice().size() > 0) {
DiyToast.showToast(activity, "当前已装载:"+getdata.getDevice().size() + "个设备");
for (int i = 0; i < getdata.getDevice().size(); i++) {
/**
* 获取传感器状态
*/
//获取温湿度
if (getdata.getDevice().get(i).getBoardId().equals(BORDID_TEMP_HUM)) {
if (getdata.getDevice().get(i).getSensorType().equals(ConstantUtil.Temperature)) {
//温度
temp = Float.valueOf(getdata.getDevice().get(i).getValue());
} else {
//湿度
hum = Float.valueOf(getdata.getDevice().get(i).getValue());
}
}
if (getdata.getDevice().get(i).getBoardId().equals(BORDID_ILL)) {//光照度
ill = Float.valueOf(getdata.getDevice().get(i).getValue());
}
if (getdata.getDevice().get(i).getBoardId().equals(BORDID_SMO)) {//烟雾
smo = Float.valueOf(getdata.getDevice().get(i).getValue());
}
} catch (Exception e) {
//输出异常信息
e.printStackTrace();
}
}
});
}
});