2012年10月15日 星期一

Android TextView跑馬燈特效

原生TextView本身就有跑馬燈特效,但限制多多:文長得超過顯示區域,一定要在得到焦點的情形;再加上又不能調速,根本就不實用,所以也就寫一個簡單的跑馬燈。

作法很簡單,繼承原本的TextView重新實作onDraw即可。之後把原本的TextView 改成自己定義的名稱即可,在layout中使用 com.example.views.MarqueeTextView就可以了。
要注意的是:在onCreate中宣告後建立可能會得不到元件寬度,所以在onDraw時,才做確定寬度較好。



package com.example.views;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.widget.TextView;

public class MarqueeTextView extends TextView
{

    private float textLength = 0f; // 文長

    private float viewWidth = 0f; // 顯示寬度

    private float step = 0f; // 文字的橫座標

    private float speed = 1.5f; // 速度

    private float y = 0f; // 文字的縱座標

    private float start_point = 0.0f; // 起點

    private float run_length = 0.0f; // 移動距離

    private Paint paint = null;

    private String text = "";

    public MarqueeTextView(Context context) {
        super(context);
    }

    public MarqueeTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public void setSpeed(float speed)
    {
        this.speed = speed;
    }

    private void init()
    {
        paint = getPaint();
        text = getText().toString();
        textLength = paint.measureText(text);
        viewWidth = getWidth();
        step = textLength;
        start_point = viewWidth + textLength;
        run_length = viewWidth + textLength * 2;
        y = getTextSize() + getPaddingTop();
    }

    @Override
    public void onDraw(Canvas canvas)
    {
        if (viewWidth == 0) {
            init();
        }
        canvas.drawText(text, start_point - step, y, paint);
        step += speed;
        if (step > run_length)
            step = textLength;
        invalidate();
    }
}


2012年9月21日 星期五

The Last Day

        約略四年前的這時候開始尋找研發替代役,當時正值2008年經濟風暴,工作實在不好找,最後我選擇了符合我期待的工作內容,且工時不長但薪水也不高的公司,當時以為工時不長,代表人人皆要有所效率,薪水不高但努力還是可以有所成長,而重點是能做自己喜歡的事才最為重要,只可惜最後全部都出乎我意料之外。

2012年9月6日 星期四

一些windows跟ubuntu的Android專案轉換問題

eclipse
最大的問題應該就是@Override的錯誤
同一個專案原本在ubuntu上開發的好好的,結果最近轉移到windows跳出一堆@Override的錯誤,原本還以為是windows的錯,不過看了看應該是Java的錯,要1.6才行,可是明明進到eclipse window/ Preference/java/compiler看到的就是1.6版,可是專案裡面卻是1.5版,導致了這個問題。
不過解決方法也很簡單,也就是把專案的java compiler改成1.6就可以解決了。

2012年8月29日 星期三

三個月的面試心得

三年前在找研發替代役時選了一個薪水最低但最符合我興趣,工時也不長的研替工作,但進了公司才發現很多東西都不如預期,工作項目,薪水調幅,跟工作氣氛等。
所以在研替快到期之前就開始尋找新工作,打開履歷之後,很快就一堆公司來詢問工作意願,不過太多雜七雜八的工作,所以接受了幾家符合我興趣的,就趕緊把履歷關了,開始面試之旅。

2012年8月15日 星期三

Android 編譯時附加第3方Jar檔

最近遇到一些第3方Jar檔編譯的問題,

首先是如何用Android source tree去build,這比較簡單,直接找packages/apps 裏面就有相關範例了

例如Calulator的Android.mk

2012年8月7日 星期二

太相信Dropbox的備份復原

        最近又多了一項令我討厭Ubuntu的原因,在windows下是不可能用同名資料夾去覆蓋同名檔案的,存取會直接被拒,但在ubuntu下去只是問你要不要覆蓋,原本想覆蓋資料夾就覆蓋,很正常嘛,就選了覆蓋,沒想到盡然是把檔案給覆蓋掉,然後再也找不到它的蹤跡。
        而Dropbox居然也沒辦法把變成資料夾的檔案變回檔案,按顯示已被刪除的檔案,始終都看不到被覆蓋的檔案,只在event中留下被刪除的紀錄。
        太過信任Dropbox的復原機制了,不過總結還是Ubuntu實在不夠人性化。

2012年7月25日 星期三

Auto Screen On終於下載破萬了

Auto Screen On是我為了加速我打開測試設備所開發的小工具,
主要針對開發者開發,所以並沒有預期下載量能有多少,
畢竟只是個輔助性的小工具,而一開始確實也是下載量稀少,
發佈後七天才終於破100次下載量。
之後直到日本下載量暴增,才開始有較大幅度的上升。
從6/22發佈後只有2人次,然後6/28的99人次,再到7/21的10241人次,
後期成長幅度還真是令我不可置信,尤其在我發佈後才發現類似的軟體還真不少,
竟然還是能有如此得下載量。

2012年7月20日 星期五

申請Adsense心得

Google的服務果然是一點人性都沒有,最近為了能在Android google play販賣軟體,不得已只得申請Adsense,說實在我根本不想擺廣告,對我而言最討厭的就是廣告了,所以也才想直接賣錢而非加入廣告到軟體中,但沒想到在台灣google checkout一定得搭配adsense才行,就如其簡介所言
下列資訊適用於阿根廷、巴西、俄羅斯及台灣的開發人員。

目前,如果您是這些國家/地區的開發人員,並且想要在 Google Play 上販售應用程式,則必須將您的 Google Checkout 商家帳戶連結至有效的 AdSense 帳戶,才能收款。另外,您必須遵守 AdSense 的條款與政策,避免 AdSense 帳戶出現違規的情形。

