博舍

八核安卓工控主板在智能巡检机器人上的应用 安卓智能机器人ar功能在哪里打开的

八核安卓工控主板在智能巡检机器人上的应用

原标题:八核安卓工控主板在智能巡检机器人上的应用

随着人工智能技术的发展和成熟,以及物联网、云计算、5G技术的普及,以替代人工巡检为目的的智能巡检机器人已经应用到越来越多的领域。工厂生产线、机房、电力线路以及园区等很多需要定期、频繁巡查的生产环境,都有了智能巡检机器人的身影。

控制系统是智能巡检机器人的大脑,南京时仓科技打造了ARM架构的八核安卓工控主板ELF800E,产品小体积,高通8953芯片,CPU集成图形控制;板载内存,支持eMMC/TF存储;支持HDM+MIPI显示接口,支持高分辨率;支持千兆以太网/3G/4G/WIFI网络,支持蓝牙;提供丰富的I/O功能接口;支持看门狗功能,支持Android操作系统,具有高扩展性和高稳定性,低功耗设计,可无缝集成于智能巡检机器人的控制系统中。配置红外热成像仪、智能传感器、摄像头等模块化设备,完成对图像数据采集、存储和可视化实时反馈;

智能机器人的目的就是把人从简单重复的劳动中解放出来,智能机器人可以以远超人类的精度和责任心去完成巡检工作,真正的把人力解放出来去做更有价值的工作。据了解,目前世界上智能机器人已由研究进入产业化,发展速度非常惊人,目前中国已成为世界很大的机器人应用和消费国,而作为特种机器人代表的巡检机器人更是目前机器人行业发展领域的主打产品,它的发展前景不可限量。返回搜狐,查看更多

责任编辑:

安卓智能聊天机器人开发(二)

接上一篇文章《安卓智能聊天机器人开发(一)》,晚上继续写。

在上一篇文章中,已经实现了对网络数据的获取和处理封装,这篇文章来讲下如何嵌入到安卓应用中。

先看下效果图:

从上面两张图我们可以发现,这个聊天布局其实就是一个ListView,只不过它和传统的ListView有些区别,因为它使用了多Item样式布局

首先,先来分析下基础布局:

这个界面是由3个布局文件组成,分别是主布局,发送消息样式布局,接收消息样式布局

先来看下主布局:

这里是对应的主布局代码:

android:divider="@null"--去除ListView的Item分割线

167151623242532334243525354616263

再来看下消息布局:(由于消息布局只是左右两边方向的不同,这里只给出其中一个)

这是2个消息布局的代码:

126715162021252627283233383940464748126715162122293034353637414247484950

 

接下来看下关于ListView的自定义适配器,和往常一样自定义适配器需要继承BaseAdapter,并实现一些必须的方法

这里有个需要注意的是,因为传统的ListView是统一一个样式的,而这里的聊天布局是左右两边收发信息多Item样式

所以需要额外的多覆写2个方法:

1、getViewTypeCount--返回样式的种类数目

2、getItemViewType --给定类型标示符,便于在回调函数getView时让系统知道我们需要显示的哪个样式

代码里还提到了ViewHolder,这个是优化ListView加载速度的一种方法,关于这个知识点我整理一篇笔记《安卓开发笔记——ListView加载性能优化ViewHolder

》出来,不熟悉的朋友可以看看。

