2014年12月16日 星期二

Windows Android Studio - No JVM Installation found

有一種情形是 你事先裝了32Bit的版本
可是現在的Android Studio會建議你使用64Bit
所以你必須先下載64Bit的JDK
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
前往 控制台\系統及安全性\系統
點選進階系統設定/進階/環境變數
新增一個環境變數JDK_HOME 指向你64Bit的JDK檔案
再開啟一次Android Studio 就完成了

以上參考至此:
http://stackoverflow.com/questions/24898684/android-studio-no-jvm-installation-found

Linux中 Android Studio Error:Failed to find: com.android.support:appcompat-v7:21.+

基本上安裝需要的套件一下就能解決
但是Linux環境下 由於安裝路徑
可能會存在只有Root才可使用的檔案
請將這個檔案的權限修改為使用者可以寫入的權限
(我的檔案是temp檔)

Anroid Studio Error:compileSdkVersion android-21 requires compiling with JDK 7

請將你的JDK路徑修改成/usr/lib/jvm中的第7版即可

2014年11月26日 星期三

Android資源 VerticalProgressBar

由於Android原先並沒有提供垂直型的ProgressBar
這邊有Halzhang別人寫好的 VerticalProgressBar 大家可以參考利用看看

https://github.com/halzhang/Android-VerticalProgressBar

2014年11月23日 星期日

Android Warning:onTouch should call View#performClick when a click is detected

public boolean onTouch(View v, MotionEvent event) {
    switch (event.getAction()) {
    case MotionEvent.ACTION_DOWN:
        //some code....
        break;
    case MotionEvent.ACTION_UP:
        v.performClick();//這邊必須補上 否則會有此警告
        break;
    default:
        break;
    }
    return true;
}
參考答案:http://stackoverflow.com/questions/24952312/ontouchlistener-warning-ontouch-should-call-viewperformclick-when-a-click-is-d

Eclipse:workspace in use or cannot be created choose a different one

前往你的workspace資料夾
並且進入.metadata資料夾
並刪除.lock檔案

2014年11月17日 星期一

轉貼:Android 自定義Dialog

http://loginleft.iteye.com/blog/1975980
http://www.cnblogs.com/and_he/archive/2011/09/16/2178716.html
http://www.dotblogs.com.tw/superlm102/archive/2013/02/05/90118.aspx
http://www.cnblogs.com/archie2010/p/3256047.html

2014年11月16日 星期日

轉貼:Git教學 那些老師沒教的事

很大的一份簡報 共238頁
有機會來好好研究一下
http://www.slideshare.net/taichunmin/ss-16096723

2014年11月13日 星期四

Android Studio快捷鍵

Ctrl + Space:程式碼提示
Ctrl + Alt + L:我自訂的自動縮排(因為Linux有衝突 所以我改成Ctrl + Shift + Q)
Ctrl + Y : 刪除整行程式碼
Ctrl + D 有選取部份:複製又貼上/沒選取:貼上
Ctrl + Shift + / :/* */
Ctrl +  / ://
Ctrl + B:顯示錯誤點(同Ctrl + 左鍵)
Shift + F10:執行
Ctrl + Shift + Space:方法的參數提示
Ctrl + F4:關閉頁面

Ctrl + ~:編輯環境的設定
Alt + 左右方向鍵:往...換頁面
Alt + 6:顯示Log Cat (Mac : Command + 6)
Ctrl + F:尋找文字
Ctrl + ~:尋找並取代
Shift + F6:重新命名
其他
Ctrl + N:在編輯器中打開任何Class
Ctrl + Q:觀看類別或方法的文件
Ctrl + F12:導航目前編輯的檔案
Ctrl + Ooverride methods of the base class
Alt + Insertgenerate getter and setter methods for any fields of your class.

2014年11月12日 星期三

Linux Android Studio 自動縮排快捷鍵問題

由於Android Studio的自動縮排快捷鍵是
Ctrl + Alt + L
這個跟Linux的鎖住畫面是相同的
所以你按下Ctrl + Alt + L 你會先被鎖住畫面

因此我們必須修改快捷鍵 前往
File -> Settings -> Editor -> Keymap -> MainMeny -> Code下的Reformat Code
為它添加新的快捷鍵或者是做修改
例如Ctrl + Shift + Q
(這邊很多快捷鍵多被設定過了
要找沒有被設定過的快捷鍵其實還滿難找的)

Kali Linux 安裝Android Studio

首先請自這邊下載
https://developer.android.com/sdk/installing/studio.html

