<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;CUIAR3c8eip7ImA9WhRWF0o.&quot;"><id>tag:blogger.com,1999:blog-31738486</id><updated>2012-01-05T22:25:46.972+08:00</updated><category term="英语" /><category term="Solaris Unix" /><category term="翻译" /><category term="旅游 三亚" /><category term="数据库 多维 迭代" /><category term="google" /><title>tallrain's blog</title><subtitle type="html">tallrain's blog</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://tallrain.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>282</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/tallrain" /><feedburner:info uri="tallrain" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUIARn45eip7ImA9WhRWF0o.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-1390422098723336497</id><published>2012-01-05T22:25:00.001+08:00</published><updated>2012-01-05T22:25:47.022+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-05T22:25:47.022+08:00</app:edited><title>Android获得mp3文件信息</title><content type="html">&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;&lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;public boolean GetMp3Info(String mpFullname)&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;{&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;try&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;{&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpFilename = &amp;quot;&amp;quot;;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpTitle = &amp;quot;&amp;quot;;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpArtist = &amp;quot;&amp;quot;;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpAlbum = &amp;quot;&amp;quot;;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpDuration = &amp;quot;&amp;quot;;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpSize = &amp;quot;0&amp;quot;;	&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;String selection = MediaStore.Audio.Media.DATA + &amp;quot; = ?&amp;quot;; // like&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;//String path=&amp;quot;/mnt/sdcard/music&amp;quot;;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;String[] selectionArgs = {&amp;quot;/mnt&amp;quot; + mpFullname};	&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;//String selection = MediaStore.Audio.Media.IS_MUSIC + &amp;quot;!=0&amp;quot;;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;String [] projection = {&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;//MediaStore.Audio.Media._ID,&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;MediaStore.Audio.Media.TITLE,&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;MediaStore.Audio.Media.ARTIST,&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;MediaStore.Audio.Media.ALBUM,&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;MediaStore.Audio.Media.DURATION,&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;MediaStore.Audio.Media.SIZE&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;//MediaStore.Audio.Media.DATA, // --&amp;gt; Location&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;//MediaStore.Audio.Media.DISPLAY_NAME,	&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;};&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;&lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;Cursor cursor = null;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;cursor = managedQuery(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, projection, selection, selectionArgs, null);&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;//	 Cursor cursor2 = query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, &lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;//	 null, null, MediaStore.Audio.Media.DEFAULT_SORT_ORDER)&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpTitle = cursor.getString(0).toString();&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpArtist = cursor.getString(1).toString();&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpAlbum = cursor.getString(2).toString();&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpDuration = cursor.getString(3).toString();&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;mpSize = cursor.getString(4).toString();&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;//cursor.getString(5).toString();&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;return true;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;}&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;catch (Exception e)&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;{&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;return false;&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;}	&lt;/span&gt;&lt;br style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;  &lt;span style="font-family:arial,sans-serif;font-size:13px;line-height:18px;background-color:rgb(255,255,255)"&gt;} // GetMp3Info() ends&lt;/span&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-1390422098723336497?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Km95wr-ap-el-jPtgjxRaswhXU8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Km95wr-ap-el-jPtgjxRaswhXU8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Km95wr-ap-el-jPtgjxRaswhXU8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Km95wr-ap-el-jPtgjxRaswhXU8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/kYypjcUgtcw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/1390422098723336497/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=1390422098723336497" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/1390422098723336497?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/1390422098723336497?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/kYypjcUgtcw/androidmp3.html" title="Android获得mp3文件信息" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2012/01/androidmp3.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak8AR3k8eip7ImA9WhRWEkQ.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-6525081836175910216</id><published>2011-12-31T10:33:00.000+08:00</published><updated>2011-12-31T10:34:06.772+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-31T10:34:06.772+08:00</app:edited><title>Android：下载与线程控制</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;最近在写的一个APP涉及到下载。&lt;/div&gt;&lt;div&gt;目前想到有两种设计方法。&lt;/div&gt;&lt;div&gt;方法一：建一个下载线程，与主线程保持同步。&lt;/div&gt;&lt;div&gt;1、启动下载线程。&lt;/div&gt;&lt;div&gt;2、在主线程利用synchronized锁定下载线程，前用wait()方法让主线程等待。// wait() = sleep() until notify();&lt;/div&gt;  &lt;div&gt;3、下载线程利用synchronized加锁，操作完成后用notify()方法通知主线程释放。&lt;/div&gt;&lt;div&gt;这种方法的优点是可以保持2个线程的同步，缺点是下载线程未完成时主线程的界面冻结。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;方法二：下载线程与主线程异步操作，利用Handler向Activity传递消息。&lt;/div&gt;&lt;div&gt;1、创建一个Handler类，重写handleMessage方法。&lt;/div&gt;&lt;div&gt;  2、启动下载线程。&lt;/div&gt;&lt;div&gt;3、下载线程利用sendMessage(message)方法向Activity发送消息。&lt;/div&gt;&lt;div&gt;4、Handler.handleMessage()在处理下载完成的消息时，继续后续的动作。&lt;/div&gt;&lt;div&gt;这种方法的优点是方便在主界面显示进度条，也可以利用按钮中止下载。&lt;/div&gt;&lt;div&gt;缺点是主界面的一些业务逻辑要根据下载的状态进行一些判断。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-6525081836175910216?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/5Eh4RPUNfHM2NY9dtcM5KOe4Lsc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5Eh4RPUNfHM2NY9dtcM5KOe4Lsc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/5Eh4RPUNfHM2NY9dtcM5KOe4Lsc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/5Eh4RPUNfHM2NY9dtcM5KOe4Lsc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/07uvrsypn_U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/6525081836175910216/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=6525081836175910216" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/6525081836175910216?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/6525081836175910216?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/07uvrsypn_U/android_31.html" title="Android：下载与线程控制" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/android_31.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkIBRnk6fyp7ImA9WhRWEUo.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-6807156386261746679</id><published>2011-12-29T22:55:00.001+08:00</published><updated>2011-12-29T22:55:57.717+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-29T22:55:57.717+08:00</app:edited><title>Android MediaPlayer：进度条、静音</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;进度条：&lt;/div&gt;&lt;div&gt;    Runnable start = new Runnable()&lt;/div&gt;&lt;div&gt;    {    &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt; &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;@Override&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;public void run() &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;// TODO Auto-generated method stub&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;mp.start(); // start mediaplayer&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;handler.post(updatesb);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;//use a handler to update SeekBar&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;    };&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    Runnable updatesb = new Runnable()&lt;/div&gt;&lt;div&gt;    {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;@Override&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;public void run() &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;// TODO Auto-generated method stub&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;SeekBar1.setProgress(mp.getCurrentPosition());&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;			&lt;/span&gt;handler.postDelayed(updatesb, 100);&lt;/div&gt;  &lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;		&lt;/span&gt;}&lt;/div&gt;&lt;div&gt;    };&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;然后用handler.post(start)启动播放器。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;静音：&lt;/div&gt; &lt;div&gt; &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;btnMute.setOnClickListener(new Button.OnClickListener()&lt;/div&gt;&lt;div&gt;    {&lt;/div&gt;&lt;div&gt;      @Override&lt;/div&gt;&lt;div&gt;      public void onClick(View v)&lt;/div&gt;&lt;div&gt;      {  &lt;/div&gt;  &lt;div&gt;    &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;  //System.out.println(&amp;quot;Button Mute&amp;quot;);&lt;/div&gt;&lt;div&gt;          if (SoundEnabled) &lt;/div&gt;&lt;div&gt;          {&lt;/div&gt;&lt;div&gt;              audioManager.setStreamMute(AudioManager.STREAM_MUSIC , true);&lt;/div&gt;  &lt;div&gt;              btnMute.setText(&amp;quot; Unmute &amp;quot;);&lt;/div&gt;&lt;div&gt;          } &lt;/div&gt;&lt;div&gt;          else &lt;/div&gt;&lt;div&gt;          {&lt;/div&gt;&lt;div&gt;              audioManager.setStreamMute(AudioManager.STREAM_MUSIC , false);&lt;/div&gt;  &lt;div&gt;              btnMute.setText(&amp;quot;  Mute  &amp;quot;);&lt;/div&gt;&lt;div&gt;          }&lt;/div&gt;&lt;div&gt;          SoundEnabled = !SoundEnabled;    &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;      &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;          &lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;  &lt;/div&gt;  &lt;div&gt;      }&lt;/div&gt;&lt;div&gt;    }); // btnMute onClick ends&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;	&lt;/span&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-6807156386261746679?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/EyAhzcO1AQlK-Ni8HgUz9bJszOE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EyAhzcO1AQlK-Ni8HgUz9bJszOE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/EyAhzcO1AQlK-Ni8HgUz9bJszOE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/EyAhzcO1AQlK-Ni8HgUz9bJszOE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/z81zkf4bBCE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/6807156386261746679/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=6807156386261746679" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/6807156386261746679?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/6807156386261746679?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/z81zkf4bBCE/android-mediaplayer.html" title="Android MediaPlayer：进度条、静音" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/android-mediaplayer.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EASHk8cCp7ImA9WhRXGU0.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-4213738522607290781</id><published>2011-12-26T20:13:00.004+08:00</published><updated>2011-12-26T20:14:09.778+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T20:14:09.778+08:00</app:edited><title>Android BroadcastReceiver</title><content type="html">&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  1. 在AndroidManifest.xml定义相关权限：&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  &amp;lt;uses-permission android:name="android.permission.WAKE_LOCK" /&amp;gt;&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  2. 在Main Activity中建立AlarmManager:&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  Intent  intent = new Intent(MainActivity.this, AlarmReceiver.class);&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, PendingIntent.FLAG_ONE_SHOT);&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  am.set(AlarmManager.RTC_WAKEUP, Schedule_Time, pendingIntent);&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  3. 在Receiver中建立响应：&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  public class AlarmReceiver extends BroadcastReceiver&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  {&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  @Override&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  public void onReceive(Context context, Intent intent)&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  {&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  Intent i = new Intent(context, ActionActivity.class);&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  Bundle bundleRet = new Bundle();&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  bundleRet.putString("STR_CALLER", "");&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  i.putExtras(bundleRet);&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  context.startActivity(i);&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  }&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  }&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-4213738522607290781?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Th78EDnlq2BSH6o6OcoM2zRNARU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Th78EDnlq2BSH6o6OcoM2zRNARU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Th78EDnlq2BSH6o6OcoM2zRNARU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Th78EDnlq2BSH6o6OcoM2zRNARU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/VIfcPJ4Aj4Y" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/4213738522607290781/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=4213738522607290781" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/4213738522607290781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/4213738522607290781?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/VIfcPJ4Aj4Y/android-broadcastreceiver.html" title="Android BroadcastReceiver" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/android-broadcastreceiver.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EHQng9eSp7ImA9WhRXGU0.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-5672904708193228032</id><published>2011-12-26T20:13:00.003+08:00</published><updated>2011-12-26T20:13:53.661+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T20:13:53.661+08:00</app:edited><title>关于MapReduce</title><content type="html">&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  这两天在读More Joel on Software，其中有一节讲到MapReduce的原理，于是查了WIKI，读了一些博客，大致了解了其原理。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  考虑到我准备写一个翻译MES系统界面的程序，可以借鉴MapReduce的方法。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  大致地说，Map是将一个大的作业转化为若干个小的、可分发、可并行的作业。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  Reduce是一个逻辑独立的作业，每次作业都能减少总体的运算量。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  举例来说，这个翻译是将一个XML文件中对应位置的英语文本翻译为中文。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  按照MapReduce的方法，大致分为以下4个步骤：&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  1、Map，将所有要翻译的句子提取出来，存入数组。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  2、Sort，将数组里的数据排序。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  3、Reduce，这里有2个函数：&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  第1个函数取字符串中匹配起始字符，字典中可查到的最长单词，如查Work Station而不是Work。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  第2个函数将最小单位字符串查询字典进行翻译。&lt;/div&gt;&lt;div style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:0px;margin-left:0px;font-family:Arial,Helvetica,sans-serif;font-size:14px;line-height:17px;text-align:left"&gt;  4、Union，按既定的顺序拼接翻译好的数组。&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-5672904708193228032?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/_UbBe9zZzayuwFVpx7l9SelbB88/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_UbBe9zZzayuwFVpx7l9SelbB88/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/_UbBe9zZzayuwFVpx7l9SelbB88/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/_UbBe9zZzayuwFVpx7l9SelbB88/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/gLnyB6jpEHM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/5672904708193228032/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=5672904708193228032" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/5672904708193228032?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/5672904708193228032?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/gLnyB6jpEHM/mapreduce.html" title="关于MapReduce" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/mapreduce.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EFQHY8fCp7ImA9WhRXGU0.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-7202587509257720058</id><published>2011-12-26T20:13:00.001+08:00</published><updated>2011-12-26T20:13:31.874+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T20:13:31.874+08:00</app:edited><title>Select From Amazon SimpleDB</title><content type="html">&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  //1. Creating a SimpleDB Client&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  AWSCredentials credentials = new BasicAWSCredentials( ACCESS_KEY, SECRET_KEY );&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  AmazonSimpleDBClient sdbClient = new AmazonSimpleDBClient( credentials);&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  sdbClient.setEndpoint("&lt;a href="http://sdb.us-west-1.amazonaws.com"&gt;sdb.us-west-1.amazonaws.com&lt;/a&gt;"); // to define Data Center Region&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   &lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  //2. Select&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  String nextToken = null;&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  SelectRequest selectRequest = new SelectRequest( "select * from myDomain" ).withConsistentRead( true );&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  selectRequest.setNextToken( nextToken );&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  SelectResult response = sdbClient.select( selectRequest );&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  nextToken = response.getNextToken();&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-7202587509257720058?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qb4_d_D7dDBAZsvXhamZ09wzRxs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qb4_d_D7dDBAZsvXhamZ09wzRxs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qb4_d_D7dDBAZsvXhamZ09wzRxs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qb4_d_D7dDBAZsvXhamZ09wzRxs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/zsIsANGLjpM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/7202587509257720058/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=7202587509257720058" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/7202587509257720058?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/7202587509257720058?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/zsIsANGLjpM/select-from-amazon-simpledb.html" title="Select From Amazon SimpleDB" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/select-from-amazon-simpledb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IMSHc7fip7ImA9WhRXGU0.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-261468995665732055</id><published>2011-12-26T20:12:00.004+08:00</published><updated>2011-12-26T20:13:09.906+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T20:13:09.906+08:00</app:edited><title>Android连接Amazon SimpleDB</title><content type="html">&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  1. 安装AWS Toolkit for Eclipse：&lt;a href="http://aws.amazon.com/eclipse/"&gt;http://aws.amazon.com/eclipse/&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  安装完成以后在Eclipse中增加了一个Database Development perspective视图，可以对SimpleDB进行一些简单的维护操作，通过SQL Scrapbook进行SQL查询。&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  2. 安装AWS SDK for Android：&lt;a href="http://aws.amazon.com/sdkforandroid/"&gt;http://aws.amazon.com/sdkforandroid/&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  此SDK包含了所有的库和部分示例代码及文档，注意使用前需注册外部类库。&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  这样就可以象操作本地数据库一样进行SimpleDB的读写了。&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-261468995665732055?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/zW19-h2Kst2wEOgAge38VmQf1CI/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zW19-h2Kst2wEOgAge38VmQf1CI/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/zW19-h2Kst2wEOgAge38VmQf1CI/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/zW19-h2Kst2wEOgAge38VmQf1CI/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/UqWZPsYRKYs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/261468995665732055/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=261468995665732055" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/261468995665732055?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/261468995665732055?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/UqWZPsYRKYs/androidamazon-simpledb.html" title="Android连接Amazon SimpleDB" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/androidamazon-simpledb.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ICSHk-fSp7ImA9WhRXGU0.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-2885477610249929750</id><published>2011-12-26T20:12:00.003+08:00</published><updated>2011-12-26T20:12:49.755+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T20:12:49.755+08:00</app:edited><title>Android时间同步</title><content type="html">&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  1. 系统函数SystemClock.setCurrentTimeMillis()用于设置系统时间，需要&amp;lt;uses-permission android:name="android.permission.APPROPRIATE" /&amp;gt;权限，但是出于安全考虑，已被GOOGLE禁用。&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  2. 对于ROOT手机，可以用&amp;lt;uses-permission android:name="android.permission.WRITE_SETTINGS" /&amp;gt;打开权限。&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  3. 另一个变通的方法是，先查询本地时间，再查询NTP服务器的UTC，从而得到两个时间的差值。&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  在多台手机之间，通过补偿差值，从而实现多台手机之间的事件同步。&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-2885477610249929750?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/vdxbOjSJjmJSL12CpdeUM9sTthQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vdxbOjSJjmJSL12CpdeUM9sTthQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/vdxbOjSJjmJSL12CpdeUM9sTthQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/vdxbOjSJjmJSL12CpdeUM9sTthQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/qYRUVPt21C0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/2885477610249929750/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=2885477610249929750" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/2885477610249929750?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/2885477610249929750?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/qYRUVPt21C0/android.html" title="Android时间同步" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IBQHY5eSp7ImA9WhRXGU0.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-6845762328269900456</id><published>2011-12-26T20:12:00.001+08:00</published><updated>2011-12-26T20:12:31.821+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T20:12:31.821+08:00</app:edited><title>Android通过NTP服务器取得UTC标准时间</title><content type="html">&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  1. &lt;a href="http://hi-android.info/src/android/net/SntpClient.java.html"&gt;http://hi-android.info/src/android/net/SntpClient.java.html&lt;/a&gt;&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  利用这个类调用NTP函数。&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   &lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  2. 通过函数client.requestTime("&lt;a href="http://1.us.pool.ntp.org"&gt;1.us.pool.ntp.org&lt;/a&gt;", 10000)获取本地时间戳。&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   &lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  3. 减去时区偏离值：&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  Calendar c = Calendar.getInstance();&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;  int zoneOffset = c.get(java.util.Calendar.ZONE_OFFSET);&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-6845762328269900456?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/8S5w2eqzE1N6I6pt-5cvn1Qhu7A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8S5w2eqzE1N6I6pt-5cvn1Qhu7A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/8S5w2eqzE1N6I6pt-5cvn1Qhu7A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/8S5w2eqzE1N6I6pt-5cvn1Qhu7A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/amim86cD2D4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/6845762328269900456/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=6845762328269900456" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/6845762328269900456?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/6845762328269900456?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/amim86cD2D4/androidntputc.html" title="Android通过NTP服务器取得UTC标准时间" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/androidntputc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0IGRXc6eSp7ImA9WhRXGU0.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-8595679061858897597</id><published>2011-12-26T20:11:00.000+08:00</published><updated>2011-12-26T20:12:04.911+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-12-26T20:12:04.911+08:00</app:edited><title>Local Time &amp; UTC Time in Android</title><content type="html">&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   Calendar c = Calendar.getInstance();&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   Date date1 = c.getTime();&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   Dtime = fmt.format(date1);&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   mTextView1.setText(Dtime); // display local time&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;    &lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   int zoneOffset = c.get(java.util.Calendar.ZONE_OFFSET);&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   int dstOffset = c.get(java.util.Calendar.DST_OFFSET);&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   c.add(java.util.Calendar.MILLISECOND, -(zoneOffset + dstOffset));&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   Date date2 = c.getTime();&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   Dtime = fmt.format(date2);&lt;/p&gt;&lt;p style="padding-top:0px;padding-right:0px;padding-bottom:0px;padding-left:0px;margin-top:0px;margin-right:0px;margin-bottom:1em;margin-left:0px;line-height:1.5em;font-family:Arial,Helvetica,sans-serif;font-size:14px;text-align:left"&gt;   mTextView2.setText(Dtime); // display utc time&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-8595679061858897597?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/gyVT1osp27DvmN3x6yoQDQgvJB8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gyVT1osp27DvmN3x6yoQDQgvJB8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/gyVT1osp27DvmN3x6yoQDQgvJB8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/gyVT1osp27DvmN3x6yoQDQgvJB8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/GCbE0iLuk5E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/8595679061858897597/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=8595679061858897597" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/8595679061858897597?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/8595679061858897597?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/GCbE0iLuk5E/local-time-utc-time-in-android.html" title="Local Time &amp; UTC Time in Android" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/12/local-time-utc-time-in-android.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUICRHY6fCp7ImA9WhRSFEQ.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-555383073597741780</id><published>2011-11-17T10:39:00.001+08:00</published><updated>2011-11-17T10:39:25.814+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-17T10:39:25.814+08:00</app:edited><title>MGC - Machine Generated Content</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;In this article, I&amp;#39;d like to mention a new Web field, and check its posibility through some examples, and also to define its key factors.&lt;/div&gt;&lt;div&gt;As we know, the key feature of Web2.0 is User Generated Content, which shares a common feature with Web1.0, which is that: all content is generated by humen intentionally, and the data has already got its meaning after being generated.&lt;/div&gt;  &lt;div&gt;As now Android-Inside mobile phones and devices are getting popular, this new trend might lead us into a new Web field, which feature is that: the meta data was generated or collected by machines(mobile phones, devices, etc) originally, the data got its meaning only after being processed in remote data center. For this field, I call it MGC, which is Machine Generated Content.&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Now let&amp;#39;s take some examples to help to understand, although they&amp;#39;re might not be possible in the next couple of years.&lt;/div&gt;&lt;div&gt;Example 1: Health application.&lt;/div&gt;&lt;div&gt;Scenario: John suspects that his heart is not funcitoning well, so he wears a special watch for a week. Actually this wathc is a Android-Inside device, which can monitor and record his pulse and blood pressure in real time. The data will be sent to hospital every night. The data center will analyze it and generate a report after all data being received. Doctor will check the report and take it as assitance for diagnosis.&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Example 2: Traffic application.&lt;/div&gt;&lt;div&gt;Scenario: John&amp;#39;s using Google navigator as other million drivers. The chip inside navigator collects car&amp;#39;s data such as location and speed in real time, and send the data out to data center in real time. Data center will analyze all of data and then generate a summory traffic report, and then send the report into navigator&amp;#39;s traffic layer. So while driving, John can get the road traffic information in real time, so that he can adjust his route according to it.&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Example 3: Monitor application.&lt;/div&gt;&lt;div&gt;Scenario: John has a very yound child, so John concerns his safety when he&amp;#39;s working in office, so he installed several smart cameras, which he can access through remotely, and each minute a snap shot saved into album automatically. If all of the cameras cannot find the kid in the visual angle, then an alert notificaiton will to send to him through email and short message.&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Through above examples, we can find some features of MGC: 1. The collecting and processing of data can be isolated, data could be collected in local, while be processed remotely. 2. Data didn&amp;#39;t have its meaning before analysis, so the data looks like device logs, most of them are kind of useless.&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Now let&amp;#39;s analyze some key factors of MGC.&lt;/div&gt;&lt;div&gt;Factor 1: data collecting.&lt;/div&gt;&lt;div&gt;Data collecting includes these methods:&lt;/div&gt;&lt;div&gt;1. Mobile APP - APP recall mobile&amp;#39;s sensors such as GPS/Gravity/Atmospheric-Pressure to collect data.&lt;/div&gt;  &lt;div&gt;2. Mobile Device - Device attached to mobile phone via USB/Audio ports, and convert data by algorithm.&lt;/div&gt;&lt;div&gt;3. Android-Inside Device.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Factor 2: data transaction.&lt;/div&gt;&lt;div&gt;I&amp;#39;d like to advise these 2 methods for small companies:&lt;/div&gt;  &lt;div&gt;1. Use Twitter API as a protocal, to transfer data via Internet.&lt;/div&gt;&lt;div&gt;2. Use Amazon EC2, and install OpenSource MicroBlog software, so that you can setup your private transaction cloud.&lt;/div&gt;&lt;div&gt;With these 2 methods, we can transfer data through Internet in real time.&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;Factor 3: data processing.&lt;/div&gt;&lt;div&gt;Data processing includes core business logic.&lt;/div&gt;&lt;div&gt;Take the human body as a metaphor, the sensors inside the body surface and neurons collects data, the nervous system transfers data, and the brain processes data.&lt;/div&gt;  &lt;div&gt;And as for a typical future MGC application, Android is its neuron, Twitter its nervous system, and its brain located in Goolge or Amazon&amp;#39;s data center.&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-555383073597741780?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IPQTXGAfJOMoNPaUaJMcw512F64/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IPQTXGAfJOMoNPaUaJMcw512F64/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IPQTXGAfJOMoNPaUaJMcw512F64/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IPQTXGAfJOMoNPaUaJMcw512F64/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/6ZMd9ETQihg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/555383073597741780/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=555383073597741780" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/555383073597741780?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/555383073597741780?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/6ZMd9ETQihg/mgc-machine-generated-content.html" title="MGC - Machine Generated Content" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/11/mgc-machine-generated-content.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcDRXc8cCp7ImA9WhRSFE8.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-8106502016817449330</id><published>2011-11-16T15:20:00.000+08:00</published><updated>2011-11-16T15:21:14.978+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-11-16T15:21:14.978+08:00</app:edited><title>MGC - 机器生成内容</title><content type="html">&lt;div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;本文试图探讨一个新的互联网领域，通过几个例子来说明其可能性，并定义了其关键因素。&lt;/div&gt;&lt;div&gt;我们知道，WEB2.0的特征是用户生成内容，它和早期的WEB1.0，以及目前流行的SNS都有一个共同的特征，即所有的内容都是由人有意识地生成的，其数据在生成之时已经有了明确的含义。&lt;/div&gt;&lt;div&gt;而内嵌ANDROID的智能手机和设备的日渐流行，似乎将带领我们进入一个崭新的互联网领域，其特征是：数据的原始内容是由机器(手机和设备)自动生成、收集的，数据只有在经过远端的业务中心处理之后才有明确的含义。这个网络领域，我称之为MGC - Machine Generated Content - 机器生成内容。&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;下面我们举几个例子来帮助理解，请用科幻的眼光来看待这些场景。&lt;/div&gt;&lt;div&gt;例子一：健康应用。&lt;/div&gt;&lt;div&gt;场景：张三怀疑自己的心脏功能下降，于是他在手腕上戴了一周的"表"。这个"表"是一个内嵌ANDROID的设备，能够实时监测他的脉搏、血压等数据。数据每天晚上发送到医院的中央数据库。数据中心在接收到完整的数据后，自动生成一份报告给主治医生。医生通过报告，再接合问诊，形成最后的诊断结论。&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;例子二：交通应用。&lt;/div&gt;&lt;div&gt;场景：张三和其他数百万的用户一样，使用GOOGLE的车载导航仪。导航仪的芯片能够实时收集车辆的位置、速度等信息，并实时发送到数据中心。数据中心在综合分析这些数据之后，得到实时、准确的交通流量报告，并下载覆盖到导航仪的交通流量图层。因此张三在开车的同时，可以实时接收到前方的路况信息，从而调整自己的行车路线。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;例子三：监控应用。&lt;/div&gt;  &lt;div&gt;场景：张三的孩子很小，他希望在上班时也能够看到他是否安全，因此他在家里安装了几个智能摄像头，视频可以通过网络实时查看，同时每分钟截一张图存放到相册中。如果几个摄像头同时捕捉不到小孩的画面，将触发警告，通过短信和邮件通知张三。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;从以上的例子，我们可以看出MGC的一些特征：1、数据的采集和处理可以是分离的，采集一般在本地，而处理可以放在云端。2、数据在分析之前并没有明确的含义，因此数据类似设备日志，包含大量的冗余。&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;下面我们再分析一下MGC的关键因素。&lt;/div&gt;&lt;div&gt;因素一：数据采集。&lt;/div&gt;&lt;div&gt;数据的采集包含以下方式：&lt;/div&gt;&lt;div&gt;1、手机APP，APP通过手机内置的GPS、重力、气压等感应器采集数据。&lt;/div&gt;&lt;div&gt;2、手机外设，外部设备利用手机的USB、音频接口等与手机连接，并配合算法实现数据的转换。&lt;/div&gt;&lt;div&gt;3、内置ANDROID的专有设备。&lt;/div&gt;&lt;div&gt;  &lt;br&gt;&lt;/div&gt;&lt;div&gt;因素二：数据传输。&lt;/div&gt;&lt;div&gt;对于小的公司，建议采用以下两种方式的数据传输。&lt;/div&gt;&lt;div&gt;1、将Twitter作为一种协议，通过互联网传输数据。&lt;/div&gt;&lt;div&gt;2、利用AMAZON EC2，通过开源MICROBLOG软件，搭建实时传输的私有云。&lt;/div&gt;&lt;div&gt;通过以上两种方式，我们可以将数据实时地通过互联网进行传输。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;因素三：数据处理。&lt;/div&gt;  &lt;div&gt;数据处理包含了核心的业务逻辑。&lt;/div&gt;&lt;div&gt;以人体作比喻的话，那么人体表面的感应器和神经元实现了数据采集，神经系统实现了数据传输，而大脑实现了数据处理。&lt;/div&gt;&lt;div&gt;而一个未来的典型MGC应用，可能就是以ANDROID为神经元，以TWITTER为神经系统，而大脑放在GOOGLE或AMAZON的机房里。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-8106502016817449330?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Cgyrx7ySULZoNLQKtTm0E7NfA_A/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Cgyrx7ySULZoNLQKtTm0E7NfA_A/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Cgyrx7ySULZoNLQKtTm0E7NfA_A/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Cgyrx7ySULZoNLQKtTm0E7NfA_A/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/-4KSz0R4GXY" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/8106502016817449330/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=8106502016817449330" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/8106502016817449330?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/8106502016817449330?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/-4KSz0R4GXY/mgc.html" title="MGC - 机器生成内容" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/11/mgc.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C04DQ3ozfSp7ImA9WhdUFkk.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-1745235112492767123</id><published>2011-10-03T19:39:00.001+08:00</published><updated>2011-10-03T19:39:32.485+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-03T19:39:32.485+08:00</app:edited><title>G1无SD卡刷机</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;0、安装ADB驱动。&lt;/div&gt;&lt;div&gt;1、按HOME+电源键，进入RECOVERY页面。&lt;/div&gt;&lt;div&gt;2、把ROM文件命名为update.zip，上传到DATA目录下。&lt;/div&gt;&lt;div&gt;3、编写command文件，上传到/cache/recovery/目录下，command文件内容：&lt;/div&gt;&lt;div&gt;boot-recovery&lt;/div&gt;&lt;div&gt;--update_package=DATA:update.zip&lt;/div&gt;  &lt;div&gt;4、断开USB连接，关机。&lt;/div&gt;&lt;div&gt;5、按住HOME键开机，系统将自动执行recovery命令。&lt;/div&gt;&lt;div&gt;6、WIPE DATA。&lt;/div&gt;&lt;div&gt;推荐的ROM：g1.rom1.6.gfan.androidin-4.2.15.1-geesunmod.zip&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-1745235112492767123?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/YN4goyDyQq2Fg5H6Gf6mnQYMQ7c/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YN4goyDyQq2Fg5H6Gf6mnQYMQ7c/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/YN4goyDyQq2Fg5H6Gf6mnQYMQ7c/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/YN4goyDyQq2Fg5H6Gf6mnQYMQ7c/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/HXZtCZbI3Pg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/1745235112492767123/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=1745235112492767123" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/1745235112492767123?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/1745235112492767123?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/HXZtCZbI3Pg/g1sd.html" title="G1无SD卡刷机" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/10/g1sd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0EHQHs4eSp7ImA9WhdUFkk.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-163779834635185487</id><published>2011-10-03T19:33:00.001+08:00</published><updated>2011-10-03T19:33:51.531+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-10-03T19:33:51.531+08:00</app:edited><title>北京联通迅雷下载设置</title><content type="html">&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19px; background-color: rgb(255, 255, 255); "&gt;&lt;div class="note-header" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;  &lt;h3 style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-size: 14px; height: auto; font: normal normal normal 14px/normal Arial, Helvetica, sans-serif; color: rgb(0, 102, 0); line-height: 1.4; background-image: initial; background-attachment: initial; background-origin: initial; background-clip: initial; background-color: initial; background-position: 0px 50%; "&gt;  &lt;br&gt;&lt;/h3&gt;&lt;/div&gt;&lt;div class="clear" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; clear: both; line-height: 0; font-size: 0px; "&gt;  &lt;/div&gt;&lt;div id="note_175862618_full" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;pre class="note" style="margin-top: 10px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, sans-serif; word-wrap: break-word; white-space: pre-wrap; width: 590px; overflow-x: hidden; overflow-y: hidden; "&gt;  迅雷P2P加速：开启。 镜像服务器加速：关闭。 最大任务数：1。 最大连接数：100。 原始地址线程数：5。  设置以上参数后，下载速度能稳定在100K以上。&lt;/pre&gt;&lt;/div&gt;&lt;/span&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-163779834635185487?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/GIATBq1u7ZKCPm3-QOE-6Mk8xS0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GIATBq1u7ZKCPm3-QOE-6Mk8xS0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/GIATBq1u7ZKCPm3-QOE-6Mk8xS0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/GIATBq1u7ZKCPm3-QOE-6Mk8xS0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/R73MfjWkhwA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/163779834635185487/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=163779834635185487" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/163779834635185487?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/163779834635185487?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/R73MfjWkhwA/blog-post.html" title="北京联通迅雷下载设置" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/10/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ck4GQXc6fSp7ImA9WhdUEks.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-4822064828737329756</id><published>2011-09-29T09:48:00.001+08:00</published><updated>2011-09-29T09:48:40.915+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-29T09:48:40.915+08:00</app:edited><title>北京联通ADSL猫ZXV10 H108B破解全程详解</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;原理：利用FTP获得管理员帐号。&lt;/div&gt;&lt;div&gt;注意：用IE登录ADSL管理页面。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;一、ADSL信息&lt;/div&gt;&lt;div&gt;运营商 中国联通 &lt;/div&gt;&lt;div&gt;设备型号 ZXV10 H108B &lt;/div&gt;&lt;div&gt;硬件版本号 V1.0 &lt;/div&gt;&lt;div&gt;软件版本号 V2.0.00_BJ &lt;/div&gt;&lt;div&gt;  其它版本号可参考本文，因为原理都是一样的。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;二、开启FTP功能&lt;/div&gt;&lt;div&gt;用IE打开普通用户管理页面：&lt;a href="http://192.168.1.1/"&gt;http://192.168.1.1/&lt;/a&gt;&lt;/div&gt;&lt;div&gt;用户名和密码贴在ADSL的背面。&lt;/div&gt;&lt;div&gt;在应用一栏，开启FTP功能，用户名和密码都是admin。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;  &lt;div&gt;三、用FTP下载管理员帐号&lt;/div&gt;&lt;div&gt;ftp 192.168.1.1&lt;/div&gt;&lt;div&gt;cd ../  --&amp;gt; 进入上级菜单&lt;/div&gt;&lt;div&gt;cd proc --&amp;gt; 进入proc子目录&lt;/div&gt;&lt;div&gt;cd cfg  --&amp;gt; 进入cfg子目录&lt;/div&gt;&lt;div&gt;dir     --&amp;gt; 可以看到这个目录下有很多的配置文件，其中db_default_cfg.xml是默认的配置文件，也就是ADSL恢复出厂设置所采用的文件。另一个文件db_user_cfg.xml是当前采用的配置文件。&lt;/div&gt;  &lt;div&gt;get db_default_cfg.xml --&amp;gt; 下载默认配置文件&lt;/div&gt;&lt;div&gt;用notepad或其它编辑器打开db_default_cfg.xml，搜索bjcncghw，可以看到对应的密码，如8mCnC@bj。&lt;/div&gt;&lt;div&gt;在电脑上把db_default_cfg.xml重命名为db_user_cfg.xml。&lt;/div&gt;&lt;div&gt;del db_user_cfg.xml --&amp;gt; 删除ADSL的当前配置文件。&lt;/div&gt;  &lt;div&gt;put db_user_cfg.xml --&amp;gt; 上传改名后的默认配置文件，因而ADSL恢复了默认帐号。&lt;/div&gt;&lt;div&gt;重新启动ADSL。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;四、管理ADSL高级功能&lt;/div&gt;&lt;div&gt;用IE打开管理页面：&lt;a href="http://192.168.1.1/CU.html"&gt;http://192.168.1.1/CU.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;用户名：bjcnchgw&lt;/div&gt;  &lt;div&gt;密码：8mCnC@bj&lt;/div&gt;&lt;div&gt;用户名和密码是db_default_cfg.xml里得到的。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;网络&amp;gt;远程管理，关闭"周期上报功能"，避免联通机房的远程检测和断开。&lt;/div&gt;&lt;div&gt;安全&amp;gt;防火墙，关闭"防攻击保护"，将防火墙等级设为低。&lt;/div&gt;&lt;div&gt;添加PPPOE拨号连接，注意VPI/VCI的设置，如北京为0/35，这样ADSL将自动拨号。&lt;/div&gt;  &lt;div&gt;添加WLAN无线网络，设置SSID名称和口令，这样家里电脑将通过无线自动联到外网。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;------ 自由的感觉真好！------&lt;/div&gt;&lt;div&gt;妨碍中国互联网创新的四大恶：GFW、工信部、运营商、IE!!!!&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-4822064828737329756?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/s5_j4In9jhb8G1EoPskp0TCLL0U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s5_j4In9jhb8G1EoPskp0TCLL0U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/s5_j4In9jhb8G1EoPskp0TCLL0U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/s5_j4In9jhb8G1EoPskp0TCLL0U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/vXUzgGOV6lo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/4822064828737329756/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=4822064828737329756" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/4822064828737329756?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/4822064828737329756?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/vXUzgGOV6lo/adslzxv10-h108b.html" title="北京联通ADSL猫ZXV10 H108B破解全程详解" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/09/adslzxv10-h108b.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkQMSHwyfCp7ImA9WhdXFko.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-6677025969524792361</id><published>2011-08-30T10:12:00.000+08:00</published><updated>2011-08-30T10:13:09.294+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-08-30T10:13:09.294+08:00</app:edited><title>一个上传KINDLE电子书的简单办法</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;一、安装爱问共享资料豆瓣插件：&lt;a href="http://userscripts.org/scripts/show/91662"&gt;http://userscripts.org/scripts/show/91662&lt;/a&gt;。&lt;/div&gt;&lt;div&gt;这样就可以在豆瓣图书的页面显示爱问下载地址了。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;二、从爱问下载TXT/DOC/PDF格式的电子书。&lt;/div&gt;  &lt;div&gt;或者GOOGLE搜索"filetype:txt 书名"或"filetype:doc 书名"或"filetype:pdf 书名"，从而得到下载链接。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;三、将下载的DOC/PDF图书另存为TXT格式，如果是中文图书的话选择字符集为UTF8。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;四、将TXT作为附件发送到你的KINDLE邮箱。&lt;/div&gt;&lt;div&gt;你的发送邮箱必须在AMAZON中注册。&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;五、打开KINDLE自动同步，电子书同步完成后将显示你的邮箱作为来源。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-6677025969524792361?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/QMDBujA87bikgZwq5c43vd3zle0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QMDBujA87bikgZwq5c43vd3zle0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/QMDBujA87bikgZwq5c43vd3zle0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/QMDBujA87bikgZwq5c43vd3zle0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/EXfcoC7FkvE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/6677025969524792361/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=6677025969524792361" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/6677025969524792361?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/6677025969524792361?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/EXfcoC7FkvE/kindle.html" title="一个上传KINDLE电子书的简单办法" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/08/kindle.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkcDQH85fyp7ImA9WhdTFUo.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-5198790791968348515</id><published>2011-07-13T23:14:00.001+08:00</published><updated>2011-07-13T23:14:31.127+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-13T23:14:31.127+08:00</app:edited><title>关于中医的三个辨析</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;一、中医能治病就是好的&lt;/div&gt;&lt;div&gt;这里的"好"很容易引起误解。&lt;/div&gt;&lt;div&gt;通常当我们说核磁共振是好的，意思是它的技术先进。当我们说这个方子很好，意思是它达到了我们期望的效果，对它认同。&lt;/div&gt;&lt;div&gt;很多情况下我们争论中医好还是西医好往往是没有意义的，因为双方对好的理解不一样。&lt;/div&gt;&lt;div&gt;根据我的个人经验，中医主要应用在两个主要领域：普通小毛病，或者绝症。&lt;/div&gt;  &lt;div&gt;在乡下，不少人感冒的时候，不想到医院看病，因为太贵，所以他们选择了吃点草药。而小毛病的治愈率本来就很高的，因此当一个人花很少的钱看完了病，他自然会对之认可，会觉得它是好的。&lt;/div&gt;&lt;div&gt;另一种情况是，当一个人生了绝症，看了各种医院都没有效果，最后他抱着死马当活马医的心态来看中医。&lt;/div&gt;&lt;div&gt;不少人把中医治疗绝症的事迹说得神乎其神，其实从概率的角度而看一点也不奇怪。因为治愈绝症的概率极低，而且我们事先就意识到这种概率分布，所以我们对治疗失败漠不关心，但是会牢记小概率的治愈事例，而这些小概率事件恰恰最容易传播，最后一传十十传百以后，大家只记住了小概率事件。好比99%的失败是无所谓的，而1%的成功是好的，但是我们会夸大这1%的成功。&lt;/div&gt;  &lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;二、凡是存在的，就是合理的&lt;/div&gt;&lt;div&gt;合理这个词，也是非常容易引起误解的。&lt;/div&gt;&lt;div&gt;通常它包含两个意思：合乎道德规范的，或者合乎理性分析的。&lt;/div&gt;&lt;div&gt;当我们用"存在皆合理"这一信条去分析历史事件时，我们的意思是能够运用理性分析事件在过去发生的原因，但是往往说着说着，就变成了为它在未来的存在进行辩护了。&lt;/div&gt;&lt;div&gt;要知道当某一事物过去或现在是合理的，将来未必合理。&lt;/div&gt;  &lt;div&gt;某一事件，即使在将来也有长久的生命力，但是当有可选项的时候，就要分析哪个更有成效。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;三、中医看整体，西医看局部&lt;/div&gt;&lt;div&gt;这是一个广为流传的谬论了。&lt;/div&gt;&lt;div&gt;要说到人与宇宙的关系，最可靠的证据莫过于细胞了。因为人体是进化而形成的，这其中的任何一环要成功，必须要适应当时的外界环境。人体之所以需要这么多种类的微量元素，正是因为各类细胞在进化的过程中，对包含这些元素的外界环境进行了适应性进化，所以尽管后来的环境变了，但是这些细胞的机制还是继承了下来。&lt;/div&gt;  &lt;div&gt;我们再来看看饮食结构和锻炼的例子。&lt;/div&gt;&lt;div&gt;为什么我们会有这么多的现代病？因为人体的进化是长期积累的，而在漫长的历史长河中，大部分的时间里人类是吃不饱的，而且是素食为主，因此我们的消化吸收系统都为这种特征进行了适应性进化。所以当我们吃多了脂肪和糖含量高的食物，我们的身体无法把这些食物在细胞的层面吸收掉，最后脂肪和糖等在血液里积累起来，反而损伤了我们的身体。&lt;/div&gt;&lt;div&gt;所以在人类的身体发生大的进化之前，象我们祖先一样多吃素对身体是有好处的，象祖先一样多走多跑也是有好处的。这不是因为什么"天人合一"的玄学，而是因为我们的身体最适应这种生活方式，我们必须迁就细胞的生存方式。&lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-5198790791968348515?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/PI-G_6IwknwUxGDBCaH1r_glRDc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PI-G_6IwknwUxGDBCaH1r_glRDc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/PI-G_6IwknwUxGDBCaH1r_glRDc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/PI-G_6IwknwUxGDBCaH1r_glRDc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/t65feMb0RWk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/5198790791968348515/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=5198790791968348515" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/5198790791968348515?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/5198790791968348515?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/t65feMb0RWk/blog-post_13.html" title="关于中医的三个辨析" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/07/blog-post_13.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Ak4BR3kzfCp7ImA9WhdTEEk.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-4272081196941418566</id><published>2011-07-07T22:28:00.000+08:00</published><updated>2011-07-07T22:29:16.784+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-07T22:29:16.784+08:00</app:edited><title>末日的优雅 - 评《时间回旋》</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;《时间回旋》这本书我看了两遍。第一遍是中文版电子书，一周在手机上看完。第二遍是英文版电子书，在KINDLE3上看的，每次都是坐在往返公司的班车上看，断断续续地看了两个月。&lt;/div&gt;&lt;div&gt;第一遍看完的时候非常地激动，这两年中我看过最好的小说除了这本以外，也就是《三体》和《计算中的上帝》了。激动的主要原因还是在于故事的设定，非常适合一个理科宅男的趣味。&lt;/div&gt;&lt;div&gt;后来我就想到以这本书的文风和节奏，应该是非常适合学习英语的，于是下了英文版的电子书，传到K3上慢慢地看，也正是这种心态品出了此书的更多意味。&lt;/div&gt;  &lt;div&gt;在看这本书的时候，我一般同时在听曹方和Keren Ann的音乐，特别是Keren Ann那慢悠悠带着慵懒气息的音乐，一直弥漫在我的阅读过程之中。我有时会想到，如果要将此书拍成电影，那么Diana大病初愈的场景，Keren Ann的音乐是最适合用来做背景音的。&lt;/div&gt;&lt;div&gt;我还常常将书中的人物和好莱坞的演员对应起来，比如文艺小生James Franco(&lt;a href="http://movie.douban.com/celebrity/1019001/)"&gt;http://movie.douban.com/celebrity/1019001/)&lt;/a&gt;来演Jason，蜘蛛侠Tobey Maguire(&lt;a href="http://movie.douban.com/celebrity/1047997/)"&gt;http://movie.douban.com/celebrity/1047997/)&lt;/a&gt;演Dupree，而演Diana的应该是Cate Blanchett(&lt;a href="http://movie.douban.com/celebrity/1054441/)"&gt;http://movie.douban.com/celebrity/1054441/)&lt;/a&gt;，至于ED，毫无疑问应该由David Strathairn(&lt;a href="http://movie.douban.com/celebrity/1007009/)%E6%9D%A5%E6%BC%94"&gt;http://movie.douban.com/celebrity/1007009/)来演&lt;/a&gt;。&lt;/div&gt;  &lt;div&gt;这种联想常常带来预料不到的乐趣，使我的阅读变得更加愉悦。&lt;/div&gt;&lt;div&gt;记得大刘曾经说过这本小说，认为它对末日的描写不够阴暗，因而对人性的肯定也达不到文学名著的高度。我曾读过《鼠疫》之类的小说，因此赞同大刘的评价。但是我想作者在写这本书时，未必想将人性升华到一定的高度。&lt;/div&gt;&lt;div&gt;如果一个美国人写末日小说，他会写一个普通人，为了拯救家人而牺牲自己。&lt;/div&gt;&lt;div&gt;如果一个中国人写末日小说，他会写一个英雄人物，为了拯救祖国而牺牲自己和他的部下。&lt;/div&gt;  &lt;div&gt;但是作者是一个加拿大人，他没有美国人和中国人的这种情怀，因此他能通过Dupree这个旁观者的角度从容地描述末日的景观，而我所欣赏的正是这种优雅。当然这与我当前的心态有关，目前我已不适合去读《卡拉马佐夫兄弟》和《约翰-克利斯朵夫》了，即便是《悲惨世界》，我更愿意看百老汇剧而不是小说。&lt;/div&gt;&lt;div&gt;另一方面，我以为科幻文学并不适合表达人性的深度，因而它所构造的场景离我们的日常生活太远了，无法唤起我们的同理心，因而很难达成共鸣。&lt;/div&gt;  &lt;div&gt;对我而言，科幻文学首先能满足智力上的愉悦，想象力的解放带来身心的极大放松。而此书情感上的描写是锦上添花，让我们在阅读的过程中不时停下来回味一番。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-4272081196941418566?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/bd138t6SuN0JsG0N1ZOwsMhB12U/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bd138t6SuN0JsG0N1ZOwsMhB12U/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/bd138t6SuN0JsG0N1ZOwsMhB12U/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/bd138t6SuN0JsG0N1ZOwsMhB12U/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/8bB-HpxfK7U" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/4272081196941418566/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=4272081196941418566" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/4272081196941418566?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/4272081196941418566?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/8bB-HpxfK7U/blog-post_07.html" title="末日的优雅 - 评《时间回旋》" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/07/blog-post_07.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CE8DSHYycSp7ImA9WhZaF0s.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-3057396162540840921</id><published>2011-07-04T14:57:00.000+08:00</published><updated>2011-07-04T15:01:19.899+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-07-04T15:01:19.899+08:00</app:edited><title>登黄鹤楼记</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;2号去登了黄鹤楼。&lt;/div&gt;&lt;div&gt;一路爬山而上，转了个弯，黄鹤楼突然跃入眼帘，气势逼人。于是入楼，一路拾级而上，爬到楼顶，兴奋地出去观望，然而四周建筑凌乱肮脏，不禁索然。&lt;/div&gt;&lt;div&gt;我想象着当年崔颢登临黄鹤楼的情景，那时大江开阔，碧野青葱，而楼下市井熙攘，人如蚁蝼。诗人想到仙人骑黄鹤而去的典故，而黄鹤楼在白云千载间，作为人世浮沉的见证，仍旧孤独在矗立在大江的烟波里，想到时间就象江水一般地流逝，不禁让人感叹此生之渺小，此心之寂寥。&lt;/div&gt;  &lt;div&gt;中国的古典文学中很少有时间的意识，时间的流转只是大地周而复始不断循环的写照，只有当诗人登高远眺，看到壁野辽阔大江奔腾，才突然间意识到人世间的变化已然如此悠长。但是中国人的意识不会沉浸在时间里，不象西方文学有童年主题，中国人的时间感会转化成空间感，命运的变化最终反映在空间的游离，因而诗人们不断地在远方遥望乡关。&lt;/div&gt;&lt;div&gt;然而当我望着四周凌乱的建筑，我知道这座黄鹤楼只是一个极普通的景点而已，江边的高楼盖住了远方的地平线，浑浊的江面上汽轮络绎不绝。站在这座著名的黄鹤楼上，我感受不到哲学上的存在感，感受不到文学上的寂寥感。我们不再感受到此生之渺小，我们越来越多地感受到此生之豪迈，我们用飞机汽车征服时间，我们用高楼大厦征服空间。我们饥渴地吃而来不及回味，我们匆忙地走而来不及欣赏。&lt;/div&gt;  &lt;div&gt;然而在对变化的高歌中，有时我们会感觉到荒诞，会感觉到迷失，突然间觉得自己成为了故乡的外乡人，突然间觉得自己成为了这片土地的掠夺者。仿佛那些美丽安静的一切，突然间变成了遥远的回响，突然间变成了尘封的记忆，而你自己，也被包含在那模糊的记忆之中。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://gallery.drunkboat.net/var/albums/blog/262699_10150305659506204_760146203_9254232_4087912_n.jpg" alt="262699_10150305659506204_760146203_9254232_4087912_n.jpg" title="262699_10150305659506204_760146203_9254232_4087912_n.jpg"&gt;&lt;br&gt;  &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://gallery.drunkboat.net/var/albums/blog/269581_10150305659821204_760146203_9254233_6580867_n.jpg" alt="269581_10150305659821204_760146203_9254233_6580867_n.jpg" title="269581_10150305659821204_760146203_9254233_6580867_n.jpg"&gt;&lt;br&gt;  &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-3057396162540840921?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/2wKpdP56iQ4TdHV5XmoYlTdRXcA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2wKpdP56iQ4TdHV5XmoYlTdRXcA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/2wKpdP56iQ4TdHV5XmoYlTdRXcA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/2wKpdP56iQ4TdHV5XmoYlTdRXcA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/2xN1yUYrR2o" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/3057396162540840921/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=3057396162540840921" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/3057396162540840921?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/3057396162540840921?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/2xN1yUYrR2o/blog-post.html" title="登黄鹤楼记" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/07/blog-post.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcMR3c8fip7ImA9WhZbGE4.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-2549013576084195983</id><published>2011-06-23T20:27:00.000+08:00</published><updated>2011-06-23T20:28:06.976+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-23T20:28:06.976+08:00</app:edited><title>拯救不读SD卡的G1手机之无卡拍照</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;我的手机自从不读SD卡以后，手机的相机、播放器功能都变成了摆设。前段时间卡片相机丢失以后，痛感手机无法拍照的不便。&lt;/div&gt;&lt;div&gt;于是GOOGLE了一番，折腾了个APP，让拍照以后将照片直接保存到APP的私有目录而不是SD卡。&lt;/div&gt;&lt;div&gt;APK很小，只有15K，下载地址：&lt;a href="http://app.smallsmartsolution.com/ttdc.apk"&gt;http://app.smallsmartsolution.com/ttdc.apk&lt;/a&gt;&lt;/div&gt;  &lt;div&gt;说明几点：&lt;/div&gt;&lt;div&gt;1、由于是调用系统API拍照的，分辨率是最大值。&lt;/div&gt;&lt;div&gt;2、设置成横屏预览模式。&lt;/div&gt;&lt;div&gt;3、文件保存的路径是/data/data/com.smallsmartsolution.ttdc/，文件名是生成日期时间+.jpg。&lt;/div&gt;&lt;div&gt;4、拍照完成以后系统自动进入照片查看模式，但只查看SD卡的内容，所以象我的情况，其实是没有显示任何内容，需要按返回键退出。这可能是系统API的设定。&lt;/div&gt;  &lt;div&gt;5、文件的下载需要利用ADB工具进行，用ECLIPSE的DDMS可以批量下载，没有别的办法。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-2549013576084195983?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WngocssF8r6T5fe5tVD4oDSwXtc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WngocssF8r6T5fe5tVD4oDSwXtc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WngocssF8r6T5fe5tVD4oDSwXtc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WngocssF8r6T5fe5tVD4oDSwXtc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/qjtQ07T5iCU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/2549013576084195983/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=2549013576084195983" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/2549013576084195983?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/2549013576084195983?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/qjtQ07T5iCU/sdg1.html" title="拯救不读SD卡的G1手机之无卡拍照" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/06/sdg1.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkcGSXY8eSp7ImA9WhZbE08.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-8254771345638145898</id><published>2011-06-18T00:26:00.000+08:00</published><updated>2011-06-18T00:27:08.871+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-18T00:27:08.871+08:00</app:edited><title>DestAlarm – an Android APP</title><content type="html">&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif; font-size: 14px; line-height: 17px; "&gt;&lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; "&gt;  DestAlarm is a useful tool for your travel, it will alarm you up ahead of your destination.&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;  The handset GPS will update every 30 seconds or 200 meters, and check current location with your destination, as soon as the distance is less than your set, then it will alarm you by notification and ringtone.&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;  So keep your travel cool with this personal assitance.&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;Developed by tallrain, any feedback pls contact: &lt;a href="mailto:tallrain@gamil.com" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(102, 0, 0); text-decoration: underline; "&gt;tallrain@gamil.com&lt;/a&gt;, or RT me @tallrain.&lt;img src="http://blog.drunkboat.net/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: block; "&gt;&lt;/p&gt;  &lt;p style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 1em; margin-left: 0px; line-height: 1.5em; "&gt;&lt;a href="https://market.android.com/details?id=com.smallsmartsolution.destalarm" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; color: rgb(102, 0, 0); text-decoration: underline; "&gt;https://market.android.com/details?id=com.smallsmartsolution.destalarm&lt;/a&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;  &lt;img src="http://chart.apis.google.com/chart?cht=qr&amp;amp;chs=150x150&amp;amp;choe=UTF-8&amp;amp;chld=H&amp;amp;chl=http://goo.gl/KhhPM" alt="" style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; border-top-width: 0px; border-right-width: 0px; border-bottom-width: 0px; border-left-width: 0px; border-style: initial; border-color: initial; display: block; "&gt;&lt;img src="cid:ii_1309e6cd489bcd42" alt="image.png" title="image.png"&gt;&lt;br style="padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "&gt;  &lt;/p&gt;&lt;/span&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-8254771345638145898?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/o0UDnDMIYxMOf8lGPCyu0lICF_4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o0UDnDMIYxMOf8lGPCyu0lICF_4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/o0UDnDMIYxMOf8lGPCyu0lICF_4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/o0UDnDMIYxMOf8lGPCyu0lICF_4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/hvgvQE-DxWU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/8254771345638145898/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=8254771345638145898" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/8254771345638145898?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/8254771345638145898?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/hvgvQE-DxWU/destalarm-android-app.html" title="DestAlarm – an Android APP" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/06/destalarm-android-app.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IMRnY_fSp7ImA9WhZbEUQ.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-5844615662772485223</id><published>2011-06-16T12:42:00.000+08:00</published><updated>2011-06-16T12:46:27.845+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-16T12:46:27.845+08:00</app:edited><title>Xbox/Kinect Tips</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;1、左手挥向左下角退出KINECT游戏。&lt;/div&gt;&lt;div&gt;2、在XBOX操作面板中，右手扇形挥手可启动KINECT识别。&lt;/div&gt;&lt;div&gt;3、HDMI线的质量会影响视频传播，我之前碰到过电视偶尔黑屏的情况，换线就好了。&lt;/div&gt;&lt;div&gt;4、通过无线路由，XBOX可以和家里的PC组成家庭网(PC采用WIN7操作系统)，可以播放家庭网的视频、音频、照片。但是视频只支持WMV/AVI/MPG，音频只支持WMA。&lt;/div&gt;  &lt;div&gt;5、在PC上安装TVersity软件和K-lite codec pack，可以直接在XBOX上播放PC上的RMVB/KMV等视频。&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-5844615662772485223?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Y-lUEvlKrJAjMXloy9AUbvmdrAU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y-lUEvlKrJAjMXloy9AUbvmdrAU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Y-lUEvlKrJAjMXloy9AUbvmdrAU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Y-lUEvlKrJAjMXloy9AUbvmdrAU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/IuxeKoaV5xg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/5844615662772485223/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=5844615662772485223" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/5844615662772485223?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/5844615662772485223?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/IuxeKoaV5xg/xboxkinect-tips.html" title="Xbox/Kinect Tips" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/06/xboxkinect-tips.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkAMQ3g_eyp7ImA9WhZUFkw.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-5077017584891492967</id><published>2011-06-09T17:12:00.000+08:00</published><updated>2011-06-09T17:13:02.643+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-09T17:13:02.643+08:00</app:edited><title>Use Excel to Read XML</title><content type="html">&lt;div&gt;Sub Button1_Click()&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&amp;#39; clear data&lt;/div&gt;&lt;div&gt;J = Worksheets(&amp;quot;Sheet1&amp;quot;).UsedRange.Rows.Count + 1&lt;/div&gt;&lt;div&gt;Worksheets(&amp;quot;Sheet1&amp;quot;).Range(Cells(1, 1), Cells(J, 3)).Clear&lt;/div&gt;&lt;div&gt;   &lt;/div&gt;&lt;div&gt;&amp;#39; to create data&lt;/div&gt;&lt;div&gt;    Dim objDOM As Object&lt;/div&gt;&lt;div&gt;    Dim targetNode As Object&lt;/div&gt;&lt;div&gt;    Dim Clone As Object&lt;/div&gt;&lt;div&gt;    Dim Node As Object&lt;/div&gt;&lt;div&gt;    Dim ChartUnit As Object&lt;/div&gt;&lt;div&gt;      Dim targetNode2 As Object&lt;/div&gt;&lt;div&gt;    Dim Clone2 As Object&lt;/div&gt;&lt;div&gt;    Dim Node2 As Object&lt;/div&gt;&lt;div&gt;    Dim ChartUnit2 As Object&lt;/div&gt;&lt;div&gt;    Set objDOM = CreateObject(&amp;quot;MSXML2.DOMDocument&amp;quot;) &amp;#39;UTF8&lt;/div&gt;  &lt;div&gt;    &amp;#39;Set objDOM = CreateObject(&amp;quot;MSXML.DOMDocument&amp;quot;) &amp;#39;Normal&lt;/div&gt;&lt;div&gt;    objDOM.async = False&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    facility = &amp;quot;CFSW&amp;quot;&lt;/div&gt;&lt;div&gt;    fname = CStr(Worksheets(&amp;quot;Sheet1&amp;quot;).Cells(1, 6).Value)&lt;/div&gt;  &lt;div&gt;    ret = objDOM.Load(fname)&lt;/div&gt;&lt;div&gt;    Dim objPageHeader As Object&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;    I = 1&lt;/div&gt;&lt;div&gt;    If ret Then&lt;/div&gt;&lt;div&gt;       Set targetNode = objDOM.DocumentElement.SelectSingleNode(&amp;quot;//UserConfig/Facilities/Facility/Connectors&amp;quot;).ChildNodes&lt;/div&gt;  &lt;div&gt;       For Each Clone In targetNode&lt;/div&gt;&lt;div&gt;            Set ChartUnit = Clone.CloneNode(True)&lt;/div&gt;&lt;div&gt;            Set Node = ChartUnit.FirstChild&lt;/div&gt;&lt;div&gt;            If ChartUnit.HasChildNodes Then&lt;/div&gt;&lt;div&gt;                Connector = Node.Text&lt;/div&gt;  &lt;div&gt;                Set targetNode2 = ChartUnit.ChildNodes.Item(11).ChildNodes.Item(0).ChildNodes.Item(10).ChildNodes&lt;/div&gt;&lt;div&gt;                For Each Clone2 In targetNode2&lt;/div&gt;&lt;div&gt;                  Set ChartUnit2 = Clone2.CloneNode(True)&lt;/div&gt;  &lt;div&gt;                  Set Node2 = ChartUnit2.FirstChild&lt;/div&gt;&lt;div&gt;                  If ChartUnit2.HasChildNodes Then&lt;/div&gt;&lt;div&gt;                     Device = Node2.Text&lt;/div&gt;&lt;div&gt;                     Worksheets(&amp;quot;Sheet1&amp;quot;).Cells(I, 1).Value = facility&lt;/div&gt;  &lt;div&gt;                     Worksheets(&amp;quot;Sheet1&amp;quot;).Cells(I, 2).Value = Connector&lt;/div&gt;&lt;div&gt;                     Worksheets(&amp;quot;Sheet1&amp;quot;).Cells(I, 3).Value = Device&lt;/div&gt;&lt;div&gt;                     I = I + 1&lt;/div&gt;  &lt;div&gt;                  End If&lt;/div&gt;&lt;div&gt;                Next Clone2&lt;/div&gt;&lt;div&gt;            End If&lt;/div&gt;&lt;div&gt;       Next Clone&lt;/div&gt;&lt;div&gt;    End If&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;    J = Worksheets(&amp;quot;Sheet1&amp;quot;).UsedRange.Rows.Count + 1&lt;/div&gt;  &lt;div&gt;    &lt;/div&gt;&lt;div&gt;    Columns(&amp;quot;A:C&amp;quot;).Select&lt;/div&gt;&lt;div&gt;    Range(&amp;quot;C1&amp;quot;).Activate&lt;/div&gt;&lt;div&gt;    ActiveWorkbook.Worksheets(&amp;quot;Sheet1&amp;quot;).Sort.SortFields.Clear&lt;/div&gt;&lt;div&gt;    ActiveWorkbook.Worksheets(&amp;quot;Sheet1&amp;quot;).Sort.SortFields.Add Key:=Range(Cells(1, 2), Cells(J, 2)) _&lt;/div&gt;  &lt;div&gt;        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal&lt;/div&gt;&lt;div&gt;    ActiveWorkbook.Worksheets(&amp;quot;Sheet1&amp;quot;).Sort.SortFields.Add Key:=Range(Cells(1, 3), Cells(J, 3)) _&lt;/div&gt;&lt;div&gt;        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal&lt;/div&gt;  &lt;div&gt;    With ActiveWorkbook.Worksheets(&amp;quot;Sheet1&amp;quot;).Sort&lt;/div&gt;&lt;div&gt;        .SetRange Range(Cells(1, 1), Cells(J, 3))&lt;/div&gt;&lt;div&gt;        .Header = xlGuess&lt;/div&gt;&lt;div&gt;        .MatchCase = False&lt;/div&gt;&lt;div&gt;        .Orientation = xlTopToBottom&lt;/div&gt;  &lt;div&gt;        .SortMethod = xlPinYin&lt;/div&gt;&lt;div&gt;        .Apply&lt;/div&gt;&lt;div&gt;    End With&lt;/div&gt;&lt;div&gt;    Rows(&amp;quot;1:1&amp;quot;).Select&lt;/div&gt;&lt;div&gt;    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove&lt;/div&gt;&lt;div&gt;    Range(&amp;quot;A1&amp;quot;).Select&lt;/div&gt;  &lt;div&gt;    ActiveCell.FormulaR1C1 = &amp;quot;Facility&amp;quot;&lt;/div&gt;&lt;div&gt;    Range(&amp;quot;B1&amp;quot;).Select&lt;/div&gt;&lt;div&gt;    ActiveCell.FormulaR1C1 = &amp;quot;Connector&amp;quot;&lt;/div&gt;&lt;div&gt;    Range(&amp;quot;C1&amp;quot;).Select&lt;/div&gt;&lt;div&gt;    ActiveCell.FormulaR1C1 = &amp;quot;Device&amp;quot;&lt;/div&gt;  &lt;div&gt;    Range(&amp;quot;A1:C1&amp;quot;).Select&lt;/div&gt;&lt;div&gt;    Selection.Font.Bold = True&lt;/div&gt;&lt;div&gt;    Range(&amp;quot;E2:F2&amp;quot;).Select&lt;/div&gt;&lt;div&gt;    Selection.Cut&lt;/div&gt;&lt;div&gt;    Range(&amp;quot;E1&amp;quot;).Select&lt;/div&gt;&lt;div&gt;    ActiveSheet.Paste&lt;/div&gt;  &lt;div&gt;    Range(&amp;quot;E4&amp;quot;).Select&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;End Sub&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-5077017584891492967?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/y4zPscSm4Agc8q5OMdBerlpVOBM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y4zPscSm4Agc8q5OMdBerlpVOBM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/y4zPscSm4Agc8q5OMdBerlpVOBM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/y4zPscSm4Agc8q5OMdBerlpVOBM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/aL8y9gc1K0s" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/5077017584891492967/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=5077017584891492967" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/5077017584891492967?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/5077017584891492967?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/aL8y9gc1K0s/use-excel-to-read-xml.html" title="Use Excel to Read XML" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/06/use-excel-to-read-xml.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0IDRno9eyp7ImA9WhZVEUs.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-4295907342059410906</id><published>2011-05-23T23:45:00.000+08:00</published><updated>2011-05-23T23:46:17.463+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-23T23:46:17.463+08:00</app:edited><title>Android + Google Maps开发笔记(二)：在ANDROID中使用GOOGLE MAPS自定义图层</title><content type="html">&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;一、创建图标：&lt;/div&gt;&lt;div&gt;1、创建图标marker.png文件，放在res/drawable目录下。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;二、创建图层数据：&lt;/div&gt;&lt;div&gt;1、构造一个Overlay类，继承自ItemizedOverlay。&lt;/div&gt;&lt;div&gt;class MyLocations extends ItemizedOverlay&lt;/div&gt;  &lt;div&gt;2、构造一个方法，用于实现加载定位图标。&lt;/div&gt;&lt;div&gt;public MyLocations(Drawable marker)&lt;/div&gt;&lt;div&gt;3、将各经纬度坐标作为GeoPoint合成OverlayItem，输入ItemizedOverlay。&lt;/div&gt;&lt;div&gt;items.add(new OverlayItem(GeoPoint, title, snippet));&lt;/div&gt;&lt;div&gt;4、将Overlay图层标记出来&lt;/div&gt;  &lt;div&gt;populate();&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;三、绘制自定义图层：&lt;/div&gt;&lt;div&gt;1、获取标记图片： marker.png&lt;/div&gt;&lt;div&gt;Drawable marker = getResources().getDrawable(R.drawable.marker);&lt;/div&gt;&lt;div&gt;调用图片的函数必须public，否则不能使用getResources()方法。&lt;/div&gt;&lt;div&gt;2、设置图片的绘制区域大小&lt;/div&gt;  &lt;div&gt;marker.setBounds(0, 0, marker.getIntrinsicWidth(), marker.getIntrinsicHeight());&lt;/div&gt;&lt;div&gt;3、设置缩放控制、显示模式等参数。&lt;/div&gt;&lt;div&gt;4、创建自定义Overlay层&lt;/div&gt;&lt;div&gt;MyLocations MyPlaces = new MyLocations(marker);&lt;/div&gt;&lt;div&gt;5、将创建的Overlay层添加到MapView中&lt;/div&gt;  &lt;div&gt;mapview.getOverlays().add(MyPlaces);&lt;/div&gt;&lt;div&gt;6、绘图，将地图中心移到第1个标记点&lt;/div&gt;&lt;div&gt;mapview.getController().setCenter(MyPlaces.getCenter()); &lt;/div&gt;&lt;div&gt;或&lt;/div&gt;&lt;div&gt;mapview.getController().animateTo(MyPlaces.getCenter());    &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-4295907342059410906?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/V1zwFb-E7A3IWFP0c3_lx5Qmc7s/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V1zwFb-E7A3IWFP0c3_lx5Qmc7s/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/V1zwFb-E7A3IWFP0c3_lx5Qmc7s/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/V1zwFb-E7A3IWFP0c3_lx5Qmc7s/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/HkmMekO3qh4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/4295907342059410906/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=4295907342059410906" title="1 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/4295907342059410906?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/4295907342059410906?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/HkmMekO3qh4/android-google-mapsandroidgoogle-maps.html" title="Android + Google Maps开发笔记(二)：在ANDROID中使用GOOGLE MAPS自定义图层" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>1</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/05/android-google-mapsandroidgoogle-maps.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEMEQH05cCp7ImA9WhZWGUw.&quot;"><id>tag:blogger.com,1999:blog-31738486.post-7001659015617713620</id><published>2011-05-21T01:26:00.001+08:00</published><updated>2011-05-21T01:26:41.328+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-05-21T01:26:41.328+08:00</app:edited><title>Android + Google Maps开发笔记(一)</title><content type="html">&lt;div&gt;关于ANDROID调试：&lt;/div&gt;1. 普通APP需在项目文件中包含Android API，包含GOOGLE MAPS的APP需包含GOOGLE API。&lt;div&gt;2. 创建虚拟机的时候，也要选择对应的API。&lt;/div&gt;&lt;div&gt;3. 创建虚拟机的时候，需要增加GPS支持、键盘支持等参数，以方便调试。&lt;/div&gt;&lt;div&gt;4. 如果遇到API报错，在Manifest里Uses Sdk，定义Mini SDK Version与项目包含的API版本一致。&lt;/div&gt;  &lt;div&gt;5. Debug Configuration &amp;gt; Launch Action &amp;gt; Launch Default Activity，这样在DEBUG的时候会自动加载APP。&lt;/div&gt;&lt;div&gt;6. 如果INSTALL APP失败，尝试关闭虚拟机，重新开始。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;关于GOOGLE MAPS API：&lt;/div&gt;&lt;div&gt;1. 找到Android debug keystore文件，Eclipse &amp;gt; WIndow &amp;gt; Preferences &amp;gt; Android &amp;gt; Build &amp;gt; Default debug keystore。&lt;/div&gt;  &lt;div&gt;2. 在JAVA的BIN目录下运行：&lt;/div&gt;&lt;div&gt;&lt;div&gt;C:\Program Files\Java\jre6\bin&amp;gt;keytool -list -alias androiddebugkey -keystore &amp;quot;keystore文件路径&amp;quot; -storepass android -keypass android&lt;/div&gt;&lt;div&gt;产生MD5指纹。&lt;/div&gt;&lt;/div&gt;&lt;div&gt;3. 在&lt;a href="http://code.google.com/android/maps-api-signup.html"&gt;http://code.google.com/android/maps-api-signup.html&lt;/a&gt;输入MD5 fingerprint，产生专属的GOOGLE MAPS API KEY。&lt;/div&gt;  &lt;div&gt;4. 在main.xml中增加参数android:apiKey。&lt;/div&gt;&lt;div&gt;&lt;br&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="cid:ii_1300e6f7f00dba72" alt="00.jpg" title="00.jpg"&gt;&lt;br&gt;&lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/31738486-7001659015617713620?l=tallrain.blogspot.com' alt='' /&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/18pBAHH-mL72FiHBeU5Nh9TgkrA/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/18pBAHH-mL72FiHBeU5Nh9TgkrA/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/18pBAHH-mL72FiHBeU5Nh9TgkrA/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/18pBAHH-mL72FiHBeU5Nh9TgkrA/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/tallrain/~4/le-7YonAUqM" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://tallrain.blogspot.com/feeds/7001659015617713620/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=31738486&amp;postID=7001659015617713620" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/7001659015617713620?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/31738486/posts/default/7001659015617713620?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/tallrain/~3/le-7YonAUqM/android-google-maps.html" title="Android + Google Maps开发笔记(一)" /><author><name>tallrain</name><uri>http://www.blogger.com/profile/16868012653943702064</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="32" height="32" src="http://1.bp.blogspot.com/_0LlLh-6wtOk/SmkfvWiYU-I/AAAAAAAAD9E/kzoxBBqAKqg/S220/head2.jpg" /></author><thr:total>0</thr:total><feedburner:origLink>http://tallrain.blogspot.com/2011/05/android-google-maps.html</feedburner:origLink></entry></feed>