2012年6月26日 星期二

Oprofile in Android ICS

最近在學用oprofile來調適Android,以下是在Android ICS開啟oprofile的步驟
1.修改kernel 的.config,加入以下設定
CONFIG_OPROFILE=y
CONFIG_PROFILING=y
CONFIG_HAVE_OPROFILE=y
CONFIG_HW_PERF_EVENTS=y
CONFIG_PERF_EVENTS=y

2.rebuild kernel and Android

3.cp -r {Android root}/external/oprofile/events/arm/ /usr/local/share/oprofile/arm

2012年6月18日 星期一

2012年6月5日 星期二

git tips

1.git pull --rebase

在大部分時間git pull其實就OK了 ,會需要 git pull –rebase,我現在只有遇到下面兩個情形

i.已經commit並push ,但server端尚未merge,此時直接git pull 必定多出” merge branch的commit”
ii..已經commit 但無法push,server端有新的commit沒有pull回來,此時git pull 也必定多出” merge branch的commit”

那如果遇到git pull –rebase但本地端又有修改過的檔案該怎麼辦呢?
就要先輸入git stash,之後git會把有修改過的檔案暫存起來,並回復到無修改狀態, 這時也就可以下git pull –rebase,之後合併完後,再下git stash pop則可把剛修改好的檔案復原回來,即可繼續工作,而遇到不小心下了git pull產生出merge時,也還是可以用git reset –hard回merge之前下git pull --rebase。

2.git cherry-pick

有時候各位會自己開一個新的local branch進行開發, 並且在完成開發後,將特定幾個commit合併到別的branch上, 此時可以透過cherry-pick操作,避免commit log多一個”Merge branch” commit。
操作方法如下,
git cherry-pick <commit id>
透過這樣的操作,可以將特定的commit直接拉過去別的branch,又能避免”Merge branch” commit產生。

3.git commit --amend

當最後一個commit的code被人reject時,可以修改code,然後git add跟git commit --amend,即可修改已commit的code,不需要重複commit。如果要修改非最後一個commit,則要搭配git rebase XXXXXXX^ -i,選擇要修改的commit,然後修改完後下git add跟git commit --amend,並且多加git rebase --continue即可,當然這兩個最後都要push才可以囉

2012年5月22日 星期二

2012年5月16日 星期三

ubuntu tips

1.移除ubuntu Grub
     1.在http://www.sysint.no/products/Download/tabid/536/language/en-US/Default.aspx     下載Mbrfix
     2.用命令提示字元執行MbrFix.exe /drive n driveinfo (n=0,1...)確定安裝windows的硬碟
     3.輸入MbrFix.exe /drive 0 fixmbr /win7
     4.重開機後把ubuntu殘餘的磁區砍掉即可

2.把關閉縮小按鈕移到右上角
     1.命令列輸入gconf-editor
     2.點選 apps,進入metacity的general,選button_layout,修改冒號':'的位置,並更改關閉鍵位置即可

3.安裝nvidia driver
    1.先去Nvidia官網下載驅動程式 xxx.run
    2. 把xxx.run 移到加目錄並修改權限為可執行
    3.進入文字模式Ctrl+Alt+F1
    4.關閉X windows
           sudo /etc/init.d/gdm stop
    5.sudo sh ~/nvidia.run
    6.sudo /etc/init.d/gdm start
    7.完成 可sudo nvidia-settings修改詳細設定
    更詳細可參考http://yblog.org/archive/index.php/8826

2012年5月11日 星期五

eclipse trouble shooting


這裡是專門解決eclipse未知錯誤的地方

1.Debug Certificate expired on XX.XX.XX
砍掉{username}/.android/debug.keystore
重啟eclipse,發生原因電腦不正常關閉。

2.export/import color theme
備份以下檔案,複製到要匯入的地方,真不敢相信eclipse竟然沒辦法單獨匯入匯出這些設定項
For Java
[Workspace]/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.ui.prefs
For C/C++
[Workspace]/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.cdt.ui.prefs
For all
[Workspace]/.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.ui.editors.prefs

3.未知問題
clean project,重開eclipse

4.xml編輯器選擇跟原本看的行數不一致的問題
Ctrl +a => Ctrl +c => Ctrl +v
可以解決
bug元凶好像是ADT的問題
詳情可看:http://stackoverflow.com/questions/10030727/moving-and-vanishing-lines-of-code-trouble-with-eclipses-xml-editor

5.修改預設subclipse compare的顏色
Open preferences
Go General->Appearance->Colors and Fonts
Expand "Text Compare"
Select "Outgoing Change Color" and click edit
Color picker will open. Select which color you want.

2012年5月7日 星期一

andriod tips

不定時新增

1.修改根目錄檔案
adb shell
mount -o remount,rw rootfs /
之後就可以更改了

2.修改/system檔案
adb remount 就可

3.編出 apk 而非 odex+apk
build/core/package.mk
     LOCAL_DEX_PREOPT := false

4.凍結/解凍程式
pm disable/enable packageName
可用pm list package[-f|-d|-e] 觀看packageName

5.更改預設輸入法
frameworks\base\services\java\com\android\server\InputMethodManagerService.java
in buildInputMethodListLocked()
add
    String defaultIme = Settings.Secure.getString(mContext.getContentResolver(),  
            Settings.Secure.DEFAULT_INPUT_METHOD);  
    if (defaultIme == null) {  
        try {  
            String myIME = com.android.inputmethod.pinyin/.PinyinIME// edit for yourself  
            if (myIME != null && myIME.length() > 0)  
            {  
               Settings.Secure.putString(mContext.getContentResolver(),  
                Settings.Secure.DEFAULT_INPUT_METHOD,  
                myIME);  
            }  
        }  
        catch (Exception e)  
        {  
            e.printStackTrace();  
        }  
        defaultIme = Settings.Secure.getString(mContext  
                .getContentResolver(), Settings.Secure.DEFAULT_INPUT_METHOD);  
    }  

