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月28日
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(); //宣告原生函數
}
例如我將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.....
}
}
);
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); // 不然會有錯誤產生!
.......
options.inMutable = true; //加上這個選項!!!! (API level 11以上)
Bitmap bm = BitmapFactory.decodeByteArray(data, 0, data.length, options);
Canvas canvas = new Canvas(bm); // 不然會有錯誤產生!
.......
2014年10月2日
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
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
2014年7月17日
搶救Sony Ericsson Mt11i
這隻手機2012年份,但照相功能佳,且和目前的大尺寸手機比起來,放在褲子口袋是剛剛好,不會突出來攜帶方便。據兒子說是在用藍牙傳輸時突然當機,然後就重複開機個沒完沒了。我直覺地想是不是沒電了?Sony的產品應該不會這麼容易壞吧?所以
- 先插到電腦usb充電。x
- 換充平板的的插頭2A電流。x
- 好吧,Google一下。喔,有人說要裝Sony的pcc連線軟體,進行修復即可。好吧,下載、安裝、連線....根本無法連線成功。x
- 這時兒子看我搞了半天沒有進展,才跟我說之前也曾發生過此狀況,最後是在按電源關機畫面時,趕緊按飛航模式才解決。喔,看到一線曙光,當然不能放棄!但這Timing實在很難抓,因為一閃而過,兒子沒有馬上說的原因後來才知道,是因為上次他按了非常非常久才成功。咦,說時遲那時快,本人居然沒多久就賽到了:-) 還真的有效耶,總算手機恢復正常開關機。此時沒有想太多,因為已經搞到很晚了,沒有仔細檢查就開開心心睡覺去也。
2014年7月5日
Android: 解壓縮有密碼的zip檔(Zip4J)
Zip4j
參考此jar,簡單用法如下:
參考此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);
}
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;
訂閱:
文章 (Atom)