我的团队负责一个相对较大的大学(5万多用户)的后端架构,身份验证等以及对无线和有线网络的工程级支持。我们最大的两个问题是确认网络问题(即确认“长加载时间”或“慢速互联网”的报告),以及收集有关客户端设备的准确信息(MAC地址,驱动程序信息,配置等)。我们正式支持Windows,Mac,Ubuntu Linux,iOS和Android。移动设备对我们来说非常重要,因为它们变得非常普遍。
我们已经可以访问使用Java applet运行双向带宽测试的Web100 NDT服务器(类似于http://ndt.anl.gov:7123/的服务器),并报告上传和下载带宽,延迟,抖动,是否客户端是NAT等等。据说NDT服务器也有iOS和Android客户端,但是a)需要永久地在他们的设备上安装应用程序(并且,对于iOS,在App Store中获取它),以及b)我怀疑iOS应用程序是开源的,所以我们需要从头开始实现它以添加信息收集和结果提交。
我需要以相对简单的方式收集客户端操作系统的信息,非技术最终用户可以理解吗?基本上,我希望我们的服务台人员能够告诉用户(以及具有有效网络连接的用户)访问网页,输入他们的票号,单击按钮和某些东西将收集他们的MAC地址,操作系统类型和版本,无线卡驱动程序版本等,然后将其发回服务器。
我认为是一个Java小程序,但考虑到现代浏览器中的沙盒,无论应用程序如何签名或用户是多少警告,我似乎都无法获得MAC地址(更不用说像shell访问一样更有用了)给出。我正在考虑使用Java Web Start从桌面操作系统中获取所需内容,或者只是告诉Linux和Mac用户下载Bash脚本并运行它。
关于移动操作系统的任何想法?对他们来说,基本上,我需要获得无线MAC地址,设备型号,操作系统版本/构建等。
任何人都知道任何已经做过类似事情的项目(免费且免费)吗?
答案 0 :(得分:1)
对于Android,您可能需要一个专门用于提供信息的应用程序...我不确定如果没有它,您将获得该级别的详细信息。该应用程序还需要运行权限。我很想被证明是错的,但我怀疑情况会是这样。您可以从支持页面链接用户安装的应用程序,如果这使用户更容易,应用程序可以自动发回信息?无论如何,以下可能会有所帮助:
wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE);
之后是wifiManager.getDhcpInfo()
和wifiManager.getWifiState()
以及wifiManager.getConnectionInfo()
等方法调用,应提供您需要的信息。
您在应用的清单中也需要<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
。
这个来自@willytate的片段在另一个类似的线程中重新提供了操作系统信息: android.os.Build提供了很多信息。尝试:
String s =“Debug-infos:”; s + =“\ n OS Version:”+ System.getProperty(“os.version”)+“(”+ android.os.Build.VERSION.INCREMENTAL +“)”; s + =“\ n OS API级别:”+ android.os.Build.VERSION.SDK; s + =“\ n设备:”+ android.os.Build.DEVICE; s + =“\ n Model(and Product):”+ android.os.Build.MODEL +“(”+ android.os.Build.PRODUCT +“)”;
希望有所帮助
史蒂夫