<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6287241624183128598</id><updated>2012-01-31T03:28:44.104-08:00</updated><category term='others'/><category term='Android'/><category term='NBA'/><title type='text'>Neil Life</title><subtitle type='html'>About life and work</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>28</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-7635080031694448359</id><published>2009-02-12T23:07:00.000-08:00</published><updated>2009-02-12T23:09:27.190-08:00</updated><title type='text'>Android</title><content type='html'>搞了这么长时间的android，回头看了看自己才写了3篇文章&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/6287241624183128598-7635080031694448359?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/7635080031694448359/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=7635080031694448359' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/7635080031694448359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/7635080031694448359'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2009/02/android.html' title='Android'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-1965920618669999727</id><published>2009-02-03T01:47:00.000-08:00</published><updated>2009-02-03T02:02:25.947-08:00</updated><title type='text'>Android STL/STD support</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 0, 51); text-decoration: underline; "&gt;&lt;span class="Apple-style-span" style="font-family: arial;"&gt;Article by Neil.He&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;万恶的android在STL和STD的支持上给了C/C++工程师带来了很大的麻烦。&lt;div&gt;Android的C++支持中只包含少的可怜的std namespace内容（还把std改成的android），和几乎空白的STL（standard Tamplate Library）。&lt;/div&gt;&lt;div&gt;这样的情况造成的严重的后果是，如果你想要porting一个lib到android上，那这个lib最好是连std和stl都不依赖，这对于开发来说无意于一种折磨。&lt;/div&gt;&lt;div&gt;在开发中发现了一点点信息，可能有一定的用处。&lt;/div&gt;&lt;div&gt;如果你的lib依赖stl的一些函数和对象，那么最好是平心静气的找找android的代码里是不是有类似的功能代码，android也是人开发的，也是用C/C++开发的，那么也会遇到类似的问题，所以也会有类似的处理方法，怎么办，缺什么补什么呗。&lt;/div&gt;&lt;div&gt;我在开发中需要用到vector，string，stream等对象，寻寻觅觅，发现还真有，/android/frameworks/base/media/libdrm/mobile2/中有个src/util/ustl-1.0，里面包含了一些stl的支持，虽然简单了点，但是基本上还是够我使用了。&lt;/div&gt;&lt;div&gt;仔细找发现还有很多地方有类似的实现，例如opencore等等。&lt;/div&gt;&lt;div&gt;经过这样看起来是解决了问题，可是android设计大牛们，是否想过这样大家要开发一个lib就要自己实现一部分标准库的功能，那么带来的代码冗余是可想而知的，这样的话，准备一个完整的标准库还是有必要的吧。难道android以后真的强悍到根本不用做中间层的lib，这点我始终怀疑...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-1965920618669999727?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/1965920618669999727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=1965920618669999727' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1965920618669999727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1965920618669999727'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2009/02/android-stlstd-support.html' title='Android STL/STD support'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-8570488070654454323</id><published>2009-01-16T01:33:00.000-08:00</published><updated>2009-01-16T01:43:52.602-08:00</updated><title type='text'>How to add a new module to Android</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;How to add a new module to Android&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Article by Neil He&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;1. Java module&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Because Android supports Java development directly, Java module could be add to application directly.&lt;/div&gt;&lt;div&gt;Refer to the following example:&lt;/div&gt;&lt;div&gt;The example is modified by HelloActivity provided by Android; add a class to this sample:&lt;/div&gt;&lt;div&gt;The new class named “abc”&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;package com.example.android.abc;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public class abc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;       public int print(int i){return i;};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The HelloActivity code as following:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255); font-style: italic; "&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;package com.example.android.helloactivity;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;import android.app.Activity;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;import android.os.Bundle;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;import android.widget.TextView;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;import android.media.MediaPlayer;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;import com.example.android.abc.abc;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;/**&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;* A minimal "Hello, World!" application.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;*/&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public class HelloActivity extends Activity {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    public HelloActivity() {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    /**&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;     * Called with the activity is first created.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;     */&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    @Override&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    public void onCreate(Bundle savedInstanceState) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        super.onCreate(savedInstanceState);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        // Set the layout for this activity.  You can find it&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        // in res/layout/hello_activity.xml&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        abc l_abc = new abc();&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        if(l_abc.print(1) == 1)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;                TextView tv = new TextView(this);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;               tv.setText("Hello, Android");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;               setContentView(tv);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Note: The new class “abc” should be put to the directory HelloActivity/src/com/example/android/abc.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;HelloActivity will compile it directly.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;2. Dynamic  Library with C++&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Actual, Android does not support C++ Application Development.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So, it need use JNI method to add a C++ Dynamic Library to Android.&lt;/div&gt;&lt;div&gt;The following procedure could show how to add a module to Android. The sample is add a new module to android framework&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step1:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Name the new module as “abc”.&lt;/div&gt;&lt;div&gt;Add a directory “abc” to Android/frameworks/base/ (You also could add to other location)&lt;/div&gt;&lt;div&gt;For compile the new module, the batch file (android/build/core/pathmap.mk) need be modified as following:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;FRAMEWORKS_BASE_SUBDIRS := \&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;core \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;graphics \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;location \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;media \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;opengl \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;sax \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;services \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;telephony \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;wifi \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;abc //Add for abc module compile&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step2:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Coding the C++ library, add a code directory to “abc”, write the code of library and the batch file for compiling, the code directory is named as “libabc” in following sample&lt;/div&gt;&lt;div&gt;“libabc” include three files:&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;test.h&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The header file of the library, include library class definition. &lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;namespace android {&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;class NeilTest&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;NeilTest(){};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;~NeilTest(){};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;int Neil(int i);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Note:&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Because Android do not support standard std name space, it just support namespace android, and it do not support all function of glibc++, include string operation.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;test.cpp&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The implement of “NeilTest” class&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#include "test.h"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;using namespace android;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;int NeilTest::Neil(int i)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;return i;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Android.mk&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The batch file of libabc&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;LOCAL_PATH:= $(call my-dir)&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;include $(CLEAR_VARS)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;LOCAL_SRC_FILES:= \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;test.cpp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;LOCAL_SHARED_LIBRARIES := \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;libui libcutils libutils&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;LOCAL_MODULE:= libabc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;LOCAL_PRELINK_MODULE := false &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;ifeq ($(TARGET_OS)-$(TARGET_SIMULATOR),linux-true)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;LOCAL_LDLIBS += -ldl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;endif&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;ifneq ($(TARGET_SIMULATOR),true)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;LOCAL_SHARED_LIBRARIES += libdl&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;endif&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;LOCAL_C_INCLUDES := \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;$(call include-path-for, graphics corecg)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;#include $(LOCAL_PATH)/abc/common/coreapi/Android.mk&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;include $(BUILD_SHARED_LIBRARY)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Note: &lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;The module name is libabc&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;The src file include “test.cpp”&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step3:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Code Java interface for the new module.&lt;/div&gt;&lt;div&gt;This part need design a new java class for implement the function required.&lt;/div&gt;&lt;div&gt;In following sample, it is a class calling the function of libabc.&lt;/div&gt;&lt;div&gt;Create a java file “abc/java/android/abc/abc.java”&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;package android.abc;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public class abc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;static&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;System.loadLibrary("abc_jni");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;public native int print(int i);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The package name is android.abc&lt;br /&gt;&lt;/div&gt;&lt;div&gt;The class name is abc, include a native function “print” and load a library “abc_jni”.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;Step4:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Finished the implement of C++ library and Java interface, need link them to implement Java interface calling C++ library.&lt;/div&gt;&lt;div&gt;Coding for JNI part for calling C++ library, the JNI part also implement with C++, however, the code of this part have some android rules.&lt;/div&gt;&lt;div&gt;First new a directory in “abc” as “jni”&lt;/div&gt;&lt;div&gt;“jni” include two files&lt;/div&gt;&lt;div&gt;android_abc_abc.cpp&lt;/div&gt;&lt;div&gt;For build this file, we could use following command to build a prototype and modify as android rules.&lt;/div&gt;&lt;div&gt;javac abc.java&lt;/div&gt;&lt;div&gt;javah abc&lt;/div&gt;&lt;div&gt;After this operation, we will get a header file of abc. However, it could not be used directly, it need be modified as android rules.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#define LOG_TAG "abc-JNI"&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#include "jni.h"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#include "JNIHelp.h"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#include "android_runtime/AndroidRuntime.h"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;#include "../libabc/test.h"&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;using namespace android;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;static int&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;android_abc_abc_print(JNIEnv *env, jobject thiz, int i)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    NeilTest haha;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    return haha.Neil(i);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;// ----------------------------------------------------------------------------&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;static JNINativeMethod gMethods[] = {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{"print",              "(I)I",                             (void *)android_abc_abc_print},&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;static const char* const kClassPathName = "android/abc/abc";&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;static int register_android_abc_abc(JNIEnv *env)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    jclass clazz;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    clazz = env-&gt;FindClass("android/abc/abc");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    if (clazz == NULL) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        //LOGE("Can't find android/abc/abc");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        return -1;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    return AndroidRuntime::registerNativeMethods(env,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;                "android/abc/abc", gMethods, NELEM(gMethods));&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;jint JNI_OnLoad(JavaVM* vm, void* reserved)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;{&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    JNIEnv* env = NULL;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    jint result = -1;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    if (vm-&gt;GetEnv((void**) &amp;amp;env, JNI_VERSION_1_4) != JNI_OK) {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        //LOGE("ERROR: GetEnv failed\n");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        goto bail;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    assert(env != NULL);&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    //neil add&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;span class="Apple-style-span" style="white-space: pre;"&gt;    &lt;/span&gt;if (register_android_abc_abc(env) &lt;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        //LOGE("ERROR: register_android_abc_abc native registration failed\n");&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;        goto bail;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    }&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    result = JNI_VERSION_1_4;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;bail:&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;    return result;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255); font-size: 13px; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Note:&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Except the implement of the function “android_abc_abc_print”, it still should include the operation of register the function “jint JNI_OnLoad(JavaVM* vm, void* reserved)”&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;Android.mk&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;The bitch file.&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255); font-size: 13px; font-style: italic; "&gt;ifneq ($(BUILD_WITHOUT_PV),true)&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_PATH:= $(call my-dir)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;include $(CLEAR_VARS)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_SRC_FILES:= \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;android_abc_abc.cpp&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_SHARED_LIBRARIES := \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libopencoreplayer \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libopencoreauthor \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libandroid_runtime \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libnativehelper \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;libabc&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_STATIC_LIBRARIES := &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_C_INCLUDES += \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;external/tremor/Tremor \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;$(JNI_H_INCLUDE) \&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;$(call include-path-for, corecg graphics)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_CFLAGS +=&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_LDLIBS := -lpthread&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_MODULE:= libabc_jni&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;LOCAL_PRELINK_MODULE := false &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-style: italic;"&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255);"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;include $(BUILD_SHARED_LIBRARY)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="color: rgb(51, 51, 255); font-size: 13px; font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;Note: the shared library should include “libabc”&lt;/div&gt;&lt;div&gt;After the 4 steps, the new module could be build with android building directly.&lt;/div&gt;&lt;div&gt;Just use the android make command, the new module could be compiled and register to android system.&lt;/div&gt;&lt;div&gt;An application could call the module with the java interface.&lt;/div&gt;&lt;div&gt;Import the class “android.abc.abc”&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-8570488070654454323?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/8570488070654454323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=8570488070654454323' title='172 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/8570488070654454323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/8570488070654454323'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2009/01/how-to-add-new-module-to-android.html' title='How to add a new module to Android'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>172</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-6286164545928206039</id><published>2009-01-05T19:39:00.000-08:00</published><updated>2009-01-05T19:40:33.844-08:00</updated><title type='text'>Lenovo的新笔记本，感慨</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(54, 54, 54); font-family: Arial; font-size: 13px; line-height: 19px; "&gt;&lt;a href="http://jkontherun.com/2009/01/04/lenovo-officially-releases-w700ds-dual-screen-thinkpad/" style="outline-style: none; outline-width: initial; outline-color: initial; color: rgb(255, 255, 255); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: rgb(10, 167, 214); text-decoration: none; background-position: initial initial; "&gt;&lt;img hspace="4" vspace="4" border="0" src="http://www.blogcdn.com/www.engadget.com/media/2009/01/1-5-09-w700ds1.jpg" alt="" style="border-style: initial; border-color: initial; border-style: initial; border-color: initial; 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: 1px; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-top-style: solid; border-right-style: solid; border-bottom-style: solid; border-left-style: solid; border-top-color: rgb(10, 167, 214); border-right-color: rgb(10, 167, 214); border-bottom-color: rgb(10, 167, 214); border-left-color: rgb(10, 167, 214); background-image: initial; background-repeat: initial; background-attachment: initial; -webkit-background-clip: initial; -webkit-background-origin: initial; background-color: transparent; background-position: initial initial; " /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="left"&gt;Thinkpad终于在联想的带领下给了我们惊喜，不但是屏幕上的突破，但同时也拨疼了我们的价格心里线，官方正式宣布从3663美元起跳，约24990元人民币，此笔记本为专业人士打造，其主屏分辨率为1920x1200，亮度可达400nits，同时提供了72% Adobe RGB色域，10.6寸辅助屏幕分辨率768x1280，配置包括Intel Core 2四核移动处理器，最高8GB DDR3内存，Quadro FX移动显卡，双硬盘位可选HDD / SSD 硬盘，同时内置WACOM绘图板、DVD刻录机、高速UDMA CF读卡器及7合1读卡器等。视频输出提供双连接DVI、DisplayPort和VGA接口。网络支持WiFi、WiMAX，安全配置包括指纹识别、智能卡读卡器和全盘加密硬盘e&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/6287241624183128598-6286164545928206039?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/6286164545928206039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=6286164545928206039' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/6286164545928206039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/6286164545928206039'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2009/01/lenovo.html' title='Lenovo的新笔记本，感慨'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-5542155592402319903</id><published>2008-12-29T20:24:00.000-08:00</published><updated>2008-12-29T20:25:49.568-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='others'/><title type='text'>忘记你不如忘记自己</title><content type='html'>&lt;span class="Apple-style-span" style="font-family: arial; font-size: 14px; line-height: 20px; "&gt;黑色的夜燃烧着风&lt;br /&gt;无情的细雨淋得我心痛&lt;br /&gt;最后一班车像是你的诺言&lt;br /&gt;狠心离去溅湿了我的心&lt;br /&gt;一个人走在冰冷的长街&lt;br /&gt;想起分手前熟悉的脸&lt;br /&gt;淡淡地留下一句忘了我吧还有明天&lt;br /&gt;心碎的声音有谁会听得见&lt;br /&gt;我告诉自己爱情早已走远&lt;br /&gt;可是胸前还挂着你的项链&lt;br /&gt;逃离这城市还剩什么可留在心底&lt;br /&gt;&lt;span style="color:#c60a00;"&gt;忘记你不如忘记自己&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-5542155592402319903?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/5542155592402319903/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=5542155592402319903' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/5542155592402319903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/5542155592402319903'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/12/blog-post_29.html' title='忘记你不如忘记自己'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-3694173005384222123</id><published>2008-12-17T22:31:00.000-08:00</published><updated>2008-12-17T22:37:48.020-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='others'/><title type='text'>我的成长-80后的男人</title><content type='html'>&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;看着NBA长大的&lt;/div&gt;&lt;div&gt;看着灌篮高手长大的&lt;/div&gt;&lt;div&gt;学着乔丹的动作长大的&lt;/div&gt;&lt;div&gt;和科比一起长大的（奶奶的，科比都30了）&lt;/div&gt;&lt;div&gt;玩着魂斗罗长大的&lt;/div&gt;&lt;div&gt;玩着超级玛丽长大的&lt;/div&gt;&lt;div&gt;玩着PS长大的&lt;/div&gt;&lt;div&gt;玩着沙丘长大的&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;还有什么，想到了再写&lt;br /&gt;&lt;div&gt;&lt;br /&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/6287241624183128598-3694173005384222123?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/3694173005384222123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=3694173005384222123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/3694173005384222123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/3694173005384222123'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/12/80.html' title='我的成长-80后的男人'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-1804843958106264886</id><published>2008-12-17T19:56:00.000-08:00</published><updated>2008-12-17T20:05:45.359-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NBA'/><title type='text'>看好开拓者，看好罗伊</title><content type='html'>一直没怎么看过开拓者的比赛。&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/6287241624183128598-1804843958106264886?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/1804843958106264886/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=1804843958106264886' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1804843958106264886'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1804843958106264886'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/12/blog-post_17.html' title='看好开拓者，看好罗伊'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-1135659289630972822</id><published>2008-12-11T18:51:00.000-08:00</published><updated>2008-12-11T18:52:47.280-08:00</updated><title type='text'>转载：一个JNI下c和java程序范例</title><content type='html'>转自http://blog.chinaunix.net/u1/38994/showart_1100966.html&lt;br /&gt;&lt;br /&gt;1.编辑jprint.java文件&lt;br /&gt;gliethttp@Leith:~/Android$ cat jprint.java&lt;br /&gt;public class jprint&lt;br /&gt;{&lt;br /&gt;/*******************************************************&lt;br /&gt;*the print() function will call the printf() funcion which is a ANSI c funciton&lt;br /&gt;********************************************************/&lt;br /&gt;   public native void print();&lt;br /&gt;   static&lt;br /&gt;   {&lt;br /&gt;       System.loadLibrary("jnilibs");&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;2.生成class和.h文件&lt;br /&gt;gliethttp@Leith:~/Android$ javac jprint.java&lt;br /&gt;这样会生成jprint.class&lt;br /&gt;然后使用javah生成jprint.h文件&lt;br /&gt;gliethttp@Leith:~/Android$ javah jprint&lt;br /&gt;3.将jprint.h作为hello.c的头文件,并实现jprint.h中定义了的jni接口函数.&lt;br /&gt;4.编写hello.c文件&lt;br /&gt;gliethttp@Leith:~/Android$ cat hello.c&lt;br /&gt;#include &lt;stdio.h&gt;&lt;br /&gt;#include "jprint.h"&lt;br /&gt;&lt;br /&gt;JNIEXPORT void JNICALL Java_jprint_print(JNIEnv *env, jobject obj)&lt;br /&gt;{&lt;br /&gt;   printf("hello,Android!\n###Leith_gliethttp.\n");&lt;br /&gt;}&lt;br /&gt;5.编译jni的java共享库&lt;br /&gt;gliethttp@Leith:~/Android$ gcc -fPIC -I /usr/local/jdk1.5/include -I /usr/local/jdk1.5/include/linux -shared -o libjnilibs.so *.c&lt;br /&gt;6.成功后会在当前目录下生成libjnilibs.so文件,将当前libjnilibs.so所在目录加入LIB路径变量中.&lt;br /&gt;gliethttp@Leith:~/Android$ export LD_LIBRARY_PATH=.:./lib:/home/gliethttp/Android:$(LD_LIBRARY_PATH)&lt;br /&gt;7.编写java应用程序,调用c中的print函数&lt;br /&gt;gliethttp@Leith:~/Android$ cat gliethttp_hello.java&lt;br /&gt;public class gliethttp_hello&lt;br /&gt;{&lt;br /&gt;   public static void main(String[] args)&lt;br /&gt;   {&lt;br /&gt;       jprint p = new jprint();&lt;br /&gt;       p.print();&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;8.编译应用程序gliethttp_hello&lt;br /&gt;gliethttp@Leith:~/Android$ javac gliethttp_hello.java&lt;br /&gt;9.好了,一切完成了,执行看效果吧:&lt;br /&gt;gliethttp@Leith:~/Android$ java gliethttp_hello&lt;br /&gt;hello,Android!&lt;br /&gt;###Leith_gliethttp.&lt;br /&gt;&lt;br /&gt;PS:使用vim编辑java程序的时候,必须要注意的是,TAB按键一定要正确为^I,绝对不要用4个空格替代,否则&lt;br /&gt;  javac老是提示错误,对于vim可以使用ctrl+v+tab的输入来输入一个正确的TAB键,&lt;br /&gt;  可以使用:set list,:set nolist取消:).&lt;br /&gt;PS1:应该这样建立目录,这样格式比较统一&lt;br /&gt;|-- c_source&lt;br /&gt;|   |-- hello.c&lt;br /&gt;|   `-- jprint.h&lt;br /&gt;|-- java&lt;br /&gt;|   |-- gliethttp_hello.java&lt;br /&gt;|   `-- jprint.java&lt;br /&gt;|-- lib&lt;br /&gt;|   `-- libjnilibs.so&lt;/stdio.h&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-1135659289630972822?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/1135659289630972822/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=1135659289630972822' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1135659289630972822'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1135659289630972822'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/12/jnicjava.html' title='转载：一个JNI下c和java程序范例'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-6395447955399897671</id><published>2008-12-09T02:04:00.001-08:00</published><updated>2008-12-09T02:04:58.242-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>OpenCore分析</title><content type='html'>Android的MediaPlayer部分功能是基于Opencore的。&lt;br /&gt;MediaPlayer调用MediaPlayerService使用到OpenCore内容&lt;br /&gt;在MediaPlayerService：createPlayer的时候有三种player的type:&lt;br /&gt;    switch (playerType) {&lt;br /&gt;        case PV_PLAYER:&lt;br /&gt;            LOGV(" create PVPlayer");&lt;br /&gt;            p = new PVPlayer();&lt;br /&gt;            break;&lt;br /&gt;        case SONIVOX_PLAYER:&lt;br /&gt;            LOGV(" create MidiFile");&lt;br /&gt;            p = new MidiFile();&lt;br /&gt;            break;&lt;br /&gt;        case VORBIS_PLAYER:&lt;br /&gt;            LOGV(" create VorbisPlayer");&lt;br /&gt;            p = new VorbisPlayer();&lt;br /&gt;            break;&lt;br /&gt;其中PVPlayer是调用OpenCore实现的&lt;br /&gt;在阅读OpenCore的代码的时候，曾经走了一个弯路，就是在读代码的时候没有考虑向上调用的相关性，只看OpenCore内部的代码。&lt;br /&gt;在读OpenCore的代码时opencore\Engines下封装了player和author，而且这两部分在pv提供的文档OpenCORE_brochure.pdf里也是描述成了主要的两个多媒体的处理引擎。&lt;br /&gt;但是在实际的Android调用时，提供上层多媒体处理引擎接口的并不是player和author，而是在opencore/android/中的playerdriver（playerdriver.cpp）。&lt;br /&gt;在分析代码是发现playerdriver的代码和opencore\Engines里的player基本是一样的。可以看出OpenCore集成入Android的时候，开发人员参考原有的引擎重写了接口。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-6395447955399897671?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/6395447955399897671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=6395447955399897671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/6395447955399897671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/6395447955399897671'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/12/opencore.html' title='OpenCore分析'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-8299828521708522577</id><published>2008-12-09T01:54:00.000-08:00</published><updated>2008-12-09T02:03:24.166-08:00</updated><title type='text'>起床啦</title><content type='html'>真实的反应了我和兔兔起床的过程&lt;br /&gt;&lt;br /&gt;&lt;table style="width: 194px;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="background: transparent url(http://picasaweb.google.com/f/img/transparent_album_background.gif) no-repeat scroll left center; height: 194px; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;" align="center"&gt;&lt;a href="http://picasaweb.google.com/neil.hexiaoning/DRPzuC#"&gt;&lt;img src="http://lh5.ggpht.com/_MmZdvI_9LYg/ST5ArTLCQME/AAAAAAAAAI8/DDN1y_AHDY4/s160-c/DRPzuC.jpg" style="margin: 1px 0pt 0pt 4px;" width="160" height="160" /&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="text-align: center; font-family: arial,sans-serif; font-size: 11px;"&gt;&lt;a href="http://picasaweb.google.com/neil.hexiaoning/DRPzuC#" style="color: rgb(77, 77, 77); font-weight: bold; text-decoration: none;"&gt;起床&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-8299828521708522577?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/8299828521708522577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=8299828521708522577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/8299828521708522577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/8299828521708522577'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/12/blog-post.html' title='起床啦'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_MmZdvI_9LYg/ST5ArTLCQME/AAAAAAAAAI8/DDN1y_AHDY4/s72-c/DRPzuC.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-7403056626863898376</id><published>2008-11-28T01:29:00.000-08:00</published><updated>2008-11-28T01:32:13.962-08:00</updated><title type='text'>PSP2？</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_MmZdvI_9LYg/SS-6YqH1iOI/AAAAAAAAAGE/2QRtH5cjstM/s1600-h/pspconcept_01.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 218px;" src="http://1.bp.blogspot.com/_MmZdvI_9LYg/SS-6YqH1iOI/AAAAAAAAAGE/2QRtH5cjstM/s320/pspconcept_01.jpg" alt="" id="BLOGGER_PHOTO_ID_5273638621460924642" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;以后psp就这样子&lt;br /&gt;时尚够了，但是好用吗？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-7403056626863898376?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/7403056626863898376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=7403056626863898376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/7403056626863898376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/7403056626863898376'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/psp2.html' title='PSP2？'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_MmZdvI_9LYg/SS-6YqH1iOI/AAAAAAAAAGE/2QRtH5cjstM/s72-c/pspconcept_01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-1323518538099115181</id><published>2008-11-19T23:29:00.000-08:00</published><updated>2008-11-19T23:41:01.054-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>读Android代码</title><content type='html'>终于开始读Android的代码了。&lt;br /&gt;因为工作需要先从OpenCore看起，OpenCore里又从mp3的codec看起，我看，我看，我看看&lt;br /&gt;看不懂，更加头晕的是OpenCore里有两个地方的代码似乎和mp3的decoder有关，我倒是没有兴趣研究Android里的mp3 decoder有多好的算法，只是想看看到底上层是怎么调用mp3 decoder去实现音频播放的。万恶的Android什么文档说明都没有之后硬看了。&lt;br /&gt;总之是看得头疼，mp3的decoder代码在两个地方都有external/opencore/codecs_v2/audio/mp3/dec还有external/opencore/codecs_v2/omx/omx_mp3，从目前看的结果mp3 decoder的实体是在&lt;br /&gt;external/opencore/codecs_v2/omx/omx_mp3里面（在这里面找到了一些类似create，decode，close的操作，名字不一定对但是大体看上去比较像传统的编解码器的API接口，往上跟踪，一层一层的跟，试图找到哪里调用了这里的decode函数接口，跟踪到了一个Run函数，然后我的ubuntu虚拟机挂了，结果昨天没有继续跟踪。但是到这一步看起来跟踪也并不容易了，Run函数在Android代码中有上千个，看来只有找相关Run函数的对象定义了。&lt;br /&gt;总之，没有文档，真是够烦&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-1323518538099115181?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/1323518538099115181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=1323518538099115181' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1323518538099115181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1323518538099115181'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/android_19.html' title='读Android代码'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-4690384645012350536</id><published>2008-11-17T22:21:00.000-08:00</published><updated>2008-11-17T22:22:40.481-08:00</updated><title type='text'>怎么看都觉得是科幻小说，谁敢在地球上实验？</title><content type='html'>&lt;div class="text_pic" style="float: right; visibility: visible;"&gt;&lt;a target="_blank" href="http://imgsrc.baidu.com/baike/pic/item/0d968f23beb68c57ad34dedb.jpg"&gt;&lt;img src="http://imgsrc.baidu.com/baike/abpic/item/0d968f23beb68c57ad34dedb.jpg" title="" /&gt;&lt;/a&gt;&lt;/div&gt;         　　&lt;b&gt;反物质武器 &lt;/b&gt;&lt;br /&gt;　　&lt;a target="_blank" href="http://baike.baidu.com/view/286635.htm"&gt;1986年&lt;/a&gt;首次发现&lt;a target="_blank" href="http://baike.baidu.com/view/1765.htm"&gt;反物质&lt;/a&gt;，由于极少量的&lt;a target="_blank" href="http://baike.baidu.com/view/35675.htm"&gt;物质&lt;/a&gt;同它的反物质相互作用，能够&lt;a target="_blank" href="http://baike.baidu.com/view/22211.htm"&gt;释放&lt;/a&gt;出极大的能量。可用作热核爆炸的扳机，或者激励出极强的&lt;a target="_blank" href="http://baike.baidu.com/view/45735.htm"&gt;X射线&lt;/a&gt;或&lt;a target="_blank" href="http://baike.baidu.com/view/14258.htm"&gt;γ射线&lt;/a&gt;&lt;a target="_blank" href="http://baike.baidu.com/view/2695.htm"&gt;激光&lt;/a&gt;，反物质研究成为目前各国研究的重点。它是目前&lt;a target="_blank" href="http://baike.baidu.com/view/14329.htm"&gt;核武器&lt;/a&gt;中最强、最重要的一种。&lt;a target="_blank" href="http://baike.baidu.com/view/2398.htm"&gt;美国&lt;/a&gt;费米国立加速器研究所，&lt;a target="_blank" href="http://baike.baidu.com/view/64741.htm"&gt;法国&lt;/a&gt;和&lt;a target="_blank" href="http://baike.baidu.com/view/2773.htm"&gt;瑞士&lt;/a&gt;合建的欧洲研究中心，俄罗斯高能物理研究所都在做此研究。&lt;a target="_blank" href="http://baike.baidu.com/view/61891.htm"&gt;中国&lt;/a&gt;的反物质研究所始于80年代初，由世界著名的核物理学家、反物质发现者赵中尧担任技术顾问，因此西方称他为“中国反物质武器之父”。关于这方面的公开资料几近于无，其高度保密性正反映了其极端重要性，只能通过&lt;a target="_blank" href="http://baike.baidu.com/view/188626.htm"&gt;正负电子对撞机&lt;/a&gt;的零碎进展作为这种武器进展的参考。&lt;br /&gt;　　&lt;b&gt;反物质武器具有如下的第四代核武器所共有的特点： &lt;/b&gt;&lt;br /&gt;　　1、虽然威力巨大，但是其附带杀伤效应较小。新一代核武器强化了核反应中的部分杀伤效应，同时抑制了其他杀伤破坏因素的产生。&lt;br /&gt;　　2、杀伤手段和杀伤破坏目标更为单一。新型核武器可以只利用爆炸产生的&lt;a target="_blank" href="http://baike.baidu.com/view/53001.htm"&gt;冲击波&lt;/a&gt;或是&lt;a target="_blank" href="http://baike.baidu.com/view/1474.htm"&gt;电磁脉冲&lt;/a&gt;或是其他的杀伤破坏因素，来攻击特定的目标或设备，令使用者在使用核武器攻击时有更大的选择余地，也更加灵活。&lt;br /&gt;　　3、研究手段中&lt;a target="_blank" href="http://baike.baidu.com/view/10600.htm"&gt;高科技&lt;/a&gt;含量非常高。&lt;br /&gt;　　但是，因为反物质本身之谜还没有揭开，所以研制反物质武器仍然是任重而道远。要想把反物质武器从设想变为现实，还需要&lt;a target="_blank" href="http://baike.baidu.com/view/66827.htm"&gt;科学家&lt;/a&gt;们的不懈努力。&lt;br /&gt;　　反物质武器是一种以反物质作为能量，推进剂或爆炸物，拥有超强大力量的梦想武器。目前其还仅存 在于科幻小说中。但美国空军已经对其可能的军事用途，包括毁灭性效果产生了兴趣。自从冷战开始，其就开始资助反物质相关的物理研究。其主要的理论优势是物 质与反物质相撞会将100%质量转化成能量(高能伽玛射线)，而利用聚变反应的氢弹则大约是只有7%的质能转换。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-4690384645012350536?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/4690384645012350536/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=4690384645012350536' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/4690384645012350536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/4690384645012350536'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/blog-post_17.html' title='怎么看都觉得是科幻小说，谁敢在地球上实验？'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-977962892438823552</id><published>2008-11-12T20:07:00.001-08:00</published><updated>2008-11-12T20:07:34.737-08:00</updated><title type='text'>塞翁失马，焉知非福？</title><content type='html'>有意无意中人可能就找到了自己的事业。&lt;br&gt;读新闻有感&lt;br&gt;&lt;h1 id="artibodyTitle"&gt;&lt;font size="2"&gt;下岗夫妻为给儿子喝鹿茸血治病在荒山养鹿致富&lt;/font&gt;&lt;/h1&gt;年幼的儿子不幸得了强直性脊柱炎，为了给儿子喝鹿茸血治病，南京一对下岗夫妻卖掉房子，在六合平山上养起了梅花鹿！两年来，夫妻俩创造了两个神话：儿子每天坚持喝鹿茸血，病情日渐痊愈；鹿场更给他们带来了一年20万元的利润，昨天还被授予南京市职工创新创业示范基地。&lt;br&gt; &lt;br&gt;&lt;a href="http://news.sina.com.cn/s/2008-11-13/031214720959s.shtml"&gt;http://news.sina.com.cn/s/2008-11-13/031214720959s.shtml&lt;/a&gt;&lt;br&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-977962892438823552?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/977962892438823552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=977962892438823552' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/977962892438823552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/977962892438823552'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/blog-post_12.html' title='塞翁失马，焉知非福？'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-7195800966148572380</id><published>2008-11-10T19:39:00.000-08:00</published><updated>2008-11-10T19:46:27.542-08:00</updated><title type='text'>节省空间-复式家具</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_MmZdvI_9LYg/SRj_AlSK2AI/AAAAAAAAAFc/nzw31f6c8yQ/s1600-h/c7eaf01f7c282ae9e0fe0b45.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 214px;" src="http://3.bp.blogspot.com/_MmZdvI_9LYg/SRj_AlSK2AI/AAAAAAAAAFc/nzw31f6c8yQ/s320/c7eaf01f7c282ae9e0fe0b45.jpg" alt="" id="BLOGGER_PHOTO_ID_5267240149683197954" border="0" /&gt;&lt;/a&gt;这样的家具比较有个性，适合家里面积比较小的&lt;br /&gt;以后家里家具的顶上不会闲着了，只不过每天爬上爬下的人们能不能适应，哈哈&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_MmZdvI_9LYg/SRj_AUN086I/AAAAAAAAAFU/nPq0zsirT2M/s1600-h/6e6955fb5506450a6c22eb7a.jpg.png"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 320px; height: 304px;" src="http://4.bp.blogspot.com/_MmZdvI_9LYg/SRj_AUN086I/AAAAAAAAAFU/nPq0zsirT2M/s320/6e6955fb5506450a6c22eb7a.jpg.png" alt="" id="BLOGGER_PHOTO_ID_5267240145101583266" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;img src="file:///C:/DOCUME%7E1/neilh/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-7195800966148572380?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/7195800966148572380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=7195800966148572380' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/7195800966148572380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/7195800966148572380'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/blog-post_10.html' title='节省空间-复式家具'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_MmZdvI_9LYg/SRj_AlSK2AI/AAAAAAAAAFc/nzw31f6c8yQ/s72-c/c7eaf01f7c282ae9e0fe0b45.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-2968980730135906212</id><published>2008-11-08T05:30:00.000-08:00</published><updated>2008-11-08T05:33:19.728-08:00</updated><title type='text'>打球被一个戴着头巾的北京杂种羞辱了</title><content type='html'>打球就打球嘴那么碎&lt;br /&gt;不过今天我没能一如既往的用强力对待这种傻鸟&lt;br /&gt;被羞辱了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-2968980730135906212?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/2968980730135906212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=2968980730135906212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/2968980730135906212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/2968980730135906212'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/blog-post_08.html' title='打球被一个戴着头巾的北京杂种羞辱了'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-1768227150232910225</id><published>2008-11-07T01:47:00.000-08:00</published><updated>2008-11-07T01:48:42.868-08:00</updated><title type='text'>About Me</title><content type='html'>Neil.He&lt;br /&gt;Software Engnieer&lt;br /&gt;neil.hexiaoning@gmail.com&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-1768227150232910225?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/1768227150232910225/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=1768227150232910225' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1768227150232910225'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1768227150232910225'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/about-me.html' title='About Me'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-5387170947414544827</id><published>2008-11-05T18:47:00.000-08:00</published><updated>2008-11-07T07:55:42.613-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;span style="font-family:verdana;"&gt;Finally，Google publish the source code of android&lt;br /&gt;The code could be downloaded from the following address&lt;br /&gt;&lt;a href="http://source.android.com/"&gt;http://source.android.com/&lt;/a&gt;&lt;br /&gt;It seems google suggests the developer of android using ubuntu or MacX, they just provide ubuntu and MacX enviroment configure.&lt;br /&gt;Install Git to my Ubuntu and downloaded the code with Ubuntu(It seem ubuntu packet sync is very slow, I install git using almost 1 week).&lt;br /&gt;After get the source code, when build the source code, I meet two errors, the following item need be attention:&lt;br /&gt;1. The compiler(gcc/g++) version should be newer than 4.2&lt;br /&gt;2. The system need be installed libncurses &lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-5387170947414544827?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/5387170947414544827/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=5387170947414544827' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/5387170947414544827'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/5387170947414544827'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/android.html' title='Android'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-617139741077696966</id><published>2008-11-05T01:35:00.000-08:00</published><updated>2008-11-05T01:37:48.475-08:00</updated><title type='text'>语录中国</title><content type='html'>&lt;p class="ana"&gt;我们这个社会中有一群庞大的中老年人，他们并不爱、也不会做事，他们爱做人，并且以教导年轻人如何做人来体现自己会做人。&lt;/p&gt; &lt;p class="auther"&gt;—— 连岳,《我是鸡汤》&lt;/p&gt;&lt;p class="ana"&gt;一个连食品安全都保证不了的国家，一定是在实行人类有史以来最坏的制度。&lt;/p&gt; &lt;p class="auther"&gt;—— 连岳&lt;/p&gt;&lt;p class="ana"&gt;买日货是无奈，买国货是无畏。&lt;/p&gt; &lt;p class="auther"&gt;—— 网友&lt;/p&gt;&lt;p class="ana"&gt;加菲猫，这是去年回农场时你和猪的合影……有条纹的那一只是你。&lt;/p&gt; &lt;p class="auther"&gt;—— 乔恩·艾伯克&lt;/p&gt;&lt;p class="ana"&gt;国外媒体喜欢妖魔化中国，中国媒体喜欢妖魔化中国人民。&lt;/p&gt; &lt;p class="auther"&gt;—— 网友&lt;/p&gt;&lt;p class="ana"&gt;先瞒、瞒不了骗、骗不了就承认一部分，然后撤几个官员了事，最后宣传包装成一件功劳。&lt;/p&gt; &lt;p class="auther"&gt;—— 连岳&lt;/p&gt;&lt;p class="ana"&gt;当谣言越来越靠谱，辟谣就是证实。&lt;/p&gt; &lt;p class="auther"&gt;—— 明月星光&lt;/p&gt;&lt;p class="ana"&gt;我刚结束为期14天的节食，唯一减掉的就是两周来的时间。&lt;/p&gt; &lt;p class="auther"&gt;—— 加菲猫&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-617139741077696966?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/617139741077696966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=617139741077696966' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/617139741077696966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/617139741077696966'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/11/blog-post.html' title='语录中国'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-1360835758112027158</id><published>2008-10-30T02:56:00.001-07:00</published><updated>2008-11-07T02:07:43.858-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='others'/><title type='text'>黑莓使用指南</title><content type='html'>&lt;span style="color: rgb(160, 82, 45);"&gt;快捷键真多&lt;br /&gt;&lt;br /&gt;1.在BB的主画面, 同时按下ALT+CAP+H, 出现帮助画面;可以查看到供应商ID、平台、应用程序版本、PIN、IMEI、正常运行时间、信号强度、电池电量、未用文件以及文件总数。&lt;br /&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;   （其中运营商ID后面的数字，对应于下面代号，您的手机是哪个供应商呢？&lt;img src="http://pdabbs.enet.com.cn/images/smilies/smile.gif" smilieid="1" alt="" border="0" /&gt; ）&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;运营商的代号一览&lt;br /&gt;100 美国T-Mobile&lt;br /&gt;102 北美Cingular&lt;br /&gt;107 加拿大Roger&lt;br /&gt;114 丹麦/奥地利T-Mobile&lt;br /&gt;116 香港3 (和记电讯)&lt;br /&gt;119 法国Orange&lt;br /&gt;120 英国Vodafone&lt;br /&gt;123 英国T-Mobile&lt;br /&gt;124 德国Vodafone&lt;br /&gt;125 英国/爱尔兰的O2&lt;br /&gt;128 新加坡StarHub&lt;br /&gt;141 香港CSL&lt;br /&gt;144 新加坡Singtel&lt;br /&gt;167 新加坡MobileOne&lt;br /&gt;176 香港数码通Smartone&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:sienna;"&gt;&lt;b&gt;2.&lt;/b&gt;BB有着比较人性化的设计，除了自己定义桌面以外，还可以根据自己的实际喜欢和需要，将桌面的程序图标进行顺序调整，甚至是隐藏起来&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;具体操作：&lt;br /&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;按下alt，然后按一下滚轮，会发现有Move Application【移动应用程序】/Hide Application【隐藏应用程序】(有的没有后者)，选择后，就发现桌面图标可以移动，前后顺序就能自己决定了&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;在某些特别的应用程序图标上，还会有&lt;span style="color:red;"&gt;全部显示&lt;/span&gt;，因此可以放心的隐藏某些图标，随时可以恢复显示的&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:sienna;"&gt;3.刚上手的时候发现想要进入某个应用程序的时候必须旋转滚轮很多次才可以选中到需要的程序，程序越靠后越麻烦。&lt;br /&gt;&lt;br /&gt;玩的过程中突然发现，其实移动光标选择应用程序图标不是只可以一个一个的按照水平先后顺序的，还可以上下移动哦。&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;操作步骤：&lt;span style="color:blue;"&gt;&lt;br /&gt;按住ALT键，然后旋转滚轮，就可以纵向移动光标了&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;（7230，7290的ALT键 就是ASZ包围的那个）&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:sienna;"&gt;4.&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="color:sienna;"&gt;&lt;b&gt;黑莓&lt;/b&gt;有一个地方和Windows系统相似&lt;br /&gt;在Windows中，按下ALT和TAB的时候就可以出现所有运行中的任务列表，然后持续按TAB就可以迅速切换到相应的程序。&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;不要犹豫，无论你现在在BB的哪个地方进行操作，按下ALT和ESC。&lt;br /&gt;看到了吧，然后持续按ESC就可以迅速切换到相应的程序。&lt;br /&gt;&lt;br /&gt;不知道ESC在什么地方？&lt;img src="http://pdabbs.enet.com.cn/images/smilies/sweat.gif" smilieid="10" alt="" border="0" /&gt;&lt;br /&gt;别的机型或许有所区别，但是在7290上，滚轮的下面就是ESC退出键&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:black;"&gt;&lt;span style="color:sienna;"&gt;5.&lt;/span&gt;&lt;b&gt;&lt;span style="color:sienna;"&gt;关于输入法&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;我的7290首先安装了官方的中文并且选择了拼音输入法，然后在&lt;span style="color:blue;"&gt;选项－－语言－－输入法&lt;/span&gt;中选定了拼音&lt;br /&gt;在需要输入汉字的时候，按ALT和Enter【就是DEL和SYM包围的那个回车键啦】，就可以进行输入了。&lt;br /&gt;&lt;br /&gt;在&lt;span style="color:blue;"&gt;选项－－语言－－输入法&lt;/span&gt;进入编辑输入法选项，发觉设置还是很多的哦，考虑比较周到：&lt;br /&gt;声音－－可以设置开关。【不过还不明白是否是&lt;b&gt;按键音&lt;/b&gt;】&lt;br /&gt;记忆－－可以设置开关。【不过还不明白做什么用途，莫非可以自己造词组】&lt;br /&gt;输入短语－－可以设置开关。【不过还不明白 猜测了一下 可能是和下面的快捷方式有关系，不过快捷方式应该翻译成快捷短语比较好】&lt;br /&gt;预测－－可以设置开关。【不过还不明白 具体有什么用途 ^_^ 】&lt;br /&gt;智能编号－－可以设置开关。【不过还不明白 是不是翻译的辞不达意？真的不知道是什么意思】&lt;br /&gt;快捷方式－－这个可是好东西 ^_^，选择编辑快捷方式 一看 OH MY GOD！ BS＝不是 BYJ＝不要紧 ^_^。还可以编辑新的呢 ，抓紧来一个TNND＝他奶奶的&lt;br /&gt;模糊音节－－如果你的普通话发音不是很精确的话，那么就用空格键选择你最根深柢固的发音错误吧，比如：ZH和Z不分啦&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:sienna;"&gt;&lt;b&gt;6.多选择 批量删除&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1.按下CAP 然后转转轮可以多选;&lt;br /&gt;2.按DEL 提示删除;&lt;br /&gt;3.按字母D 所选删除完毕.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="color:sienna;"&gt;7.快捷键&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;通用快捷键&lt;br /&gt;Alt+escape--------------------------------改变当前活动的应用软件&lt;br /&gt;Alt+enter---------------------------------锁住&lt;b&gt;黑莓&lt;/b&gt;&lt;br /&gt;Spacebar 或者 Return----------------------在阅读邮件时下翻一页&lt;br /&gt;Alt-Return or Shift-Space-----------------在阅读邮件时上翻一页&lt;br /&gt;B-----------------------------------------转到底部（消息、列表、邮件时）&lt;br /&gt;T-----------------------------------------转到顶部（消息、列表、邮件时）&lt;br /&gt;N-----------------------------------------移动到下一项（行事历中移动到下一天，信息中移动到下一条）&lt;br /&gt;P-----------------------------------------移动到上一项（行事历中移动到上一天，信息中移动到上一条）&lt;br /&gt;U-----------------------------------------移动到下一条未读消息&lt;br /&gt;文本输入快捷键&lt;br /&gt;你可以通过按住alt后按shift来激活caps lock，在邮件中这是没有必要的，因为&lt;b&gt;黑莓&lt;/b&gt;在邮件中会自动大写首字母，当caps lock被激活的时候，将会在屏幕右上角显示一个左侧带三角的椭圆形图标。&lt;br /&gt;你也可以通过按住shift后按alt来激活number lock，当number lock被激活的时候，将会在屏幕右上角显示一个右侧带三角的椭圆形图标。&lt;br /&gt;桌面快捷键&lt;br /&gt;C-----------------------------------------在信息界面下创建并发送新的信息&lt;br /&gt;M-----------------------------------------进入信息界面&lt;br /&gt;P-----------------------------------------进入电话界面&lt;br /&gt;T-----------------------------------------进入任务界面&lt;br /&gt;L-----------------------------------------进入行事历&lt;br /&gt;D-----------------------------------------进入记事本&lt;br /&gt;F-----------------------------------------进入场景设置&lt;br /&gt;K-----------------------------------------锁定&lt;b&gt;黑莓&lt;/b&gt;&lt;br /&gt;W-----------------------------------------进入网络浏览器&lt;br /&gt;B-----------------------------------------进入&lt;b&gt;黑莓&lt;/b&gt;浏览器&lt;br /&gt;E-----------------------------------------进入&lt;b&gt;黑莓&lt;/b&gt;信息传送器&lt;br /&gt;A-----------------------------------------进入地址簿&lt;br /&gt;R-----------------------------------------进入闹钟界面&lt;br /&gt;U-----------------------------------------进入计算器界面&lt;br /&gt;O-----------------------------------------进入设置项&lt;br /&gt;S-----------------------------------------进入搜索界面&lt;br /&gt;V-----------------------------------------显示已存储的消息&lt;br /&gt;&lt;br /&gt;信息及邮件快捷键&lt;br /&gt;Alt+I--------------------------------------显示呼入记录及收到的消息&lt;br /&gt;Alt+O--------------------------------------显示呼出记录机发出的消息&lt;br /&gt;Alt+P--------------------------------------显示电话记录&lt;br /&gt;Alt+S--------------------------------------显示短消息&lt;br /&gt;Alt+V--------------------------------------显示语音信息&lt;br /&gt;Space--------------------------------------下翻页&lt;br /&gt;B------------------------------------------转到信息底部&lt;br /&gt;T------------------------------------------转到信息顶部&lt;br /&gt;U------------------------------------------转到最初的未读信息&lt;br /&gt;N------------------------------------------转到下一条信息&lt;br /&gt;P------------------------------------------转到上一条信息&lt;br /&gt;Del----------------------------------------删除选中的当前的信息&lt;br /&gt;R------------------------------------------回复信息&lt;br /&gt;F------------------------------------------转发该信息&lt;br /&gt;C------------------------------------------编写新的信息&lt;br /&gt;S------------------------------------------进入信息搜索界面&lt;br /&gt;V------------------------------------------进入已存储的信息&lt;br /&gt;&lt;span style="color:red;"&gt;另：alt＋(右)caps＋del＝reset&lt;br /&gt;按alt同时输入LGLG，进入机子的log，你可以清空log文件，来释放一些内存。&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:sienna;"&gt;&lt;b&gt;8.其他：&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;技巧1&lt;/span&gt;&lt;br /&gt;组织你的图标&lt;br /&gt;在桌面下按住alt+滚轮垂直按下，将出现隐藏图标、移动图标选项，你如果已经将一些图标隐藏，将还会有显示所有图标显示。你将可以确定拿下图标是你经常 用到的，隐藏不常用的，在需要的时候通过显示所有图标的选项在进行查看。被隐藏的图标这时候将会带有“叉”，在你再次进入该菜单时，将显示所有图标前的钩 取掉，这些图标将再次进入不可见的状态。&lt;br /&gt;&lt;span style="color:blue;"&gt;技巧2&lt;/span&gt;&lt;br /&gt;进入后台运行的程序&lt;br /&gt;按住alt+esc将出现后台程序窗口。类似在windows中经常使用的alt+tab，松开esc并保持按住alt，就可以使用滚轮在数个后台程序间切换，松开alt时将激活该项程序。&lt;br /&gt;&lt;span style="color:darkgreen;"&gt;技巧3&lt;/span&gt;&lt;br /&gt;按住alt使用滚轮，滚轮的运动方向将由水平变为垂直。&lt;br /&gt;&lt;span style="color:blue;"&gt;技巧4&lt;/span&gt;&lt;br /&gt;使你的信号强度显示成为数字&lt;br /&gt;在桌面下按住alt并输入nmll&lt;br /&gt;信号强度与信号柱状图间的对比关系&lt;br /&gt;&lt;br /&gt;dBm 信号强度-------------柱状图显示&lt;br /&gt;-40 to-77 --------------------5&lt;br /&gt;-78 to-86 --------------------4&lt;br /&gt;-87 to-92 --------------------3&lt;br /&gt;-93 to-101-------------------2&lt;br /&gt;-102 to-120------------------1&lt;br /&gt;&lt;span style="color:blue;"&gt;技巧5&lt;br /&gt;&lt;/span&gt;设置单键拨号&lt;br /&gt;在窗口下按住某一字母键，将会出现设置单键拨号的窗口。剩下的不用我多说了吧？&lt;br /&gt;&lt;span style="color:blue;"&gt;技巧6&lt;/span&gt;&lt;br /&gt;在电话中记录信息&lt;br /&gt;在电话中，按下滚轮，在菜单中选择备注，你将可以在通话时记录重要信息了。&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-1360835758112027158?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/1360835758112027158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=1360835758112027158' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1360835758112027158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1360835758112027158'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/10/blog-post_30.html' title='黑莓使用指南'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-5815779965129912717</id><published>2008-10-27T21:56:00.000-07:00</published><updated>2008-10-27T22:39:45.515-07:00</updated><title type='text'>关于让座</title><content type='html'>有看到电视上的生活节目大肆宣扬让座的高尚和不让座的卑劣。&lt;br /&gt;宣扬让座的高尚没有错，但是不让座就一定卑劣吗？&lt;br /&gt;个人认为让座没有错，不让座也没有错，媒体要注意自己的导向性，要对自己的导向负责。&lt;br /&gt;让座历来都是一个高尚的道德，从来都不是一个规定一个法律。&lt;br /&gt;赞美高尚的道德是正确的，但是要求人人都有的都要遵守的是法律是规定，概念上有本质区别。&lt;br /&gt;我们要赞扬让座的道德，但是对于不让座的我们没有权利，没有理由，没有资格去批评，也不该批评，毕竟这不是二分法。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-5815779965129912717?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/5815779965129912717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=5815779965129912717' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/5815779965129912717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/5815779965129912717'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/10/blog-post_27.html' title='关于让座'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-1361004273036901332</id><published>2008-10-23T17:29:00.000-07:00</published><updated>2008-10-23T17:32:08.577-07:00</updated><title type='text'>第一次做为参展方出现在展会</title><content type='html'>参加了EXPO，中国通信展会&lt;br /&gt;西服革履的给人介绍公司和公司产品&lt;br /&gt;终于发现我不仅仅可以做技术&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-1361004273036901332?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/1361004273036901332/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=1361004273036901332' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1361004273036901332'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/1361004273036901332'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/10/blog-post_23.html' title='第一次做为参展方出现在展会'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-4845694428221187315</id><published>2008-10-19T21:17:00.000-07:00</published><updated>2008-10-20T00:18:06.460-07:00</updated><title type='text'>Neil He</title><content type='html'>haha&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-4845694428221187315?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/4845694428221187315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=4845694428221187315' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/4845694428221187315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/4845694428221187315'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/10/neil-he.html' title='Neil He'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-3722689490764713812</id><published>2008-10-16T21:17:00.000-07:00</published><updated>2008-10-16T21:22:21.728-07:00</updated><title type='text'>Android</title><content type='html'>Android到底怎么做底层开发啊，1.0版不支持JNI，Google太狠了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-3722689490764713812?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/3722689490764713812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=3722689490764713812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/3722689490764713812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/3722689490764713812'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/10/android.html' title='Android'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-2635604217076447151</id><published>2008-10-16T00:19:00.000-07:00</published><updated>2008-10-16T00:20:53.570-07:00</updated><title type='text'>十年应用软件</title><content type='html'>&lt;p&gt;&lt;span style="font-weight: bold;"&gt;转自http://www.cnbeta.com/articles/67188.htm&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-weight: bold;"&gt;看着笔者现在自己用的双核电脑,很难得的又一次感受到了电脑性能提升带来的爽快使用感,当然,按笔者的经验,这种感觉在最多一周之后就会消失,然后又开始感叹系统变慢了.不过回想起笔者当初那台处理器主频只有66MHz的电脑,回想起来真的是充满了回忆.&lt;/span&gt;于是乎笔者翻出了封存的很多老软件,有些还可以玩转,但也有一些只能在虚拟机下运行了,甚至于笔者翻出来的一些软盘,甚至笔者现在连一个读3.5寸软盘的软驱都已经没有了,想想这个当初没有连启动电脑都成问题的东西,现在居然已经不再需要了.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;   &lt;p align="center"&gt;  &lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inNeslItmHBB6.gif" /&gt;&lt;br /&gt;&lt;br /&gt;世界最早的&lt;span class="keyword"&gt;杀毒软件&lt;/span&gt;之一&lt;/p&gt; &lt;p&gt;    最熟悉的无疑就是QQ了，当时还叫OICQ，中文名字当时并不是什么聊天软件，而且叫网络寻呼机（刚出来的时候正是BP机最火的年代），功能方面相对的也 比较单一，聊天恐怕是很多朋友当时用的主要功能。那时候笔者家里网速很差，且还要占电话线，于是注册了数不表的QQ号码，又一次又一次的全都忘了密码，想 当初的6位7位号，现在应该都是蛮值钱的，实在是有些可惜。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/in_Q89DrC9jpI.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    不过没多长时间，OICQ被告并失去了使用OICQ的权利，到这个时间之后才算改成了现大家都熟悉的QQ。说起来和现在功能强大的QQ相比，笔者更喜欢的仍然还是那个简单快捷的聊天工具，现在一个QQ软件就像&lt;span class="keyword"&gt;微软&lt;/span&gt;的操作系统一样，明明大家使用的功能十分单一，但仍然要像瑞士军刀一样，将大量的功能整合进去，光是下载就要占用相当的时间。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inSKGXkp_JK22.gif" /&gt;&lt;/p&gt; &lt;p&gt;    不过OICQ作为当时世界上最流行的网上聊天软件，路却一直走的不太顺利，有曾经在家里玩CS打电脑的朋友可能注意过，BOT电脑对手不仅和你对战，同时 还会不停的刷屏聊天，其中就有要大家的OICQ号码的一段。但时至今日，OICQ在北美比不过MSN，只能和雅虎通拼杀市场，而用户数量极高的中国则已经 完全被QQ占据，哪怕是MSN这样的强势软件也只能被压的死死的翻不了身。&lt;/p&gt; &lt;h2&gt;■从硬解到软解 电影越看越爽了&lt;/h2&gt; &lt;p&gt;    豪杰超级解霸，看到这个名字不少朋友都会有认同感吧？笔者记得当时用的第一款媒体播放软件就是豪杰超级解霸5.5，再早一些的像XINGPLAY那样需要 解压卡这类高投入的产品，笔者虽然心仪已久，但那个时候却一直无力消费。不过在用着超级解霸看着以目前来说有点丢帧的陈佩斯的小品，当时却感觉很物有所 值，虽然那个时候哪怕盗版盘仍然要卖到35块钱一张。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/in3yhKD0YwuS2.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    到后来解霸提供了从CD单轨抓取MP3以及从VCD抓取片段的功能，曾经让超级解霸火上过一段时间，但随着东方影都等同类软件大量涌现之后，超级解霸兼容 性不足的问题开始暴露出来，一直到RM动画片大量出现，REPLAY一夜驰名，到最后的暴风影音一家霸唱天下，笔者发现媒体播放器里，可能这是笔者十几年 来更换最多的了。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/in1lCwXCK_y1o.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    直到不久前，笔者看新闻得知豪杰超经解霸被收购，这个当年的老大哥，如今也算是完成了历史使命，就像那句话说的，长江后浪推前浪，前浪死在沙滩上。显然这超级解霸只能起到一个前浪的作用，不知道暴风影音之后是否还会有强势产品出现。&lt;/p&gt; &lt;h2&gt;■压缩软件一代淘汰一代&lt;/h2&gt; &lt;p&gt;    WINZIP，不少人看到这图标只能无奈的叹一口气了吧，ZIP在进入WINDOWS时代之后算一时间相当流行的地压缩软件，不过在笔者的印象里，这东西活的时间确实是有些短。&lt;br /&gt; &lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inRqzfX9BKgrA.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    自从ZIP把大家从ARJ里解救出来之后，ZIP就像超级解霸一样曾经不可一视，笔者对那段时间发生的事情并没有太多的了解，只不过后来知道有个和ZIP 差不多的软件出现了，叫WINRAR。不成想几年之后，现在大家的电脑里只见RAR，但ZIP却已经不知道哪里去了。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/in1fKPH2Ygpeg.gif" /&gt;&lt;/p&gt; &lt;p&gt;    可能会有不少朋友问笔者为何对ZIP如此有感情，其实这主要也是因为当年笔者有了光驱之后，从同学那里借来大量的光盘，往往一张光盘里数百个ARJ文件却 只能打开很少一部分，心里有了阴影（后来笔者也没再去研究，当时究竟是盘的质量有问题还是文件当初压缩的时候有问题）。而在ZIP出现之后，这种情况只有 很少的情况下会出现，这就是笔者对ZIP印象深刻的原因之一。&lt;/p&gt; &lt;h2&gt;■DOS时代就能看照片&lt;/h2&gt;     说起来，现在大家看图都用的什么软件呢？以笔者来说，最好是SEA，比较后来了是ACDSEE，现在则是WINDOWS自带的图片浏览工具。 &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inxSJ7Fmbrbmo.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    SEA在当年的笔者看来是个很神奇的东西，毕竟在那个一切都是文字表达的年代里，突然出现一个可以看照生的工具，在当年来说效果还是很震憾的，不过其效果嘛，现在也只能用一般般来形容，不过在当年已经可以算是神作了之一了。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inbDcKoeuWoQU.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    再后来笔者用的第一款ACDSEE就已经是2.41版了，呵呵，笔者印象也比较深刻，其实并没有什么特别的意义。不过后来ACESEE明显学&lt;span class="keyword"&gt;微软&lt;/span&gt;，想把各种功能都整合进入，弄的笔者当年打开个ACDSEE高版本慢的要死，这也让笔者用了相当长时间的低版本之后，终于在某次重装电脑的时候，再也懒的去装ACDSEE，而只用WINDOWS自带的浏览器了。&lt;/p&gt; &lt;h2&gt;■音乐拿啥听最好？&lt;/h2&gt; &lt;p&gt;    关于听音乐这方面，笔者说起来接触的长是蛮晚的了，用的第一个软件就是豪杰，当时主要是为了可以将CD上的音乐抓取下来，虽然音质会有些损失，但当年的笔者显然并不在意这些，不过随着MP3海量出现之后，豪杰还有什么意义呢？&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/indNvn4a3XOk_.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    之后笔者就用上了MP3光盘里自带的WINMAP，一直没感觉的用了很多年，也第一次接触到了播放器的情景模式以及均衡器的调整。而在之后笔者自己买了创新的&lt;span class="keyword"&gt;声卡&lt;/span&gt;之后，就开始用起了创新声卡自带的播放器，而且用了好长一段时间，这主要也是因为创新的声卡当时提供很多新游戏的音效优化。&lt;/p&gt; &lt;p&gt;    在这段时间之后，如千千静听、foobar等一系列的播放软件也在不断出现，但时至今日，WINMAP仍然是这个行业的不倒青松。而目前笔者用的播放器也 是比较杂，并且没有太多讲究了，基本上包括WMP在内，什么都用，也没有太多要求了，这大概就是音频的民用消费市场一直火不起来的原因之一吧。&lt;/p&gt; &lt;h2&gt;■网络加速 快猫加鞭&lt;/h2&gt; &lt;p&gt;    下载工具在笔者最初上网的时候，对这个是没有什么概念的，因为在笔者买回了33.6K的全向小猫之后，下载东西都是直接点击，IE自带的下载工具就会自动工作，那个时候可不像现在，下载工具已经成了必装工具了。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inmL0XDJllwUA.gif" /&gt;&lt;/p&gt; &lt;p&gt;    最早接触到下载工具还是因为在同学家里看到了网络蚂蚁，同学简单的给笔者介绍了这款软件下载和用IE自带的下载器究竟有何不同，当时笔者别的没听进去，只 记得这是一个多点下载，将文件切割之后多项合作的东西，于是笔者回家第一件事就是去找这蚂蚁下载，不过这个时候，笔者用的已经是56K的小猫了。&lt;/p&gt; &lt;p&gt;    在用上网络蚂蚁之后，笔者才注意到原来类似的工具有很多，名字大多也希奇古怪，同网络下载加速一样存在的还有网络加速工具，笔者现在还有印象的只有一个快猫加鞭，&lt;span class="keyword"&gt;其他&lt;/span&gt;的类似工具都已经完全不记得了。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inV44Oms2mgxM.gif" /&gt;&lt;/p&gt; &lt;p&gt;    说起来网际快车可能是从那个时代少数活过来的下载工具之一，虽然随着P2P下载软件的风行，目前下载工具往往需要极为深厚的家底，起码可以组织起自己的下 载源，才可以打动大家来用你的东西。其实在BT之前PP点点通这东西正经火过一把（也可能一直很火，但自从测试期结束之后笔者就没再用过这东西了），不过 由于PP点点通对内容没有什么限制，所以多次出现了问题，现在对比起迅雷之类的软件也不再有什么优势了。&lt;/p&gt; &lt;h2&gt;■谁还花钱买杀毒软件?&lt;/h2&gt;     说到&lt;span class="keyword"&gt;杀毒软件&lt;/span&gt;的话，不少朋友都有过被CIH感染的经历，那个年代CIH可能是单种病毒里让笔者印象最为深刻病毒之一，这主要是因为笔者某次为一个同学的电脑查毒的时候，一下查出700多个CIH病毒，笔者看的触目惊心，毕竟那时候&lt;span class="keyword"&gt;硬盘&lt;/span&gt;都不大，所有文件加起来也就是一两万个，700多个病毒在这位同学的电脑里不知道存在了多久，但更强的是，这么长时间电脑居然一直没出什么问题，不得不说笔者的这位同学十分的幸运。 &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inPfrD0wuFzeU.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    比较早接触电脑的朋友基本很少有没被病毒侵袭过，那么中毒不想系统完蛋，就只有使用杀毒软件一途。最早大家用的比较多的杀毒软件应该就是KV300了，那 个时候诺顿笔者还没听说过，不知道国内是什么时候出现的，只不过后来应该也是企业版大量流出之后，似乎国内才开始流行起来，不过不少朋友都对诺顿影响系统 速度比较不爽。&lt;/p&gt; &lt;p&gt;    时至今日，病毒日渐猖獗，而杀毒软件则越来越显得苍白无力，虽然很多的杀毒软件一天甚至有四更甚至五更的时候出现，但对于无孔不入的病毒而言，被动式防护 的杀毒软件能力实在是十分的有限，就在不久就甚至有网友提出杀毒软件无用论，虽然笔者也认同里面很多内容，但如果没有杀毒软件存在，真不敢想像这网还敢不 敢上。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/ingq9Gtr4VG9Q.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    说起来现在大家的电脑里是不是有病毒那不太清楚，但现在电脑如果裸奔的话则很难幸免，往往现在大家的电脑里多少都有一款杀毒软件，而且与&lt;span class="keyword"&gt;其他&lt;/span&gt;软件有所不同，杀毒软件大多采用一个萝卜一个坑的策略，也就是大家一台电脑只能使用一种杀毒软件，不同的杀病软件是不能同时在一台电脑里正常工作的，这一点一直是笔者十分不理解的地方。&lt;/p&gt; &lt;p&gt;    要说现在这病毒多了，杀起来冤假错案也就呈直线上升了，笔者亲身经历的就是今年诺顿的的误杀事件。当时笔者正在正常上网，大概是十二点还是一点刚过，系统 提供诺顿正在升级，结果升级之后提供有病毒，杀毒之后系统崩溃。再加上诺顿对这件事不闲不淡的态度，从此之后笔者就不再用诺顿了，网上卡巴斯基免费的多的 是，真是没必要花钱买别扭。&lt;/p&gt; &lt;h2&gt;■输入法现在大家用的啥？&lt;/h2&gt;     现在很多人买电脑玩电脑都是买台电脑回家自己研究了，而像中文输入法，现在的拼音输入法也是蜚声常的强悍，但在笔者学电脑的那个年代，几乎是没有人用拼音输入法的，因为学电脑的第一件除了学指法之外，就是学五笔输入法了。 &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inJSY8GJsnJ86.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inTyv_4S_zank.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;有朋友还记得这个练习指法的软件吗？名字叫TT，还有个练习五笔的软件叫TY&lt;/p&gt; &lt;p&gt;    时至今日，据笔者了解，整个网站还在使用五笔输入法的，除了笔者则只有一位同事，几乎所有人一水的都是用拼音，一说热狗的拼音，彪悍啊。但当时笔者为了背 五笔字根，用到手随心动，确实是用了不短的一段时间，但这么多年下来，笔者当年的英文录入大概在160~170键左右/分钟。这次翻出了指法软件一测，现 在大概只有70多键/分钟，下降了好多好多。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/infOtlbVC_04M.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    话说当年之所以不用拼音输入法主要是效率低下，但自从&lt;span class="keyword"&gt;微软&lt;/span&gt;拼音输入法出现之后，拼音凭借着不用专门学习的优势占据了大量上网聊天朋友的输入法选择。毕竟拼音只要上过小学，拿起来就可以用，而五笔真的是再聪明也得练上三五天甚至三五个月才能融会贯通。&lt;/p&gt; &lt;p&gt;    现在大家搜索一下可以发现无论是五笔还是拼音都有挺多的输入法版，现在笔者用的比较多的是极点五笔拼音输入法，没别的原因，碰上不会打的生字，直接用拼音也可以打出来，不用再单独切换输入法，这设计还是挺方便的。&lt;/p&gt; &lt;h2&gt;■流氓软件今何在&lt;/h2&gt;     除去病毒和&lt;span class="keyword"&gt;杀毒软件&lt;/span&gt;这对组合之外，一山不容二虎的还有流氓软件以及查杀流氓的安全卫士。流氓软件究竟是从何年何月出现的，笔者说不清楚，但3721和百度搜霸在网上闹的哄哄烈烈的时候，笔者很不幸的也中了招。 &lt;p&gt;    当时笔者用百度很多，连带着百度搜霸也就直接装了，当时用着感觉还挺方便，后来3721是什么时候装上的却是不知道了。直到有一次笔者在进入一个常去的个 人网页的时候，笔者看到网页上提供“您的电脑中安装了百度搜霸或者3721软件，本站坚决抵制，请卸载之后方可正常访问本站”。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inQXDnUGyjrQU.gif" /&gt;&lt;/p&gt; &lt;p&gt;    看到这里觉得算了，这小软件本来就可有可无的，卸载就卸载吧，结果发现怎么就卸载不干净呢？最后迫不得已重装了系统才能正常访问这个网页。结果好景不长， 一天的功夫，笔者再上这个网页发现又是同样的情况，这让笔者很纳闷这小软件到底是啥时候装上的啊？在网上搜索了一下才吓了一跳，原来两家已经打的这么热闹 了。&lt;/p&gt; &lt;p&gt;    现在找两个工程师只要几个工作日就可以作出一个相当不错的流氓软件，收费也不贵，几千块钱，但在当年，就是这样小的一个软件，让3721一夜成品，并且让 周总也是一夜之间成了网络名人，有名的网络流氓。当然，百度那边被人形容的更狠，只不过3721在很长一段时间里更恶心罢了。&lt;/p&gt; &lt;p&gt;    自那个时间之后，各种流氓软件几乎一夜之间出现在网络间，最常见的就是将用户IE首改成别的某某网站，以此广告收入赚钱，并且当时几乎所有的杀毒软件面对 着这种几乎是对用户电脑强奸式的入侵，却不闻不问。现在笔者也多少明白，和人人喊打的病毒比起来，作流氓软件的毕竟也算是同行，大家都是穿上鞋的人，互相 之间刺刀见红的干起来，大家面子上都不会好看，所以也就造就了杀毒软件集体失声的主要原因。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inqHqztGh3kl6.gif" /&gt;&lt;/p&gt; &lt;p&gt;    让人可笑的是，面对着无限度的流氓软件，很多朋友不得不选择安装3721来将&lt;span class="keyword"&gt;其他&lt;/span&gt;流氓软件清理干净，而往往有3721坐镇的电脑，就很少受流氓软件的侵害，这在当年也是个无奈之举，毕竟和让人完全无法正常使用的流氓软件比起来，3721多少流氓的还有限度，所以大部分朋友只能是选择危害较小的一个了。&lt;/p&gt; &lt;p&gt;    不知道周总是不是看到了这方面的商机，自从将雅虎脱手之后，摇身一变，从流氓教父成了安全卫士，一时间安全卫士360成了大家的救星，几乎一夜之间将困扰 了中国网民的各种流氓软件一棍子干翻，当然后来360私下里干的多少收保护费式的工作，那就不是我们这些小老百姓可以知道的了。&lt;/p&gt; &lt;h2&gt;■游戏工具知多少&lt;/h2&gt;     说到游戏，恐怕几乎所有的朋友都会笑吧，确实对于所有人来说当初买电脑的理由恐怕都是学习或者工作，但电脑在进入多媒体娱乐平台之后，游戏自然是少不了的。 &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/infKrWa3cUX2U.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    很多人都玩过像古墓丽影、DOOM、QUAKE、红警、沙丘等等现在想起来很怀念的老游戏。笔者玩的第一个游戏很早，是个类似功夫的游戏，在286上载入 游戏就要近十分钟。再后来自己有了486，玩的第一个游戏就是炎龙骑士团2了，再后来红警、三国等等等等，笔者一直与时俱进到今天。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/in6J_i_svgO_k.gif" /&gt;&lt;/p&gt; &lt;p&gt;    在游戏里当时最多人用过的恐怕就是FPE类的软件了，笔者是在玩炎龙的时候，从同学那里考到了一个FPE5.0,当时打开之后直接傻了眼，完全不会用。在同学的指导下，笔者第一个将自己的金钱改成了一长串的9，自此之后一发不可收拾。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inpiIvqfZm3rk.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    那个时候用的最多的是PCTOOLS和FPE，不过可以动态修改的FPE显然更能被大家认可，PCTOOLS当年只是被笔者拿来当修改工具用，是不是很奢 侈？再后来笔者记得是在三国6的PC版在国内有D版上市之后，当时的版本几乎都是繁体中文，笔者第一次接触到了乱码。&lt;/p&gt; &lt;p&gt;    有乱码看不懂自然就要解决，当时RichWin98就进入了笔者的视线，结果好景不长，用了没多久，很多新的游戏乱码，RichWin98就解决不了了， 之后南极星被别人推荐给了笔者，南极星笔者一直用到了更XP系统，直接用了软件自己开发的内码转换工具Microsoft Applocale，一直用到了现在。&lt;/p&gt; &lt;h2&gt;■文字处理软件&lt;/h2&gt; &lt;p&gt;    说过了上面很多的应用软件，其实真正应该是老家伙们熟悉的应该是引发第一次电脑消费的文字处理系统，之前应该也有不少朋友注意到，在有计算机之前，都是用打字机来打字的，吃力不说，打错一个字，一张纸就白费，所以当年打字员也是个高级工种。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inLmay8PZgM5c.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    再后来有了UCDOS，有了WPS，排版变的十分简单了，这让当时很多单位都加入了购买电脑的大军，可以说文字处理也是当时电脑行业成规模赚取的第一桶 金。当年国内最流行的文字处理也并不是只有WPS一家，CCED当时才是国内公认的业界第一，从其成为国家计算机考级要用到，就可以想见当时CCED是如 何的彪悍，只不过CCED的辉煌只停留在了DOS时代，在进入了多媒体时代之后，CCED一直没有跟上竞争对手的脚步，并渐渐被广大使用者所遗忘。&lt;/p&gt; &lt;p align="center"&gt;&lt;img style="border: 1px solid black;" alt="有几个还活着？ 作者十年软件应用之路" src="http://img.intozgc.com/d/2_450X375/025/inPmuhbLtNnr6.jpg" /&gt;&lt;/p&gt; &lt;p&gt;    WPS其实在OFFICE的压迫之下活的也一直很痛苦，当年属于最早一批只要几十块钱的软件之一，只不过国内用户有着“免费”的OFFICE用，几乎已经 成了标准，还有几个人会再去用WPS呢？时至今日，笔者最多也就是拿WPS看看PDF的效果，因为本身比较精简，启动比较快，文字处理方面，不知道这次&lt;span class="keyword"&gt;微软&lt;/span&gt;的重拳会不会把很多用户打回到WPS上面去。&lt;/p&gt; &lt;p&gt;小结：&lt;br /&gt;&lt;br /&gt;    软件发展到今天，很多朋友都说目前软件的发展已经跟不上硬件的发展，这让目前市场里的软件显得有些疲软。在笔者看来，这说到底还是微软现在软了造成的，其 实每次电脑大规模的更新换代，大家注意的话都会发现，这都是在跟着WINDOWS的升级在走。而随着AMD打乱了微软与英特尔的规划图，目前微软对于用户 需求的把握力受到了大家的质疑，这一点我们从VISTA一直叫好不叫座就可以看出来。&lt;br /&gt;&lt;br /&gt;    回想当年的这些老软件，大多都是因为使用需要要被开发出来，而现在很多软件则是出于商业目的被开发出来，这样想让用户之其买单，自然就要拿出真东西让人掏钱才行。不知道现在还会不会有单纯一些的工具可以开发出来，就像BT那样。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-2635604217076447151?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/2635604217076447151/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=2635604217076447151' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/2635604217076447151'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/2635604217076447151'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/10/blog-post_16.html' title='十年应用软件'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-6170748240604256418</id><published>2008-10-15T20:30:00.001-07:00</published><updated>2008-10-15T20:30:58.617-07:00</updated><title type='text'>终于可以用了</title><content type='html'>但愿以后不要被封就好&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-6170748240604256418?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/6170748240604256418/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=6170748240604256418' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/6170748240604256418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/6170748240604256418'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2008/10/blog-post.html' title='终于可以用了'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-7258878212658913</id><published>2007-08-03T01:21:00.001-07:00</published><updated>2007-08-03T01:21:43.208-07:00</updated><title type='text'>在新加坡的第一个月</title><content type='html'>已经过去了，周末总结&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-7258878212658913?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/7258878212658913/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=7258878212658913' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/7258878212658913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/7258878212658913'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2007/08/blog-post.html' title='在新加坡的第一个月'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6287241624183128598.post-4957757518050730108</id><published>2007-07-31T06:20:00.000-07:00</published><updated>2007-07-31T06:23:52.091-07:00</updated><title type='text'>welcome to Neil blog</title><content type='html'>I am Neil He.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6287241624183128598-4957757518050730108?l=neillife.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://neillife.blogspot.com/feeds/4957757518050730108/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6287241624183128598&amp;postID=4957757518050730108' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/4957757518050730108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6287241624183128598/posts/default/4957757518050730108'/><link rel='alternate' type='text/html' href='http://neillife.blogspot.com/2007/07/welcome-to-neil-blog.html' title='welcome to Neil blog'/><author><name>Neil.He</name><uri>http://www.blogger.com/profile/15518491006589766700</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='http://3.bp.blogspot.com/_MmZdvI_9LYg/SPa83JKSr7I/AAAAAAAAADo/7xYiu36164s/S220/%E6%9C%AA%E5%91%BD%E5%90%8D.JPG'/></author><thr:total>0</thr:total></entry></feed>