2012年4月27日 星期五

反安裝 git (installed from source)

ubuntu中,最令人討厭的就是自行安裝後,明明都安裝完成,
但開始使用時跑出一堆XX not found,然後裝了那個又說缺了這個...無線循環
而這次安裝的git 就是"Unable to find remote helper for 'https'
而會安裝git 又是因為之前裝某軟體,需要新版git,apt-get提供的版本又過舊
只能自己裝。不過為了正常使用git,最後還是決定反安裝自己裝的,重下apt-get的版本。

反安裝git說難不難,但在source不提供uninstall下,就有點風險,
在此ubuntu的不人性化完完全全顯現。
在沒有適當解法下,也就只能用暴力法,也就是直接下
sudo find /usr/local -depth -iname 'git*' -exec rm -rf {} \;
只能希望沒有副作用...


2012年3月16日 星期五

Android Audio setVolume trace code

       為了要新增麥克風音量調整,所以要使用ALSA,也就順便研究一下調整聲音音量從APP層到呼叫ALSA API,結果一看,還真多函示在呼叫來呼叫去。
       首先當然是要有知識基礎,所以先看下面六篇文章:
Android深入淺出之Audio 第一部分 AudioTrack分析
Android深入淺出之Audio 第二部分 AudioFlinger分析
Android深入淺出之Audio第三部分Audio Policy[1]
Android Audio System 之一:AudioTrack如何與AudioFlinger交換音頻數據
Android Audio System 之二:AudioFlinger
Android Audio System 之三: AudioPolicyService 和 AudioPolicyManager
      看完濛濛懂懂,也就從調音量開始慢慢往下看囉。

[心得]重玩三國志九pk


    最近等三國志12等得不耐煩,就重新開始玩三國志九pk,發現電腦的擴張速度也太

快了吧,之前三國志11,電腦都笨笨的擴展超慢,首先我玩的是194年張魯,發展形式

尚可,中原有呂布曹操跟劉備競爭,結果玩到201年就只剩我跟曹操pk了,我只佔有漢中

,蜀地跟襄陽以南的地區,因為打贏了南蠻,兵有30幾萬,曹操約有100萬,但人才差異

明顯,我方只有50人,曹軍有200人,不過打到這邊已經沒啥樂趣,曹軍已經打不下我的

地盤,人也一直被我俘虜。

    所以又重開一局,改玩我11代最愛的劇本臥龍出山,不過發現劉備實在有夠難,

所以又改玩荊南四小龍,能力可比劉蟬的韓玄,一開始徵完兵練完士氣就是快樂的出征,

秒殺了趙范,正準備攻打下一家時,劉備已經被滅了...才不到半年時間,只得趕緊統一荊

南,此時山越也來鬧,只得玩玩空城計,然後在約過一年的時候終於統一荊南,但此時

劉表正式宣告投降曹操...而此我只統領4萬兵馬,想想荊南人口少,人才缺乏,又有山越

威脅,就決定放棄荊南,要對抗曹操只有蜀地可行,就把25000兵調往永安旁邊港口,其

餘先撐者避免還沒打下蜀地家就先沒了,然而在划往永安的路上,曹操,孫權都各帶一路

兵馬殺來,且還都是明星隊,我只得先放棄港口並聚兵於一城之中,最後在打完永安後,

還保有兩郡但港口以失,無法在調兵北上,只得先以江洲為目標,讓另一半兵力能再次會

合,剛好這時劉璋開始全部兵力北上攻打張魯,我就趁此機會拿下江州並把荊南兵力調往

江州,準備攻打成都,沒想到過不到三個月,孫權也被曹操滅了,而劉璋滅了張魯之後跑

去打馬騰,但漢中又被曹操打下,造成去打馬騰的兵力全部潰散,而這天下第二大勢力也

就此不振,此時剛過兩年。之後我打下成都跟建寧,正準備對劉璋痛下殺手時,劉璋宣告

投降曹操...而這時我也面臨第一次永安決戰,6萬打2萬5+援軍1萬,順利的守下,然後也

順便打下了梓橦,此時也才剛過210年,我兵力也終於成長到將近10萬,但曹操已經90萬

了...而在掃討蜀地關卡時,又面臨了第二次永安決戰10萬對4萬5+1萬援軍,還是勝利但

城防掉了不少。不過此時發生更為驚人的大事,馬騰投降曹操。而對此我下了最終的錯誤

決定,聚兵8萬永安,並調4萬兵馬強取漢中,結果漢中是順利取下了,而曹操也看我永安

兵多沒有妄動,但我一打下漢中,頭就大了,曹操5萬兵馬進攻漢中,旁邊關卡還停了10

萬兵,打死一隊又冒一隊,而漢中跟本沒城防,結果我就被坑兵了,但在永安這邊發生更

讓我頭大的問題,曹操直接派20萬兵馬進攻,而我手中只有約9萬人馬,想想可能守得住

,但我完全誤判了,當第一波走到時,後面又來10萬兵馬,加上無盡的3000援軍,我城被

破,雖然曹操在城中也只剩9萬,而我在城外還有將近4萬兵馬,但我覺得已無希望,就讓

四萬兵馬攻城結果下一旬全滅,至此兵敗如山倒,韓玄也只能說:只恨晚生二十年,否則

一統天下的霸主必將成未知數。

   想想如果最後沒打漢中,並先在永安附近開戰,說不定還有機會,但我從頭到尾都沒有

