SiteMap

2014年5月9日金曜日

Firefox - userChrome Script


找到 firefox 的 profile 資料夾,
不知道的請按照下面步驟
Help →  Troubleshooting Information → Profile Folder → 按下show Folder


2014年5月1日木曜日

eclipse - 建立新Android Project的時候出現 java.lang.NullPointerException

剛剛新建立而已就出現了, 好吧不管你, 先來調整一下 xml 檔案
結果每點一下 xml 檔案的視覺介面( Graphical Layout ),
或者是直接 ctrl + o

都直接跳錯誤出來,

好吧, 在這種情況下只有跪了 0rz....

上網爬了下文, 弄新的 workspace 就可以解決

我熱淚盈眶阿我, 之前 new project 的介面莫名其妙多個 fragment.xml
的 Layout

再加上今天, 我.... 我 workspace 的更換數目已經到了 13 !!
而且看來以後還會新增下去

13, 這個數字多麼奇妙


Ref.
http://stackoverflow.com/questions/18091333/java-lang-nullpointerexception-when-creating-first-android-app-in-adt-mac-bundle

2014年4月26日土曜日

Android - SD Card

在 4.0 後,
Environment.getExternalStorageDirectory().getAbsolutePath();
得到的是內建的儲存空間

因為有些機種可以外接SD卡, 有些不行, 而 Android 沒有提供取得外接SD卡的方法,

2014年4月23日水曜日

MAC - shortcut


fn + "UP" arrow = page up
fn + "Down" arrow = page down
fn + "Right" arrow = move cursor to the end of line
fn + "Left" arrow = move cursor to the start of line

fn + delete = delete word after current cursor position


In windows 7

fn + ctrl + "Left" arrow = Home
fn + ctrl + "Right" arrow = End

ctrl + alt + "UP" arrow = screen turn to  0 angle (restore the default angle)
ctrl + alt + "Down" arrow = screen turn to 180 angle
ctrl + alt + "Left" arrow = screen turn to 270 angle
ctrl + alt + "Right" arrow = screen turn to 90 angle

Ref

http://support.apple.com/kb/HT1343

http://forums.macrumors.com/showthread.php?t=665383

Eclipse - Logcat

什麼是 Logcat ?

(暫無)

設定視窗( in Eclipse)

Window → Preferences → Android → Logcat

打開訊息視窗

Window → Show View → Other → Android → Logcat

2014年4月8日火曜日

Android - Toast 顯示很慢

   Toast可以用來顯示音量改變或者保存更新消息,如果用戶一直點擊,Toast會排隊一個一個的,直到消息隊列全部顯示完,這樣的效果顯然是不好的,下面來看解決方法

    Toast.makeText(activity, text, duration)每次會實例化一個Toast,所以

01 if (toast != null)
02    {
03        toast.setText(text);
04        toast.setDuration(duration);
05        toast.show();
06    } else
07    {
08        toast = Toast.makeText(activity, text, duration);
09        toast.show();
10    }

Android - Change Default Activity

Use the AndroidManifest.xml file, you can actually even have more than one launcher activity specified in your application manifest. To make an activity seen on the launcher you add these attributes to your activity in the manifest


        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>


Ref.
http://stackoverflow.com/questions/3631982/change-applications-starting-activity-android
http://stackoverflow.com/questions/9704898/how-to-set-my-activity-as-main-activity-in-android 

2014年4月6日日曜日

Android - ViewPager的使用, 左右滑動效果

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.support.v4.view.ViewPager

參照 官方 API 
看得出來 ViewPager 不在既定的 android sdk 裡面, 在 3.0 以前要自己
導入 android-support-v4.jar

drawable 裡面檔名限制
有張圖片檔名 04_065.jpg 能放進去, 但是要使用會出錯, R檔案也會有個錯誤符號
後來嘗試更改檔名, eclipse 告訴我
" The resource name must begin with a character. "
所以前面隨便加個英文字就ok


PS.
android-support-v4.jar路徑
android-sdk\extras\android\support\v4
現在直接 download Android SDK 的話大部分都直接附在裡面了

Ref.
[DEVDIV原创] 使用ViewPager实现左右滑动效果
http://www.devdiv.com/forum.php?mod=viewthread&tid=125963&extra=page%3D1%26filter%3Dtypeid%26typeid%3D381%26typeid%3D381

[DEVDIV原创] 使用ViewFlipper实现左右滑动效果
http://www.devdiv.com/forum.php?mod=viewthread&tid=125943&extra=page%3D1%26filter%3Dtypeid%26typeid%3D381%26typeid%3D381


2014年4月5日土曜日

Android - java.lang.OutOfMemoryError 解決方法

