其他常见问题

基于ZigBee的定位技术情况如何?


        ZigBee定位现在技术不成熟。基于RSSI的精度很差;基于TOF的很贵。

在进行Android应用测试的时候提示skia->decoder->decode error->return false是什么原因?


        在较低版本(例如:API 4)的模拟器上,虚拟机本身错误和Bug比较多。例如:越界绘制图片会出错等。但是如果将同样的程序运行在版本比较高(例如:API 8)的模拟器上,相关错误就可能没有了。

在不同JDK(例如jdk1.5和jdk1.6)环境下String.getBytes("Unicode")得到的字节编码居然不一样,这个是什么原因?


        所说的问题的确存在。
        例如:字符串"1测试2"在jdk1.5.0_15得到的就是fffe31004b6dd58b3200;在jdk1.6.0_23得到的就是feff00316d4b8bd50032。
        因此getBytes需要使用UnicodeBigUnmarked(对应BigEndian)和UnicodeLittleUnmarked(对应LittleEndian)编码要求。这样就不会因jdk不同而得到不一样的编码了。

请问SimpleTeam是否有PPP的软件模拟器?


        SimpleTeam有完整的PPP/IP/UDP/TCP相关的技术基础,可以实施PPP软件模拟器。但是其实最好最简单的“模拟”方式并非如此。如果想实施真实的模拟,请按照如下步骤进行实施:
        1)准备两台计算机。每台计算机应该配备一个Modem。如果没有,可以去二手市场买个内置Modem,十分便宜(预计5元左右)。
        2)准备一个小型多路电话线交换机(预计100元左右)。如果公司内部有分机系统,那么这个设备可以省去。
        3)使用电话线将两台计算机的Modem和交换机进行连接,并保证可以正常拨号。
        4)在其中一台计算机上配置允许拨入连接;另外一台计算机上配置拨出连接。当然还需要配置相关的权限设置。
        5)配置完毕后,就可以从一台计算机拨号到另外一台计算机。如果可以听到正常的拨号以及三次握手的声音就表示工作基本正常。
        这就是一个最小化的模拟PPP拨号的测试系统。可以利用串口检测器和网络检测器等软件仔细研究有关协议。

如何让Modem支持语音处理?


        有两种办法:
        1)对于有语音处理功能得Modem,可以启动相关的语音播放和录音功能。可以使用Windows的waveOut/waveIn来实现语音录音和播放功能。检查Modem是否具有语音处理功能,可以输入:at+fclass?来查询。语音功能要求数值为8。如果没有则不行。通常情况下,外置Modem会具有;而内置Modem这个功能没有。
        2)将Modem的话柄部分线路接出,接入到录音盒部分进行处理。相关录音盒可以通过声卡进行处理。这样的方式有点绕,但是不乏是一个比较低成本的解决方案。因为支持语音的外置Modem一般比较贵。

Java程序在Linux下CPU占用率100%如何检测具体原因?


        首先弄清楚Java的进程PID号。可以使用指令:

ps -ax | grep java

        然后查询进程里面的相关线程的NID号(注意相关的NID记录是十进制的)。可以使用指令:

ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=-%cpu

        打印出的结果有利于分析到底哪个线程占用的CPU比例相对比较高。
        最后查询对应NID号到底是哪个Java类。可以使用命令:

kill -3 [pid]

        这个指令会导致JVM异常,并抛出相关的堆栈记录。注意:JVM抛出的堆栈异常记录的NID是16进制的。然后核对下堆栈记录里面的类描述基本就能找到和确认具体原因。
        以上的方法是在不使用专业的Profiler工具情况下最简单的查询以及优化方法。