S/L畢竟重複讀取就喪失了9代的精髓,所以機會也就不在了。

   不過這次玩真得覺得9代比11代難得多,連蜀地都不好防守,又有外族整天來亂,

11代永安幾乎只要一兩個部隊就可以守住,但9代幾乎完全沒有屏障,而且打贏敵人但

沒有打下據點,幾乎就沒有賺,所以要贏幾乎都要靠坑兵,不然傷兵一直復活,超煩,

不過這次玩幾乎都沒有坑電腦兵,反倒是被坑了一次。

2012年3月2日 星期五

不要sudo就可以使用adb的方法

        對於常見的android設備可以直接使用sdk的adb而不需要sudo,原本以為是SUID的作用,結果發現權限並沒有特殊。後來在網上找相關資訊,發現是常見的設備的UID,PID有註冊在udev中,所以當設備mount時可以自動獲得相應的權限,其相關設定都在lib/udev/rules.d中。所以要解決要sudo才能使用自己的adb的問題,也就是在etc/udev/rules.d中新增相關的PID,VID設定。

以下是新增的步驟:

1.建立檔名為XX-android.rules的檔案
XX為>=90的數字

2.填寫
SUBSYSTEM=="usb", SYSFS{idVendor}=="0bb4", MODE="0666"
or
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="0c01”, MODE=”0666″
其中idVendor是設備的VID,其中0bb4是HTC用的,實際使用要輸入自己設備的VID,而idProduct是PID,0c01是HTC G1的PID,同樣要輸入自己設備的PID。在我用的Ubuntu10.04中這組VID,PID自己就有內建,所以我原本不需要sudo就可以執行adb,這也是android設備最常使用的PID,VID。不過如果是大廠出的android設備,通常也都會有自己註冊好的VID,PID,所以也可以不需要sudo就可以使用adb。
上面任選一行輸入後就可以儲存到etc/udev/rules.d,

3.輸入
service udev restart

就OK啦

2012年2月2日 星期四

自製Xml To Excel python版

    最近開始接觸python,發現資源確實很豐富,很多東西都可以撿現成的,搭配shell script更是方便,也難怪Android source 裡面用了許多python作為輔助。
    這次為了吧Android source中所有的String Table轉到Excel上,做各語言字串比對,就練習寫了一個XmlToExcel的python程式。
    為了轉換,首先當然是要讀取xml,所以就先import xml.dom.minidom,這是內建的xml解析器,簡單易用,不過使用後發現其好像無法解析在node text中的<xliff:g id="height" example="170">%2$d</xliff:g>,全部都會變成空白,而xliff是Android中用在插入字串跟格式定義使用,但也因為他至少會顯示空白暫且忽略也尚可接受。
    其次為了轉出Excel,就開始尋找excel相關的python libraries ,結果一搜索馬上就找到xlrd, xlwt, xlutils, 輕輕鬆鬆就可以轉出.xls,五分鐘就上手。
   之後開始了解Android String Table的xml格式,決定解出strings, string-arrays,plurals到個別一sheet,每種語言各佔一個column,每個app一個excel表,之後就可以開始寫程式啦,主義就是解析哪個node存到excel那格,沒什麼難度所以就不分析程式碼了,下面附件就是完成品。
XmltoExcel.py
    搭配shell script就可以自動完成多個app多個語言多個.xml轉Excel的動作了,程式碼如下面檔案,同樣很簡單就不分析,注意兩個檔都要,substring是定義分隔符號並用來把字串最後一個字取出。
mkStringTable.sh
substring
    不過寫完shell script,覺得shell script對於處理字串還真是不方便,要做字串處理很多都要自己設計才行,不像其他語言都已經做好,等人來使用。

2012年1月11日 星期三

android sdcard 測速程式 (藉由 Jni)

這次是修改上次寫的測速程式,並把之前寫的c語言測速程式藉由ndk產生.so,改用Jni的方式去呼叫執行。
write_and_read.c
JNIEXPORT
jdouble JNICALL Java_com_omd_speedsdcard_SpeedSDcardActivity_getWriteSpeed(JNIEnv *env, jobject obj){
    double writeDuration, readDuration;
    double writeSpeed, readSpeed;

    char *test = malloc (writeblock*sizeof(char));
    long start_time = getCurrentTime();
    writeToFile(TESTFILEPATH, test, writeblock,testsize);
    long end_time = getCurrentTime();
    free(test);

    writeDuration = (double) (end_time - start_time) / 1000;
    LOGI("write duration: %f\n", writeDuration);
    writeSpeed = testsize / 1024 / 1024 / writeDuration;
    LOGI("write speed: %f MB/s\n", writeSpeed);
    return writeSpeed;
}
JNIEXPORT
jdouble JNICALL Java_com_omd_speedsdcard_SpeedSDcardActivity_getReadSpeed(JNIEnv *env, jobject obj){
    long start_time = getCurrentTime();
    readFromFile(TESTFILEPATH,readblock,testsize);
    long end_time = getCurrentTime();
    double writeDuration, readDuration;
    double writeSpeed, readSpeed;
    readDuration = (double) (end_time - start_time) / 1000;
    LOGI("read duration: %f\n", readDuration);
    readSpeed = testsize / 1024 / 1024 / readDuration;
    LOGI("read speed: %f MB/s\n", readSpeed);

    remove(TESTFILEPATH);
    return readSpeed;
}
要注意的是紅色的兩個字,可加可不加,但加了比較保險,有時沒加可能會莫名其妙造成unsatisfiedlinkerror。之後把function名稱就使用Java+packagename+function名稱就可以了。而另外要注意的一點是,原本的printf要改成LOGX,如以下的define即可,使用起來也跟printf差不多。最後在.c裏面還要修改O_SYNC,雖然加了此參數後能確保寫入後才回傳,但會使速度下降太多,比直接用電腦測還要慢,所以還是用讀寫大檔的方式來降低快取所影響的速度。
 #include <android/log.h>