前往Downloads/
cd Downloads/
解壓縮
sudo unzip android-studio-ide-135.1538390-linux.zip
請用root權限來操作 因為一開始他沒有給使用者很大的權限
我們先把他移到~來
sudo mv android-studio ~
給予權限 757
chmod 757 android-studio/
接下來我們要開啟Android Studio 進入android-studio資料夾
cd android-studio/
進入bin檔 可是缺乏權限 所以我們給個權限
sudo chmod 757 bin
再進入bin檔 
cd bin/
sh裡面的studio.sh就可開啟 可是一樣有缺乏權限的問題 
sudo chmod 757 studio.sh 
執行 成功開啟Android Studio
sh studio.sh 

轉貼:新版eclipse 出現appcompat的問題

解法在此 新版問題還滿多的
難怪有些人跑去弄Android Studio了
http://jpress.tw/android-project-error-appcompat_v7-other-problem

2014年11月11日 星期二

轉貼:Kali Linux Eclipse 快捷键(alt + /)失效

這問題也有人在Ubuntu出現過 請參考這邊
http://duanyong.iteye.com/blog/397511

轉貼:Kali Linux安裝TeamViewer 以一般方法無法安裝之解法

2 Answers的方法雖然步驟滿多的
但是我有成功 大家可以試試看
http://askubuntu.com/questions/362951/installed-teamviewer-using-a-64-bits-system-but-i-get-a-dependency-error

2014年11月10日 星期一

Kali Linux 安裝Genymotion步驟(尚未完全解決)

首先辦個帳號 步驟不多 以後也用得到
之後前往官網下載Genymotion
由於Kali是Debain的版本 所以選擇Linux Debian 64 bits
不過也因為只有64bits 所以32bits我就不清楚囉
https://cloud.genymotion.com/page/launchpad/download/

載好之後開啟會有問題
之後前往Downloads/開始安裝
cd Downloads/
但是缺乏權限所以加入執行權限
sudo chmod +x genymotion-2.3.0_x64_debian.bin
執行開始安裝
./genymotion-2.3.0_x64_debian.bin

安裝完後直接開啟Genymotion會有問題
因為沒有裝VirtualBox 先到下面的網址去
https://www.virtualbox.org/wiki/Linux_Downloads
開始挑版本 我們先看看自己的版本適合哪種
cat /proc/version 
本人得到
Linux version 3.12-kali1-amd64 (debian-kernel@lists.debian.org) (gcc version 4.7.2 (Debian 4.7.2-5) ) #1 SMP Debian 3.12.6-2kali1 (2014-01-06)
所以我是amd64 再來請選擇Debian 7.0 ("Wheezy")
因為6.0的Kali好像不適用 我安裝會失敗