01.
檢查一下程式裡頭的迴圈, 是不是太複雜了
02.
重新建立個虛擬 Android , 將 Heap 數值設定大一點





Ref.
[Java] java.lang.OutOfMemoryError 的解決方法
http://www.neo.com.tw/archives/482

完美解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget
http://blog.csdn.net/yangxyjd/article/details/6932989


2014年3月25日火曜日

Java - String 與 Int 互轉, String 與 Char[] 互轉


In Java

假設有個 char[]

String to int

String str = "1234"

int str2int = Integer.parseInt(str); // 會得到 1234, 如果要印出 a(或者中文字) 的 ASCII 碼的話
int str2int = Integer.valueOf(str); // 請用 sysout((int)'a');
int str2int = Integer.valueOf(str).intValue();

int to String

int value = 100;
String str = String.valueOf(i);
String str = Integer.toString(i); // 繼承自 Object 的 Method, 效果同方法名稱一樣
String str = "" + i; // 我喜歡用這個, 很方便

String to char[]

String str = "asdf";
char[] charArr = str.toCharArray();

char[] to String

char[] charArr = {'出', '包', '真', '好', '看'};
String str = new String(charArr);

PS.
要印出 char[] 裡面東西的話
sysout( charArr ); 就可以了

但是如果加上一段字串的話, charArr的部分只會印出記憶體位址
sysout("呵呵" + charArr); // charArr 只會印出在記憶體裡面的位址

sysout("呵呵" +  new String(charArr)); // 這樣才會把字串跟 charArr[] 完整印出來

Ref.
Eng    Tai          Chi
bit,     位元,      位
Byte,  位元組,   字節
char,   字元,      字符
word,  字,         字組

Bit rate 位元率  比特率

中文詞彙地區差異比較——#11「字節」與「位元組」
https://www.byvoid.com/blog/region-phrases-comparison-byte/
字节
http://baike.baidu.com/view/60408.htm#2_4
C++字串與字元陣列的互轉
http://blog.xuite.net/oldcat.wu/OBProgram/63748495-%E5%AD%97%E4%B8%B2%E8%88%87%E5%AD%97%E5%85%83%E9%99%A3%E5%88%97%E7%9A%84%E4%BA%92%E8%BD%89

2014年3月20日木曜日

Detect Doc Encoding

BOM: Byte Order Mark

UTF-8
-17, -68, -65
 EF, BB, BF


Java 讀取Big5編碼轉換成UTF8


String s="政府會好好把關,輕輕檢查";
new String(s.getBytes("BIG5"),"UTF8");
###Java 中我們可以使用String.getBytes("指定編碼")讀取出字串編碼byte,在使用new String(bytes,"新編碼")來轉換成需要的編碼字串。使用BIG5來獨區依然會造成部份自無法轉成UTF8正常顯示。
解決方法: 使用MS950或CP950來解碼
s=new String(s.getBytes("MS950"),"UTF8");

但是要讀取文件的話, 必須要先知道文件的編碼方式是用了甚麼來編碼

在java中常常遇到文件讀寫的問題,有時候需控制讀寫文件的編碼格式
方法如下:

讀取文件

假設你要讀取的文件是用 UTF-8 來編碼
FileInputStream fis = new FileInputStream(path);
InputStreamReader isr = new InputStreamReader(fis,"UTF-8"); //UTF-8 可以小寫
BufferedReader br=new BufferedReader(isr);

寫入文件

使用 UTF-8 的編碼來寫入檔案
FileOutputStream stream;// provides file access
OutputStreamWriter writer;// writes to the file 
 
stream = new FileOutputStream(filename);
writer = new OutputStreamWriter(stream,"UTF-8");   