#define LOG_TAG "infomation"
#define LOGV(...) __android_log_print(ANDROID_LOG_VERBOSE, LOG_TAG,__VA_ARGS__)
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG  , LOG_TAG,__VA_ARGS__)
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO   , LOG_TAG,__VA_ARGS__)
#define LOGW(...) __android_log_print(ANDROID_LOG_WARN   , LOG_TAG,__VA_ARGS__)
#define LOGE(...) __android_log_print(ANDROID_LOG_ERROR  , LOG_TAG,__VA_ARGS__)
以上完成.c後,編寫Android.mk,其中紅字是為了上述的LOGX而加。
Android.mk
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := write_and_read
LOCAL_SRC_FILES := write_and_read.c
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -llog
include $(BUILD_SHARED_LIBRARY)
再用android ndk的ndk-build即可產生.so
Compile thumb  : write_and_read <= write_and_read.c
SharedLibrary  : libwrite_and_read.so
Install        : libwrite_and_read.so => libs/armeabi/libwrite_and_read.so
之後在Java中加入以下程式碼,即可呼叫上面所寫的函式。
    public native double getWriteSpeed();
    public native double getReadSpeed();
    public native void setBlockAndSize(long readBlock,long writeBlock,long testSize);
    static {
            System.loadLibrary("write_and_read");
        }
最後是完成圖跟程式apk,還有要注意這種程式不要每天跑,可能會降低SDcard壽命。

http://www.box.com/s/vfmyl0tayqkzexa5qm2b

2012年1月10日 星期二

android 鳥設定

      都什麼年代了android內建的getprop指令,最長還只能get 91個字,buffer長只有92...,所以當遇到ro.build.display.id或ro.build.fingerprint大於91個字時,android就看不到這些屬性了。
然後跑cts就會出現錯誤,因為 fingerprint變成unknow了。
getprop.c
int getprop_main(int argc, char *argv[])
{
    int n = 0;

    if (argc == 1) {
        (void)property_list(proplist, NULL);
    } else {
        char value[PROPERTY_VALUE_MAX];
        char *default_value;
        if(argc > 2) {
            default_value = argv[2];
        } else {
            default_value = "";
        }

        property_get(argv[1], value, default_value);
        printf("%s\n", value);
    }
    return 0;
}
properties.h
#define PROPERTY_VALUE_MAX  92

2012年1月5日 星期四

革新PK 島津大魔王3


ptt看板  Koei

時間  Sun Jul 27 12:51:30 2008
───────────────────────────────────────

第三章 勃崎春日大決戰前夕

1563年10月 今治港面臨四國全體大名的反抗。

為首的為長宗我部的三萬軍力,其次為三好的2萬軍力,

和雜魚眾西園寺的1萬五千兵力。

島津貴久:現今今治港毫無城防,不如退守。

島津日新齋:不,此等雜魚,有智力的隊伍僅有元親跟三好眾。

只要看準時機對雜魚放個混亂,其餘部隊必也自亂陣腳。

再加上,適時得棄城反圍攻,必能取勝。

1564年12月

島津家久:哈,真的是一群笨蛋,打完此戰兵力反增加不少,

看我再奪湯築城吧。

島津貴久:不,四國大名已不足為懼,此時應先把衝來搗亂的

赤松浦上滅國,以集中中國兵力。並盡快往武田的春日山城進攻。

隔月

島津姬;祖父讓我上陣吧。

期盼9年的孫女兒終於有了。不過你怎麼連一樣技能都不會...

不過你身為義弘的女兒統帥有88還算能用之兵。

6月赤松被滅,浦上被斬,只剩臣子退居之城

此時武田家大吼一聲,風林火山,上杉被滅。

島津貴久:好險上杉沒被勸降否則未來武田將更難批敵。

現在開始全力北上。

年底,擁有5萬人殘兵的神保被滅,姐小路來襲,武田往漁津築城。

1565年

有一女童:姊姊沒用,讓我來統領大軍吧。

島津貴久一看,此人三圍突出,前有槍車,後有使人吵架技能。

難能可貴,乖孫女就隨祖父一統江山吧,讓其他男人只能入贅於你。

此島津姬依出一人就把姊小路全滅,而武田也撤軍了。

但此時島津了解到武田的恐怖。

想到剛剛,一直莫名奇妙的喊,前進,後退,前進,後退,立正站好。

看來我們要走到春日山是永遠走不過去的。

再加上武田所有馬科技已經開發完成,陸戰一定會輸。

島津貴久:現在全軍轉進。全軍先滅田山家,再從輪島港出發往勃崎港,

用珍貴的關船配合丹後水軍必能打爆武田。

4月山田家被武田勸降,打下輪島港時,已經空無一人。

島津貴久:可惡武田,竟敢把山田家先給吸收還大擺空城計。

而此時後方突有消息來到;西園寺家進佔我九州佐伯港,三好家已打下我下津井港,

正往岡山城出發。

再報:武田再次往漁津築城,丹後水軍不在與我方聯繫。

在三方威脅下,島津到底打不打的贏武田呢。

