<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2335601547046824080</id><updated>2012-02-16T01:52:10.902-08:00</updated><category term='linux'/><category term='mobile'/><category term='apk'/><category term='android'/><category term='sms'/><category term='人生感悟'/><category term='intent'/><category term='blogspot'/><category term='joke'/><category term='AVD'/><category term='app engine'/><category term='dex'/><category term='gmail'/><category term='webview'/><category term='google'/><title type='text'>生活的理想是为了理想的生活</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-6770467056369918349</id><published>2009-05-11T20:19:00.000-07:00</published><updated>2009-05-11T20:52:40.191-07:00</updated><title type='text'>Android中多媒体处理</title><content type='html'>&lt;span style="font-weight: bold;"&gt;1.概述&lt;/span&gt;&lt;br /&gt;Android平台内置了常用类型媒体的编解码，可以在应用中方便地集成他们。访问平台的媒体能力是很直观简单的—可以使用相同的Intent和Activity机制。&lt;br /&gt;Android能够从多个数据来源播放音视频：存在应用的资源目录中(raw resources）、文件系统中或者来自网络。通过android.media.MediaPlayer来播放。&lt;br /&gt;&lt;br /&gt;平台同时也允许通过android.media.MediaRecorder录音视频，当然要硬件支持（模拟器可不行~要在真机上）。&lt;br /&gt;Android1.5支持如下的媒体类型：&lt;br /&gt;&lt;table border="1" bordercolor="#000000" cellpadding="4" cellspacing="0" width="100%"&gt;  &lt;col width="42"&gt;  &lt;col width="44"&gt;  &lt;col width="22"&gt;  &lt;col width="20"&gt;  &lt;col width="76"&gt;  &lt;col width="51"&gt;  &lt;tbody&gt;&lt;tr valign="top"&gt;   &lt;td bgcolor="#9999cc" width="16%"&gt;    &lt;p&gt;类型&lt;/p&gt;   &lt;/td&gt;   &lt;td bgcolor="#9999cc" width="17%"&gt;    &lt;p&gt;格式&lt;/p&gt;   &lt;/td&gt;   &lt;td bgcolor="#9999cc" width="9%"&gt;    &lt;p&gt;编码&lt;/p&gt;   &lt;/td&gt;   &lt;td bgcolor="#9999cc" width="8%"&gt;    &lt;p&gt;解码&lt;/p&gt;   &lt;/td&gt;   &lt;td bgcolor="#9999cc" width="30%"&gt;    &lt;p&gt;详情&lt;/p&gt;   &lt;/td&gt;   &lt;td bgcolor="#9999cc" width="20%"&gt;    &lt;p&gt;文件类型&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td rowspan="9" width="16%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Audio&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;AAC LC/LTP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td rowspan="3" width="30%"&gt;    &lt;p&gt;单&lt;span style="font-family:微软雅黑,serif;"&gt;/&lt;/span&gt;双声道&lt;span style="font-family:微软雅黑,serif;"&gt;160Kpbs&lt;/span&gt;的码率，采样&lt;span style="font-family:微软雅黑,serif;"&gt;4-48KHz&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td rowspan="3" width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;3GPP(.3gp)&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;MPEG-4(.mp4,.m4a)&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;不支持&lt;span style="font-family:微软雅黑,serif;"&gt;raw AAC(.aac)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;HE-AACv1&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;(AAC+)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;HE-AACv2&lt;/span&gt;&lt;/p&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;(&lt;/span&gt;增强&lt;span style="font-family:微软雅黑,serif;"&gt;AAC+)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;AMR-NB&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;4.75 to 12.2 kbps sampled @    8kHz&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;3GPP (.3gp)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;AMR-WB&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;9 rates from 6.60 kbit/s to    23.85 kbit/s sampled @ 16kHz&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;3GPP (.3gp)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;MP3&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Mono/Stereo 8-320Kbps constant    (CBR) or variable bit-rate (VBR) &lt;/span&gt;    &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;MP3 (.mp3)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;MIDI&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;MIDI Type 0 and 1. DLS Version    1 and 2. XMF and Mobile XMF. Support for ringtone formats    RTTTL/RTX, OTA, and iMelody &lt;/span&gt;    &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Type 0 and 1 (.mid, .xmf,    .mxmf). Also RTTTL/RTX (.rtttl, .rtx), OTA (.ota), and iMelody    (.imy)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Ogg Vorbis&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Ogg (.ogg)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;PCM/WAVE&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;8- and 16-bit linear PCM    (rates up to limit of hardware) &lt;/span&gt;    &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;WAVE (.wav)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td rowspan="4" width="16%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Image&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;JPEG&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Base+progressive&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;JPEG(.jpg)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;GIF&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;GIF(.gif)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;PNG&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;PNG(.png)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;BMP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;BMP(.bmp)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="16%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Video&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;H.263&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;3GPP (.3gp)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="16%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;H.264 AVC&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;3GPP (.3gp) and MPEG-4 (.mp4)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr valign="top"&gt;   &lt;td width="16%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="17%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;MPEG-4 SP&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="9%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="8%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;Y&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td width="30%"&gt;    &lt;p&gt;&lt;br /&gt;  &lt;/p&gt;   &lt;/td&gt;   &lt;td width="20%"&gt;    &lt;p&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;3GPP (.3gp)&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;       &lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;T1还&lt;/span&gt;额外支持了：&lt;span style="font-family:微软雅黑,serif;"&gt;Audio&lt;/span&gt;的&lt;span style="font-family:微软雅黑,serif;"&gt;WMA&lt;/span&gt;，&lt;span style="font-family:微软雅黑,serif;"&gt;Video&lt;/span&gt;的&lt;span style="font-family:微软雅黑,serif;"&gt;WMV类型。&lt;/span&gt;&lt;/p&gt;&lt;p style="margin-bottom: 0cm;"&gt;&lt;span style="font-family:微软雅黑,serif;"&gt;&lt;span style="font-weight: bold;"&gt;2.播放&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;播放很简单，但从资源中播放和从文件/网络中播放还是有些区别，先说从资源中播放：&lt;br /&gt;&lt;br /&gt;开始播放：MediaPlayer mp=MediaPlayer.create(context,R.raw.xxx);--&gt;mp.start();&lt;br /&gt;停止/播放：mp.stop()--&gt;mp.reset();mp.prepare()--&gt;mp.start();&lt;br /&gt;暂停/播放：mp.pause()--&gt;mp.start();&lt;br /&gt;&lt;br /&gt;从文件/网络中播放：&lt;br /&gt;&lt;br /&gt;开始播放：&lt;br /&gt;  MediaPlayer mp=new MediaPlayer.create();&lt;br /&gt;  mp.setDataSource(PATH_TO_FILE);&lt;br /&gt;  mp.prepare();&lt;br /&gt;  mp.start();&lt;br /&gt;停止/播放和暂停/播放和上面一样。&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;3.录制&lt;/span&gt;&lt;br /&gt;录制要稍微复杂一些，按照步骤：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;实例化MediaRecorder：mr=new MediaRecorder();&lt;br /&gt;&lt;/li&gt;&lt;li&gt;初始化mr：mr.setAudioSource(MIC)/setVideoSource(CAMERA);必须在配置DataSource之前调用。&lt;/li&gt;&lt;li&gt;配置DataSource：设置输出文件格式(参见上表)/路径，编码器(参见上表)等&lt;/li&gt;&lt;li&gt;准备录制：mr.prepare();&lt;br /&gt;&lt;/li&gt;&lt;li&gt;开始录制：mr.start();&lt;br /&gt;&lt;/li&gt;&lt;li&gt;停止录制：mr.stop();&lt;/li&gt;&lt;li&gt;释放资源：mr.release();&lt;/li&gt;&lt;/ul&gt;学习这部分内容的时候，就想到对电话录音是个不错的主意。一google,发现早就有这个软件了，但有一个问题就是声音只能从MIC中录入(录音的效果不是很好)，受限于基带处理器，不能直接获取通话的声音记录，以后会不会开放这个功能接口？&lt;br /&gt;&lt;a href="http://groups.google.com/group/android-developers/browse_thread/thread/355254941f17aa17"&gt;http://groups.google.com/group/android-developers/browse_thread/thread/355254941f17aa17&lt;/a&gt;&lt;br /&gt;&lt;p style="margin-bottom: 0cm;"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-6770467056369918349?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/6770467056369918349/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/android_11.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/6770467056369918349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/6770467056369918349'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/android_11.html' title='Android中多媒体处理'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-5048738608124999704</id><published>2009-05-11T03:30:00.000-07:00</published><updated>2009-05-11T03:30:28.524-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>转：Android系统文件夹结构解析</title><content type='html'>和我在1.1的模拟器上看到的不太一样，估计是1.0版本的文件夹结构。&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.91linux.com/html/article/qianrushiyingyong/google_android/200901/03-15269.html"&gt;Android系统文件夹结构解析&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;\system\app&lt;br /&gt;这个里面主要存放的是常规下载的应用程序，可以看到都是以APK格式结尾的文件。在这个文件夹下的程序为系统默认的组件，自己安装的软件将不会出现在这里，而是\data\文件夹中。&lt;br /&gt;&lt;br /&gt;\system\bin&lt;br /&gt;这个目录下的文件都是系统的本地程序，从bin文件夹名称可以看出是binary二进制的程序，里面主要是Linux系统自带的组件(命令)&lt;br /&gt;&lt;br /&gt;\system\etc&lt;br /&gt;从文件夹名称来看保存的都是系统的配置文件，比如APN接入点设置等核心配置。&lt;br /&gt;&lt;br /&gt;\system\fonts&lt;br /&gt;字体文件夹，除了标准字体和粗体、斜体外可以看到文件体积最大的可能是中文字库，或一些unicode字库，从T-Mobile G1上可以清楚的看到显示简体中文正常，其中DroidSansFallback.ttf文件大小 。&lt;br /&gt;&lt;br /&gt;\system\framework&lt;br /&gt;framework主要是一些核心的文件，从后缀名为jar可以看出是是系统平台框架。&lt;br /&gt;&lt;br /&gt;\system\lib&lt;br /&gt;lib目录中存放的主要是系统底层库，一些so文件，如平台运行时库。&lt;br /&gt;&lt;br /&gt;\system\media&lt;br /&gt;\system\media\audio&lt;br /&gt;铃声音乐文件夹，除了常规的铃声外还有一些系统提示事件音&lt;br /&gt;&lt;br /&gt;\system\sounds&lt;br /&gt;默认的音乐测试文件，仅有一个test.mid文件，用于播放测试的文件。&lt;br /&gt;&lt;br /&gt;\system\usr&lt;br /&gt;用户文件夹，包含共享、键盘布局、时间区域文件等。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-5048738608124999704?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/5048738608124999704/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/android.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/5048738608124999704'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/5048738608124999704'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/android.html' title='转：Android系统文件夹结构解析'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-6989166060876120397</id><published>2009-05-10T22:59:00.000-07:00</published><updated>2009-05-11T03:30:55.856-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='人生感悟'/><title type='text'>转：华为任正非内部讲话：论灰色管理与职业化</title><content type='html'>&lt;a href="http://www.cnwnews.com/html/biz/cn_srxy/syxz/20090510/107147.html"&gt;http://www.cnwnews.com/html/biz/cn_srxy/syxz/20090510/107147.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;什么是职业化？就是在同一时间、同样的条件，做同样的事的成本更低，这就是职业化。&lt;br /&gt;&lt;br /&gt;管理改革要继续坚持从实用的目的出发，达到适用目的的原则。&lt;br /&gt;&lt;br /&gt;在管理改进中，要继续坚持遵循“七反对”的原则。“坚决反对完美主义，坚决反对繁琐哲学、坚决反对盲目的创新，坚决反对没有全局效益提升的局部优化，坚决反对没有全局观的干部主导变革，坚决反对没有业务实践经验的人参加变革，坚决反对没有充分论证的流程进行实用”。&lt;br /&gt;&lt;br /&gt;我们从来就不主张较大幅度的变革，而主张不断的改良，我们现在仍然要耐得住性子，谋定而后动。&lt;br /&gt;&lt;br /&gt;“投标，合同签订，交付，开票，回款”是贯穿公司运作的主业务流，承载着公司主要的物流和资金流。针对这个主业务流的流程化组织建设和管理系统的建设，是我们长期的任务。&lt;br /&gt;&lt;br /&gt;一个企业活的灵魂，就是坚持因地制宜实事求是：将这些造就我们成功的管理哲学的理念，用西方的方法规范，使之标准化、基线化，有利于广为传播与掌握并善用之。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-6989166060876120397?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/6989166060876120397/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/blog-post_10.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/6989166060876120397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/6989166060876120397'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/blog-post_10.html' title='转：华为任正非内部讲话：论灰色管理与职业化'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-2075771294120488407</id><published>2009-05-08T02:40:00.000-07:00</published><updated>2009-05-08T18:54:01.090-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='AVD'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android中的AVD</title><content type='html'>Android 1.5中引入了AVD(Android Virtual Device)。AVD是一个经过配置的模拟器。在创建AVD时可以配置的选项有：模拟器影像大小/触摸屏/轨迹球/摄像头/屏幕分辨率/键盘/GSM/GPS/Audio录放/SD卡支持/缓存区大小等&lt;br /&gt;&lt;br /&gt;任何一个android应用都必须运行在一个AVD。如果没有制定或自动找到合适的AVD，报如下类似错误：&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;Failed to find an AVD compatible with target 'Android 1.1'. Launch aborted.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;AVD必须指定target，target有类型，SDK1.5中目前有两种：platform,Add-on。Platform是android的平台target,add-on是android的插件target。&lt;br /&gt;在创建AVD，选择target时要注意：&lt;br /&gt;1)target的API level很重要，应用的API Level要&lt;=AVD的Target的API Level，否则应用不能运行。应用的API level在AndroidManifest.xml中定义。 2)最好建立一个API level最大的AVD，测试你的应用的在高版本AVD之上的兼容性。 3)如果你的应用使用了add-on插件(在manifest中声明了user-library)，那么要部署到的AVD的target需要指定为add-on类型。否则会报如下错误： &lt;span style="color: rgb(255, 0, 0);"&gt;[2009-05-08 18:07:13 - apidemo_my] Installation error: INSTALL_FAILED_MISSING_SHARED_LIBRARY&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;[2009-05-08 18:07:13 - apidemo_my] Please check logcat output for more details.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;[2009-05-08 18:07:13 - apidemo_my] Launch canceled!&lt;/span&gt;&lt;br /&gt;（如果某个应用使用了两个add-on插件，那该如何创建AVD呢？好像创建AVD时没有依附于多个target的选项？）&lt;br /&gt;&lt;br /&gt;现在SDK1.5有三个target,Android 1.1,Android 1.5,Google APIs，可以预见，随SDK的升级及add-on的扩展，会有新的target增加进来。可以通过android list target查看系统中有哪些target。怎样添加新的target呢？没有看到说明，可能要定制SDK才可以做到吧。&lt;br /&gt;&lt;br /&gt;通过Eclipse ADT运行应用时，ADT缺省会自动找合适AVD作为模拟环境运行apk。也可以不让ADT自动找，而手工指定，方法就是在Run Configurations中设置，任意指定一个系统中存在的AVD（ADT会自动列出所有的AVD供选择） &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_rWxYsshhe-I/SgP_9qH0mOI/AAAAAAAAAhU/wUsqmKv1d6w/s1600-h/Screenshot-Run+Configurations+.png"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 257px;" src="http://4.bp.blogspot.com/_rWxYsshhe-I/SgP_9qH0mOI/AAAAAAAAAhU/wUsqmKv1d6w/s320/Screenshot-Run+Configurations+.png" alt="" id="BLOGGER_PHOTO_ID_5333387818480998626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;引入了AVD后，做兼容性测试就比较容易了。可以根据需要创建多个AVD，每个AVD代表一种机型/版本。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-2075771294120488407?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/2075771294120488407/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/androidavd.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/2075771294120488407'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/2075771294120488407'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/androidavd.html' title='Android中的AVD'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_rWxYsshhe-I/SgP_9qH0mOI/AAAAAAAAAhU/wUsqmKv1d6w/s72-c/Screenshot-Run+Configurations+.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-3788627729585205231</id><published>2009-05-07T22:21:00.000-07:00</published><updated>2009-05-07T22:43:48.032-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><title type='text'>PC通过Nokia E51上网</title><content type='html'>很多时候不在座位上，又找不到wifi上网。这时候就想起了如果能通过手机的GPRS/EDGE上网该多好，Google了一下，还真可以：&lt;br /&gt;1)下载安装Nokia pc suite，我的E51没有中文版的pc suite，下载个英文版的也一样&lt;br /&gt;2)开启PC和E51的蓝牙功能&lt;br /&gt;3)启动Nokia pc suite,配置Nokia E51 Bluetooth Modem&lt;br /&gt;4)PC suite上选择“Connect to internet"&lt;br /&gt;5)One Touch Acess设置，Access Point设置为cmwap&lt;br /&gt;6)连接网络，应用能够联通了,速度为115.2Kbps，EDGE的速度还是慢了点。&lt;br /&gt;7)给IE/Firefox设置代理，代理服务器：10.0.0.172:80(IE要在拨号和虚拟专用网络中设置，而不是在局域网设置中设置)&lt;br /&gt;8)可以正常上网了！&lt;br /&gt;&lt;br /&gt;唯一的问题是访问google时，会自动跳到google的移动版，可能是google根据代理网关自动做了处理。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-3788627729585205231?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/3788627729585205231/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/pcnokia-e51.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3788627729585205231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3788627729585205231'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/pcnokia-e51.html' title='PC通过Nokia E51上网'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-28056005642228765</id><published>2009-05-05T23:03:00.000-07:00</published><updated>2009-05-05T23:32:41.778-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>拥抱linux</title><content type='html'>一直以来桌面使用的都是windows。也曾想试下linux，但总有些担心linux会不会安装复杂，使用起来麻烦。直到昨天看了&lt;a href="http://linuxtoy.org/docs/guide/ch06.html"&gt;《开源世界旅行手册》--完全用GNU/Linux工作&lt;/a&gt;一文，了解到Linux Desktop版本已今非昔比了，是时候拥抱linux了。&lt;br /&gt;&lt;br /&gt;昨晚回去下载了ubuntu9.04的cd，通过wubi安装，令人吃惊，整个安装比xp还要简单、快捷。我的Thinkpad T400的驱动竟然全部都自动识别出来了，比起当初安装XP费的那个牛劲，真是难以想象Linux的Desktop也如此强大了。&lt;br /&gt;&lt;br /&gt;安装顺利结束，遇到的第一个问题，就是输入法/中文问题。由于以前从来没有用过Linux的Desktop，只通过了Teminal接触了Server的简单命令，这个问题很是搞了一上午（幸好有Google，再加上类XP的操作模式），终于将中文问题和输入法问题搞定了。这篇blog就是通过sunpinyin输入法完成的。&lt;br /&gt;&lt;br /&gt;中间遇到最大的一个问题就是更新软件包。一开始不知道，选择语言后，系统提示下载软件包，但速度极慢，还老是fail。原来是系统缺省到ubuntu网站去下，后来通过google找到更换软件包下载源更新的方法，使用国内的lupaworld这个下载源，顺利将中文语言包更新。再找了个好用的sunpinyin输入法。&lt;br /&gt;&lt;br /&gt;完全在linux环境下，听着“青花瓷”，使用sunpinyin,firefox写了这篇blog。&lt;br /&gt;&lt;br /&gt;虽然还有很多命令还不知道，c语言也已经陌生，不要紧，先熟悉它，再掌握它！GNU/Linux，I am coming!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-28056005642228765?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/28056005642228765/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/linux_05.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/28056005642228765'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/28056005642228765'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/linux_05.html' title='拥抱linux'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-1090405347244509277</id><published>2009-05-04T19:46:00.000-07:00</published><updated>2009-05-05T07:40:25.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>选择哪个Linux发行版</title><content type='html'>想在笔记本上装个Linux学习，看到如下的评论：&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:微软雅黑;"&gt;&lt;span style="font-size:120%;"&gt;&lt;span style="color:deepskyblue;"&gt;如果生产环境下的Server，目前RHEL和SLES无可争议；自己做一个小网站Debian是我的最爱；如果是Desktop，那么现在Ubuntu确实是最好；如果初学者想深入学习Linux，Gentoo会让你受益匪浅。&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-1090405347244509277?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/1090405347244509277/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/linux.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1090405347244509277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1090405347244509277'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/linux.html' title='选择哪个Linux发行版'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-5644284202255939267</id><published>2009-05-04T18:28:00.000-07:00</published><updated>2009-05-04T18:32:15.583-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='joke'/><title type='text'>转：博士后和民工的区别</title><content type='html'>联合利华引进了一条香皂包装生产线，发现这条生产线有个缺陷：&lt;div id=":14d" class="ii gt"&gt;&lt;wbr&gt;常常会有盒子里没装入香皂。总不能把空盒子卖给顾客啊，&lt;wbr&gt;他们只得请了一个学自动化的博士后设 计一个方案来分拣空的香皂盒。&lt;wbr&gt;博士后拉起了一个十几人的科研攻关小组，综合采用了机械、&lt;wbr&gt;微电子、自动化、X射线探测等技术，花了几十万美金，&lt;wbr&gt;耗时三个半月 终于成功地解决了问题。每当生产线上有空香皂盒通过，&lt;wbr&gt;两旁的探测器会检测到，并且驱动一只机械手把空皂盒推走。  &lt;span&gt;&lt;/span&gt;&lt;br /&gt;      &lt;br /&gt;       中国南方有个乡镇企业也买了同样的生产线，&lt;wbr&gt;老板发现这个问题后大为发火，找了个小工来说:&lt;wbr&gt;你他妈给老子把这个搞定，不然你给老子滚蛋～。&lt;wbr&gt;小工很快想出了办法：他在生产线旁边放了台风扇猛吹，&lt;wbr&gt;空皂盒自然会被吹走。         &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-5644284202255939267?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/5644284202255939267/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/blog-post.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/5644284202255939267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/5644284202255939267'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/blog-post.html' title='转：博士后和民工的区别'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-3844577505446136639</id><published>2009-05-04T18:20:00.000-07:00</published><updated>2009-05-04T18:28:19.313-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webview'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>WebView,WebViewClient,WebChromeClient</title><content type='html'>这三者有何关系？&lt;br /&gt;&lt;br /&gt;在WebView的设计中，不是什么事都要WebView类干的，有些杂事是分给其他人的，这样WebView专心干好自己的解析、渲染工作就行了。WebViewClient就是帮助WebView处理各种通知、请求事件的，具体来说包括：&lt;br /&gt;&lt;br /&gt; onLoadResource&lt;br /&gt;&lt;br /&gt; onPageStart&lt;br /&gt;&lt;br /&gt; onPageFinish&lt;br /&gt;&lt;br /&gt; onReceiveError&lt;br /&gt;&lt;br /&gt; onReceivedHttpAuthRequest&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WebChromeClient是辅助WebView处理Javascript的对话框，网站图标，网站title，加载进度等&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; onCloseWindow(关闭WebView)&lt;br /&gt;&lt;br /&gt; onCreateWindow()&lt;br /&gt;&lt;br /&gt; onJsAlert (WebView上alert是弹不出来东西的，需要定制你的WebChromeClient处理弹出)&lt;br /&gt;&lt;br /&gt; onJsPrompt&lt;br /&gt;&lt;br /&gt; onJsConfirm&lt;br /&gt;&lt;br /&gt; onProgressChanged&lt;br /&gt;&lt;br /&gt; onReceivedIcon&lt;br /&gt;&lt;br /&gt; onReceivedTitle&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-3844577505446136639?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/3844577505446136639/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/05/webviewwebviewclientwebchromeclient.html#comment-form' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3844577505446136639'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3844577505446136639'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/05/webviewwebviewclientwebchromeclient.html' title='WebView,WebViewClient,WebChromeClient'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-1561934393617530682</id><published>2009-04-29T08:54:00.000-07:00</published><updated>2009-04-29T08:58:08.120-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android SDK1.5 R1发布</title><content type='html'>&lt;a href="http://developer.android.com/sdk/RELEASENOTES.html"&gt;http://developer.android.com/sdk/RELEASENOTES.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;主要变化为：&lt;br /&gt;&lt;br /&gt;1.SDK中包含了Android平台的多个版本(1.1,1.5),工具也升级了，这样可以发布应用到SDK支持的任何一个版本上。&lt;br /&gt;2.引入了Android Virtual Devices(AVD)，使之在模拟器上运行更接近于真机。每个AVD有自己的存储卡空间，使得更容易并发运行多个模拟器。&lt;br /&gt;3.SDK支持add-on。这可以扩充SDK，使得可以访问多个外部Android库，能够在模拟器内运行定制的系统映像。(?)&lt;br /&gt;4.新的ADT版本--0.9。增强了JUnit等有关功能&lt;br /&gt;5.更容易的性能分析。&lt;br /&gt;6.本地化资源管理更容易&lt;br /&gt;7.新的"android"工具代替了activitycreator脚本&lt;br /&gt; &lt;br /&gt;就API方面：&lt;br /&gt;&lt;br /&gt;1.增加了AppWidget框架，这下widget也有了&lt;br /&gt;2.增加了输入法框架&lt;br /&gt;3.增加了语音识别框架&lt;br /&gt;4.增强了多媒体框架:Audio的录/放API，Video的录像API，视频/照片的shareing intent等&lt;br /&gt;5.增强了UI框架:&lt;br /&gt;6.其他增强：重新设计的传感器API、WebView的增强等&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;从版本号也可看出，1.1--&gt;1.5比起1.0--&gt;1.1，功能增强还是较大的。但1.0--&gt;1.1用了四个半月,1.1--&gt;1.5只用了不到三个月。可看出Android逐步稳定，google要发力了!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-1561934393617530682?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/1561934393617530682/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/android-sdk15-r1.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1561934393617530682'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1561934393617530682'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/android-sdk15-r1.html' title='Android SDK1.5 R1发布'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-3551878047759376398</id><published>2009-04-29T08:49:00.000-07:00</published><updated>2009-04-29T08:57:09.302-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webview'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>WebView再探</title><content type='html'>从&lt;a href="http://iamewang.blogspot.com/2009/04/webview.html"&gt;WebView初探&lt;/a&gt; 了解到WebView的强大，。听说WebView对Javascript的支持也很强，想从网上找些例子，还很难找，最终从google老家找了一个&lt;a href="http://code.google.com/p/apps-for-android/source/browse/#svn/trunk/Samples/WebViewDemo%3Fstate%3Dclosed"&gt;Java和Javascript互调&lt;/a&gt;的例子 ，当时看了，下巴“咣当”就掉在地上了，太强了！这样也行？&lt;br /&gt;整个Eclipse ADT工程例子中都有，这里重点分析一下代码：&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;public class WebViewDemo extends Activity {&lt;br /&gt; private WebView mWebView;&lt;br /&gt; private Handler mHandler = new Handler();&lt;br /&gt;&lt;br /&gt; public void onCreate(Bundle icicle) {&lt;br /&gt;  super.onCreate(icicle);&lt;br /&gt;  setContentView(R.layout.webviewdemo);&lt;br /&gt;  mWebView = (WebView) findViewById(R.id.webview);&lt;br /&gt;  WebSettings webSettings = mWebView.getSettings();&lt;br /&gt;  webSettings.setJavaScriptEnabled(true);&lt;br /&gt;  mWebView.addJavascriptInterface(new Object() {&lt;br /&gt;   public void clickOnAndroid() {&lt;br /&gt;    mHandler.post(new Runnable() {&lt;br /&gt;     public void run() {&lt;br /&gt;      mWebView.loadUrl("javascript:wave()");&lt;br /&gt;     }&lt;br /&gt;    });&lt;br /&gt;   }&lt;br /&gt;  }, "demo");&lt;br /&gt;  mWebView.loadUrl("file:///android_asset/demo.html");&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;这里的重点是addJavascriptInterface(Object obj,String interfaceName)方法，该方法将一个java对象绑定到一个javascript对象中，javascript对象名就是 interfaceName，作用域是Global。这样初始化webview后，在webview加载的页面中就可以直接通过 javascript:window.demo访问到绑定的java对象了。来看看在html中是怎样调用的：&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&amp;lt;html&amp;gt;&lt;br /&gt;        &amp;lt;script language=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;                function wave() {&lt;br /&gt;                    document.getElementById(&amp;quot;droid&amp;quot;).src=&amp;quot;android_waving.png&amp;quot;;&lt;br /&gt;                }&lt;br /&gt;        &amp;lt;/script&amp;gt;&lt;br /&gt;        &amp;lt;body&amp;gt;&lt;br /&gt;            &amp;lt;a onClick=&amp;quot;window.demo.clickOnAndroid()&amp;quot;&amp;gt;&lt;br /&gt;                                &amp;lt;img id=&amp;quot;droid&amp;quot; src=&amp;quot;android_normal.png&amp;quot;/&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;                                Click me!&lt;br /&gt;            &amp;lt;/a&amp;gt;&lt;br /&gt;        &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt; 这样在javascript中就可以调用java对象的clickOnAndroid()方法了，wave()方法是java中调用javascript的例子。&lt;br /&gt;&lt;br /&gt;这里还有几个知识点：&lt;br /&gt;&lt;br /&gt;1)为了让WebView从apk文件中加载assets，Android SDK提供了一个schema，前缀为"file:///android_asset/"。WebView遇到这样的schema，就去当前包中的 assets目录中找内容。如上面的"file:///android_asset/demo.html"&lt;br /&gt;&lt;br /&gt;2)addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中，不能运行在构造他的线程中，这也是使用Handler的目的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-3551878047759376398?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/3551878047759376398/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/webview_29.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3551878047759376398'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3551878047759376398'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/webview_29.html' title='WebView再探'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-2792260422429461758</id><published>2009-04-28T20:23:00.000-07:00</published><updated>2009-05-05T23:40:31.805-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blogspot'/><title type='text'>Blogspot中贴代码</title><content type='html'>原来一直对blogsport不了解哈。通过修改HTML模板也是可以贴代码地～～&lt;br /&gt;方法参见Antlite的方法：&lt;a href="http://antlite.blogspot.com/2008/07/google-prettify-code-syntax-highligting.html"&gt;用google prettify code给blogspot代码着色&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;如果是贴HTML，那就只好先通过&lt;a href="http://www.elliotswan.com/postable/"&gt;http://www.elliotswan.com/postable/&lt;/a&gt;将特殊标签转义后再放在pre标签中了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-2792260422429461758?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/2792260422429461758/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/blogspot.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/2792260422429461758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/2792260422429461758'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/blogspot.html' title='Blogspot中贴代码'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-1219222098096269728</id><published>2009-04-28T19:19:00.000-07:00</published><updated>2009-04-29T08:47:07.641-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='webview'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>WebView初探</title><content type='html'>环境:Android SDK 1.1&lt;br /&gt;&lt;br /&gt;Android手机中内置了一款高性能webkit内核浏览器，在SDK中封装成了WebView组件。&lt;br /&gt;SDK的Dev Guide中有一个WebView的简单例子 ，寥寥几行代码就可以做一个自己的浏览器。&lt;br /&gt;在实验时，有如下几个注意事项：&lt;br /&gt;1.AndroidManifest.xml中必须使用许可"android.permission.INTERNET",否则会出Web page not available错误：&lt;br /&gt;&lt;img src="http://1.bp.blogspot.com/_rWxYsshhe-I/Sfe70JKjoHI/AAAAAAAAAhE/Yy_YK-xuQyQ/s1600/error.jpg" /&gt;&lt;br /&gt;2.如果访问的页面中有Javascript，则webview必须设置支持Javascript:&lt;br /&gt;  webview.getSettings().setJavaScriptEnabled(true); &lt;br /&gt;  否则显示空白页面。&lt;br /&gt;3.如果页面中链接，如果希望点击链接继续在当前browser中响应，而不是新开Android的系统browser中响应该链接，必须覆盖webview的WebViewClient对象：&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;         mWebView.setWebViewClient(new WebViewClient(){&lt;br /&gt;       public boolean shouldOverrideUrlLoading(WebView view, String url) {&lt;br /&gt;           view.loadUrl(url);&lt;br /&gt;           return true;&lt;br /&gt;       }&lt;br /&gt;   });&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;上述方法告诉系统由我这个WebViewClient处理这个Intent,我来加载URL。点击一个链接的Intent是向上冒泡的，shouldOverrideUrlLoading方法return true表示我加载后这个Intent就消费了，不再向上冒泡了。&lt;br /&gt;4.如果不做任何处理，在显示你的Brower UI时，点击系统“Back”键，整个Browser会作为一个整体“Back"到其他Activity中，而不是希望的在Browser的历史页面中 Back。如果希望实现在历史页面中Back，需要在当前Activity中处理并消费掉该Back事件：&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;     public boolean onKeyDown(int keyCode, KeyEvent event) {&lt;br /&gt;         if ((keyCode == KeyEvent.KEYCODE_BACK) &amp;&amp; mWebView.canGoBack()) {&lt;br /&gt;          mWebView.goBack();&lt;br /&gt;             return true;&lt;br /&gt;         }&lt;br /&gt;         return super.onKeyDown(keyCode, event);&lt;br /&gt;     }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-1219222098096269728?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/1219222098096269728/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/webview.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1219222098096269728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1219222098096269728'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/webview.html' title='WebView初探'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_rWxYsshhe-I/Sfe70JKjoHI/AAAAAAAAAhE/Yy_YK-xuQyQ/s72-c/error.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-5267321961278868071</id><published>2009-04-28T07:21:00.000-07:00</published><updated>2009-04-28T07:58:26.751-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android以后会胜出其他Linux的手机平台</title><content type='html'>“伐木丁丁鸟鸣嘤嘤”写的几篇文章写的不错:&lt;br /&gt;&lt;a href="http://blog.csdn.net/fmddlmyy/archive/2008/02/03/2080637.aspx"&gt;&lt;br /&gt;谈谈智能手机软件（1）：概述&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.csdn.net/fmddlmyy/archive/2008/02/03/2080649.aspx"&gt;谈谈智能手机软件（2）：Linux手机软件&lt;/a&gt;&lt;br /&gt;&lt;a href="http://blog.csdn.net/fmddlmyy/archive/2008/11/16/3314182.aspx"&gt;Android能用Linux打败Linux手机吗？&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;介绍了几种手机上的Linux平台，增长了见识。&lt;br /&gt;&lt;br /&gt;就我的感觉而言，毫无疑问Android以后会胜出其他Linux的手机平台，Google的江湖地位是其一，最重要的一点要看到，从iPhone起，智能手机OS/平台取胜的关键是应用！大量的应用！只有有了应用，才能够获得用户。你做的Linux平台可以模仿Window Mobile的UI，但应用呢？Office呢？这些是这些Linux平台的致命伤。&lt;br /&gt;&lt;br /&gt;怎样才能有大量的应用？只有吸引大量的开发者进入这个平台/市场，才能繁荣这个平台上应用。现在那个平台上的开发人员多，开发应用的门槛低？Java!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-5267321961278868071?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/5267321961278868071/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/androidlinux.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/5267321961278868071'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/5267321961278868071'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/androidlinux.html' title='Android以后会胜出其他Linux的手机平台'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-957586787098869391</id><published>2009-04-27T01:28:00.000-07:00</published><updated>2009-04-27T08:07:18.978-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dex'/><category scheme='http://www.blogger.com/atom/ns#' term='apk'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>apk的文件结构</title><content type='html'>apk实际是就是一个rar/zip，重命名rar后可以用winrar直接打开&lt;br /&gt;&lt;br /&gt;apk文件一般包括如下内容：&lt;br /&gt;&lt;br /&gt;META-INF                     -----没有签名的apk没有这个目录，该目录下包括签名信息&lt;br /&gt;res                                    -----资源文件目录，和工程中的一样&lt;br /&gt;AndroidManifest.xml    -----主描述文件，和工程中的一样&lt;br /&gt;classes.dex                      -----所有的java类编译后的文件，是Dalvik VM需要的字节码&lt;br /&gt;resources.arsc                -----res目录的结构，重新组织过的二进制文件，格式未知&lt;br /&gt;&lt;br /&gt;其中dex的格式参见:&lt;a href="http://www.retrodev.com/android/dexformat.html"&gt;http://www.retrodev.com/android/dexformat.html&lt;/a&gt;&lt;br /&gt;把这个搞清楚了，就可以反编译dex文件了:)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-957586787098869391?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/957586787098869391/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/apk_27.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/957586787098869391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/957586787098869391'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/apk_27.html' title='apk的文件结构'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-3805233792283305817</id><published>2009-04-26T22:31:00.000-07:00</published><updated>2009-05-05T23:33:45.716-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='intent'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>如何在Android开机时启动你的应用？</title><content type='html'>和监听SMS类似。在Android系统在启动完成后，会发出一个android.intent.action.BOOT_COMPLETED的Intent。配置你的Activity/Service接收他就行了&lt;br /&gt;&lt;br /&gt;详细参见&lt;a href="http://iame.javaeye.com/admin/blogs/375515"&gt;http://iame.javaeye.com/admin/blogs/375515&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Android系统所有的Permission参见Reference中的&lt;a href="http://developer.android.com/reference/android/Manifest.permission.html"&gt;android.Manifest.permission&lt;/a&gt;类的定义,看看他声明的所有primission，发现可以做不少事情，才会体会到Intent的强大。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-3805233792283305817?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/3805233792283305817/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/android.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3805233792283305817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3805233792283305817'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/android.html' title='如何在Android开机时启动你的应用？'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-179731189170713964</id><published>2009-04-26T20:33:00.000-07:00</published><updated>2009-05-05T23:39:50.907-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sms'/><category scheme='http://www.blogger.com/atom/ns#' term='intent'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>Android上监听收到的SMS</title><content type='html'>Android SDK1.1 验证可行。&lt;br /&gt;&lt;br /&gt;1.实现一个Receiver【收到的是PDU，需要从PDU中还原出SMSMessage】&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;public class SMSReceiver extends BroadcastReceiver {&lt;br /&gt; public void onReceive(Context ctx, Intent intent) {&lt;br /&gt;  Log.d("SMSReceiver", "a message received");&lt;br /&gt;  Bundle bundle = intent.getExtras();&lt;br /&gt;  if (bundle != null) {&lt;br /&gt;   Object[] pdus = (Object[]) bundle.get("pdus");&lt;br /&gt;   SmsMessage[] messages = new SmsMessage[pdus.length];&lt;br /&gt;   for (int i = 0; i &lt; pdus.length; i++) {     &lt;br /&gt;      messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);    &lt;br /&gt;   }&lt;br /&gt;   for (SmsMessage message : messages) {     &lt;br /&gt;      String strFrom = message.getDisplayOriginatingAddress();&lt;br /&gt;      String strMsg = message.getDisplayMessageBody();  &lt;br /&gt;      Log.d("SMSReceiver","From:"+strFrom);&lt;br /&gt;      Log.d("SMSReceiver","Msg:"+strMsg);&lt;br /&gt;    } &lt;br /&gt;  }&lt;br /&gt; } &lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;2.配置应用permission，允许接收SMS。在AndroidManifest.xml中&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;&amp;lt;uses-permission android:name="android.permission.RECEIVE_SMS" /&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;3.配置Receiver的Intent-Filter，可以接收SMS。在AndroidManifest.xml中&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;       &amp;lt;receiver android:name=".app.SMSReceiver"&amp;gt;&lt;br /&gt;        &amp;lt;intent-filter&amp;gt;&lt;br /&gt;         &amp;lt;action android:name="android.provider.Telephony.SMS_RECEIVED"/&amp;gt;&lt;br /&gt;        &amp;lt;/intent-filter&amp;gt;&lt;br /&gt;       &amp;lt;/receiver&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;关于监听发出的SMS参考：&lt;br /&gt;&lt;a href="http://blog.chinaunix.net/u/9577/showart_1850111.html"&gt;http://blog.chinaunix.net/u/9577/showart_1850111.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-179731189170713964?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/179731189170713964/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/androidsms.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/179731189170713964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/179731189170713964'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/androidsms.html' title='Android上监听收到的SMS'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-3502087668319224244</id><published>2009-04-23T23:23:00.000-07:00</published><updated>2009-04-24T02:49:53.187-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Google的核心技术</title><content type='html'>听了一遍李开复对&lt;a href="http://v.youku.com/v_show/id_XNjA2NDU2MTY=.html"&gt;云计算的演讲&lt;/a&gt;，提到Google的核心技术并非搜索，搜索只是在这个核心技术之上的一个应用。那他的核心技术是什么呢？&lt;br /&gt;&lt;br /&gt;---基于普通pc的海量存储、海量计算能力，以及管理这些海量存储、计算能力的Cluster软件，所有这些构成的遍布世界的Google数据中心，这才是Google的核心技术，也是云计算的基础。具体的技术就是:&lt;a href="http://blog.csdn.net/active1001/archive/2007/07/02/1675920.aspx"&gt;MapReduce&lt;/a&gt;、&lt;a href="http://blog.csdn.net/xuleicsu/archive/2005/11/10/526386.aspx"&gt;GFS&lt;/a&gt;、&lt;a href="http://blog.csdn.net/accesine960/archive/2006/02/09/595628.aspx"&gt;BigTale&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;演讲中也提到的Google的海量服务器对电力的巨量消耗，导致了其他数据中心的倒闭(数据中心对托管的服务器是免收电费的)。从这个角度出发，不难理解Google的数据中心要建造水库旁边---水力发电成本更低，可以降低数据中心的运营成本。&lt;a href="http://www.gseeker.com/50226711/googleeccae_138568.php"&gt;一篇文章&lt;/a&gt;中提到Google的一个数据中心的耗电量相当于一个8.2万人的城市的耗电量，看看他的&lt;a href="http://www.gseeker.com/50226711/egoogleccieieie_38750.php"&gt;照片&lt;/a&gt;吧。&lt;br /&gt;&lt;br /&gt;这些数据中心之间的互联互通至关重要，为了保证数据中心的通讯畅通，Google甚至在美国建立了自己光纤骨干网。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-3502087668319224244?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/3502087668319224244/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/google.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3502087668319224244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/3502087668319224244'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/google.html' title='Google的核心技术'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-6847752655649349080</id><published>2009-04-23T20:20:00.000-07:00</published><updated>2009-04-24T01:40:37.662-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='apk'/><category scheme='http://www.blogger.com/atom/ns#' term='android'/><title type='text'>APK的安装/卸载</title><content type='html'>制作好apk后(必须签名)，通过adb install xx.apk后，&lt;br /&gt;1)apk文件放在了/data/app/目录下&lt;br /&gt;2)/data/system/packages.xml中增加了条记录&lt;br /&gt;3)如果使用到了数据库，首次运行后/data/data下增加了个apk使用到的数据目录&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;卸载方式有如下几种：&lt;br /&gt;1)优雅式：通过界面 settings--&gt;applications--&gt;manage applications--&gt;找到应用--&gt;application Info--&gt;uninstall 就可以正常卸载应用了。&lt;br /&gt;2)粗暴式 直接到/data/app目录下删除apk&lt;br /&gt;  adb shell&lt;br /&gt;  cd /data/app&lt;br /&gt;  rm xxx.apk&lt;br /&gt;&lt;br /&gt;  不推荐这种方式，只删除了apk，如果应用还有其他的目录，如数据库目录/data/data/xxx/databases/并没有清理干净，留有隐患。&lt;br /&gt;3)隐藏式：&lt;br /&gt;  adb uninstall &lt;span style="font-style: italic;"&gt;package-name&lt;/span&gt;  (这个在adb的帮助文档中没有说明，但可以用)&lt;br /&gt;  什么，不知道package-name？看看你的AndroidManifest.xml中&lt;manifest&gt;有个必须的属性就是package，它所指定的就是package-name。&lt;br /&gt;&lt;br /&gt;PS. android中package和application不是一个东西，但也没有看到清楚的解释。能否这样理解：&lt;br /&gt;package是物理概念，application是运行期的逻辑概念？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-6847752655649349080?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/6847752655649349080/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/apk.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/6847752655649349080'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/6847752655649349080'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/apk.html' title='APK的安装/卸载'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-5088171370962871151</id><published>2009-04-22T18:13:00.000-07:00</published><updated>2009-04-22T18:22:08.223-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='app engine'/><title type='text'>首个app engine应用发布成功</title><content type='html'>昨天看了doc/java/get start。试着例子写了一个app，今天发布成功：&lt;br /&gt;&lt;a href="http://hello2iame.appspot.com"&gt;http://hello2iame.appspot.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;其中共遇到如下问题：&lt;br /&gt;1)Eclispse创建工程时，将整个工程的文本文件的编码设为UTF-8。xp下默认的GBK造成jsp和编译后的文件出错&lt;br /&gt;2)Eclipse需要的JRE指向JDK，不能指向单纯的JRE。因为编译、发布需要javac&lt;br /&gt;3)昨天通过Eclipse发布时，会提示Http 400错误：是由于Google App Engine for Java目前是early look，申请需要审核确认，今天收到帐号激活的邮件，就可以正常发布了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-5088171370962871151?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/5088171370962871151/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/app-engine.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/5088171370962871151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/5088171370962871151'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/app-engine.html' title='首个app engine应用发布成功'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-1478593282956755386</id><published>2009-04-22T02:05:00.000-07:00</published><updated>2009-04-22T02:20:56.312-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gmail'/><title type='text'>gmail过滤器设置多个发件人</title><content type='html'>通过gmail订阅了很多newsletter，收到这些邮件想统一添加一个标签。可以使用gmail的过滤器设置，&lt;span style="font-weight: bold; color: rgb(0, 0, 153);"&gt;将多个发件人以||隔开&lt;/span&gt;，这样凡是位于from中的发件人的邮件收到后就可以自动打标签了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-1478593282956755386?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/1478593282956755386/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/gmail.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1478593282956755386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1478593282956755386'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/gmail.html' title='gmail过滤器设置多个发件人'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2335601547046824080.post-1453684988784921318</id><published>2009-04-22T01:46:00.000-07:00</published><updated>2009-04-22T01:47:48.832-07:00</updated><title type='text'>开张大吉</title><content type='html'>内容以技术、生活为主&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2335601547046824080-1453684988784921318?l=iamewang.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iamewang.blogspot.com/feeds/1453684988784921318/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://iamewang.blogspot.com/2009/04/blog-post.html#comment-form' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1453684988784921318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2335601547046824080/posts/default/1453684988784921318'/><link rel='alternate' type='text/html' href='http://iamewang.blogspot.com/2009/04/blog-post.html' title='开张大吉'/><author><name>iame</name><uri>http://www.blogger.com/profile/11093430004842864054</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