接著要安裝一個Kali沒有的東西 dkms
因為安裝VirtualBox會用到 我們要先安裝
sudo apt-get install dkms
(官網在這邊也有提到:https://cloud.genymotion.com/page/faq/#vbox)

安裝dkms好後前往Downloads/
cd Downloads/
再來開始安裝VirtualBox
sudo dpkg -i virtualbox-4.3_4.3.18-96516~Debian~wheezy_amd64.deb 

後續的VirtualBox會有問題(其實是Waring 但這會導致Genymotion無法正確開啟)
我花了1天才解決 是在進行超多次的測試 之後重開機才成功的
所以我也不清楚我是如何完成的
我差點都放棄了 是一直拿錯誤訊息去Google才做到的...

Kali Linux 建制Android開發環境會出現的問題

android-sdks/build-tools/17.0.0/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory

可參考網址如下
http://stackoverflow.com/questions/17020298/android-sdks-build-tools-17-0-0-aapt-error-while-loading-shared-libraries-libz

2014年11月9日 星期日

Linux *.zip

壓縮:
 [ jonny@linux ~ ] $ zip FileName.zip DirName
解壓縮:
 [ jonny@linux ~ ] $ unzip FileName.zip

詳細可參考這位大大的文章:
http://note.drx.tw/2008/04/command.html

Linux 執行安裝檔

sudo dpkg -i [安裝檔檔名]

Kali Linux Chrome亂碼問題

先安裝字體
http://wenq.org/wqy2/index.cgi?ZenHei
再改字體
http://blog.csdn.net/lzqlgq/article/details/23126651

2014年11月3日 星期一

轉貼 : Android SharedPreferences 教學

http://givemepass.blogspot.tw/2011/11/sharedpreferences.html

轉貼:Android匯出APK

http://sing522.pixnet.net/blog/post/36819992-%7Bandroid%7D-%E5%A6%82%E4%BD%95%E5%8C%AF%E5%87%BAapk%EF%BC%8C%E5%9C%A8%E6%89%8B%E6%A9%9F%E4%B8%8A%E5%AE%89%E8%A3%9D%E4%BD%BF%E7%94%A8!!

2014年11月2日 星期日

layout margin

http://stackoverflow.com/questions/19342269/create-and-set-margin-programmatic-for-relative-layout-android

ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mView.getLayoutParams();
params.topMargin += 20;
mView.requestLayout(); // important

轉貼 : Android藍芽大攻略

http://fecbob.pixnet.net/blog/category/1806983

2014年10月26日 星期日

2014年10月23日 星期四

Java百分比

http://zhidao.baidu.com/question/575912742.html
注意 必須使用Double
若用Int/Int 你會得到0%

2014年10月6日 星期一

VideoView OnClickListener?

http://stackoverflow.com/questions/6175456/android-why-cant-i-give-an-onclicklistener-to-a-videoview

2014年10月5日 星期日

Java 小數第幾位

float fcalc = (float)3.14159;
NumberFormat nf = NumberFormat.getInstance();
nf.setMaximumFractionDigits( 2 );    //小數後兩位
System.out.println( "a / b = " nf.format( fcalc ) );

2014年9月26日 星期五

AlertDialog的順序

假設今天有2個AlertDialog adA跟adB
先執行adA.show();
在執行adB.show();
你會發現adB會先出來在上面
解結完adB之後 才會出現adA

這其實有點LIFO後進先出的概念

2014年9月19日 星期五

ProgressBar 設定高度寬度

http://stackoverflow.com/questions/5008059/change-the-width-of-a-progressbar-added-at-runtime

2014年8月24日 星期日

setContentView()時OOF

在manifast.xml中的application標籤
加入android:largeHeap="true"

可參考文章
http://hilary3113.iteye.com/blog/1766856

2014年8月21日 星期四

寫給大家的 Git 教學

http://littleb.tc/slides/2012/everyone/git.html
第三版
2012 Littlebtc (Hsiao-Ting Yu)
改寫自 Scott Chacon 的「Pro Git」電子書。

2014年8月19日 星期二

Library Project

最近準備要把專案整合
但是我對Android的Library非常不熟悉
之前弄老是出錯 而且還有各式各樣錯
所以就乖乖做個Test Cast
找出問題的點到底出在哪兒

於是我開了個專案 簡稱PA
再開了另一個專案 簡稱PB
我在PA的Activity中設了個按鈕
想要跳到了PB的Activity
萬事俱備後 我把PB調成is Library
然後調配PA的manifast
接下來開始Run

按鈕按下去 畫面閃了一下
我還是在PA的Activity
我檢查了一下我的Intent 並沒有出錯
卡了一段時間 我受不了把Eclipse關掉
然後在Run一次 結果就正常運行了

這根本是莫名其妙
哪有IDE要關掉重開才能正常跑的
不過今天早上才遇到Log跑不出來
結果Eclipse重開就好了...的這種鳥事

但是這種問題真的很誇張
我必需求證到底是 鬼月怪事多 還是Eclipse的問題
所以我又在開了個專案 簡稱PC
同樣發生了上述的怪事!
同樣發生了上述的怪事!
因為發生了兩次所以我也要說兩次
真的 關掉Eclipse 再開 就能正常跑了

雖然我過去學Android的時候就知道
Eclipse重開可以解決很多事情
但是這種的也太嚴重
開始對開源的東西感到有點無奈了  哈哈哈

2014年8月17日 星期日

AeryTimer

http://aery9527.pixnet.net/blog/post/183715679-java---%E7%B0%A1%E6%98%93%E8%90%AC%E7%94%A8%E8%A8%88%E6%99%82%E5%99%A8

計時器 可以固定每n毫秒做某件事情
或者是當計時器被停止時做另一件事情

要注意的是 計時器也是占用一個Thread
所以如果有要在計時器中操作UI的話
記得要用Handler或runOnUiThread來做額外處理

TextProgressbar

http://www.coderzheaven.com/2012/05/18/custom-progressbar-android-text-part-3/

Android的Progressbar是沒有搭配文字的
這邊有個客製化的TextProgressbar
可以使用文字(value/max之類...等等)

2014年8月15日 星期五

NumberPicker於xml設定最大最小值

想在AlertDialog做個自己的View
上面放2個NumberPicker來調整時間(MM:SS)
結果寫完才發現 NumberPicker於xml完全不給調整最大最小值
只能在Java寫 當下我整個傻眼

幸好找到這篇文章 找到了解決方案
就是寫一個客製化的NumberPicker 就可以設定了
參考以下文章 好文一篇!
http://stackoverflow.com/questions/12317960/android-numberpicker-set-min-max-default-from-xml

2014年8月11日 星期一

SlidingDrawer不因為其他View而影響拖拉範圍

<Relativelayout>

  <Linearlayout>
    <!--其他內容-->
  </Linearlayout>

  <Slidingdrawer>
    <!--SlidingDrawer的內容-->

  </Slidingdrawer>

</Relativelayout>

只要有LinearLayout框住其他的View
就不會產生SlidingDrawer因為其他View
而無法完全脫拉出來的問題

以最省記憶體的方式換背景

如果你在設定背景圖片時 發現出現記憶體不足的問題(Out of Memory 異常)
可以考慮使用以下的Code
// Minimize 類別
public class Minimize {
  /**
    * 以最省記憶體的方式來存取圖片
    *
    * @param context
    * @param resId
    * @return
    */
  private static Bitmap readBitMap(Context context, int resId) {
    BitmapFactory.Options opt = new BitmapFactory.Options();
    opt.inPreferredConfig = Bitmap.Config.RGB_565;
    opt.inPurgeable = true;
    opt.inInputShareable = true;
    // 獲取圖片資源
    InputStream is = context.getResources().openRawResource(resId);
    return BitmapFactory.decodeStream(is, null, opt);
   }
 
  //將redId採取Bitmap 再轉成BitmapDrawable 就可以setBackground()了
  public static BitmapDrawable getBitmapDrawable(Context context,int redId){
    Bitmap bm = readBitMap(context, redId);
    BitmapDrawable bd = new BitmapDrawable(context.getResources(), bm);//轉換成Drawable
    return bd;
   }
  }
  //之後設定背景
  RelativeLayout background = (RelativeLayout) findViewById(R.id.map);
  background.setBackground(Minimize.getBitmapDrawable(this,
    R.drawable.map_relaxbg));

2014年8月4日 星期一

設定全螢幕及設定橫向

//在AndroidManifast.xml中的activity加入
<activity
            android:name="com.hifive.toystage.ToyActivity"
            android:label="@string/app_name"
            android:screenOrientation="landscape"
            android:theme="@android:style/Theme.NoTitleBar" >


  //以下方法並不適用 他會先出現標題之後再轉成無標題的怪異行徑
  //若要採用 請記得放至setContentView()的前面
  
  private void setWindows() {
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
    WindowManager.LayoutParams.FLAG_FULLSCREEN);//設定全螢幕
    requestWindowFeature(Window.FEATURE_NO_TITLE);//設定無標題
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);//設定橫向
  }

