登录后台

页面导航

2021年3月8日更新

Android入门学习路径(幕布、思维导图)

一、Android开始编程前置操作(导入jar包)

导入需要导入的资源

  1. 根据提供的库文件文件夹,找到"第三阶段文件"
  2. 找到"安卓库文件"文件夹,内含有assetslibs文件夹

    • 将这两个文件夹按照下面的要求复制到对应的文件夹:
    • assets:为Android Studio新增的资源文件夹。将需要的模块放置在app-src-main文件夹中,和javares为同级目录
    • libs:可放置离线jar包,应将文件夹创建复制到工程目录app根目录下(如果已有libs目录,应将将提供lib文件夹得资源包复制到你的工程下的 app\libs目录下)。


导入方法 一

将提供的libs文件夹内的所有文件/文件夹复制到工程目录下的libs文件夹内

  1. 点击Android Studio界面右上角"Project Structure"(如图)

  1. 在弹出的窗口中选择"File dependency"(如图)

    • 选择Modules,点击侧栏中的加号
    • 在弹出的选择框中拉到最底下,选择Import JARxxxxxxxxx
    • 点击Next进入第5步

  1. 在选择Next后,在下一页点击文件夹,在弹出框中选择企想提供的jar包,然后选择Finish按钮。需要注意的是,企想提供了三个jar包,需要分别导入三次。

  1. 左边libs文件夹内的jar包出现三角时,证明导入成功,可以使用了

  1. 需要在Adnroid Studio内引用.so文件,在工程app文件夹根目录中找到build.gradle,并在内添加如下字段:

    sourceSets {
    main {
      jniLibs.srcDirs = ['libs']
    }
    }

  1. 找到提供的assets文件夹,将其复制到工程目录的app\src\main目录下,如图:


导入方法 二

将提供的libs文件夹内的所有文件/文件夹复制到工程目录下的libs文件夹内

  1. jar包放入libs文件夹内后,在需要导入的jar包上右键,选择“Add As Library......”(如图)

  1. 看到左边libs文件夹内的jar包出现三角时,证明导入成功,可以使用了

  1. 需要在Adnroid Studio内引用.so文件,在工程app文件夹根目录中找到build.gradle,并在内添加如下字段:

    sourceSets {
    main {
      jniLibs.srcDirs = ['libs']
    }
    }

  1. 找到提供的assets文件夹,将其复制到工程目录的app\src\main目录下,如图:


二、Android Studio编译器设置相关

1. Android SDK版本

创建工程时就可以选择版本。如果忘记选择的是什么版本,可按照本教程检查/更改。

硬件、版本限制为最低SDK版本不能低于15,即Android 4.0.3

按下Ctrl + Alt + Shift + S快捷键,打开APP配置(如图),检查Min SDK版本是不是15。设置完成后点击OK即可。

或者打开app目录下的build.gradle,修改配置内的"minSdkVersion",修改后要点击"Sync"同步配置

因为企想提供的嵌入式Android开发套件最高版本是Android 4.0.3 SDK 15

2.快捷键设置

依据个人习惯

按下Ctrl + Alt + S 或点击左上角File菜单,选择Settings打开Android Studio设置(如图),在左上搜索栏输入KeyMap,设置按键风格,更改为Eclipse

3.自动填充相关设置

在左上角搜索Auto,在侧栏二级菜单找到Editor - General - Code Completion,设置代码自动提示补全。

需要注意的是:取消勾选Match case,代表关闭大小写区分,可以更方便。


三、使用Android Studio创建一个工程

注:各个版本界面不同,但操作大体相同

  1. 打开Android Studio。界面大体如下:

点击Start a new Android Studio project即可开始第一个 Android 程序的开发。

  1. 点击第一个创建工程(Start a new Android Studio project),来到如下图界面(各个版本界面不同),此界面主要用于给APP命名、APP的包名设置、工程文件存储目录。选择好后点击Next来到下一步。

  1. 选择对应的Android SDK版本。因为嵌入式开发套件(箱子)的版本是4.0.3,所以选择4.0.3版本(图文不一致,按照4.0.3为准)
    Minimum SDK 版本为 4.0.3(注意如果此版本号大于手机版本号时是无法在手机上安装的)。点击Next进入下一步。

  1. 进入到选择模板界面,一般选择Empty Activity(空模板),点击Next
  2. 按自己喜好填写 Activity 和 Layout 名称。点击 Finish
  3. 点击finsh后,Android Studio会正式创建一个工程,主界面如下图:

软件界面主要分为四部分。

  • 第一部分(1):这里显示了当前打开的文件目录。
  • 第二部分(2):这里显示了当前工程所有的文件,可通过右上角切换为"Project"显示更多内容。
  • 第三部分(3):这里是打开的源代码文件,编写代码的工作就是在这里完成的。
  • 第四部分(4):这里是Android Studio的工作栏,从左到右依次是“编译工程”、“App model”、“选择可运行的设备”、“运行工程”。

四、智能家居jar包改动部分

使用新的服务器连接方式

方法: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()//获取打卡信息
参数:
DeviceBean
getName()//打卡姓名
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();
                   }
          }
      });
    }
});