2014年2月13日 星期四
2014年2月7日 星期五
Build the jar librarys in Android Studio
從 eclipse 移過來android studio了 , android studio 真的是蠻方便的因為很客製化,但是總要付出一些代價,例如沒有export出library的選項,得要自行建立build.gradle 以及編譯他自行產出。
首先要在你的Project主目錄新增build.gradle 以及local.properties
local.properties:
若是沒有建立local.properties則在build.gradle中將會找不到sdk的目錄。
build.gradle :
上面我標紅字的地方,就是你要修改的地方,一個是你的java source code的目錄,一個是你要產生出的jar file name。
然後可以直接在Android studioTerminal上進入此Project目錄並輸入:
$ ./gradlew clearjar
then
Reference:
首先要在你的Project主目錄新增build.gradle 以及local.properties
local.properties:
sdk.dir=/home/jackabk/android-studio/sdk
若是沒有建立local.properties則在build.gradle中將會找不到sdk的目錄。
build.gradle :
buildscript { repositories { mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:0.6.+' } } apply plugin: 'android-library' repositories { mavenCentral() } android { compileSdkVersion 19 buildToolsVersion "19.0.1" defaultConfig { minSdkVersion 10 targetSdkVersion 19 } sourceSets { main { manifest.srcFile 'AndroidManifest.xml' res.srcDirs = ['res'] java { srcDir 'src/com/jackabk/views/' } resources { srcDir 'src/../lib' } } } task clearJar(type: Delete) { delete 'build/libs/YourProjectName.jar' } task makeJar(type: Copy) { from('build/bundles/release/') into('build/libs/') include('classes.jar') rename ('classes.jar', 'YourProjectName.jar') } makeJar.dependsOn(clearJar, build) } dependencies { compile 'com.android.support:appcompat-v7:+' }
上面我標紅字的地方,就是你要修改的地方,一個是你的java source code的目錄,一個是你要產生出的jar file name。
然後可以直接在Android studioTerminal上進入此Project目錄並輸入:
$ ./gradlew clearjar
./gradlew clearjar
./gradlew makejar
Reference:
2014年2月5日 星期三
Android of the MotionEvent Studying!
Android 事件當中有蠻多個input device event, 其中有一個MotionEvent,
位於Android SDK 中的 android.view.MotionEvent,
在底下範例將會Capture以下事件:
滑鼠按下、滑鼠彈起、滑鼠移動、觸碰按下、觸碰彈起、手指滑動、滾輪滑動。
基本上用到底下這兩個事件就很足夠:
兩個都包在MotionEvent裡面, 但兩個差別在於, 一個事件是針對使用者的觸碰功能, 另外一個則是針對大多數的裝置(e.g. mouse, joystick..), 所以針對你的應用看適合那一個,
不過要特別注意的是優先序的問題, 其實兩個都有共同的觸發事件,
例如你點螢幕一下, 跟滑鼠點左鍵一下, 其實都會進入到兩個事件, 所以在處理上來講要注意。
底下列出 分別 capture TouchEvent and MouseEvent (請自行建立一個TextView來測試):
在上述中,以滑鼠事件來說, 如果你只是純粹移動, 並沒有點擊, 則會進入"HOVER_MOVE"事件,
因此我在裡面加了一行觀看目前的 x and y position。
其實還有其他更多的應用,都在官方MotionEvent原始檔裡面,註解寫的非常清楚,可以研究看看。
另外也可以自行模擬出滑鼠與鍵盤事件(i.e. 軟體自動執行某個按鍵或者是滑鼠移至指定座標), 使用Instrumentation()類別,
但是悲劇的是,Instrumentation類別裡面的IWindowManager在 Java 1.6中已拿掉,
網路上雖然有蠻多解決方法,但是我試了蠻多還是不成功,不過只要能夠將IWindowManager.aidl這個類別給找回來放置自己的Project中應該就可以了,改天再來試下。
位於Android SDK 中的 android.view.MotionEvent,
在底下範例將會Capture以下事件:
滑鼠按下、滑鼠彈起、滑鼠移動、觸碰按下、觸碰彈起、手指滑動、滾輪滑動。
基本上用到底下這兩個事件就很足夠:
- onTouchEvent()
- onGenericMotionEvent()
兩個都包在MotionEvent裡面, 但兩個差別在於, 一個事件是針對使用者的觸碰功能, 另外一個則是針對大多數的裝置(e.g. mouse, joystick..), 所以針對你的應用看適合那一個,
不過要特別注意的是優先序的問題, 其實兩個都有共同的觸發事件,
例如你點螢幕一下, 跟滑鼠點左鍵一下, 其實都會進入到兩個事件, 所以在處理上來講要注意。
底下列出 分別 capture TouchEvent and MouseEvent (請自行建立一個TextView來測試):
onTouchEvent:
@Override public boolean onTouchEvent(MotionEvent event) { int index = event.getActionIndex(); int action = event.getActionMasked(); int pointerId = event.getPointerId(index); switch(action) { case MotionEvent.ACTION_DOWN: mTestMouseEventTextView.setText("CLICK_DOWN"); break; case MotionEvent.ACTION_MOVE: mTestMouseEventTextView.setText("CLICK_DOWN_MOVE"); break; case MotionEvent.ACTION_UP: mTestMouseEventTextView.setText("CLICK_UP"); break; case MotionEvent.ACTION_CANCEL: mTestMouseEventTextView.setText("CANCEL"); break; default: return super.onTouchEvent(event); } return true; }
MouseEvent:
@Override public boolean onGenericMotionEvent(MotionEvent event) { if ((event.getSource() & InputDevice.SOURCE_CLASS_POINTER) != 0) { switch (event.getAction()) { case MotionEvent.ACTION_HOVER_MOVE: mTestMouseEventTextView.setText(String.valueOf(event.getX()) + "\n" + String.valueOf(event.getY())); return true; case MotionEvent.ACTION_SCROLL: mTestMouseEventTextView.setText("SCROLL"); return true; } } return super.onGenericMotionEvent(event); }
在上述中,以滑鼠事件來說, 如果你只是純粹移動, 並沒有點擊, 則會進入"HOVER_MOVE"事件,
因此我在裡面加了一行觀看目前的 x and y position。
其實還有其他更多的應用,都在官方MotionEvent原始檔裡面,註解寫的非常清楚,可以研究看看。
另外也可以自行模擬出滑鼠與鍵盤事件(i.e. 軟體自動執行某個按鍵或者是滑鼠移至指定座標), 使用Instrumentation()類別,
但是悲劇的是,Instrumentation類別裡面的IWindowManager在 Java 1.6中已拿掉,
網路上雖然有蠻多解決方法,但是我試了蠻多還是不成功,不過只要能夠將IWindowManager.aidl這個類別給找回來放置自己的Project中應該就可以了,改天再來試下。
- Reference:
Handling single and multi touch on Android- Tutorial
Android Touch and Multi-touch Event Handling
Android自動化測試初探(四) : 類比鍵盤滑鼠事件(Socket+Instrumentation實現)
android自动化测试中实现长按并拖动
[转]Android开发中隐藏类的使用
[Android 開發] 如何在 View 中監聽滑鼠滾動事件?
Mouse move on two views, how to let both of them handle the `ACTION_MOVE` event
Tracking Movement
2014年2月2日 星期日
const修飾字的各種情況解釋
- 首先記住,下面兩種情況是一樣的,都是修飾x是不能被改變的,沒問題。
const TYPE x;
TYPE const x;
判斷方式 ,
1. 先將其TYPE 與 變數分離,若星號(*) 右邊有變數則依賴此變數。2. 再將const畫修飾線至TYPE,搞定!!
- 以下為各種常見的配合,請搭配上述方法判斷:
- char* const p; /*指標本身為不可更改*
- const char *p; /*指標所指的內容為不可更改*/
- char const *p; /*指標所指的內容為不可更改*/
- const int *fun(); /*函數所返回的指標內容為不可更改*/
- int* const fun(); /*函數所返回的指標本身為不可更改*
2014年1月26日 星期日
Build beagleboard-xM of linux kernel and driver modules by 2.6.32 version
- Build BB-xm's Linux Kernel by 2.6.32:
- 日後都採用這個repositories , 穩定版本 , 裡面還有其他branch是不同的MCU!!
- $export ARCH=arm CROSS_COMPILE=arm-angstrom-linux-gnueabi-
- $make distclean
- $make omap3_beagle_defconfig #(on the arch/arm/configs )
- $make memuconfig
- $make uImage
- $make modules # if build the modules
Angstrom Cross Compiler ToolChain 新載點
網路上所有的Angstrom cross compiler toolchain 載點幾乎全都掛點了,
因此讓我緊張一下 , 好加在在我強大的Google Search 下 , 終於給我找到嚕~
-----------------------------------------------------------------------------------------------------------
Here
裡面還有很多其他版本的 ToolChain , 64bit(x86_64) , 32bit(i686) .
因此讓我緊張一下 , 好加在在我強大的Google Search 下 , 終於給我找到嚕~
-----------------------------------------------------------------------------------------------------------
Here
裡面還有很多其他版本的 ToolChain , 64bit(x86_64) , 32bit(i686) .
2014年1月20日 星期一
訂閱:
意見 (Atom)