下回待續。

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.138.69.141
推 CHENYOREN:這篇跟上下兩篇 讓我看成島津 特攻                      07/27 15:39
推 ghfj5678:有一女童  只見其三圍凸...  不不  是突出!!              07/27 16:43
推 CHENYOREN:水戰用關船+鐵炮 打完會發現港口怎麼有幾十萬馬          07/27 22:27
→ CHENYOREN:武田的馬就變成運輸專用 把兵從內部運到港口送死         07/27 22:28
→ sdyy:我沒鐵炮阿 沒人有時間買...                                 07/27 22:58
推 CHENYOREN:挑一座城 蓋滿滿的鍛冶場或牧場 一個政治七八十的常駐    07/28 00:37
→ CHENYOREN:勾選自動調度                                          07/28 00:37
→ CHENYOREN:一年就有幾十萬鐵炮給你用了                            07/28 00:37
→ CHENYOREN:前提是你不缺錢                                        07/28 00:37
→ CHENYOREN:我用島津 統一九州後 喜歡把大內的居城變成兵工廠        07/28 00:38
→ CHENYOREN:用那座城生產的武器往東打                              07/28 00:38
推 alfonso2:原PO只用島津一門眾限定吧 可能沒有閒人常駐~~囧          07/28 05:08
→ sdyy:九州中國已經沒有任何武將了 全死了 這是島津的天下           07/28 11:15
→ stevener:期待原PO最新作                                         08/28 23:38

革新PK 島津大魔王2


ptt 看板  Koei

時間  Sat Jul 19 15:39:15 2008
───────────────────────────────────────

第二章 天下圍攻

島津貴久:遠方的武田,日益強大,看來只好一路長攻,直指春日山城。

馬上揮軍尼子家,12月尼子家亡。

整當島津貴久斬殺尼子全家時,忽有快馬來報,武田已把宇都宮征服。

島津貴久:可惡,看來還得在加緊速度,全軍立刻進軍山名家。

隔年3月,山名家消失於日本島上。

突然遠方又傳來消息,上杉家新發田已失守,龍虎合併迫在眉睫。

島津貴久:可惡,難道就沒有什麼好消息了嗎

島津家久:爹,我16歲了,讓我全軍統帥第二的來幫助爹吧。

就讓我跟義弘一起把一色家滅了吧。

6月一色家也消失於日本。

忽然東邊又傳來消息,盧名家滅亡。

島津貴九不禁大驚失色:我征服日本不下數十次,武田這次也太發飆了吧。

快,快,快,快給我把波多野跟敦賀港拿下。

九月波多野消失,11月敦賀港拿下,朝倉跟淺野兵力都只剩一萬出頭。

在波多野倒塌的城牆中,有一人跪在地上,我也姓島津阿。

島津家久過來看了看,全身都是40出頭,想到:留此廢物有辱我島津一族

正要說拖出去斬了,島津日新齋說:留下此人,此人昔日跟武田有深仇。

在武田被滅之前暫且留下他吧。況且我軍軍力,一直無人輸送,

正好能拿它來輸送軍隊。

島津貴久聽父親一說,只好勉強答應,但下定決心斬殺武田的同時,

此人的死期也將到來。

現在就先去把朝倉滅了,繼續往春日山挺進,避免龍虎合壁。

1563年二月朝倉滅亡。

東方上杉勉強在山形城撐住,沒被趕到小港口去。

3月,一群小兵衝了近來,說:不好啦,以毛利為首,約10個大名全部對我方發佈

包圍網了。毛利進軍山口館,赤松進軍鳥取城,征夷大將軍足力進軍八上城

連田山家都進軍一乘谷城。

島津貴久:這些小大名也敢來自取死路,看來直取武田計畫只能暫緩進行。

義弘,家久,跟我來一起去討滅群雄之首毛利,其餘人等就四處防守。

並聯絡島津國人眾,在路上討滅敵人。

九月 今治港城破,毛利一族全部斬首。

所有敵軍攻擊也全部擊退。

正當島津貴久高興時,三好家出兵今治港。

島津貴久:如此小毛頭也敢來打。

過幾天,忽有傳令兵來報:不好啦,四國第一智者長宗我部元親,

也傾全部兵力來襲。

遠方武田也開始研發良馬,風林火山即將出現啦。

連者一串壞消息,島津貴久不禁楞在原地。

就盡島津的野望能達成呢,還是發飆的武田,會討滅島津呢。

敬請下回待續...

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.138.77.199
推 kutkin:島津忠直喔?                                              07/19 16:17
推 sevenly:因為忠直能力太廢,人多的電腦大名一定會把他流放,只能流落  07/19 16:30
→ sevenly:到人少的大名家中生存...                                 07/19 16:30
推 greatboy:真好看                                                 07/19 17:21
推 GoldSky:斬首真的會上癮 每次一斬就停不下來 XD                    07/19 17:40
推 david760615:導津貴久跟日新齋不是同一人嗎 原PO應該是指義久       07/19 17:54
→ sdyy:沒吧 島津日新齋生貴久 再來才是家久義弘歲久                 07/19 18:05
推 scannol:日新齋是島津忠良  貴久的老爸  原PO不是都說了??          07/19 18:06
→ scannol:唔  推文慢了  拍謝                                      07/19 18:07
推 CousinPP:那個砍頭的音效做得很好啊,每次聽到都會不由自主地顫抖~   07/19 18:45
推 CHENYOREN:回頭應付包圍網未必是對的                              07/19 18:45
→ CHENYOREN:應該算是違背了直取武田的想法                          07/19 18:46
→ CHENYOREN:把毛利跟長宗我部打掉 幾乎算是統一中國跟四國           07/19 18:46
→ CousinPP:我玩上杉謙信時,也是讓島津忠直擔任分城城主,偶爾運運兵,  07/19 18:47
→ CHENYOREN:武田應該已經吃掉上杉 伊達 相馬......                  07/19 18:47
→ CousinPP:或就近打打鬧事的農民...                                07/19 18:48
推 tenshoufly:這種玩法初期到中期都沒問題,不過後期上級電腦常常一次  07/20 22:52
→ tenshoufly:出動10幾個部隊10萬以上的人數,會戰放戰法會很吃虧而且  07/20 22:54
→ tenshoufly:上級電腦抓到你的親族必殺,跟武田決戰真的很不利加油吧  07/20 22:56

