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啦