SiteMap

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