Ref.
cpdetector
http://cpdetector.sourceforge.net/index.shtml
Java判斷文件編碼格式
http://fecbob.pixnet.net/blog/post/39393899-java%E5%88%A4%E6%96%B7%E6%96%87%E4%BB%B6%E7%B7%A8%E7%A2%BC%E6%A0%BC%E5%BC%8F-
判定文件编码或文本流编码的方法http://www.iteye.com/topic/108540
java读文件和写文件编码方式的控制
http://my.oschina.net/haquanwen/blog/158952
Jota Text Editor
https://play.google.com/store/apps/details?id=jp.sblo.pandora.jota
Java プログラミング(基礎と応用) 
http://antlers.cis.ibaraki.ac.jp/
ファイル処理(2)文字ストリーム(入力:ファイル、出力:画面)
http://antlers.cis.ibaraki.ac.jp/PROGRAM/JAVA/FILE/j621b.htm
ファイル処理(2)文字ストリーム(入力:ファイル、出力:画面)
http://antlers.cis.ibaraki.ac.jp/PROGRAM/JAVA/FILE/j621a.htm
[ Java常見問題 ] 判斷文件編碼是否為UTF-8
http://puremonkey2010.blogspot.tw/2010/10/java-utf-8.html?m=0
http://antlers.cis.ibaraki.ac.jp/PROGRAM/JAVA/FILE/j621a.htm
Java指定编码读写文件(UTF-8)
http://gaofeihang.blog.163.com/blog/static/8450828520098241202798/
[Charset]UTF-8, UTF-16, UTF-16LE, UTF-16BE的区别
http://mocha-c-163-com.iteye.com/blog/583064
【转】File,FileInputStream,FileReader,InputStreamReader,BufferedReader 的使用和区别
http://hi.baidu.com/yumin87/item/78dbb21a20d62709e75c36a3
[分享] 編碼轉換的程式碼 
http://www.javaworld.com.tw/jute/post/view?bid=35&id=184801&sty=3
JAVA判断输入流字符编码的困惑
http://blog.csdn.net/gaolu/article/details/6170518
java字符编码转换研究(转) 第二部分收藏                 
http://zdsfwy.blog.51cto.com/2400848/1174272

2014年3月18日火曜日

Android - adb shell指令加上使用DDMS,增刪SD card的資料

adb - Android Debug Bridge

adb採用監聽Socket TCP 5554等端口的方式讓IDE和Qemu通訊,默認情況下adb會daemon相關的網絡端口,所以當我們運行Eclipse時adb進程就會自動運行。

1.通過adb可以輕鬆的執行Linux Shell命令,進入設備或模擬器的shell:adb shell就可以進入模擬器的shell環境中。也可以執行各種Linux的命令,其命令格式為:adb shell command
範例:
adb shell dir 就是列舉目錄,在Linux中根目錄為/而不是Windows上的C磁碟、D磁碟
adb shell dmesg 會列印出Linux的debug訊息。
2.安裝apk程序到模擬器則執行adb install android123.apk,這樣名為android123的安裝包就會安裝到Android模擬器中,前提是android123.apk文件需要放到SDK\Tools目錄下。
3.向emulator傳送文件,使用adb push android123.txt /tmp/android123.txt命令可以把SDK\Tools下的android123.txt文件傳輸到模擬器的/tmp/文件夾中,需要注意的是/tmp/文件夾中內容會在Android模擬器新啟動時清空。除了說明了使用ADT插件中DDMS外,如圖
4.從Android模擬器中回傳文件到電腦
通過adb pull /tmp/android123.txt android123.txt命令就會把模擬器的tmp文件夾下android123.txt文件回傳到電腦SDK\Tools目錄下。

繼續android adb命令相關介紹,除了可以方便的安裝apk文件、pc和Android模擬器互傳資料外還有Android Debug Bridge一些輔助的功能。
1.如果在Eclipse中發現有* daemon not running. starting it now *的提示可以結束adb
adb kill-server

2.顯示android模擬器狀態
adb devices 端口號等信息,執行後會顯示TCP端口號
adb get-product 獲取設備型號
adb get-serialno 獲取序列號

3.等待正在運行的設備
adb wait-for-device
4.端口轉發
adb forward adb forward tcp:5555 tcp:1234 實現將默認的TCP 5555端口轉發到1234端口上

5.查看bug報告
adb bugreport

Android - How to mount the SDCard image file to Android Emulator
(1)首先必須產生SDCard的image file
mksdcard: create a blank FAT32 image to be used with the Android emulator
usage: mksdcard [-l label]
if is a simple integer, it specifies a size in bytes
if is an integer followed by 'K', it specifies a size in KiB
if is an integer followed by 'M', it specifies a size in MiB

ex:mksdcard 1024M sdcard.iso



(2)讓SDCard連到Android Emulator
a:./emulator -sdcard ~/.android/SDK-1.0/sdcard.iso
b:用Eclipse中設定程式的Open Run Dialog裏,Target頁籤的Aditional Emulator Command Line Option中加入啟動參數 -sdcard scard.iso

(3)透過adb傳收檔案到emulator
adb push
adb pull
ex:
adb push ~/mp3/audio.mp3 /sdcard/audio.mp3

linux底下也可以使用,來管理
mount -o loop sdcard.img android_sdcard

(4)進入emulator的shell
adb shell
Ref:
http://www.android123.com.cn/moniqi/54.html
http://www.android123.com.cn/moniqi/55.html
http://blackdidi.wordpress.com/2008/10/10/android-how-to-mount-the-sdcard-image-file-to-android-emulator/
http://www.android123.com.cn/moniqi/48.html

官方ADB文件:
http://code.google.com/android/reference/adb.html


