简单介绍如何应用DDMS协助开发Android Apps
DDMS 的全称是Dalvik Debug Monitor Service,它为我们提供例如:为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等。
DDMS 工具存放在SDK -tools/路径下,可以直接双击ddms.bat运行,也可以通过terminal/console(CLS)输入ddms(在Mac或者Linux系统中输入./ddms)启动程序。DDMS对Emulator和外接测试机有同等效用。如果系统检测到它们(VM)同时运行,那么DDMS将会默认指向Emulator。
DDMS 的工作原理
DDMS将搭建起IDE与测试终端(Emulator 或者connecteddevice)的链接,它们应用各自独立的端口监听调试器的信息,DDMS可以实时监测到测试终端的连接情况。当有新的测试终端连接后,DDMS将捕捉到终端的ID,并通过adb建立调试器,从而实现发送指令到测试终端的目的。
DDMS监听第一个终端App进程的端口为8600,APP进程将分配8601,如果有更多终端或者更多APP进程将按照这个顺序依次类推。DDMS通过8700端口(”base port”)接收所有终端的指令。如果想了解更多资料 Configuring your IDE to attach to port 8700 for debugging。
通过File > Preferences查看DDMS相关设置,所有的参数设定将保存在 “$HOME/.ddmsrc”
- Telephony Status: 通过选项模拟语音质量以及信号连接模式。
- Telephony Actions: 模拟电话接听和发送SMS到测试终端。
- Location Control: 模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识。
- Manually send individual longitude/latitude coordinates to the device : 手动为终端发送二维经纬坐标。
- Use a GPX file describing a route for playback to the device : 通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。
- Use a KML file describing individual placemarks for sequenced playback to the device : 通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测试终端。
Logcat
利用DDMS从模拟器上导入\导出文件学习内容: 你将学会如何使用Eclipse的DDMS-View 从模拟器上导入导出文件 . 描述:
依照下图打开 DDMS-View . (如果你上面没有按钮A, 那么请按照 B所示方式打开).
![](http://android.tgbus.com/UploadFiles_4504/200901/20090104092136426.bmp)
打开文件浏览器,使用右上角的导入导出按钮来操作目标文件..
![](http://android.tgbus.com/UploadFiles_4504/200901/20090104092136351.bmp)
运行模拟器,在命令行模式下到 ".../android_sdk/tools"目录下,使用下面的命令
adb push <local_source> <emulator_destination>
Android截图方法之DDMS篇提起Android截图,这里虽然Google在Android操作系统中提供了帧缓存的权限许可,但是没有Root权限仍然无法很好的截图,现在安装好Android SDK和Eclipse,在DDMS中可以看到连接Devices标签中找到可用的唯一个图标,如图下图所示:
最终在Device Screen Capture窗口中就是Android屏幕截图效果,直接单击Save按钮即可保存图片为PNG格式。如图
![](https://i-blog.csdnimg.cn/blog_migrate/8d03f154ba411d4f4265463522ca5050.png)
不使用DDMS打电话
通过gsm call命令可以像Android模拟器打电话,除了在EclipseADT的DDMS中通过按钮Dial外,还可以通过DDMS外壳调用gsm call命令直接拨打,我们首先需要启动AndroidEmulator,然后在cmd环境下执行telnet localhost 5554 下面就可以向Android模拟器拨号,参数为gsmcall < phoneNum> ,比如给10086打电话为gsm call +10086