革新PK 島津大魔王1

太懶了 再次發些以前寫的舊聞

這是我以前第一次發戰記,錯字多多,寫得也不是很流暢,

最嚴重的是竟然斷尾,當年玩完就出國玩了,回來就懶得寫了。

ptt看板  Koei
時間  Fri Jul 18 22:17:21 2008
───────────────────────────────────────

前言

話說戰國最強種馬家族島津,在不徵兵只研發火槍科技

統一日本後,休兵數月,而今又再次興起了統一日本的野心

此時一道邪黑氣闖入了島津家族心中

島津貴久:給我招集所有大臣。

一伊集院為首的大臣們趕忙回到城中,

正當大臣們想要問主公有什麼事時。

島津貴久宣佈:給我都拖出去斬了。

每個大臣都說;主公為什麼要這樣對我。

大人呀,為什麼。

島津貴久:身為戰國最強家族,就是要把所有其他武將全部殺光。

從此,僅有五人的天下一統之戰開始了。

第一章 九州地獄

在島津把所有大臣斬殺後,立刻招集了在港口的兒子

而此時地方人名都對島津起了不信任感,島津名聲只剩下57

島津貴久:此時先不理在北方的同盟,反正沒有威脅,盟約一完在滅了他,

現在就出兵肝付家。

九月,肝付家滅亡。

島津貴久:如此貧弱家族,留者也沒用,拖出去全斬了。

至此第一個家族消滅。

隔月,傷兵恢復的差不多,出兵,伊東家。

1556年4月 伊東家滅亡

而大友看我快滅了伊東也想來偷補一腳。

大友:沒想到我盡死在敵國..

大友被抓,直接斬殺,大友姬繼承家業。

此時第二個家族伊東以滅。

隔月出兵大友,府內館。

此時大友盟友大內聽到大友被打馬上出兵。

可惜,九月照樣打下府內館,在此斬殺數名大友重臣。

到此,糧食只剩數千,錢只剩數百。

島津日新齋提議:跟商人眾結盟吧。

島津貴久:準,我相信商人眾已經都改名姓島津了。

從此,金錢不缺,也湊齊了跟荷蘭島津氏的交易物。

展開了換取科技行動。

而隔年馬上出兵阿蘇跟相良家

年中,又有兩個家族消失在九州,期間有人跟島津推薦自己。

而島津貴久說:準,但要改姓島津。

可惜都無法改姓。

島津貴久一怒之下說:都給我拖出去斬了。

至此已經達到150的名聲又下降不少。

而滅完相良。

此時展開了築城計畫,讓大家能力都能上升,並同時多多換取糧食.

並跟中國的島津氏換取苗刀科技。

此時再次出發把殘存的大友家給消滅了。

此時大內聽說大友家一族全被斬殺,不僅悲從中來。

馬上出兵府內城,而有馬家一看到島津一家都跑去府內馬上也出兵訪津港。

貴久趕緊跟歲久一塊去防守跟調兵。

此時,看到島津一家如此不得人緣的龍造寺馬上也出兵立花山城。

在半年的抵抗下,全部被打回家,此時龍造寺兵只剩一萬出頭。

島津貴久下令:馬上出兵。

就此龍造寺一家滅亡,再繼續滅相馬家。

順便勸降,但僅有數千人的有馬面對島津數萬人還是面不改色的拒絕了。

因為有馬晴純知道投降還是死,就讓我光榮戰死吧。

有馬滅亡。此時大內兵力已衰,重臣死傷慘重。

1561年 島津統一九州,並滅了大內。

全九州只剩島津氏。而在東方的武田,以展露頭角統一七城,

看來不久的將來較要面對的是強大武田兵團。

究盡島津能使全日本都改姓島津,還是死於自己狂妄的野心呢

