




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第 1 页 共 31 页 android 云端综合信息查询系统云端综合信息查询系统 本章重点 android google map api mapactivity mapview 控件 android gps 定位服务 php web 技术 mysql 数据库 json 数据交换 第 2 页 共 31 页 1.1 实训的目的实训的目的 通过这个项目学习, 使学员掌握 android 平台中的 mapactivity、 menu 等有 关 ui 技术,gps 位置服务技术,httpclient 和 json 云端通信技术,php web 服务端技术以及 mysql 数据库。掌握 adb 等 android 调试工具的使用。 此为,通过完成一个完整的项目使学员了解软件开发周期过程、uml 常用 元素的含意,更能够增强学员的团队合作精神、沟通能力的培养、学会管理自己 的时间。 1.2 项目任务概述项目任务概述 1.2.1 项目背景项目背景 随着 3g 时代的到来,移动互联网成为 internet 下一个热点,其中庞大的计 算机系统可以为位于全世界任何可以使用卫星天线的位置的大量微型终端提供 服务。这种配置的无线远程特点即被称为云。 就像云到处移动和随风变化那样,这些微型手持设备的操作模式也是如此, 终端变得越来越小,功能越来越强,可移植性增强了许多,服务器的功能也越加 强大,通过软件虚拟化并根据使用收费,能更好地满足用户的数据需求。而 android 可以达到新的高度并让用户体验前所未有的移动计算。 那么基于 android 移动设备端查询需求越来越多, 再加上 google map 生动 形象的展示方式,给予用户更好的体验。 1.2.2 项目任务项目任务 本项目实现在 android 移动设备上查询宾馆、 饭店和银行等信息并在 google map 上显示。首先,利用 android 移动设备自带的 gps 定位,设置为地图中心 点,然后,根据用户的选择查询自己位置 10 公里以内的相关信息。信息是通过 一个远程 web 服务器查询出来,而这个远程 web 也是通过查询一个 mysql 数 据库获得的数据,再由 web 服务器返回给 android 移动端。 1.3 需求分析需求分析 用户可以使用该系统 实现查询宾馆、饭店和银行等信息。 第 3 页 共 31 页 1.3.1 总体用例图总体用例图 用户 参看地图 查询宾馆 查询饭店 查询银行 图 1 1.3.2 查看地图用例图查看地图用例图 用户 参看地图 图 2 1.3.3 查看地图业务流程查看地图业务流程 第 4 页 共 31 页 点击桌面图标进入系统 回到系统 显示google地图 缩放地图 显示查询结果 图 3 用户通过点击桌面本系统图标进入综合信息查询系统,进入系统需要显示 googlemap 地图,系统启动 gps 服务,如果能够通过 gps 获得定位信息,则 以该点作为中心点显示地图,如果获得不了 gps 服务,则以北京天安门为中心 点显示地图,点屏幕会出现放大按钮和缩小按钮,点击放大按钮地图放大。点击 缩小按钮地图缩小,滑动屏幕可以移动地图位置。 第 5 页 共 31 页 1.3.4 查询宾馆信息用例图查询宾馆信息用例图 用户 查询宾馆 图 4 1.3.5 查询宾馆信息业务流程查询宾馆信息业务流程 点击桌面图标进入系统 回到系统 选择查询宾馆菜单 在地图上标志出 查询到的宾馆 图 5 用户通过点击桌面本系统图标进入综合信息查询系统,进入系统需要显示 googlemap 地图。系统启动 gps 服务,如果能够通过 gps 获得定位信息,则 以该点作为中心点显示地图,如果获得不了 gps 服务,则以北京天安门为中心 第 6 页 共 31 页 点显示地图。查询功能是在这个地图页面点击“宾馆查询”菜单进入的,查询出 在此地点 10 公里以内的宾馆显示在地图上,并且准确的标注在地图上。如果没 有符合条件的数据则显示原地图。 1.3.6 查询饭店信息用例图查询饭店信息用例图 用户 查询饭店 图 6 1.3.7 查询饭店信息业务流程查询饭店信息业务流程 点击桌面图标进入系统 回到系统 选择查询饭店菜单 在地图上标志出 查询到的饭店 图 7 用户通过点击桌面本系统图标进入综合信息查询系统,进入系统需要显示 googlemap 地图。系统启动 gps 服务,如果能够通过 gps 获得定位信息,则 第 7 页 共 31 页 以该点作为中心点显示地图,如果获得不了 gps 服务,则以北京天安门为中心 点显示地图。查询功能是在这个地图页面点击“饭店查询”菜单进入的,查询出 在此地点 10 公里以内的宾馆显示在地图上,并且准确的标注在地图上。如果没 有符合条件的数据则显示原地图。 1.3.8 查询银行信息用例图查询银行信息用例图 用户 查询银行 图 8 1.3.9 查询银行信息业务流程查询银行信息业务流程 点击桌面图标进入系统 回到系统 选择查询银行菜单 在地图上标志出 查询到的银行 图 9 用户通过点击桌面本系统图标进入综合信息查询系统,进入系统需要显示 googlemap 地图。系统启动 gps 服务,如果能够通过 gps 获得定位信息,则 第 8 页 共 31 页 以该点作为中心点显示地图,如果获得不了 gps 服务,则以北京天安门为中心 点显示地图。查询功能是在这个地图页面点击“银行查询”菜单进入的,查询出 在此地点 10 公里以内的宾馆显示在地图上,并且准确的标注在地图上。如果没 有符合条件的数据则显示原地图。 1.4 系统设计系统设计 1.4.1 网络拓扑图网络拓扑图 internet apache http 服务器服务器 防火墙 mysql 数据库服务器 局域网 图 10 1.4.2 平台及软件要求平台及软件要求 android 移动端:android google api 7 http 服务器:apache2.2 以上 php5 以上 数据库服务器:mysql5.0 以上 1.4.3 android 客户端查看地图客户端查看地图 ui 示意图示意图 第 9 页 共 31 页 图 11 图 12 图 13 1.4.4 android 客户端查看地图客户端查看地图 ui 页页面项目说明面项目说明 1. mapview 控件。 第 10 页 共 31 页 2. menu 控件:有三个菜单项,即“查询宾馆” 、 “查询饭店”和“查询银 行” 。 1.4.5 android 客户端查看地图类图客户端查看地图类图 mapactivity (maps) queryactivity - - - - * * findhotel_menu_id findrestaurant_menu_id findbank_menu_id map centerpoit locationmanager : int : int : int : mapview : geopoint : locationmanager = menu.first = menu.first + 1 = menu.first + 2 = null = null = null + # + + - oncreate (bundle savedinstancestate) isroutedisplayed () oncreateoptionsmenu (menu menu) onoptionsitemselected (menuitem item) findbyinfo (int flag) : void : boolean : boolean : boolean : void sitesoverlay 图 14 查询页面 queryactivity 需要继承 com.google.android.maps.mapactivity, 并 重 写oncreate 、 isroutedisplayed 、 oncreateoptionsmenu 、 onoptionsitemselected 和 isroutedisplayed。 oncreate 方法是查询页面的初始化方法,在这个方法中我们要初始化 页面中 mapview 等控件信息。 isroutedisplayed 方法,知道当前是否正在显示任何一种路线信息,例 如一组驾车方向指示。 oncreateoptionsmenu 方法是列表页面中初始化菜单信息。 onoptionsitemselected 方法是列表页面中处理菜单点击事件。 findbyinfo 方法是按照条件查询符合条件地点信息方法,参数是查询标 志(1 代表宾馆,2 代表饭店,3 代表银行) ,该方法为私有方法。 第 11 页 共 31 页 itemizedoverlay (maps) queryactivity:sitesoverlay - - items marker : list : drawable = null = null + # + # + + sitesoverlay (drawable marker, list items) createitem (int i) draw (canvas canvas, mapview mapview, boolean shadow) ontap (int i) ontouchevent (motionevent event, mapview mapview) size () : overlayitem : void : boolean : boolean : int 图 15 图 1.6 的类图是在 google map 上设置标志的图层类,它是 queryactivity 的 内 部 类 , 该 类 继 承 了 com.google.android.maps.itemizedoverlay 类 , com.google.android.maps.itemizedoverlay类 是 一 个 集 合 类 , 是 一 个 com.google.android.maps.overlayitem集合, com.google.android.maps.overlayitem 是代表 google map 的一个标志。 sitesoverlay 成员变量: private list items,items 是 overlayitem 标志集合对象。 private drawable marker; marker 是一个标志使用的图标。 sitesoverlay 构造方法: sitesoverlay(drawable marker, list items)构造方法, 是 用来初始化成员变量 items 和 marker。 sitesoverlay 成员方法: overlayitem createitem(int i)方法,通过索引创建一个 overlayitem 对 象。 void draw(canvas canvas, mapview mapview, boolean shadow) 方 法,是绘制地图上图层的方法。 boolean ontap(int i) 方法,是触摸地图上的标志时候触发的方法。 boolean ontouchevent(motionevent event, mapview mapview) 方 法,是触摸地图时候触发的方法。 int size()方法,返回标志点的个数。 第 12 页 共 31 页 1.4.6 android 客户端查询宾馆客户端查询宾馆 ui 示意图示意图 图 16 图 17 1.4.7 android 客户端查询宾馆客户端查询宾馆 ui 项目说明项目说明 1. mapview 控件。 2. menu 控件:有三个菜单项,即“查询宾馆” 、 “查询饭店”和“查询银 行” 。 3. itemizedoverlay 图层,标志地图标记。 1.4.8 android 客户端查询宾馆类图客户端查询宾馆类图 类图同 android 客户端查看地图类图。 第 13 页 共 31 页 1.4.9 android 客户端查询饭店客户端查询饭店 ui 示意图示意图 图 18 1.4.10 android 客户端查询饭店客户端查询饭店 ui 项目说明项目说明 1. mapview 控件。 2. menu 控件:有三个菜单项,即“查询宾馆” 、 “查询饭店”和“查询银 行” 。 3. itemizedoverlay 图层,标志地图标记。 1.4.11 android 客户端查询饭店类图客户端查询饭店类图 类图同 android 客户端查看地图类图。 第 14 页 共 31 页 1.4.12 android 客户端查询银行客户端查询银行 ui 示意图示意图 图 19 1.4.13 android 客户端查询银行客户端查询银行 ui 项目说明项目说明 1. mapview 控件。 2. menu 控件:有三个菜单项,即“查询宾馆” 、 “查询饭店”和“查询银 行” 。 3. itemizedoverlay 图层,标志地图标记。 1.4.14 android 客户端查询银行类图客户端查询银行类图 类图同 android 客户端查看地图类图。 第 15 页 共 31 页 1.5 数据库设计数据库设计 服务器端数据库采用 mysql5.0 数据库。在这个数据库中只有一个表 location 表。 地点信息 编号 地名 经度 纬度 类型 说明 bigint varchar(200) decimal(12,8) decimal(12,8) int varchar(500) 图 20 数据库名称 myquery 完成日期 版本 设计者 审核者 1.0 表名 location 实体名称 地点信息 主键 locationid 索引表名称和 索引字段名称 序号 项目名称 项目说明 类型(宽度) 位数 属性 备注 1 locationid 编号 bigint p、n 2 name 地名 varchar 200 n 3 longitude 经度 decimal(12,8) 12 n 4 latitude 纬度 decimal(12,8) 100 n 5 type 类型 int 6 des 说明 varchar 50 : u:唯一(unique) p:主键(primary) n:非空(not null) f:外键(foreign) d:默认(default) i: 自增长 (auto increment) 第 16 页 共 31 页 1.6 系统实现代码解析系统实现代码解析 1.6.1 android 客户端系统配置文件客户端系统配置文件 androidmanifest.xml 是系统中的配置文件,我们需要将系统中用到的 android 组件都在这个文件中注册,其中.queryactivity 是启动屏幕显示的 mapactivity。为了在系统中使用 google map api 需要添加标签。 为了访问 google map 必须 为系统开发访问internet权限:。为了开 启 gps 定位服务,必须开发 gps 权限: 。 代码清单代码清单 1 androidmanifest.xml 第 17 页 共 31 页 1.6.2 android 客户端布局文件客户端布局文件 查询页面布局采用 xml 形式,文件放置在reslayoutmain.xml 中。页面中 要声明一个 mapview 地图控件,采用 relativelayout 布局方式,可以自动适应 屏幕大小的变化。 google map api key 在模拟器中正常使用 google map 之前需要提供一个 apikey (密钥), 否则在 mapview 中只能看到网格,没有任何地图信息,步骤如下: 找到 keystore 证书文件; 生成 md5 认证指纹; 生成 google map api key。 找到 keystore 证书文件: keystore 是一个密码保护的文件,用来存储密钥和证书。eclipse 提供了一 个临时 debug.keystore 文件。而实际发布要自己生成。 代码清单代码清单 2 main.xml 布局文件布局文件 第 18 页 共 31 页 图 21 生成 md5 认证指纹: 启动 command prompt. 使用 keytool 命令(keytool.exe 存放在 java/bin 目录下)。完整的命令行: c:keytool -list -keystore (回车输入密码:android) 生成 google map api key: 进入/intl/zh-cn/android/maps-api-signup.html这是 google map api key 在线生成网站。 第 19 页 共 31 页 图 22 点击生成按钮后,我们还要输入你的 google 账户并且登录,如果没有 google 账户则需要申请一个。 第 20 页 共 31 页 图 23 此外, 我们还要注意的是这个 key 是没有通用性的, 不同的电脑会生成不同 的 key,因此要求学生自己按照上面的这几个步骤生成 key。 1.6.3 android 客户端地图显示骨架代码客户端地图显示骨架代码 在 android 客户端使用 google map api,必须继承 mapactivity 类,并在 androidmanifest.xml 文件中配置相应的信息,已经在 android 客户端系统配置 文件部分介绍过了这里就不再介绍了。 public class queryactivity extends mapactivity private mapview map = null; private geopoint centerpoit = null; private locationmanager locationmanager = null; override public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate); 代码清单代码清单 3 android 客户端地图显示骨架代码客户端地图显示骨架代码 第 21 页 共 31 页 如上代码段所示,要开发使用 google map 应用程序,我们需要上面代码清 单所示的骨架代码: 获得 mapview 控件; 设置缩放级别; 设置缩放按钮; 设置地图中心点; 1.6.4 android 客户端有关菜单部分代码客户端有关菜单部分代码 在菜单部分提供三个菜单项目,在 android 菜单使用时需要重写两个方法 oncreateoptionsmenu 和 onoptionsitemselected。oncreateoptionsmenu 主 要作用是提供菜单初始化的,onoptionsitemselected 是提供菜单事件处理的。 setcontentview(r.layout.main); map = (mapview) findviewbyid(r.id.map); map.getcontroller().setzoom(12); map.setbuiltinzoomcontrols(true); / 天安门 centerpoit = new geopoint(int) (39.904667 * 1e6), (int) (116.408198 * 1e6); / 地理坐标 map.getcontroller().animateto(centerpoit); private static final int findhotel_menu_id = menu.first; private static final int findrestaurant_menu_id = menu.first + 1; private static final int findbank_menu_id = menu.first + 2; override 代码清单代码清单 4 有关菜单部分代码有关菜单部分代码 第 22 页 共 31 页 1.6.5 android 客户端客户端 google map 增加标志点增加标志点 地图中的标志点是通过自动实现一个 itemizedoverlay 内部 类实现的,它一组标志点(overlayitem)的集合。 public boolean oncreateoptionsmenu(menu menu) super.oncreateoptionsmenu(menu); menu.add(0, findhotel_menu_id, 1, r.string.findhotel).seticon( r.drawable.menu_hotel); menu.add(0, findrestaurant_menu_id, 2, r.string.findres).seticon( r.drawable.menu_restaurant); menu.add(0, findbank_menu_id, 3, r.string.findbank).seticon( r.drawable.menu_bank); return true; override public boolean onoptionsitemselected(menuitem item) switch (item.getitemid() case findhotel_menu_id: findbyinfo(1); break; case findrestaurant_menu_id: findbyinfo(2); break; case findbank_menu_id: findbyinfo(3); break; return super.onoptionsitemselected(item); private class sitesoverlay extends itemizedoverlay private list items = null; private drawable marker = null; 代码清单代码清单 5 android 客户端客户端 google map 增加标志点增加标志点 第 23 页 共 31 页 public sitesoverlay(drawable marker, list items) super(marker); this.marker = marker; this.items = items; populate(); override protected overlayitem createitem(int i) return (items.get(i); override public void draw(canvas canvas, mapview mapview, boolean shadow) super.draw(canvas, mapview, shadow); boundcenterbottom(marker); /* * 点击坐标点时候触发的事件 */ override protected boolean ontap(int i) toast.maketext(queryactivity.this, items.get(i).gettitle(), toast.length_short).show(); return (true); override public boolean ontouchevent(motionevent event, mapview mapview) int coor_x = (int) event.getx(); int coor_y = (int) event.gety(); centerpoit = mapview.getprojection().frompixels(coor_x, coor_y); return super.ontouchevent(event, mapview); override public int size() return (items.size(); 第 24 页 共 31 页 其中,ontap 方法是在屏幕上触摸某个标志,是触发事件。size 方法返回 图层中地标的个数。createitem 方法返回图层地标对象。而 ontouchevent 并不 是必须重写的方法,重写这个方法目的就是在我们移动屏幕的时候,能够重新定 义屏幕的中心点。在系统刚刚启动的时候地图中心点是通过 gps 获得的,但是 用户可能移动屏幕, 这个时候用户的位置并没有变化, gps 仍然是原来的位置, 可是屏幕上的地图移动了。 所以在这里我们通过这个方法获得用户移动之后的屏 幕点作为地图中心点。这里需要注意的是屏幕坐标需要转换成为经纬度坐标: 代 码:mapview.getprojection().frompixels(coor_x, coor_y);可以实现这个转换。 1.6.6 android 客户端客户端 gps 服务服务 本系统在进入的时候需要开启 gps 服务,并通过 gps 定位当前位置作为 地图中心点。 locationmanager = (locationmanager) getsystemservice(context.location_service); locationmanager.requestlocationupdates(“gps“, 1000, 0, new locationlistener() override public void onlocationchanged(location arg0) override public void onproviderdisabled(string provider) override public void onproviderenabled(string provider) override public void onstatuschanged(string provider, int status, bundle extras) ); location location = locationmanager.getlastknownlocation(“gps“); 代码清单代码清单 6 android 客户端客户端 gps 服务服务 第 25 页 共 31 页 定位服务是通过 getsystemservice(context.location_service)代码 获得的,getsystemservice 可以获得多种手机服务,定位服务只是其中的一种 而 已 。 locationmanager.requestlocationupdates(“gps“, 1000, 0, new locationlistener()实现定位服务的注册, 其中 gps 代表这是通过 gps 提供位置 服务,1000 代表移动距离,0 代表时间间隔,这个两个参数都是定位服务触发 周期。 locationmanager.getlastknownlocation(“gps“)可以获得最后的 gps 位 置。 1.6.7 android 客户端客户端 http 请求与应答请求与应答 android 客户端是可以通过 httpclient 类库实现 http 请求与应答的, httpclient 类库是 apache 提供的,专门用于通过 java 程序发出 http 请求与 应答,它集成与 android api 中,因此我们不用担心要额外引入其它的类库而引 起问题。 if (location != null) / 纬度 double lat = location.getlatitude(); / 经度 double lng = location.getlongitude(); centerpoit = new geopoint(int) (lat * 1e6), (int) (lng * 1e6); / 地理 坐标 else / 天安门 centerpoit = new geopoint(int) (39.904667 * 1e6), (int) (116.408198 * 1e6); / 地理坐标 map.getcontroller().animateto(centerpoit); string url = “01:8080/myqueryserver/query.php“; httpclient httpclient = new defaulthttpclient(); httppost httppost = new httppost(url); arraylist nvps = new arraylist(); nvps.add(new basicnamevaluepair(“lng“, string.valueof(centerpoit .getlongitudee6() / 1e6); 代码清单代码清单 7 android 客户端客户端 http 请求与应答请求与应答 第 26 页 共 31 页 指定请求的 url 时候,我们要注意的是必须要知道 ip 地址是不是 localhost 或 。在发送 post 请求参数的时候使用 basicnamevaluepair 对象, 并把这些对象放置到一个 arraylist 集合对象中。 httpresponse response = httpclient.execute(httppost)语句是请求的关键,它意味着向服务器发出请求。 请求对象和应答对象都有 entity,通过这些 entity 我们可以指定字符集等等 信息,以及从应答对象中提取信息: bufferedreader br = new bufferedreader(new inputstreamreader(entityout.getcontent(), “gbk“); nvps.add(new basicnamevaluepair(“lat“, string.valueof(centerpoit .getlatitudee6() / 1e6); nvps.add(new basicnamevaluepair(“type“, string.valueof(flag); urlencodedformentity entityin; try entityin = new urlencodedformentity(nvps); httppost.setentity(entityin); httpresponse response = httpclient.execute(httppost); httpentity entityout = response.getentity(); if (entityout != null) bufferedreader br = new bufferedreader(new inputstreamreader( entityout.getcontent(), “gbk“); stringbuffer sb = new stringbuffer(); string line; while (line = br.readline() != null) sb.append(line); catch (exception e) . 第 27 页 共 31 页 1.6.8 android 客户端与服务器之间数据交换格式客户端与服务器之间数据交换格式 应用程序可以通过下面格式实现数据交换: plain text,纯文本 xml (extensible markup language) ,可扩展的标记语言。 json (javascript object notation),是一种轻量级的数据交换格式 。 本系统采用 json 数据格式。json (javascript object notation) 是一种 轻量级的数据交换格式。易于人阅读和编写,同时也易于机器解析和生成。它基 于 javascript(standard ecma-262 3rd edition - december 1999)的一个子 集。 json 采用完全独立于语言的文本格式,但是也使用了类似于 c 语言家族 的习惯 (包括 c, c+, c#, java, javascript, perl, python 等) 。 这些特性使 json 成为理想的数据交换语言。 json 建构于两种结构: “名称/值”对的集合(a collection of name/value pairs) 。不同的语言 中,它被理解为对象(object) ,纪录(record) ,结构(struct) ,字典 (dictionary) ,哈希表(hash table) ,有键列表(keyed list) ,或者关 联数组 (associative array) 。 值的有序列表(an ordered list of values) 。在大部分语言中,它被理解 为数组(array) 。 对象是一个无序的“ 名称/值对”集合。一个对象以“” (左括号)开始, “” (右括号)结束。每个“名称”后跟一个“:” (冒号) ; “ 名称/值 对”之 间使用“,” (逗号)分隔。 如图 24 所示 图 24 值(value)可以是双引号括起来的字符串(string) 、数值(number)、true、 false、 null、对象(object)或者数组(array) 。这些结构可以嵌套。 如图 25 所示: 第 28 页 共 31 页 图 25 数组是值(value)的有序集合。一个数组以“” (左中括号)开始, “” (右 中括号)结束。值之间使用“,” (逗号)分隔。 如图 26 所示: 图 26 1.6.9 android 客户端接收服务器客户端接收服务器 json 数据数据 json 在很多语言中都是支持的,并提供了对应读写类库包。而在 android api 中也集成关于处理 json 类库org.json。我们可以在 android 通过 java 来解析 json 对象。本系统中我们是从服务器端请求回来 jso
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨云平台互操作研究-洞察阐释
- 太赫兹频段6G网络的信道感知与优化-洞察阐释
- 牛的健康问题图像识别诊断-洞察阐释
- 2025-2030中国非瓦楞纸箱行业市场现状供需分析及投资评估规划分析研究报告
- 基于视觉识别的摩托车障碍物检测与避障-洞察阐释
- 超现实交互技术在家电中的应用-洞察阐释
- 行业数字化转型中的风险评估-洞察阐释
- 农业文化与乡村振兴策略研究-洞察阐释
- 戏剧跨界合作模式-洞察阐释
- 基于威胁评估的5G物联网安全风险控制-洞察阐释
- 公司“三重一大”决策制度实施办法
- 商务谈判说课精课件
- 微信视频号代运营合同范本
- 【基于近五年数据的鸿星尔克财务报表分析15000字】
- CNN 卷积神经网络介绍
- 北大强基试题
- 把未来点亮歌词打印版
- 四级下册英语期末测试卷深圳版
- 健康安全危险源识别、风险评估和风险控制表
- 摩托车不过户免责协议(2篇)
- GB 2715-2016食品安全国家标准粮食
评论
0/150
提交评论