1packagecom.example.androidchat;23importjava.text.SimpleDateFormat;4importjava.util.List;56importcom.example.pojo.Msg;7importcom.example.pojo.Msg.Type;89importandroid.content.Context;10importandroid.view.LayoutInflater;11importandroid.view.View;12importandroid.view.ViewGroup;13importandroid.widget.BaseAdapter;14importandroid.widget.TextView;15/**16*17*ListView适配器18*19*/20publicclassChatAdapterextendsBaseAdapter{2122privateListdata;23privateLayoutInflaterinflater;//布局工厂,可以把res/layout的xml布局文件转换成view对象2425publicChatAdapter(Contextcontext,Listdata){26inflater=LayoutInflater.from(context);27this.data=data;28}2930@Override31publicintgetCount(){32returndata.size();33}3435@Override36publicObjectgetItem(intposition){37returndata.get(position);38}3940@Override41publiclonggetItemId(intposition){42returnposition;43}4445@Override46publicViewgetView(intposition,ViewconvertView,ViewGroupparent){47Msgmessage=data.get(position);48ViewHolderviewHolder=null;49if(convertView==null){//未加载布局文件对象50//可以通过getItemViewType所定义的标识来设定对应的item样式51if(getItemViewType(position)==0){//接收信息52viewHolder=newViewHolder();53convertView=inflater.inflate(R.layout.send_msg,null);54viewHolder.time=(TextView)convertView55.findViewById(R.id.receivetime);56viewHolder.msg=(TextView)convertView57.findViewById(R.id.receivemsg);58}else{59viewHolder=newViewHolder();60convertView=inflater.inflate(R.layout.receive_msg,null);61viewHolder.time=(TextView)convertView62.findViewById(R.id.sendtime);63viewHolder.msg=(TextView)convertView64.findViewById(R.id.sendmsg);65}66convertView.setTag(viewHolder);67}else{//已经存在布局文件对象68viewHolder=(ViewHolder)convertView.getTag();69}7071//设置数据72SimpleDateFormatdateFormat=newSimpleDateFormat(73"yyyy-MM-ddHH:mm:ss");74viewHolder.time.setText(dateFormat.format(message.getTime()));75viewHolder.msg.setText(message.getMsg());76returnconvertView;77}7879/**80*由于此处我们要返回2种ListView的Item样式,需要再额外多覆写2个方法81*(1)、getItemViewType(intposition)给定类型标示符82*(2)、getViewTypeCount()类型数量83*/84@Override85publicintgetItemViewType(intposition){86Msgmessage=data.get(position);87if(message.getType()==Type.INCOME){88return0;//如果消息类型为接收,则值为089}90return1;//如果消息类型为发送,则值为191}9293@Override94publicintgetViewTypeCount(){95return2;96}9798privatefinalclassViewHolder{99TextViewtime;//消息时间100TextViewmsg;//消息内容101}102103}

 

然后就是主程序代码了:

这里就没什么好说的了,网络数据获取工具类包括ListView的适配器类在之前已经提过,这里就只剩下调用了。

注意点有3:

1、那就是在UI主线程里不能直接取获取网络数据,这里我们需要另开一个子线程去获取,然后在通过Handler去更新UI界面。

2、当数据源发生更新的时候,需要在UI主线程去操作,而不是子线程,还有就是不应该去重新设置Adapter,只需要去调用Adapter的notifyDataSetChanged()就行。

3、记得设置下ListView的setSelection选项,便于焦点自动往下拉。

不在UI主线程里做耗时操作,会使得UI现成阻塞。不在子线程里去更新UI界面,会导致应用程序无响应。

1packagecom.example.androidchat;23importjava.util.ArrayList;4importjava.util.Date;5importjava.util.List;67importandroid.app.Activity;8importandroid.os.Bundle;9importandroid.os.Handler;10importandroid.os.Message;11importandroid.view.View;12importandroid.view.View.OnClickListener;13importandroid.widget.Button;14importandroid.widget.EditText;15importandroid.widget.ListView;1617importcom.example.pojo.Msg;18importcom.example.pojo.Msg.Type;19importcom.example.utils.GetDataUtils;2021publicclassMainActivityextendsActivity{222324privateListViewlistview;25privateEditTextsendmsg;26privateButtonsendbt;27privateChatAdapteradapter;//ListView自定义适配器28privateListdata;//数据源293031privateHandlerhandler=newHandler(){32publicvoidhandleMessage(Messagemsg){33MsgreceiveMsg=(Msg)msg.obj;34data.add(receiveMsg);35adapter.notifyDataSetChanged();36listview.setSelection(data.size()-1);//定位位置,自动下拉3738};39};40@Override41protectedvoidonCreate(BundlesavedInstanceState){42super.onCreate(savedInstanceState);43setContentView(R.layout.activity_main);4445initView();//初始化控件46initData();//初始化数据47initAction();//初始化事件48}4950privatevoidinitAction(){51this.sendbt.setOnClickListener(newOnClickListener(){5253@Override54publicvoidonClick(Viewv){55/**56*点击发送按钮执行步骤57*1、获取用户输入的内容并显示到ListView(判断是否为空)58*2、发送用户输入的内容到服务端获取服务端返回内容并显示到ListView(注意线程处理)59*3、清空输入框60*/61finalStringsendInfo=sendmsg.getText().toString();//获取用户输入数据(用于发送)62data.add(newMsg("",sendInfo,newDate(),Type.INCOME));63adapter.notifyDataSetChanged();//更新数据源64listview.setSelection(data.size()-1);//定位位置,自动下拉65sendmsg.setText("");666768//向服务端发送信息并接收返回信息,由于UI主线程不能执行网络获取操作,这里需要开一个子线程69newThread(){7071@Override72publicvoidrun(){73//执行网络操作74GetDataUtilsdataUtils=newGetDataUtils();75Msgmsg=dataUtils.getInfo(sendInfo);//获取到一个Msg对象,但由于子线程不能够更新UI,所以需要用到一个Handler76Messagemessage=Message.obtain();77message.obj=msg;//封装信息78handler.sendMessage(message);79}8081}.start();82}83});84}8586privatevoidinitData(){87data=newArrayList();88adapter=newChatAdapter(MainActivity.this,data);//获取ListView适配器实例89listview.setAdapter(adapter);90}9192privatevoidinitView(){93this.listview=(ListView)MainActivity.this.findViewById(R.id.chatlistview);94this.sendmsg=(EditText)findViewById(R.id.send_message);95this.sendbt=(Button)findViewById(R.id.send_bt);96}979899}

好了,到此"安卓智能聊天机器人”就已经完成了,虽说这个机器人有点二,不过在无聊之余还是可以打发打发时间的哈~

 

作者:Balla_兔子出处:http://www.cnblogs.com/lichenwei/本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!旁边有“推荐”二字,你就顺手把它点了吧,相得准,我分文不收;相不准,你也好回来找我!

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