CN205318371U - 一种面向安卓系统的硬件检测设备 - Google Patents
一种面向安卓系统的硬件检测设备 Download PDFInfo
- Publication number
- CN205318371U CN205318371U CN201520943634.0U CN201520943634U CN205318371U CN 205318371 U CN205318371 U CN 205318371U CN 201520943634 U CN201520943634 U CN 201520943634U CN 205318371 U CN205318371 U CN 205318371U
- Authority
- CN
- China
- Prior art keywords
- detection
- mobile phone
- hardware
- instruction
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Landscapes
- Telephone Function (AREA)
Abstract
本实用新型公开了一种面向安卓系统的硬件检测设备,包括:显示装置;指令接收装置,用于接收用户输入的检测指令;通信装置,用于与待检测的安卓手机进行数据交换;处理装置,与指令接收装置、通信装置和显示装置相连,处理装置用于将检测指令通过通信装置发往安卓手机,以及通过通信装置接收安卓手机返回的检测数据,并将检测数据发送到显示装置进行显示。由于本实用新型提供了一种面向安卓系统的硬件检测设备便于手机生产厂商来在手机出厂之前对手机进行硬件评测,以检查硬件是否合格,同时便于消费者对购买的手机进行信息检测,防止卖家的欺骗行为,满足了现有技术中对安卓手机进行硬件信息检测的系统的设备的需求。
Description
技术领域
本实用新型涉及电子技术领域,尤其涉及一种面向安卓系统的硬件检测设备。
背景技术
随着经济与科技的发展,社会已经迈入了信息化时代。电子技术的革新,更是带动了与之相关的软件技术的革新。许多行业的产品都朝着智能化、网络化的方向发展,例如智能手机以其方便使用,功能齐全等优点,成为人们生活必不可少的组成部分。
智能手机上的操作平台多种多样,其中以谷歌的Android(安卓系统)平台、苹果的IOS(苹果系统)和微软的WindowsPhone(微软手机系统)这三种操作系统最为流行,各占据一定的用户市场份额。
针对Android系统而言,由于使用Android系统的手机生产商众多,手机生产商和消费者他们都会遇到一个难以解决的问题,在接下来的部分中,将“使用Android系统的手机”称为“安卓手机”。对于使用Android系统的手机生产厂商来说,他们希望在手机出厂之前,能够对手机进行硬件评测,以检查硬件是否合格;对于消费者来说,他们也需要对自己购买的手机进行信息检测,以防止卖家的欺骗行为。
因此,目前亟需一种能够对安卓手机进行硬件信息检测的设备。
实用新型内容
本实用新型实施例通过提供一种面向安卓系统的硬件检测设备,用以满足现有技术中对安卓手机进行硬件信息检测的系统的设备。
本实用新型实施例提供了一种面向安卓系统的硬件检测设备,包括
显示装置;
指令接收装置,用于接收用户输入的检测指令;
通信装置,用于与待检测的安卓手机进行数据交换;
处理装置,与所述指令接收装置、所述通信装置和所述显示装置相连,所述处理装置用于将所述检测指令通过所述通信装置发往所述安卓手机,以及通过所述通信装置接收所述安卓手机返回的检测数据,并将所述检测数据发送到所述显示装置进行显示。
可选地,所述显示装置具体为显示屏。
可选地,所述指令接收装置包括:
触控屏,用于接收用户输入的检测指令;
存储器,与所述触控屏相连,用于通过数组中的元素存储所述检测指令,并将发送标记变量置为可发送状态。
可选地,所述通信装置包括:
通信接口;
发送电路,与所述通信接口相连,用于在所述发送标记变量为所述可发送状态时,将所述检测指令发送给所述安卓手机;
接收电路,与所述通信接口相连,用于接收所述安卓手机返回的所述检测数据。
可选地,所述通信接口具体为USB接口。
本实用新型实施例中的一个或多个技术方案,至少具有以下技术效果或优点:
1、由于本实用新型实施例提供了一种面向安卓系统的硬件检测设备,便于手机生产厂商来在手机出厂之前对手机进行硬件评测,以检查硬件是否合格,同时便于消费者对购买的手机进行信息检测,防止卖家的欺骗行为,满足了现有技术中对安卓手机进行硬件信息检测的系统的设备的需求。
2、由于各个组件之间通过广播进行通信,同时要传输的数据类型有很多种,对于每一种数据类型都定义对应的广播事件和广播接收者,使得广播发送者并不关心接收者是否接收到了广播事件,也不关心收到广播事件之后如何处理,所以使用广播传输数据保证了模块的独立性,同时使得数据的传输能够高效有序进行。
3、本实用新型实施例提供的面向安卓系统的硬件检测设备能够检测的硬件信息种类丰富,涉及到了安卓系统硬件的方方面面,信息清晰详实,操作简便易用。
附图说明
图1为本实用新型实施例提供的一种面向安卓系统的硬件检测设备的结构图;
图2为本实用新型实施例提供的安卓手机的硬件信息检测系统的系统架构图;
图3A是本实用新型实施例提供的一种面向安卓系统的硬件检测设备的系统流程图;
图3B是本实用新型实施例提供的一种面向安卓系统的硬件检测设备的数据流通示意图;
图4A是本实用新型实施例提供的一种面向安卓系统的硬件检测设备的模块图;
图4B是本实用新型实施例提供的电脑客户端的主界面的示意图;
图4C是本实用新型实施例提供的电脑客户端的主界面的示意图;
图5是本实用新型实施例提供的第一控制模块的模块图;
图6是本实用新型实施例提供的第一传输模块的模块图;
图7是本实用新型实施例提供的第二传输模块的模块图;
图8是本实用新型实施例提供的第二控制模块的模块图;
图9是本实用新型实施例提供的检测模块的模块图。
具体实施方式
本实用新型实施例通过提供一种面向安卓系统的硬件检测设备,用以满足现有技术中对安卓手机进行硬件信息检测的系统的设备的需求。
本实用新型实施例中的技术方案为满足上述需求,具体思路如下:
本实用新型实施例提供一种面向安卓系统的硬件检测设备,请参考图1,图1为本实用新型实施例提供的一种面向安卓系统的硬件检测设备的结构图,如图1所示,该硬件检测设备包括
显示装置101;
指令接收装置102,用于接收用户输入的检测指令;
通信装置103,用于与待检测的安卓手机进行数据交换;
处理装置104,与指令接收装置102、通信装置103和显示装置101相连,处理装置104用于将检测指令通过通信装置103发往安卓手机,以及通过通信装置103接收安卓手机返回的检测数据,并将检测数据发送到显示装置101进行显示。
在具体实施过程中,显示装置101具体为显示屏。
在具体实施过程中,指令接收装置102包括:
触控屏,用于接收用户输入的检测指令,例如可以为电阻触控屏或电容触控屏等等;
存储器,与触控屏相连,用于通过数组中的元素存储检测指令,并将发送标记变量置为可发送状态。
在实际应用中,触控屏上可以显示以下至少一种:
显示屏检测指令接收单元、触摸屏检测指令接收单元、摄像头检测指令接收单元、听筒扬声器检测指令接收单元、主麦克风检测指令接收单元、耳麦检测指令接收单元、按键检测指令接收单元、振动马达检测指令接收单元、存储卡检测指令接收单元、通信卡检测指令接收单元、USB接口检测指令接收单元、电池接口检测指令接收单元、闪光灯检测指令接收单元、无线网络检测指令接收单元、蓝牙检测指令接收单元、GPS检测指令接收单元、重力传感器检测指令接收单元、距离传感器检测指令接收单元。
在具体实施过程中,通信装置103包括:
通信接口;
发送电路,与通信接口相连,用于在发送标记变量为可发送状态时,将检测指令发送给安卓手机;
接收电路,与通信接口相连,用于接收安卓手机返回的检测数据。
在具体实施过程中,通信接口具体为USB接口。
在接下来的部分中,将结合附图,详细介绍上述技术方案。
请参考图2,图2是本实用新型实施例提供的一种面向安卓系统的硬件检测设备的系统架构图,在具体实施过程中,该硬件检测设备可以是电脑,也可以是具备同样功能的工控机等等,在此不做限制,在接下来的部分中,将以该硬件检测设备为电脑为例来进行介绍。
如图2所示,安装于电脑10上的电脑客户端接收用户输入的检测指令并向安装于智能手机20上的手机服务器端发出检测指令,手机服务器端根据检测指令执行相应的检测动作,并将检测结果返回到电脑客户端进行显示。
请继续参考图3A和图3B,图3A是本实用新型实施例提供的一种面向安卓系统的硬件检测设备的系统流程图,图3B是本实用新型实施例提供的一种面向安卓系统的硬件检测设备的数据流通示意图,如图3A和图3B所示,电脑客户端通过输出流向手机服务器发送检测指令,手机服务器端通过输入流接收检测指令并进行检测,手机服务器端通过输出流将检测结果返回到电脑客户端进行显示,电脑客户端通过输入流接收检测结果并进行显示。
请参考图4A,图4A是本实用新型实施例提供的一种面向安卓系统的硬件检测设备的模块图,如图4A所示,该一种面向安卓系统的硬件检测设备包括电脑客户端模块301和手机服务器端302,其中,
电脑客户端301包括:第一控制模块3011,用于接收用户通过电脑的输入模块输入的第一检测指令;第一传输模块3012,用于将第一检测指令传输给手机服务器端302;显示模块3013,用于通过第一传输模块3012接收手机服务器端302发送的检测数据并进行显示;
手机服务器端302包括:第二传输模块3021,用于接收第一检测指令;第二控制模块3022,用于根据第一检测指令,生成启动指令;检测模块3023,用于根据启动指令进行检测,并通过第二控制模块3022将检测结果发送给显示模块3013。
在本实施例中,将以Java语言来介绍本实施例中一种面向安卓系统的硬件检测设备的实施过程,在其他实施例中,还可以使用其他编程语言如C、C++等等,在此就不再赘述了。
针对电脑客户端的程序设计,第一控制模块3011和显示模块3013可以由Client类来实现,第一传输模块3012可以由TransThread来实现。电脑客户端的主界面,可以通过如下过程来实现:
在Eclipse(一个基于Java的、开放源代码的可扩展开发平台)中新建一个JavaProject项目,命名为PCClient。在该项目中新建一个包,该包命名为com.hubu.client,然后,在该包中创建一个Client.java文件,让Client这个类继承JFrame框架,并在这个类中定义一个JTextArea、一个JPanel和一个拥有20个按钮的JButton数组,然后在Client()构造器中实现这个界面的初使化,请参考图4B,图4B是本实用新型实施例提供的电脑客户端的主界面的示意图。该界面初始化的步骤如下:
1、调用父类构造器为该界面定个标题,例如“一种面向安卓系统的硬件检测设备-电脑客户端”等等;
2、设置界面的大小、位置、图标等属性,并调用setResizable(false)方法使用户不能改变界面的大小,同时,调用setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)方法,使用户在关闭界面的情况下,注销程序;
3、设置JPanel的布局形式为GridLayout布局,采用4行5列,然后使用for循环初使化JButton数组,同时将该数组的成员加载进JPanel对象中;
4、界面整体使用默认的BorderLayout布局,在该布局北面放置已定义的JTextArea,用来显示从手机服务器端传来的检测信息,在该布局的中央放置上述的JPanel对象;
5、通过setVisible(true)方法来使界面可见。
针对手机服务器端的程序设计,第二传输模块3021可以由TransServer类实现,第二控制模块3022可以由StartActivity类实现,检测模块3023可以由Battery(电池)、Bluetooth(蓝牙)、Camera(摄像头)、Display(显示屏)、Flashlight(闪光灯)、FM(收音机)、GPS(全球定位系统)、GravitySensor(重力传感器)、Headset(耳麦)、Keyboard(按键)、MIC(麦克风)、Motor(振动马达)、RangeSensor(距离传感器)、SDCard(存储器)、SIM(通信卡)、Speaker(听筒扬声器)、TouchScreen(触摸屏)、USB(USB接口)、Wifi(无线网络)这19个类实现。手机服务器端的主界面可以通过如下过程来实现:
在Eclipse中新建一个AndroidApplicationProject项目,命名为DeviceTest,并创建一个名为com.utils的包,在该包中新建一个MainActivity类,它继承Activity类,然后在该项目的res\layout目录下新建文件activity_main.xml和gridview.xml。具体设计过程如下:
1、在activity_main.xml文件中,将布局方式设置为LinearLayout,然后添加一个GridView组件;
2、在gridview.xml文件中,将布局方式设置为LinearLayout,然后添加一个ImageView组件、一个TextView组件,其中ImageView是用来放置图片的,TextView是用来放置相应文字的;请参考图4C,图4C是本实用新型实施例提供的手机服务器端的主界面的示意图;
3、在MainActivity文件中,重写onCreate()方法,在该方法中先取得一个LayoutInflater对象,然后加载activity_main.xml文件,并获取GridView组件:
inflaer=(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
setContentView(R.layout.activity_main);
gridView=(GridView)this.findViewById(R.id.gridview);
4、为GridView组件设置一个适配器:
gridView.setAdapter(newMainAdapter());
这个适配器MainAdapter继承自BaseAdapter,在它的getView()方法中,需要为每一个网格加载一个相同的布局文件,并获取ImageView组件和TextView组件:
Viewview=inflaer.inflate(R.layout.gridview,null);
ImageViewiv=(ImageView)view.findViewById(R.id.imageview);
TextViewtv=(TextView)view.findViewById(R.id.title);
并且分别为这两个组件配制相应的内容。
在具体实施过程中,请参考图5,图5是本实用新型实施例提供的第一控制模块的模块图,如图5所示,第一控制模块3011具体包括:
记录单元30111,用于通过数组中的元素记录第一检测指令;
赋值单元30112,用于将元素对应的位置赋值给记录变量,并将发送标记变量置为可发送状态。
具体来讲,第一控制模块3011由上述的JButton数组来实现的,它的操作步骤如下:
1、在类Client中定义两个类变量:
publicstaticintmsgToSend;//用于记录用户点击的按钮位置;
publicstaticbooleanflag=false;//设置一个标记位,用于标记是否有数据要发送;
2、让类Client实现ActionListener这个接口,并重写actionPerformed(ActionEvente)方法,在该方法中,获取那个被点击的JButton组件:
Objectobject=e.getSource();
然后通过if语句来判断用户按下了哪个按键,并将该按键的位置赋给msgToSend变量,接着,将flag置为true,代表传输模块可以传输数据了;
3、在Client()构造器中,为每一个JButton对象绑定一个ActionListener类型的监听器。
在具体实施过程中,请参考图6,图6是本实用新型实施例提供的第一传输模块的模块图,如图6所示,第一传输模块3012包括:
第一发送单元30121,用于在发送标记变量为可发送状态时,创建套接字通道,并在套接字通道连通时将记录变量中的值写入电脑客户端301的输出流;
第一接收单元30122,用于从电脑客户端301的输入流中获取检测结果,并将检测结果传输给显示单元。
具体来讲,第一传输模块3012的功能有两个:向手机服务器端传送检测指令和接收从手机服务器端发送过来的检测结果。
为了创建电脑到手机的连接,需要一条通信桥梁USB。具体的操作流程如下:
1、在类Client中新建一个名为execAdb()的方法;
2、在execAdb()方法中首先需要进行端口转发:
Runtime.getRuntime().exec("adbforwardtcp:"+PC_PORT+"tcp:"+PHONE_PORT);
PC_PORT和PHONE_PORT是两个int型常量,PC_PORT代表电脑客户端的端口号,PHONE_PORT代表手机服务器的端口号。该函数的功能是将电脑上PC_PORT端口上的数据全部转发到端口PHONE_PORT上,而手机服务器端的服务器程序监听的正是PHONE_PORT端口。进行端口转发之后,手机服务器端的程序和电脑客户端的程序就能正常的进行Socket通信了。
3、开启传输数据的线程。它负责数据的交互,实现过程如下:
3.1、在com.hubu.client包中新建一个TransThread类,它继承Thread类;
3.2、重写类TransThread中的run()方法;
3.3、在run()方法中将数据交互模块封装在一个死循环中;
3.4、在该循环中,判断Client.flag的值,一旦它为真,就创建一个Socket通道,当Socket通道连通后,就从这个通道中获取outputStream,并将要检测的请求Client.msgToSend写入该流中,以便发送至手机服务器端,然后再从这个通道中取得inputStream,而这个inputStream则是从手机服务器返回的检测消息,将其读取出来,并通过JTextArea中的setText()方法将结果呈现在上述的显示界面上,最后,将Client.flag置为false,等待下一次请求即可:
4、将Client类作为程序的入口,初使化一个Client对象,然后调用execAdb()方法。
在具体实施过程中,赋值单元30112还用于在第一接收单元30122将检测结果传输给显示单元之后,将发送标记变量置为不可发送状态。
显示单元3013根据接收到的检测结果显示相应的数据即可,在此就不再赘述了。
在具体实施过程中,请参考图7,图7是本实用新型实施例提供的第二传输模块的模块图,如图7所示,第二传输模块3021包括:
监听单元30211,用于监听手机服务器端302的端口;
读取单元30212,用于在监听单元30211监听到手机服务器端302的端口接收到数据时,从手机服务器端302的输入流中读取第一检测指令;
第一广播单元30213,用于广播第一检测指令。
第二传输模块3021的功能有两个:接收电脑客户端传输过来的检测指令、向电脑客户端发送检测结果。为了能够持续不断的接收指令和发送检测结果,将传输数据的代码放在一个死循环中,传输数据的代码采用阻塞的方式,因此只有成功接收指令,并传送了检测结果之后才会执行下一次循环。具体的实现流程如下:
1、在IntentAction类中定义另外一组String型常量,它是用于传输数据的广播事件,包括DATA_FROM_CAMERA、DATA_FROM_DISPLAY、DATA_FROM_MIC、DATA_FROM_SPEAKER、DATA_FROM_TOUCH_SCREEN、DATA_FROM_GRAVITY_SENSOR、DATA_FROM_KEYBOARD、DATA_FROM_RANGE_SENSOR、DATA_FROM_FLASH_LIGHT、DATA_FROM_BLUETOOTH、DATA_FROM_SD_CARD、DATA_FROM_HEADSET、DATA_FROM_SIM、DATA_FROM_USB、DATA_FROM_MOTOR、DATA_FROM_BATTERY、DATA_FROM_FM、DATA_FROM_WIFI、DATA_FROM_GPS和DATA_TO_EXIT;
2、在该项目的src目录下新建一个com.trans包,在这个包中新建一个TransServer类,它继承Service类;
3、在MainActivity文件中定义一个Intent对象,然后在onCreate()方法中启动用于传输的Service,服务会一直在后台运行:
intentToSend=newIntent(MainActivity.this,TransServer.class);
startService(intentToSend);
4、在TransServer类中定义三个变量:
publicstaticStringmsgToSend;//用于记录从传输模块传来的检测信息
privateIntentFilterfilter;//用于为广播源添加可以接收的广播事件
privateBroadcastReceiverreceiver=newBroadcastReceiver(){}
这是一个匿名广播类,在它的onReceive(Contextcontext,Intentintent)方法中,接收从检测模块发来的广播事件,并提取Intent对象中的检测信息:
msgToSend=intent.getStringExtra("result");
5、在TransServer类的onCreate()方法中,实例化IntentFilter对象,并通过它的addAction()方法将上述用于传输数据的广播事件添加进去,然后注册这个广播:
registerReceiver(receiver,filter);
6、在com.trans包中新建一个TransThread类,它继承Thread类,它的作用是接收电脑客户端的检测指令和发送手机服务器端的检测信息。在run()方法中,首先,要用ServerSocket来监听手机服务器端的端口,然后,将数据交互模块封装在一个死循环中:一旦电脑客户端有数据发送至手机服务器端,就从客户端返回的Socket对象中读取inputStream对象,这个对象携带着电脑客户端的检测请求,实际上是一个int型的数值,它代表着用户点击电脑客户端按钮的位置,以相同的方式发送广播事件给StartActivity;与此同时,从客户端返回的Socket对象中获取outputStream对象,让程序休眠0.2s,等待检测模块的执行,然后,将从检测模块传回的检测结果TransServer.msgToSend写入outputStream对象中;
7、在TransServer类的onCreate()方法中开启上述线程;
8、在TransServer类的onDestroy()方法中,注销广播:
unregisterReceiver(receiver);
9、最后,在MainActivity的onDestroyed()方法中停止服务,保证主程序退出时,服务也被注销:
stopService(intentToSend)。
在具体实施过程中,请参考图8,图8是本实用新型实施例提供的第二控制模块的模块图,如图8所示,第二控制模块3022包括:
第二广播单元30221,用于接收第一广播单元30213广播的第一检测指令;
启动单元30222,用于在第二广播单元30221接收到第一检测指令后,生成启动指令,启动指令用于启动手机服务器端302中的检测模块3023进行检测。
请继续参考图8,第二控制模块3022还包括:
检测指令接收单元30223,用于用户通过手机的输入模块接收输入的第二检测指令,并将第二检测指令发送给启动单元30222。
具体来讲,手机服务器端的第二控制模块3022既能直接发出检测指令,又能根据电脑客户端发过来的检测指令启动对应的检测程序。
当手机收到检测指令后,就会发送一个广播事件给广播接收者,广播接收者根据收到的广播启动相应的检测程序。实现的具体步骤如下:
1、在com.utils包中新建一个IntentAction类,该类中定义了一组String型常量,它是用于启动Activity的广播事件,包括BATTERY、BLUETOOTH、CAMERA、DISPLAY、FLASH_LIGHT、FM、GPS、GRAVITY_SENSOR、HEADSET、KEYBOARD、MIC、MOTOR、RANGE_SENSOR、SDCARD、SIM、SPEAKER、TOUCH_SCREEN、USB、WIFI和EXIT;
2、在MainActivity类的onCreate()方法中为GridView组件绑定监听器:
gridView.setOnItemClickListener(newOnItemClickListener(){});
其中newOnItemClickListener(){}是匿名类的一个实例,在它的onItemClick()方法中,定义一个Intent对象,然后判断用户点击的图标的位置,并为该Intent对象设置一个相应的Action属性,再将该位置信息放入Intent中,最后将这个Intent对象以广播的形式发送出去;
3、在com.utils包中新建一个StartActivity类,它继承BroadcastReceiver类,在onReceive(Contextcontext,Intentintent)方法中,获取从广播事件中传来的Intent对象中的位置信息,并定义一个新的Intent对象:
intorder=intent.getIntExtra("order",-1);
IntentstartIntent=newIntent();
通过switch语句来判断order的值,并设置程序要跳转的类(即要检测的模块),当order等于19时,则向一个能接收“STOP_ACTIVITY”广播事件的广播源发送广播,它的作用是退出检测模块。当程序退出switch语句后,若order不等于19,则开启相应的检测模块,否则,就向传输模块发送一个广播,并在一个Intent对象中携带一个固定的信息,而这个信息就是要发送至电脑客户端的,代表用户点击了退出按钮;
4、在AndroidManifest.xml中注册这组广播事件:
当然了,电脑客户端端发过来的检测指令将由第二传输模块接收,传输模块也可以发送这些广播事件,并由StartActivity响应,在此就不再赘述了。
在具体实施过程中,请参考图9,图9是本实用新型实施例提供的检测模块的模块图,如图9所示,检测模块3023至少包括以下中的至少一种:
显示屏检测单元302301、触摸屏检测单元302302、摄像头检测单元302303、听筒扬声器检测单元302304、主麦克风检测单元302305、耳麦检测单元302306、按键检测单元302307、振动马达检测单元302308、存储卡检测单元302309、通信卡检测单元302310、USB接口检测单元302311、电池接口检测单元302312、闪光灯检测单元302313、无线网络检测单元302314、蓝牙检测单元302315、GPS检测单元302316、重力传感器检测单元302317、距离传感器检测单元302318。
显示屏检测单元302301的功能是控制手机显示屏分别输出黑屏、白屏、红屏、绿屏、蓝屏、灰度屏,并将检测结果以广播的形式发送至TransServer类。具体的操作如下:
1、在该项目的res\layout目录下新建文件display.xml,用来作为显示屏输出不同颜色的布局文件,在该布局文件中,添加一个线性布局管理器,并在这个管理器中添加一个ImageView组件,设置该组件的layout_width、layout_height属性均为填充父组件;
2、在Display类中定义一个类变量:
privatestaticintcount=0;//用来记录用户点击手机屏幕的次数;
3、在Display类的onCreate()方法中,设置该模块的界面为全屏,并加载步骤1中的布局文件:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.display);
4、从上述布局文件中获取ImageView对象,并为该组件绑定监听器,在该监听器的onClick()方法中,对count进行自增运算,即每点击屏幕一次,它的值加1,由于需要循环输出6种不同颜色,可以定义一个变量:intid=count%6,通过switch(id)语句来判断输出哪种颜色,即为ImageView组件设置哪种背景颜色;
5、最后,在onCreate()方法中为result赋值:
result="点击屏幕可以分别显示黑屏、白屏、红屏、绿屏、蓝屏、灰度屏"。
触摸屏检测单元302302的功能是控制触摸屏接收划线信号,并将检测结果以广播的形式发送至TransServer类。具体的操作如下:
1.在该项目的com.utils包中新建一个DrawView类,该类继承自android.view.View类。在该类中,首先定义程序中所需的属性:
privateintview_width=0;//屏幕的宽度
privateintview_height=0;//屏幕的高度
privatefloatpreX;//起始点的X坐标值
privatefloatpreY;//起始点的Y坐标值
privatePathpath;//路径
publicPaintpaint=null;//画笔
BitmapcacheBitmap=null;//定义一个内存中的图片,该图片将作为缓冲区
CanvascacheCanvas=null;//定义cacheBitmap上的Canvas对象
2.在DrawView类的构造器中,首先获取屏幕的宽度和高度,并创建一个与该View相同大小的缓存区,然后创建一个新的画面,并实例化一个路径,再将内存中的位图绘制到cacheCanvas中,最后实例化一个画笔,并设置画笔的相关属性:
paint.setColor(Color.RED);//设置画笔的颜色
paint.setStyle(Paint.Style.STROKE);//设置填充方式为描边
paint.setStrokeJoin(Paint.Join.ROUND);//设置笔刷的图形样式
paint.setStrokeCap(Paint.Cap.ROUND);//设置画笔转弯处的连接风格
paint.setStrokeWidth(1);//设置笔触的宽度为1像素
paint.setAntiAlias(true);//使用抗锯齿功能
paint.setDither(true);//使用抖动效果
3.在DrawView类的onDraw()方法中,设置画布的背景颜色,并采用默认设置创建一个画笔,然后绘制cacheBitmap、绘制路径以及保存当前绘图状态到栈中,并调用restore()方法恢复所保存的状态;
4.在DrawView类中,重写onTouchEvent()方法,为该视图添加触摸事件监听器,在该方法中,首先获取触摸事件发生的位置,然后应用switch语句对事件的不同状态添加响应代码:
4.1当手指刚触摸屏幕时,将绘图的起始点移到(x,y)坐标点的位置:
path.moveTo(x,y);
preX=x;
preY=y;
4.2当手指在屏幕上移动时,若移动到的位置在允许的范围内,则绘制一条线段轨迹,然后更新起始点坐标:
floatdx=Math.abs(x-preX);
floatdy=Math.abs(y-preY);
if(dx>=5||dy>=5){
path.quadTo(preX,preY,(x+preX)/2,(y+preY)/2);
preX=x;
preY=y;}
4.3当手指离开屏幕时,绘制路径:
cacheCanvas.drawPath(path,paint);
path.reset();
最后调用invalidate()方法更新视图;
5.在该项目的res\layout目录下新建文件touch_screen.xml,用来作为触摸屏接收划线信号的布局文件,在该布局文件中,添加一个帧布局管理器,并在帧布局管理器中添加上述步骤中创建的自定义视图:
<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"......>
<com.utils.DrawView....../>
</FrameLayout>;
6.最后,在TouchScreen类的onCreate()方法中加载步骤5的布局文件,并为result赋值:
setContentView(R.layout.touch_screen);
result="您可以在屏幕上随意画画"。
摄像头检测单元302303的功能是控制主、副摄像头分别完成启动、拍照、存储和关闭操作,并将检测结果以广播的形式发送至TransServer类。一般的,手机上面都有两个摄像头,本模块设计的思路是:当启动摄像头检测时,系统会弹出一个对话框,提示用户点击所要检测的摄像头。具体的操作如下:
1.在该项目的res\layout目录下新建文件camera.xml,在该布局文件中,添加一个相对布局管理器,设置组件居中显示,在该布局管理器中,添加一个TextView组件和一个线性布局管理器,其中TextView组件用来显示固定信息——“请选择你要测试的摄像头”,然后,在该线性布局管理器中,添加两个Button组件,这两个组件水平放置,其中一个Button组件用于开启前置摄像头,另一个Button组件用于开启后置摄像头;
2.在Androidmanifest.xml文件中配制如下语句:
<activityandroid:name="com.dialog.Camera"android:label="系统提示:"
android:theme="android:style/Theme.Dialog">
</activity>
3.在Camera类的onCreate()方法中,加载步骤1的布局文件,获取布局文件中的两个Button组件,并分别为这两个组件绑定监听器,在它们各自的监听器的onClick()方法中,启动另外两个Activity子类。最后,为result对象赋值:
result="请自行开启前置或后置摄像头";
4.在该项目的com.activity包中新建两个Activity子类,它们分别是CameraPreposition类和CameraPostposition类,其中CameraPreposition类是用于操作前置摄像头的,CameraPostposition类是用于操作后置摄像头的,这两个类就是步骤3中要启动的两个Activity子类。由于系统对前后摄像头的封装几乎是一样的,只是在CameraInfo类中定义了两个整型变量:CAMERA_FACING_FRONT和CMAERA_FACING_BACK,以区分前后两个摄像头。下面以后置摄像头为例进行说明;
5.在该项目的res\layout目录下新建文件camera_postposition.xml,用来作为后置摄像头的布局文件,在该布局文件中,添加一个相对布局管理器,在该布局管理器中,添加一个SurfaceView组件和一个Button组件,其中SurfaceView组件用于显示拍摄画面,Button组件用于控制拍摄动作,前置摄像头的布局文件同上;
6.访问系统的摄像头需要使用<uses-feature/>声明来确保手机支持摄像头设备:
<uses-featureandroid:name="android.hardware.camera"/>
<uses-featureandroid:name="android.hardware.camera.autofocus"/>
7.为了使用摄像头和SD卡的功能,需要在Androidmanifest.xml文件中配制如下权限:
<uses-permissionandroid:name="android.permission.CAMERA"/>
<uses-permission
android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
8.在CameraPostposition类的onCreate()方法中,加载步骤5中的布局文件,获取布局文件中的SurfaceView组件和Button组件:
surfaceView=(SurfaceView)findViewById(R.id.surfaceview2);
takePictureButton=(Button)findViewById(R.id.button2);
9.获取一个SurfaceHolder对象:
SurfaceHoldersurfaceHolder=surfaceView.getHolder();
SurfaceHolder对象的作用是对SurfaceView对象进行控制,getHolder()方法返回的就是当前的SurfaceView对应的SurfaceHolder对象,用于对SurfaceView对象进行控制。当拍摄画面更新时,会执行回调方法,这样就能实时地控制SurfaceView上面显示的画面都是摄像头拍摄到的画面;
10.为SurfaceHolder对象添加一个回调接口:
surfaceHolder.addCallback(newSurfaceHolderCallback());
其中SurfaceHolderCallback是实现了SurfaceHolder.Callback接口的内部类,实现接口中的三个回调方法来感知到SurfaceView对象的创建、改变和消失;
11.创建一个Camera.PictureCallback对象(以内部类的形式),该对象的作用是描述拍摄的照片的各种属性和参数,包括存储路径、命名方式、保存格式等(当路径中不存在指定的文件夹时,会自动创建一个用于保存相片的文件夹);
12.为takePictureButton组件添加事件监听器,在该监听器的onClick()方法中,开启摄像头拍摄相片:
camera.takePicture(null,null,pictureCallback);
其中第三个参数就是前面定义的Camera.PictureCallback对象。
上述部分已经详细介绍了显示屏检测单元302301、触摸屏检测单元302302、摄像头检测单元302303的具体实现过程,通过本实施例的介绍,本领域所属的技术人员能够了解听筒扬声器检测单元302304、主麦克风检测单元302305、耳麦检测单元302306、按键检测单元302307、振动马达检测单元302308、存储卡检测单元302309、通信卡检测单元302310、USB接口检测单元302311、电池接口检测单元302312、闪光灯检测单元302313、无线网络检测单元302314、蓝牙检测单元302315、GPS检测单元302316、重力传感器检测单元302317、距离传感器检测单元302318对应的实现过程,以满足实际情况的需要,在此就不再赘述了。
可以看出,本实用新型实施例提供的面向安卓系统的硬件检测设备能够检测的硬件信息种类丰富,涉及到了安卓系统硬件的方方面面,信息清晰详实,操作简便易用。
本实用新型实施例中的一个或多个技术方案,至少具有以下技术效果或优点:
1、由于本实用新型实施例提供了一种面向安卓系统的硬件检测设备,便于手机生产厂商来在手机出厂之前对手机进行硬件评测,以检查硬件是否合格,同时便于消费者对购买的手机进行信息检测,防止卖家的欺骗行为,满足了现有技术中对安卓手机进行硬件信息检测的系统的设备的需求。
2、由于各个组件之间通过广播进行通信,同时要传输的数据类型有很多种,对于每一种数据类型都定义对应的广播事件和广播接收者,使得广播发送者并不关心接收者是否接收到了广播事件,也不关心收到广播事件之后如何处理,所以使用广播传输数据保证了模块的独立性,同时使得数据的传输能够高效有序进行。
3、本实用新型实施例提供的面向安卓系统的硬件检测设备能够检测的硬件信息种类丰富,涉及到了安卓系统硬件的方方面面,信息清晰详实,操作简便易用。
显然,本领域的技术人员可以对本实用新型进行各种改动和变型而不脱离本实用新型的精神和范围。这样,倘若本实用新型的这些修改和变型属于本实用新型权利要求及其等同技术的范围之内,则本实用新型也意图包含这些改动和变型在内。
Claims (5)
1.一种面向安卓系统的硬件检测设备,其特征在于,包括
显示装置;
指令接收装置,用于接收用户输入的检测指令;
通信装置,用于与待检测的安卓手机进行数据交换;
处理装置,与所述指令接收装置、所述通信装置和所述显示装置相连,所述处理装置用于将所述检测指令通过所述通信装置发往所述安卓手机,以及通过所述通信装置接收所述安卓手机返回的检测数据,并将所述检测数据发送到所述显示装置进行显示。
2.如权利要求1所述的硬件检测设备,其特征在于,所述显示装置具体为显示屏。
3.如权利要求1所述的硬件检测设备,其特征在于,所述指令接收装置包括:
触控屏,用于接收用户输入的检测指令;
存储器,与所述触控屏相连,用于通过数组中的元素存储所述检测指令,并将发送标记变量置为可发送状态。
4.如权利要求3所述的硬件检测设备,其特征在于,所述通信装置包括:
通信接口;
发送电路,与所述通信接口相连,用于在所述发送标记变量为所述可发送状态时,将所述检测指令发送给所述安卓手机;
接收电路,与所述通信接口相连,用于接收所述安卓手机返回的所述检测数据。
5.如权利要求4所述的硬件检测设备,其特征在于,所述通信接口具体为USB接口。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201520943634.0U CN205318371U (zh) | 2015-11-24 | 2015-11-24 | 一种面向安卓系统的硬件检测设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201520943634.0U CN205318371U (zh) | 2015-11-24 | 2015-11-24 | 一种面向安卓系统的硬件检测设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN205318371U true CN205318371U (zh) | 2016-06-15 |
Family
ID=56311895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201520943634.0U Expired - Fee Related CN205318371U (zh) | 2015-11-24 | 2015-11-24 | 一种面向安卓系统的硬件检测设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN205318371U (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110379149A (zh) * | 2019-08-15 | 2019-10-25 | 珠海格力智能装备有限公司 | 设备检测方法及装置 |
CN111506819A (zh) * | 2020-04-24 | 2020-08-07 | 成都安易迅科技有限公司 | 一种硬件设备推荐方法、装置,服务器及存储介质 |
CN113032198A (zh) * | 2021-04-19 | 2021-06-25 | 广州绿怡信息科技有限公司 | 硬件检测方法及装置 |
CN114356678A (zh) * | 2022-03-17 | 2022-04-15 | 北京奇立软件技术有限公司 | 获取设备硬件信息的方法及系统 |
-
2015
- 2015-11-24 CN CN201520943634.0U patent/CN205318371U/zh not_active Expired - Fee Related
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110379149A (zh) * | 2019-08-15 | 2019-10-25 | 珠海格力智能装备有限公司 | 设备检测方法及装置 |
CN111506819A (zh) * | 2020-04-24 | 2020-08-07 | 成都安易迅科技有限公司 | 一种硬件设备推荐方法、装置,服务器及存储介质 |
CN113032198A (zh) * | 2021-04-19 | 2021-06-25 | 广州绿怡信息科技有限公司 | 硬件检测方法及装置 |
CN114356678A (zh) * | 2022-03-17 | 2022-04-15 | 北京奇立软件技术有限公司 | 获取设备硬件信息的方法及系统 |
CN114356678B (zh) * | 2022-03-17 | 2022-06-14 | 北京奇立软件技术有限公司 | 获取设备硬件信息的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105391832A (zh) | 一种用于检测智能手机硬件状态的硬件信息检测系统 | |
CN205318371U (zh) | 一种面向安卓系统的硬件检测设备 | |
CN106990952B (zh) | 基于Vue.js的表单校验方法及其系统 | |
CN109725901A (zh) | 前端代码的开发方法、装置、设备和计算机存储介质 | |
CN107122301A (zh) | 界面测试方法及装置 | |
CN107979508A (zh) | 微服务测试方法及装置 | |
CN109429102A (zh) | 用于显示应用的电子装置及其操作方法 | |
CN108427552A (zh) | 安卓应用安装包制作装置、方法、电子设备以及存储介质 | |
CN108763085A (zh) | 测试案例的在线调试装置、方法及计算机可读存储介质 | |
CN110647278A (zh) | 一种控制插件显示的方法、装置、计算设备及存储介质 | |
CN105357204A (zh) | 生成终端识别信息的方法及装置 | |
CN107852427A (zh) | 网络装置、服务器及其控制方法 | |
CN112420217A (zh) | 消息推送方法、装置、设备及存储介质 | |
CN104065742A (zh) | 一种用于幼儿园安全接送的接送人信息处理方法及装置 | |
CN109614317A (zh) | 电子装置、用户界面测试方法及存储介质 | |
CN113467663B (zh) | 界面配置方法、装置、计算机设备及介质 | |
CN111737100A (zh) | 数据获取方法、装置、设备及存储介质 | |
CN110119354A (zh) | 基于测试用例生成的软件测试方法、装置及电子设备 | |
CN109308261A (zh) | 应用程序调试方法、装置、系统、设备和存储介质 | |
CN108388616A (zh) | 数据收集装置、方法、系统及计算机可读存储介质 | |
CN112416486A (zh) | 信息引导方法、装置、终端及存储介质 | |
CN110673827B (zh) | 基于安卓系统的资源调用方法及装置、电子设备 | |
CN110366025B (zh) | 显示内容的配置方法、智能终端及计算机可读存储介质 | |
CN107395770A (zh) | 数据同步方法及装置 | |
CN106302011A (zh) | 基于多端的测试方法及终端 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20160615 Termination date: 20161124 |