拖曳物件

http://gundumw100.iteye.com/blog/924886

Collision Checking 碰撞偵測

http://blog.csdn.net/zeroblack/article/details/16867821

Service & BroadcastReceiver

Service大彙總

Started Service

Bind Service

當Acitivty退出 Service也會持續運作的方法

備註 : 新增Service記得要註冊


BroadcastReceiver大彙總

BroadcastReceiver完整介紹

Intent的Action大全

備註 : 動態註冊法在onCreate()中註冊比較好 然後在onDestory中進行銷毀。
另有一說是在onResume()註冊 然後在onPause銷毀

若使用使用靜態註冊法 記得在AndroidManifest.xml加入權限
靜態註冊法加入方法為:
AndroidManifest.xml -> Application -> 加入一個Receiver並將Name設定好 ->
再往剛剛設定好的Receiver加入Intent Filter ->
再往剛剛設定好的Intent Filter加入Action ->
設定Action 的Name

SQLite Foreign Key

CREATE TABLE parent(a PRIMARY KEY, b UNIQUE, c, d, e, f);
CREATE UNIQUE INDEX i1 ON parent(c, d);
CREATE INDEX i2 ON parent(e);
CREATE UNIQUE INDEX i3 ON parent(f COLLATE nocase);

CREATE TABLE child1(f, g REFERENCES parent(a));
-- Ok
CREATE TABLE child2(h, i REFERENCES parent(b));
-- Ok
CREATE TABLE child3(j, k, FOREIGN KEY(j, k) REFERENCES parent(c, d));
-- Ok
CREATE TABLE child4(l, m REFERENCES parent(e));
-- Error!
CREATE TABLE child5(n, o REFERENCES parent(f));
-- Error!
CREATE TABLE child6(p, q, FOREIGN KEY(p, q) REFERENCES parent(b, c));
-- Error!
CREATE TABLE child7(r REFERENCES parent(c));
-- Error!