下回待續...

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.138.74.248
推 GUYDA:所以 只用不到10人?                                        07/18 22:20
推 skyheart:怎樣讓人改姓啊?                                        07/18 22:29
推 deepmilk:改不了姓啊...所以它真的要用島津一門破關吧?             07/18 22:36
→ deepmilk:比較好奇的是結婚算入贅島津嗎?哈哈...                   07/18 22:38
推 CousinPP:有馬家這麼有骨氣啊? 大概老當主晴純公比較重武士道吧..?  07/18 22:42
→ CousinPP:史實上他孫子連本國國人都肯降伏了,豈有不降守護大名之理  07/18 22:44
→ CousinPP:冠上守護名門島津之姓也非恥辱,若能開編輯,他應會答應吧?  07/18 22:49
→ CousinPP:哦對,信濃有位忠直殿,能力不怎樣,就是姓對了,公可利用之!  07/18 22:52
推 cklonger:邊吉企...也不姓島津阿                                  07/18 22:52
→ CousinPP:這位忠直殿與武田信玄,有著領地被奪之仇,請他擔任內應吧!  07/18 22:53
推 sevenly:武田家有個島津忠良  大概是唯一可以活命的非一門吧XD      07/18 22:55
→ sevenly:啊打錯了  是忠直=  =                                    07/18 22:56
推 dinokong:太可怕了 最近的自虐真是一個比一個變態 囧               07/18 23:09
推 downgoon:不由自主的認同樓上...                                  07/18 23:11
→ andy80209:我還是乖乖玩真田家吧...如夢以後的真田是我的極限...    07/18 23:13
推 hedes:可以問一下其他設定嗎?有無壽命、有無高姬之類的            07/18 23:29
→ hedes:因為光看內文只能確定只用一門還有抓到武將全斬這樣XD        07/18 23:30
→ hedes:話說我原本打算這次挑戰完下一個就要來試只用一門            07/18 23:30
推 CHENYOREN:島津很強 不過這樣玩 我覺得有爽度有難度                07/18 23:31
→ hedes:被你搶先了,看來可以不用去拼了XD                          07/18 23:31
→ CHENYOREN:我不看好這種陣容能跟武田打                            07/18 23:31
→ CHENYOREN:5人頂多帶5隊 戰法都不用連鎖了???                      07/18 23:31
→ CHENYOREN:多線開戰會碰到無人可應戰的窘境                        07/18 23:32
→ CHENYOREN:不過這些是我的淺見 祝你成功破台 再來分享心得          07/18 23:32
→ sdyy:壽命標準 高姬 但我每次12月都在家就是沒半個姬 無颱風        07/18 23:37
→ sdyy:之前玩有颱風 連兩年兵舍被掃光...                           07/18 23:38
→ sdyy:我應該會以單線為目標                                       07/18 23:39
→ sdyy:盡快把武田給斬了...                                        07/18 23:39
推 CHENYOREN:你的玩法實在太有趣了 很有機會看到其他大名冒出頭       07/18 23:43
推 hedes:我之前也想過用一門玩,我覺得中期問題應該不大              07/18 23:54
→ hedes:因為島津位處西邊,就算包圍網真的成立,包圍國也較少        07/18 23:55
→ hedes:比較不像位在中間的大名需要打那麼多國                      07/18 23:55
→ hedes:比較麻煩的是人數過少,島津家又無法用雙支城爆兵法          07/18 23:55
→ hedes:集兵、運兵、發展科技都太花人力,中途可能要採取守勢        07/18 23:56
→ hedes:挑座城耗光武田家的兵馬、把武田家將領斬得差不多            07/18 23:56
→ hedes:然後才有辦法繼續推進下去,我倒是沒想過一直線殺過去XD      07/18 23:57
推 yting:最近的玩法都好有趣XDDD                                    07/18 23:57
推 Phillip44:一道邪黑氣闖入了島津家族心中   妳是奈洛附身嗎DDDDDD   07/18 23:57
推 MarineDD:超級有趣 不能適用於其他家族吧XDDDD (織田家...)         07/18 23:58
推 angle999:真田,長宗我部,毛利,北條,伊達這些都是家中人多的         07/19 00:07
推 ZincSaga:用織田一門挑戰啊!超有挑戰性!!                          07/19 00:28
推 CousinPP:北條一門滿強的(竊認為乃戰國最強一門)文武都有,不夠刺激  07/19 00:30
推 CHENYOREN:就戰力上來看 北條一門應該不如島津一門                 07/19 00:31
推 kerro:騎兵隊防鐵砲戰法打的又痛,武田一但長起來感覺不好打        07/19 00:32
→ CousinPP:島津人手少點,不過質量均優,再少或再弱應該會玩不下去吧?  07/19 00:32
→ CHENYOREN:不過只用一門眾 一場仗頂多只能派10~15萬                07/19 00:32
→ CHENYOREN:碰到大魔王 動不動就二三十隊 超刺激                    07/19 00:33
推 IceMakers:真田一門超作弊                                        07/19 00:33
→ kerro:群雄北條家!在阿公領軍之下應該很強!                        07/19 00:33
→ CousinPP:北條一門戰場上打不過島津一門,不過蓋房子練功人力比較足  07/19 00:34
→ CousinPP:打仗人手不足,只好選個城,布好鐵砲櫓陣,騙他大軍來送死囉  07/19 00:35
推 ZincSaga:真要上戰場也北条也不一定就輸島津,有萬惡火牛!          07/19 00:38
→ CousinPP:早雲有牛啊..? 嗯.. 到現在都還沒好好玩過架空劇本..      07/19 00:44
推 angle999:北條樂勝島津的光是早雲氏康放混亂島津就不用醒了         07/19 01:03
→ angle999:加上一門人數多能出的總兵數也多房子蓋的也快y            07/19 01:04
推 dxball:版上這是 武田不登用 v.s 島津五人眾 的戰記嗎              07/19 01:10
→ CHENYOREN:我剛剛沒考慮到早雲                                    07/19 01:19
推 AndGuideHer:只有五個人最後可能一定要打拼命轉移的游擊戰吧 對方   07/19 06:30
→ AndGuideHer:大軍要打的都讓他 自己再想辦法繞去抓落單的人來殺     07/19 06:31
→ AndGuideHer:不過這樣打後期會統一得很慢 也許貴久活不到那時候?   07/19 06:33
→ jienan:四支特攻還是很猛的,另一個一門有這麼多的大概只有毛利了    07/19 06:34
推 Kendai:中國島津氏跟荷蘭島津氏                                   07/19 06:45
→ Uliclo:島津在九州還有個旁系的島津義虎吧!...                     07/19 08:22
推 sosyyy:請問肝付兼續你也斬了嗎 囧                                07/19 10:30
推 foudre:原po的重點是姓島津吧?連有血緣關係的伊集院一族都第一個   07/19 10:49
→ foudre:斬了,還差肝付兼續這個姻親嗎?                           07/19 10:50
推 whalekame:德川家也很強  前提是要把姓松平的姓結成的算進去~      07/19 11:11
推 harryrain:如果字要一模一樣,姓毛利的沒幾個,能拼的應該只有北條  07/19 16:29
→ liniangcaho:你錯字很多喔同學                                    07/19 16:43
推 filla:這個遊戲唯一全員出場的劇本北條當然贏島津 招一放全都暈     07/20 01:10