2014年12月28日

Android: JNI相關

Java调用C程序, C调用Java程序
JNI Tips
Android 開發筆記 - 使用 NDK / JNI 實作從底層呼叫上層 (C call Java)
Java Programming Tutorial Java Native Interface (JNI)
http://blog.csdn.net/i5suoi/article/details/19036975
探秘腾讯Android手机游戏平台之不安装游戏APK直接启动法
Android应用开发提高系列(4)——Android动态加载(上)——加载未安装APK中的类

2014年12月25日

Android: NDK 測試範例

1. 下載安裝 Android NDK
     例如我將64bits版本的NDK安裝到 E:/dev/SDKs/android-ndk-r9b-windows-x86_64/

2. 下載安裝 Cygwin
     安裝時記得包含Devel中的make 和 Shells中的bash

3. 用Eclipse編譯個簡單的Android Project,內容如下
package com.wsj.android.testjni;
import ......;
public class HelloNDK extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_hello_ndk);
System.loadLibrary("hellondk");    //載入原生程式庫
int result = sayHello();                       //呼叫原生函數 
Log.i("HelloNDK", "" + result);
}
private native int sayHello();           //宣告原生函數
}

2014年12月4日

馬斯奈 Meditation from Thais



IMSLP音樂圖書館 公共領域樂譜

人生的旋轉木馬
開場曲
[3][6]1 3 21[7]1 [6]13 6 654 5
[7]35 76 5(4)565 (4)3 212 32[6][7]
[3][6]1 3 21[7]1 [6]13 66 6754 5
[7]35 76 65(4)(4)(4)65 5(4)3(2)332321
[7](1)(2)3

2014年11月11日

Android: 非UI Thread更動 UI

當Threrad在同個Activity時,蠻方便的作法:

runOnUiThread(new Runnable() {
    @Override
    public void run() {
       // 更新UI.....
    }
  }
);
 

2014年11月8日

Android: 轉換 Immutable Bitmap into Mutable

BitmapFactory.Options options = new BitmapFactory.Options();
options.inMutable = true;  //加上這個選項!!!! (API level 11以上)

Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length, options);
Canvas canvas = new Canvas(bm);  // 不然會有錯誤產生!
.......

2014年10月2日

CodeProject : Android 文章

2014年9月4日

Android: AndEngine - Android Game Engine

AndEngine - Android Game Engine:
AndEngine - AndEngineWiki:
AndEngine Simple Android Game Tutorial « Jimmar's blog thingie:
andengineexamples - AndEngine - Examples

範例影片
How to Create a Simple Android Game with AndEngine:
AndEngine Tutorial 01 - Creating a Scene - Perle Development:

好多範例的2D OpenGLES遊戲引擎!!

Andengine Forums

PolyLine.java



摺紙資源

ORIPA: Origami Pattern Editor
Crease Patterns for Folders
Robert J. Lang

2014年7月17日

搶救Sony Ericsson Mt11i

     這隻手機2012年份,但照相功能佳,且和目前的大尺寸手機比起來,放在褲子口袋是剛剛好,不會突出來攜帶方便。據兒子說是在用藍牙傳輸時突然當機,然後就重複開機個沒完沒了。我直覺地想是不是沒電了?Sony的產品應該不會這麼容易壞吧?所以
  1. 先插到電腦usb充電。x
  2. 換充平板的的插頭2A電流。x
  3. 好吧,Google一下。喔,有人說要裝Sony的pcc連線軟體,進行修復即可。好吧,下載、安裝、連線....根本無法連線成功。x
  4. 這時兒子看我搞了半天沒有進展,才跟我說之前也曾發生過此狀況,最後是在按電源關機畫面時,趕緊按飛航模式才解決。喔,看到一線曙光,當然不能放棄!但這Timing實在很難抓,因為一閃而過,兒子沒有馬上說的原因後來才知道,是因為上次他按了非常非常久才成功。咦,說時遲那時快,本人居然沒多久就賽到了:-) 還真的有效耶,總算手機恢復正常開關機。此時沒有想太多,因為已經搞到很晚了,沒有仔細檢查就開開心心睡覺去也。

2014年7月5日

Android: 解壓縮有密碼的zip檔(Zip4J)

Zip4j 
參考此jar,簡單用法如下:
public static void unzip(File zipFile, String dest, String passwd) throws ZipException {
        ZipFile zFile = new ZipFile(zipFile); 
        File destDir = new File(dest);   
        if (destDir.isDirectory() && !destDir.exists()) {   
            destDir.mkdir();   
        }   
        if (zFile.isEncrypted()) {   
            zFile.setPassword(passwd.toCharArray());   
        }   
        zFile.extractAll(dest);     
    }   

2014年7月3日

Android: Nano Sleep

來源CALL GLOP()

private static final long SLEEP_PRECISION=2*1000000 ;
private static final long SPIN_YIELD_PRECISION= 1000;

    public static void sleepNanos (long nanoDuration) throws InterruptedException {
        final long end = System.nanoTime() + nanoDuration;
        long timeLeft = nanoDuration;
        do {
            if (timeLeft > SLEEP_PRECISION)
                Thread.sleep (1);
            else
                if (timeLeft > SPIN_YIELD_PRECISION)
                    Thread.sleep(0);

            timeLeft = end - System.nanoTime();
            if (Thread.interrupted())
                throw new InterruptedException ();
        } while (timeLeft > 0);
    }

2014年6月21日

OpenShift (DEVELOP, HOST, AND SCALE YOUR APPS IN THE CLOUD)

OPENSHIFT The Open Hybrid Cloud Application Platform by Red Hat 免費3個Application

  • 申請帳號
  • 安裝 ruby 然後裝 rhc 遠端command line工具 / Web Console ?
    rhc setup
    rhc apps
    rhc app <action>
    rhc -tail -a appName
  • 安裝 git  程式碼管理工具
    git add .
    git commit -a -m
    git push
  • 用Eclipse開發 Getting started with eclipse paas integration 或 JBOSS
  • Node.js需要注意的地方 (ERROR listen EACCESS)
    var ipaddress = process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1";
    var port = process.env.OPENSHIFT_NODEJS_PORT || 8080;