DDMS可以插入、刪除檔案file,但是不能增刪目錄directory(資料夾),需使用adb 指令:
ls - 顯示檔案目錄
cd - 進入目錄
cd .. - 回到上一層目錄
rm - 刪除檔案
mv - 移動檔案
mkdir - 產生目錄
 
rmdir - 刪除目錄

使用windows 命令提示字元之詳細步驟:
1.CD C:\Android\AndroidSDK\android-sdk-windows\tools
  新版 android-sdk_r10-windows CD C:\android-sdk\platform-tools
到tools資料夾
2.adb shell
開啟adb shell
3.cd sdcard
到 sdcard
4.mkdir images
增加目錄images
5.rmdir images
刪除目錄images
6.adb push C:\..\image /sdcard/image
將C:\..\image的目錄(資料夾含內檔案) 複製到 /sdcard/images的目錄


2014年3月17日月曜日

TextView 設定粗體 斜體 底線

字型 TypeFace
字體 Font


----
textView.setTypeface(textView.getTypeface(), Typeface.BOLD);
textView.setTypeface(textView.getTypeface(), Typeface.ITALIC);
textView.setTypeface(textView.getTypeface(), Typeface.BOLD_ITALIC);
----
You can set Directly in XML file in <TextView /> like:
android:textStyle="normal"
android:textStyle="normal|bold"
android:textStyle="normal|italic"
android:textStyle="bold"
android:textStyle="bold|italic"
----
Ref.
「字型入門」字型字體,傻傻分不清楚
http://www.advertisingfan.net/2011/05/fonts-vs-typeface.html

[Android] 按鈕置換文字顏色及字型 Typeface
http://style77125tech.pixnet.net/blog/post/17032697-%5Bandroid%5D-%E6%8C%89%E9%88%95%E7%BD%AE%E6%8F%9B%E6%96%87%E5%AD%97%E9%A1%8F%E8%89%B2%E5%8F%8A%E5%AD%97%E5%9E%8B--typeface





從 xml 設定 TextView 字體大小


<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_toRightOf="@+id/imageView1"
android:textSize = "44sp"
android:text="TextView" />

上述highline的地方,單位是sp 就可以設定文字大小



2014年3月1日土曜日

Android - Remove Title Bar & Notification Bar (Full Screen)

Remove Title Bar & Notification Bar (Full Screen)
(Hide Title Bar & ...)

我知道的方法大致上分為兩種,
01.寫在 java 程式碼裡頭
02.修改 Manifest 或者 xml

2014年2月26日水曜日

使用google提供的driver來進行android程式實機測試

最近要拿 GT-i9000 來測試 剛寫好的程式
不過 eclipse 抓不到 i9000 ( DDMS 上面找不到 )

發現原來 沒灌 Samsung 的 kie ( 這東西裝完後會順便裝驅動程式 )

不過問題來了, 灌完 kie 之後還是抓不到,
( 使用裝置管理員去更新驅動一樣 )
不知道是否刷了第三方 ROM 的關係,
我又不想刷回官方 ROM ( 查了一下只到Android 2.3 左右 )
畢竟現在手上 i9000 的第三方 ROM 版本到 4.0.4

adb kill-server 也試過, 無效
adb devices 看不到裝置

偏偏 我的 mac 安裝完 Samsung 官網上面的 mac 版本 kie 之後
mac 版本的 eclipse 就抓到手上這隻 i9000 了

最後我嘗試使用 google 提供的 usb driver 就成功了


以下是安裝 google usb driver 的一些紀錄

首先 要先下載 google usb driver, 我是從 android-sdk 提供的 SDK Manager
更新抓到的


sdk 更新完成後, 可以在 sdk 底下 extra\google\usb_driver 找到該驅動程式


啟動 裝置管理員 對 有驚嘆號的 i9000 滑鼠右鍵 更新驅動程式
將驅動程式路徑指向上面 sdk 存放驅動的資料夾

然後更新完成 i9000 的裝置名稱會變成 Android Device


接著 啟動 eclipse , DDMS就可以看到 i9000 了



如果沒有的話 執行 reset adb 試試看



執行專案的時候就可以使用 i9000 來實機測試
(選擇視窗會自動跳出讓你選擇)


實機畫面:



Reference:
如何使用裝置來編程
http://developer.android.com/tools/device.html#setting-up
OEM USB Driver
http://developer.android.com/tools/extras/oem-usb.html#Win7
Google Android SDK Release Notes(search "USB Driver")
http://developer.android.com/sdk/RELEASENOTES.html
MS Windows x86 and x64 USB Drivers for Samsung Galaxy S
http://forum.xda-developers.com/showthread.php?t=728929