發表文章

Scoreloop 使用法 android I

圖片
  1.先下載新版的 scoreloop ,但要先註冊。 註冊成功後,登入後在網頁上選擇            1.download SDK 然後找 Title: Core Social SDK (Android) 點擊下載。會下載一個Scoreloop_core_social_android_3.1.tar.gz 在網頁上選擇            2.Create Game & Integrate SDK 可以看到下圖,填上APP的名字,選Android  點擊Add Game後,會出現下圖,圖中的Game Secret 就是程式要用的 秘 密 碼 。 點擊Submit Game 之後,會要求填寫APP的描述,上傳APP Image之類,就不多做說明。 2.  解壓縮後可以在 Scoreloop_core_social_android_3.1 看到一個 ScoreloopUI的目錄,這個就是我們要的了。(最簡易的使用法,從 ScoreloopUI 下手。內已包含 Scoreloop所提供的UI介面。) 3.開啟eclipse 將ScoreloopUI import 進來,這時 eclipse 會出現一個 ScoreloopUI 的project,如下圖。 接下來Add Library,至 property -> Android->Add  選ScoreloopUI  如下圖就完成了。 4.建一個新的Class,讓我們取名為 DummyApplication吧!把下面的碼直接貼上。記得Game Secret要貼上第一步中的 秘密碼 。 import com.scoreloop.client.android.core.model.Client; import com.scoreloop.client.android.ui.ScoreloopManagerSingleton; import android.content.Context; public class DummyApplication extends android.app.Application {         private static Client clie

Powerpoint 遙控器

圖片
原連結如下: http://pianovv510.blogspot.tw/2012/12/powerpoint-android.html 這個應用程式可以讓你的android手機變成簡報遙控器 第一次使用時,要做幾個簡單的設定 1.安裝JAVA執行程式,請至下面連結下載 http://www.java.com 2.藍芽配對電腦和手機,先點選右上角案鈕,然後選擇"是"   進入控制台\硬體和音效\新增Bluetooth裝置,此時會電腦已找到您的手機(我的是GT-I9300),點選然後按下一步   看到配對碼後一樣按下一步 在上個步驟後,手機端會出現對畫框如下,按下確定,即完成配對設定,上述這些步驟只需做一次即可   使用及操作    電腦端 1.下載 PPTServer .rar檔,解壓縮後看到一個RUN.bat檔, 每當要開始使用遙控器時,點二下來開始電腦端的服務, 當不使用時,在按右上角的叉叉鍵,關閉即可 下載 手機端 1. 至market下載安裝 Powerpoint遙控器 APP (如已安裝,請忽略此步驟) 下載 2.點選右上角的按鈕,然後點選裝置名稱(KANZO-AIR-PC是我的電腦名稱),   3.左上角的狀態為"已連接",即大功告成,可以開始遙控您的powerpoint    如發現無法連接成功,請重開手機,再行連接一次     註 -如果您是使用Linux作業系統,則需安裝 libbluetooth-dev package     =====================影片說明======================= 

字串處理 String

一些常用的字串的處理 如果有一個字串為 ss String ss = " 天地玄黃宇宙洪荒 日月盈昃 辰宿列張 "; //試試看是否包含字串 "宇宙" Boolean ans = ss.contains( "宇宙");  //如果有包含會反回true, 如果沒有包含會反回false. int ans = ss.indexOf("宇宙") ; //如果有包含會反回"宇宙"在ss中的位置,所以ans=4,如果沒有包含ans=-1。 //試試看字中是否為"宇宙"開頭 Boolean ans = ss.startsWith( "宇宙" );// 如果是"宇宙",反回true,如果不是反回false。 //試試看字中是否為"宇宙"結尾 Boolean ans = ss.endsWith( "宇宙" ); // 如果是"宇宙"結尾,反回true,如果不是反回false。 //試試看以宇宙來分段字串 String[] ans=ss.split(" 宇宙 ");  //反回兩個字串 ans[0]= " 天地玄黃 "  ans[1] = " 洪荒 日月盈昃 辰宿列張 "   //使用正則表示式 ans = ss.matches(".* 宇宙 .*"); //.*表示任何字元,也就是"宇宙"前後包任何字元都反回true。 ans = ss.matches(" 宇宙 .*");  //等同於宇宙開頭的字串,所以反回false。 ---------------------------------------------------------------------- 說明一下正則表示 (regular expression) ,是一種尋找字串的代碼系統。學會它,在處理字串時會可怕的方便。 例如英文中 cat locate monkey apple. 我們如果想找cat這個字,以人的大腦來說很容易就找到

Google Analytics

圖片
google Analytics 推出了手機的服務了。不用再用以往使用一個 dummy 的網址了。有了它,就可以了解人們如何使用我們所開發的APP了,進一步來改善APP的品質。 快來看看使用的方法 第一步: 先下找新版的jar檔-> GoogleAnalyticsAndroid.zip 解壓後將 libGoogleAnalyticsV2.jar 放在 project 的 \libs 中 第二步: 進入http://www.google.com/analytics/ 登入,如沒有帳號請申請一個 點擊"管理員"如下 在帳戶中點擊"新增帳戶",如下,點擊應用程式。將下方的表格埴一填。即出現新的帳戶。這裡指的帳戶就是不同的網站或是應用程式。最下方有"取得追蹤編號",點擊後就會出現編號了。這個就是程式中要用的編號。 第三步: 程式的寫法,在activity中新增        Context mc=this;         // 先得到一個Instance         GoogleAnalytics trackerInstance=GoogleAnalytics.getInstance(mc.getApplicationContext());         // 從instance中得到Tracker,記得放前追蹤編號。         Tracker tracker = trackerInstance.getTracker(" UA-xxxxxxx-x ");         // Dispatch內定是30分鐘,如果使用者在30分鐘內將應用程式關閉,記錄會留下,待下一次程式被執行,會發送出記錄。如果想要縮短發送的時間可以如下         GAServiceManager.getInstance().setDispatchPeriod( 60 );// 設定為60秒 到此基本的Tracker已得到,接下來是針對某一個新的頁面被打開時,了解頁面被打開的次數跟時間 用tracker.trackView("lable") 其中的lable為自定意的一個標籤。         Button aBu

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