發表文章

Access Internal Storage 存取android手機內存

Android 手機的內存是放在 /data/data/<package name>/files,可以使用getFilesDir()得到路徑。如下: File fileDir = getFilesDir(); 每一個app有各自的user id和自己權限跟空間。所以存在手機內存的資料就會權限的問題。要開啟或創建時就需要權限的設定。以android developer內的說法,存取內存要使用openFileOutput這個程式,反回為FileOutputStream。如下: FileOutputStream imageFout = openFileOutput("FileName",MODE_WORLD_READABLE); FileName只要檔名即可,不用完整路徑。 Context.MODE_PRIVATE:代表該檔是私有資料,只能被APP本身訪問。如果檔案已存在,會覆蓋原檔。 Context.MODE_APPEND:會檢查檔案是否存在,存在則將內容增加到檔案內;如檔案不存在就創建新檔。 Context.MODE_WORLD_READABLE:其它應用程式也可以讀。如果要在APP中使用 intent.ACTION_SEND,要使用此模式。 Context.MODE_WORLD_WRITEABLE:其它應用程式也可以寫入此檔。 如想要兩個模式共有,如下 openFileOutput("FileName", MODE_WORLD_READABLE + MODE_WORLD_WRITEABLE); Developer 中的範例如下(建立文字檔) String FILENAME = "hello_file" ; String string = "hello world!" ; try{ FileOutputStream fos = openFileOutput ( FILENAME , Context . MODE_PRIVATE ); fos . write ( string . getBytes ()); fos . close (); }catch(IOExc

萬化細胞動態桌布

圖片
  想要一個多彩又有深度的桌布,所以延用了細胞自動機的原形來實現一個自動成形的桌布。說到細胞自動機,這是一個很有趣的概念。他的規則很簡單 A、 一個細胞如果有二或三個鄰居則可以活到下一刻 , 否則就會死於獨居或壅擠。 我們看一下例圖。中間藍色的部分是我們感興趣的細胞,紅色是鄰居。 因為有兩個鄰居或是三個鄰居所以他們的下一刻藍色細胞還是可以存在。 下兩張圖是鄰居只有一個或是大於三個。所以下一刻,藍色的細胞就消失了。就是死去了。        =======>     B 、一個空格處如果剛好有三個鄰居,則可生出藍色細胞。         =======> 了解這些規則,我們來來看一個六個細胞排成一列的演化三個步驟的過程 看似簡單的規則,是否會讓我們懷疑,這能做什麼? 我們先了解細胞自動機的目地是什麼?電腦之父馮諾曼( John von Neumann )在 1940 年代開始研究細胞自動機( cellular automaton ),目地是為了發展具有自我複製能力的計算工具 。 據說 溤諾曼小時候就有過目不忘的能力,而且計算能力超強。有一次他的母親抬頭想著事,馮諾曼小小年紀就說, ” 媽,你在算什麼,我幫你算… ” 。呵…如果誰家的小孩今天冒出這驚人之語,請貴父母們好好的栽培他。 什麼是 自我複製能力的計算工具,說穿了 就是一種人工生命,人類就是其中的一種。只是演化的規則比細胞自動機複雜多了。從小層次的規則為主,產生大層次上的演化現象。也叫做突現行為。意思是說,將一兩條人們以為簡單的規則加入單一個生命體的行為中,當我們把生命體複製到千千萬萬個時,這一兩條規則會帶來什麼變化。我們看一段影片。 這影片中的鳥是不是被指揮了?是不是被一個更高層的力量給控制?其實不然。他們只遵從兩條規則 一、飛的時候盡量離彼此近一點。 二、飛的時候不要跟別的個體相撞。 簡單的規則,卻出現這樣複雜的行為。這是複雜還是簡單?動畫電影的海底總動員中的一群魚集體的游動就是依這兩條規則改進,用電腦跑出來的結果。 人類的社會也是如此的,每一

GLSurfaceView android 3D 繪圖

圖片
要了解如何在android中實作繪圖,要先知道兩個物件 一個是 GLSurfaceView 一個是 GLSurfaceView.Renderer GLSurfaceView 實作繪圖的視窗,是繼承自SurfaceView的View。因為是繼承自SurfaceView所以一樣有底下這些常用的方法 setRenderer() onPause() onResume() queueEvent() surfaceChanged() surfaceCreated() surfaceDestroyed() ... 其它不多做贅述 GLSurfaceView.Renderer  繪圖物件的處理,所有繪圖的部分都在這裡處理,其下有三個方法      onDrawFrame(GL10 gl) //畫圖函數放在這裡。      onSurfaceChanged(GL10 gl, int width, int height)      onSurfaceCreated(GL10 gl, EGLConfig config) //Render被創立之後,初始化的函數都放在這裡。函數會被執行一次。 主要的Activity,要先把一個GLSurfaceView建入contentView。在這裡就是Oglv。 public class OpenglTest extends Activity {      private Oglv oglv;      public void onCreate (Bundle savedInstanceState){           super.onCreate(savedInstanceState);           oglv = new Oglv(this);           setContentView(oglv);      } } 建一個新的class,名為Oglv,繼承自GLFurfaceView class Oglv extends GLSurfaceView {      private OglvRender oglvRender;      public Oglv(Context mc){           super(mc);           ogl

Resources String from Name, 由字串名得到字串

想要在程式中使用resource 中的字串,可以用以下的方法 String str = getResources().getString(int id); 但是如果我們希望用resources 中的字串名來使用字串,就要先把字串名轉成id int resId=getResources().getIdentifier(name, "string", getPackageName())) name 是指在 R.string.XXXX 的 XXXX, "string"是指 R.string.XXXX 的string, 所以如果是 R.drawable.XXXX,"string", 就要改成"drawable"。 最後是package name, 使用getPackageName(),來得到package name, 或直接打上package name都可以。 有了resId, 現在只要 String str=getResources().getString(resId); 如此即可得到字串。 有人說用 getResources().getIdentifier(name, "string", getPackageName())) 太沒有效率,速度慢。所以可以用另一種方法如下  try {             Class res=R.string.class;  // 如果是drawable就變成Class res=R.drawable.class             Field field = res.getField(" name ");// name要改成字串名             int resId = field.getInt(null);             String str=getResources().getString(resId);         }         catch (Exception e) {                   } 速度的確快很多…

速占之樂20121024問晚餐是否有好吃

圖片
與友共享晚餐,本不知去何處享用。便問一卦。 呵… 2爻,3爻,4爻為坎卦,坎為酒食,所以需之九五說,需于酒食,貞吉。看樣子,是有口福了。 2爻動變成井卦.。初,2 ,3,4爻變成一個大坎卦,外卦也是坎。有口福,變成大有口福。看樣子今天是怎麼選都酒足飯飽。 結果: 真是令人滿意。

針道

圖片
              針灸是一門古老的醫術了!可惜現在學的人太少,不是覺得他沒用,就是覺得難以理解。學針灸是要崇古的,也就是說,現今醫學,生化,解剖之類的人體知識都是用來幫助學習針灸,而不是用來解釋針灸。以此推之,覺得針灸沒用的人,是因為他沒有學懂。覺得難以理解的人,是因為他用今天的知識去理解針灸。 針道這個軟體就是為了濃縮針灸大成這本書的精華而寫的。整本針灸大成最有價值的,就是五俞穴的理論,再來就是靈龜八法,飛騰八法跟子午流注。其次是一些特殊的穴位組合如果十三鬼穴,回陽九針。這些東西如何得來,我想現今醫學是難以解釋,都還在科學驗證的階段。科學驗證難免流於統計,流於統計就代表我們不知道底下的原因是什麼!多說無意,我們看一段郝萬山教授的視頻。重點是證偽。    這才是學術啊!自已去做過實驗,有數據,有目地。有”對”的問題!什麼叫”對”的問題? 當我們可以對一個理論提出一個”對”的問題,就表示我們已經了解了這個理論。 我們只能說,看 那 些沒有學術基礎的人討論學術真得累殺我也。什麼叫學術?想要攻擊一個理論,最基本的就是要先”徹底”的了解這個理論。徹底了解就夠了嗎?還要自已去實踐他。也就是實驗。然後問出一個”對”的問題。那麼錯誤的東西,自已就不攻自破。大多數的文章都不含這三個步驟,所以不值得一讀。偏偏!又要一讀才知道沒有這三個步驟。現在看到這些討論針灸真偽的文章,我只要問一個”對”的問題就好,那就是,你們自已扎過自已了嗎?沒扎過先退朝吧!過去許多的大科學家都敢用自已的身體做實驗。這是科學基本的態度。 離題了…    先放幾張圖,個人很喜愛這張路邊看病圖!這樣叫他是相當不敬。一個童子在一旁吹著膏藥,一個醫生,正在為病人拔罐。病人則露出相當痛苦的表情,真是一絕,這表情一見就很難忘了,他的家人則在一旁拉住他,很有趣的圖不是嗎?把醫生搞得像是刑求一樣。 靈龜八法,飛騰八法跟子午流注都是需要利用日期的天干地支來計算穴位。危急之時,如果算錯,這個險可不能冒,所以就利用手機的方便,隨時可查。             五門十變是從五氣經天化五運圖,這一張圖就把很多東西的根源道盡了。我們來綜合一下,五運就是以甲已合化土,

速占之樂20121011買來之apple電腦之出廠為今年第幾個星期

圖片
與A君問電腦之出廠之星期。 以後天卦的數來看,有 乾6,離9,巽4,兌7 先天卦的數來看 乾1,離3,巽4,兌2 過去幾次的經驗,用先天數比較準, 13 不可能,現在已經十月,以apple的狀況會是二個月內  剛好動爻也在離卦上 , 那只有34或是32 。 呵:答案揭曉  第37周…