2013年11月29日 星期五

[JAVA] 第一個 JAVA 程式 HelloWorld

第一個 JAVA 程式 HelloWorld

請至java.sun.com預先下載安裝好java sdk,開發環境,依32位元及64位元有不同版本,
jre 是使用者執行環境

使用文書編輯器輸入下列程式碼,存檔為HelloWorld.java 立即完成,簡單吧!!

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello! World!");
    }
}
一個最基本的Java程式完成了,接下來要編譯程式了,使用javac公用程式,如下所示:
打開命令提示字元畫面,輸入:

javac HelloWorld.java


編譯完成後,同一個目錄下會產生一個HelloWorld.class檔 案,在執行時期時可以由執行環境轉換為平台可執行的格式,要執行它必須使用 java公用程式,如下所示:

打開命令提示字元畫面,輸入:

java HelloWorld

程式畫面會顯示

Hello! World!

第一個程式完成!!

再來更進一步就要使用開發者的利器eclipse了

稍後介紹...


[JAVA] 猛虎出閘下載範例使用說明

猛虎出閘

是JAVA PROGRAMER 幾乎都聽過,讀過,甚至是考SCJP OCJP 國際證照必備的一本

以下介紹範例使用說明:

一.
請安裝:jdk-7u15-windows-x64.exe -- Java 7 JDK (64位元)
安裝步驟請參考:(第二部分)安裝 Java SE 7 的開發環境
二.
jdk-7u15-apidocs.zip -- JavaSE 7 API 開發文檔
請解壓縮至 C:\Program Files\Java\jdk1.7.0_15 下
安裝步驟請參考:(第二部分)安裝 Java SE 7 的開發環境
三.
請安裝:netbeans-7.2-ml-javase-windows.exe -- Netbeans IDE 開發工具
安裝步驟請參考:(第二部分)安裝 Java SE 7 的開發環境
四:
Java 7 Sample Code.zip
Netbeans 7.2 專案檔
1.解壓縮 Java 7 Sample Code.zip
2.開啟Netbeans > 檔案(F) > Open Project
五:
commons-lang3-3.1-bin.zip
Apache lang 資源包
1.將commons-lang3-3.1-bin.zip解壓縮到 C:\
2.於Netbeans中展開Java 7 Sample Code專案
3.選擇[程式庫] > Add JAR/Folder... > 匯入 "C:\commons-lang3-3.1\commons-lang3-3.1.jar"
4.匯入derby jar :
 4-1 : 選擇[程式庫] > Add JAR/Folder... > 匯入 "C:\Program Files\Java\jdk1.7.0_15\db\lib\derby.jar"
 4-2 : 選擇[程式庫] > Add JAR/Folder... > 匯入 "C:\Program Files\Java\jdk1.7.0_15\db\lib\derbyclient.jar"
 4-3 : 選擇[程式庫] > Add JAR/Folder... > 匯入 "C:\Program Files\Java\jdk1.7.0_15\db\lib\derbyLocale_zh_TW.jar"
 4-4 : 選擇[程式庫] > Add JAR/Folder... > 匯入 "C:\Program Files\Java\jdk1.7.0_15\db\lib\derbynet.jar"
 4-5 : 選擇[程式庫] > Add JAR/Folder... > 匯入 "C:\Program Files\Java\jdk1.7.0_15\db\lib\derbytools.jar"

[Wii & PSP GAME] 任天堂「Wii」及 PSP 平台的遊戲作品

任天堂「Wii」及 PSP 平台的遊戲作品列表


行動裝置手機平板的崛起,遊戲機的市場似乎有低迷的傾向,好遊戲只能日後慢慢回味

任天堂「Wii」平台的遊戲作品列表

動作類:
Wii第一次接觸
超級瑪利歐銀河2(中文版)
新超級瑪利歐兄弟Wii(中文版)
薩爾達傳說:天空之劍
壞利歐樂園大震盪
大金剛再起
魔物獵人3
惡靈古堡
朧村正
毛線卡比
星之卡比Wii
戰國BASARA3-宴
音速小子:繽紛色彩
潘朵拉之塔-直到你身邊
雷射超人瘋狂兔子:時光旅行
航海王無限巡航-第2章.覺醒的勇者
航海王無限巡航-第1章.波浪中的秘寶
風之少年-通往幻夢界之門
雷射超人:瘋狂兔子2
符文工廠:未知大地
超級紙板瑪利歐
惡靈古堡0
戰國無雙3
天誅 4
大神(日文版)
斬擊的女武神
音速小子4:第一章
SD鋼彈-膠囊大戰
古墓奇兵:地城奪寶
死亡復甦 殭屍祭品
傳奇米奇2:兩人之力
英雄不再2:垂死掙扎
星際大戰:原力解放2
火影忍者疾風傳-龍刃記
BLEACH死神-聖戰對決
洛克人10-來自宇宙的威脅
七龍珠 天下第一大冒險
波斯王子:遺忘之沙
越南大戰合輯
 
 
 
格鬥類:
任天堂明星大亂鬥X
龍之子 VS. CAPCOM 終極明星戰
火影忍者疾風傳-激鬥忍者大戰!EX3
七龍珠Z Sparking! METEOR
聖騎士之戰XXΛCore
惡魔城:審判
侍魂-六番勝負
 
 
 
射擊類:
惡靈古堡-黑暗面編年史
惡靈古堡-安布雷拉編年史
絕命異次元:異形源起
罪與罰:宇宙的後繼者
決勝時刻:現代戰爭3
式神之城3
死亡鬼屋:過度殺戮
空中殺手-無瑕王牌
 
 
 
競速類:
瑪利歐賽車Wii
極速快感:亡命天涯
音速小子滑板競速-流星故事
極速快感:熱力追緝
狂飆卡車
 
 
 
策略模擬:
SD鋼彈G世代-新世界
超級機器人大戰NEO
聖火降魔錄-曉之女神
SD鋼彈G世代-世紀戰役
牧場物語 歡樂動物進行曲
無人島求生記 Wii
通靈戰士Wii
魔法使者
 
 
 
驚悚類:
零-真紅之蝶
零-月蝕的假面
沉默之丘:破碎的記憶
恐怖體感-咒怨
忌火起草-解明篇
恐怖電話~不祥鈴聲~
 
 
 
冒險類:
銀河戰士:另一個M
銀河戰士Prime3:墮落
以Wii遊玩銀河戰士Prime
雷射超人瘋狂兔子-電視派對
鋼之鍊金術師:曉之王子
428被封鎖的涉谷
寶島Z:紅鬍子的秘寶
涼宮春日的並列
黑影之塔
 
 
 
角色扮演:
薩爾達傳說:曙光公主
弧光幻想曲
夢幻終章
異域神劍
勇者鬥惡龍10-覺醒的五個種族Online
時空幻境交響曲傳奇-拉塔特斯克的騎士
Final Fantasy 水晶編年史:水晶持有者
勇者鬥惡龍-劍神.假面女王與鏡之塔
時空幻境-美德傳奇
符文工廠-藍海奇緣
末世巡禮-再見了月之廢墟
Final Fantasy水晶編年史:我的魔王生活
陸行鳥不可思議的迷宮-忘卻時間迷宮
神奇寶貝-戰鬥革命
黃金羈絆
 
 
 
運動類:
Wii運動
Wii運動度假勝地(中文版)
Wii Fit-加強版(中文版)
NBA 2K11
魔法飛球2nd
瑪利歐派對9(中文版)
閃電十一人GO王牌前鋒2013
瑪利歐&索尼克AT倫敦奧運
以Wii遊玩瑪俐歐網球GC
WWE激爆職業摔角12
實況野球大聯盟2009
遊戲王5D's決鬥狂熱者
 
 
 
節奏音樂類:
歡樂舞蹈精選
太鼓之達人Wii-超豪華版
太鼓之達人Wii-大家同樂3
Wii音樂
吉他英雄:金屬搖滾
 

更詳細可參考下列網址

zh.wikipedia.org


PSP 遊戲列表

動作類:
戰神:斯巴達幽靈(中文版)
魔物獵人攜帶版3rd
噬神戰士-神機解放
戰神:奧林帕斯之鏈
小小大星球-攜帶版
潛龍諜影:和平先驅
時空幻境-英雄傳奇
人中之龍:黑豹2-阿修羅篇
無雙OROCHI蛇魔2-Special
魔物獵人日記-暖呼呼艾路村G
王國之心:夢中降生FINAL MIX
戰國無雙3Z-Special
黑豹.人中之龍-新章
秋葉原之旅 PLUS
音速小子-競爭者
惡魔城X:年代記
刺客教條:血緣
鋼彈激鬥宇宙
抓猴啦P!
討鬼傳
天誅 4
樂克樂克2
我們的塊魂
越南大戰XX
胖公主-蛋糕成堆
洛克人-反亂獵人X
古墓奇兵:重返禁地
喧嘩番長3-稱霸全國
超時空要塞-終極邊疆
伊蘇:菲爾迦納的誓約
大力工頭-晚霞木工物語
武裝神姬-戰鬥大師Mk.2
俠盜獵車手-自由城市傳奇
火影忍者疾風傳-終極震撼
鋼之鍊金術師-友情搭檔戰
捷克與達斯特:失落的邊境
異世界機器人大戰-攜帶版
機戰傭兵:沉默戰線-攜帶版
BLEACH死神-靈魂嘉年華2
機動戰士鋼彈回憶錄~歷戰回憶~
普里尼2-特攻遊戲!破曉的內褲大作戰!!
一騎當千-雄辯之拳
但丁的地獄之旅
極魔界村.改
公主之冕
 
 
 
格鬥類:
DISSIDIA 012 FINAL FANTASY(中文版)
蒼翼默示錄-連續變幻-擴充版
時空幻境-決鬥傳奇
劍魂:破碎的命運
魔法少女奈葉As攜帶版:命運的齒輪
暮蟬鳴泣時破曉時分-攜帶版
火影忍者疾風傳-終極覺醒3
FATE / 猛虎競技場-升級版
聖騎士之戰XXΛCore Plus
BLEACH死神-炙熱之魂7
戰國BASARA年代群雄
快打旋風ZERO3↑↑
威力之石:攜帶版
神劍闖江湖-完醒
七龍珠Z:真武道會2
家庭教師HITMAN REBORN!戰鬥競技場2靈魂爆發
SUNDAY vs. MAGAZINE集結!頂上大決戰
 
 
 
射擊類:
空戰奇兵X2:聯合突擊
機戰傭兵:最終掠奪
全面對抗:復仇時刻
衝吧!布魯喵俠(攜帶版)
榮譽勳章:鐵膽英豪2
瘋狂大射擊PSP
零・超兄貴
 
 
 
競速類:
跑車浪漫旅-攜帶版
閃電霹靂車VS
橫衝直撞:公路霸主
頭文字D-Street Stage
極速快感:進化世代
極速快感:臥底風雲
實感賽車2
 
 
 
策略模擬:
第2次超級機器人大戰Z:再世篇
第2次超級機器人大戰Z:破界篇
牧場物語:蜜糖村與村民的願望
Final Fantasy戰略版:獅子戰爭
勇者實在太囂張or2(中文版)
SD鋼彈G世代-超越世界
皇家騎士團2-命運之輪
戰場女武神3(加量版)
女王之刃-混沌螺旋
聖女貞德
聖劍同盟
光輝同盟
渾沌世代6
魔裝機神2
偶像大師SP
潛龍諜影ACID 2
魔界戰記2-攜帶版
超級機器人大戰OE
無限回廊echochrome
遊戲王5D's-雙重戰力6
戰場女武神2-加利亞王立士官學校
戰極姬-飛舞於戰亂的少女
美少女夢工場5-攜帶版
受讚頌者-攜帶版
 
 
 
驚悚類:
沉默之丘:破碎的記憶
沉默之丘:起源
 
 
 
冒險類:
絕體絕命都市3:步向毀壞的城市與少女之歌
我的暑假4-瀨戶內少年偵探團.我與秘密地圖
戀曲寫真
TIGER×DRAGON攜帶版!
秋之回憶7-打勾勾的回憶
天津御空!雲之盡頭
發明工坊-總合輯版
美夢俱樂部-攜帶版
428被封鎖的涉谷
ToHeart2-攜帶版
戀愛學園III-Plus
涼宮春日的約定
曉之護衛Trinity
史坦斯閘門
CLANNAD
蘿球社!
化物語-攜帶版
薄櫻鬼-攜帶版
獵人-不可思議的冒險
加速世界-銀翼的覺醒
我的朋友很少-攜帶版
魔法禁書目錄外傳-科學超電磁砲
Code Geass反叛的魯路修Lost Colors
 
 
 
角色扮演:
Crisis Core-Final FantasyVII
Sword Art Online刀劍神域-無限的瞬間
時空幻境.世界傳奇-光明神話3
夢幻之心攜帶版2-無限
戰鼓啪打碰3(中文版)
女神異聞錄3-攜帶版
英雄傳說:碧之軌跡
Fate/EXTRA CCC
The 3rd Birthday
創世紀傳說//Link
太空戰士:零式
黏土人世~代
那由多之軌跡
召喚夜想曲5
英雄幻想曲
光明之舟
聖騎戰史
伊蘇 7
靈魂扳機
第一戰士
天啟之王
光明之刃
數碼寶貝
30秒勇者2
女神異聞錄2罪
女神戰記:蕾娜絲
七龍傳說2020-II
英雄傳說.零之軌跡
時空幻境.重生傳奇
ToHeart2-迷宮旅人
魔法少女小圓-攜帶版
白騎士物語-教條戰記
數碼寶貝世界-再數位化
Conception產子救世錄
太空戰士III(中英日合版)
亞迦雷斯特戰記Mariage
天地之門2武雙傳-(中文版)
BLACK★ROCK SHOOTER
幻想水滸傳-交織的百年之時
銀河遊俠2-Second Evolution
新‧劍與魔法與學園-刻之學園
魔槍戰記 -魔槍軍神與英雄戰爭
迷宮旅人2-王立圖書館與魔物封印
瑪那鍊金術2沒落學園與鍊金術士們-攜帶版
仙境傳說~光與闇的公主~
捉猴啦-嗶波猴戰記
劍與魔法與學園3
天地之門(中文版)
真名法典-攜帶版
狂野歷險XF
神兵啟示錄
 
 
 
運動類:
NBA 2K13
生死格鬥樂園
PangYa魔法飛球-Portable
職棒野球魂2013
全民高爾夫-攜帶版2
全民網球-攜帶版
勁爆美國職籃09
 
 
 
節奏音樂類:
初音未來-名伶計畫(擴充版)
太鼓之達人-攜帶版DX
Megpoid the Music
DJMAX Portable 3
DJMAX Portable2
K-ON!輕音部放學後演奏會!!
偶像大師-閃耀音樂祭~奇蹟旋律~
動感音樂-攜帶版
勁舞團-攜帶版
 
 
 
運動+益智類:
魔法氣泡!!
Weiβ Schwarz攜帶版
實況野球2013

[PSP GAME] 遊戲王 5DS 卡片的力量

[PSP GAME] 遊戲王 5DS 卡片的力量

日文名稱:遊戲王ファイブディーズ タッグフォース5(遊戲王ファイブディーズ Tag Force 5)(遊☆戲☆王 ファイブディーズ タッグフォース 5
英文名稱:
Yu-Gi-Oh! 5D’s Tag Force 5
製作廠商:KONAMI / Takeshi Kameta

代理發行:KONAMI Digital Entertainment Co., Ltd.
遊戲類型:ETC – ET Cetera Game(其他類型,卡片遊戲)
載體容量:
UMD×1
對應主機:Play Station Portable(プレイステーション·ポータブル)語言版本:日文(日版)
發賣日期:
20100916日(木曜日/星期四)
參考價格:5,250
日元
官方網站:
http://www.konami.jp/gs/game/yugioh_tf5/



遊戲簡介:
日本KONAMI公司製作、發行,由PSP掌機獨佔,改編自人氣漫畫作品《遊戲王》(Yu-Gi-Oh)的卡片對戰遊戲新作:《遊戲王5DS:卡片力量5》(Yu-Gi-Oh! 5D’s Tag Force 5),日前KONAMI已正式確定本作將於2010年秋季與玩家們見面,這也是該系列在PSP平台上的第五款原創作品。目前本作的官方網站也已經開通,並且放了遊戲的多張最新畫面,供各位玩家參考。



一、原作介紹:
《遊戲王》(Yu-Gi-Oh!)是日本漫畫家高橋和希所創作的漫畫,並且依此為改編電視動畫與遊戲。原作從1996年開始在週刊少年Jump連載,於2004年3月連載結束。單行本全38集,總共343話。並推出一系列的電腦遊戲、紙牌遊戲、電視動畫、動畫電影、輕小說等作品。在展開漫畫、動畫開展以「Duel Monsters」為主線的故事後,《遊戲王》被關注的程度迅速增加,而Konami有見以此決定將「Duel Monsters」中的卡片正式發行,並在亞洲地區以「Official Card Game」(簡稱OCG)命名,並制定一系列遊戲規則。相對於其他漫畫(例如《寵物小精靈》、《高達》等)的卡片遊戲,OCG的風格更加偏向萬智卡或者召喚王Moz。因此擁有比較嚴格的規矩和更容易上手的特點。同時OCG發行以後,相關的動畫中的卡片均直接採用OCG的圖片,以減低製作的工作量。


二、新作介紹:
PSP新作《遊戲王5DS:卡片力量5》(Yu-Gi-Oh! 5D’s Tag Force 5)以《遊戲王5DS》系列為故事主軸,登場的人物包括原作主人公不動遊星,而傑克、鬼柳京介、盧奇亞諾等角色,並將前作大受好評的3D模式以動畫方式演出,重現《遊戲王5DS》的世界。並且新增召喚卡的各種設定。

本作收錄的卡片種類系列多達4,500種以上,內含OCG(官方卡片遊戲)最新的星襲爆破(STARSTRIKE BLAST)、召喚加速同步的超強力的怪獸·流星龍(Shooting Star Dragon),還有OCG未收錄的原創卡片「機皇帝」系列將會在遊戲中登場。
三、登場角色:
此次《遊戲王5D’S:卡片力量5》以將新加入兩名動畫中的人氣角色雪莉·盧布朗和神秘D輪騎士,而龍亞和龍可也將以學園制服姿態登場參戰。


1.不動遊星:
配音:宮下雄也;
簡介:本作的主人公。18歲。除了名字和年齡外多數個人信息不明。 與「遊戲王系列」的歷代主人公一樣,幾乎都不以姓氏稱呼。 其中一名龍印者,擁有「龍尾之痕」,經地縛神一戰後,變為「龍頭之痕」,而「龍尾之痕」給了克羅。

2.十六夜秋:
配音:木下亞由美;
簡介:本作的女主人公。16歲。 其中一名龍印者,擁有「龍足之痕」。 使用植物卡組,王牌卡是「黑薔薇龍(Black Rose Dragon)」。 5歲時與父親初次決鬥的時候令超能力覺醒,13歲入讀決鬥學院時亦因超能力的緣故被周圍的人所懼怕。


3.傑克·阿特拉斯:
配音:星野貴紀;
簡介:與遊星既是朋友又是對手的決鬥者。19歲。 作為「決鬥之王(Duel King)」而受到尊敬。對作為KING的身份感到驕傲與自負,性格自信、充滿野心,認為自己已立於頂點。

4.克羅:
配音:淺沼晉太郎;
簡介:遊星與傑克幼時就結交的死黨。加上鬼柳,四人曾經以「滿足同盟」的名稱擊敗衛星區的所有決鬥者。


5.龍可:
配音:寺崎裕香;
簡介:龍亞的雙胞胎妹妹。11歲。 其中一名龍印者,擁有「龍手之痕」。使用妖精卡組。 和龍亞2人住在都市的最上層地區「TOPS」。

四、遊戲模式:
PSP版《遊戲王5D’S:卡片力量5》以《遊戲王5D’s》為主要內容,並且還加入了大量新要素。這次的遊戲主要有四個系統,分別為:卡組菜單、劇情模式、數據庫和自由對戰等。


1.卡組菜單:
在《遊戲王5D’S:卡片力量4》的卡組菜單中,玩家還可以確認當前手裡持有的卡片以及編輯自己的卡組。

2.劇情模式:
在《遊戲王5D’S:卡片力量4》的劇情模式下,玩家將化身成為卡片比賽選手的一員,與搭檔共同行動。選好搭檔之後就要盡量提高信賴度了,這樣才能往下發展劇情。


3.數據庫:
在遊戲的數據庫菜單裡,玩家可以查找各種卡片的信息以及全部教學等內容。

4.自由對戰:
在自由對戰模式中,玩家可以隨意選擇對戰人數和規則,也可以通過PSP無線通訊機能進行熱鬧的2至4人聯機對戰。


由PSP掌機獨佔的卡片對戰新作:《遊戲王5D’S:卡片力量5》目前預定2010年9月16日發售,遊戲售價為5,250日元(含稅價)。相信本作將會成為喜歡卡片對戰型遊戲玩家的不錯選擇,有《遊戲王》系列遊戲的玩家們不可錯過這款本作。

[PSP模擬器] JPCSP

[PSP模擬器]  JPCSP

JPCSP入口網站
http://jpcsp.org/

以往只能看到SEGA,NINTENDO,PC-E等電腦可用的模擬器
隨著電腦速度增進,SONY PSP 掌機終於也出現了模擬器



layStation Portable(官方簡稱PSP)是新力電腦娛樂(SCEI)於2004年12月12日發售的掌上型遊戲機。2007年9月,輕量、薄型化的PSP-2000系列發售。2008年10月,提升液晶螢幕鮮豔及對比度並內建麥克風的PSP-3000系列發售。
2009年,PSPgo發售。
採用最大擁有1.8GB容量的UMD、4.3英寸的液晶螢幕和理論值達32GB容量(目前已達32GB)的Memory Stick Duo介面,可播放影片與音樂。經由WLAN機能以IEEE 802.11b(11Mbit/s工作在2.4GHz)連結上瀏覽器與LocationFree、PS3以及USB port等擴張性,透過更新系統軟體能追加各式的機能為其特徵。
精巧並有著雙層加工過的透明感與富含光澤的外觀設計機體上搭載著由SHARP開發的大型ASV液晶螢幕。在PSP發售以前家用機和攜帶型遊戲機間有一定的性能差異,特別是於3D圖形的表現上幾乎是家用機獨佔優勢,而如今卻可讓擁有不比家用機遜色繪圖性能的遊戲也能夠於攜帶型遊戲機上遊玩。但有著高性能的同時也被指出採用對於隨機存取較弱的CLV式光碟媒體所需的讀取時間、電池持續時間短、機體表面的脆弱性等等問題(關於讀取部份因軟體製作公司的技術也存在著而可於短時間內處理完的軟體)。
雖然有冠上「PlayStation」(PS)的名號卻與PS、PS2等不同,並無互換性(但是,PS部分系統軟體版本3.00後加入了可執行PLAYSTATION Store下載方式所販售PlayStation軟體的模擬器)。

引用自「
維基百科編者. PlayStation Portable[G/OL]. 維基百科, 2011(2011-03-02)[2011-03-10]. http://zh.wikipedia.org/w/index.php?title=PlayStation_Portable&oldid=15880282.

由於JPCSP 是JAVA 語言開發,故需先有JAVA環境安裝 sun.java.com 依您作業系統安裝 32bit or 64 bit jre 環境

使用非常簡單只要解壓縮後執行start-windows-x86.bat 或 start-windows-amd64.bat即可開啟JPCSP

內建CUBE 方塊,只要能看到畫面就成功囉!!


預設按鈕
十字鈕 => 鍵盤 ↑↓←→ 鍵
△ 鍵 => 鍵盤 W 鍵
鍵 => 鍵盤 D 鍵
X 鍵=> 鍵盤 S 鍵
鍵 => 鍵盤 A 鍵
L鍵(左上)=> 鍵盤 Q 鍵  
R鍵(右上)=> 鍵盤 E 鍵
開始鍵 => 鍵盤 Enter 鍵
選擇鍵 => 鍵盤 Space 鍵
HOLD鍵 => 鍵盤 O 鍵
HOME鍵 => 鍵盤 H 鍵
鍵 => 鍵盤 M 鍵
❍鍵 => 鍵盤 N 鍵
增減音量鍵 => 鍵盤 +- 鍵
類比方向鍵(香菇頭)=> 鍵盤 IKJL 鍵
 遊戲熱鍵
F1 => 說明(顯示模擬器相關資訊)
F4 => 切換視窗、全螢幕(需
勾選「Start JPCSP in Full-Screen Exclusive Mode in the following runs」選項
F5 => 快照(遊戲畫面擷取,圖檔存放於安裝目錄底下,例如:...\JPCSP\UCAS40307-Shot-0.png)
F6 => 旋轉(旋轉螢幕,可正負旋轉90度、旋轉180度(上下顛倒),以及左右相反(鏡射))
F11 => Controls(開啟遊戲控制器設定視窗,支援鍵盤、滑鼠、搖桿等輸入裝置)
F12 => 配置(開啟模擬器的設定視窗)
Shift + M => 開啟/關閉遊戲音樂與音效
Ctrl + O => 載入UMD(從選單中選擇並載入任一 ISO/CSO 格式的遊戲映像檔)
Alt + O => 載入文件(從檔案管理員選擇並載入 PBP 格式的遊戲映像檔,例如:EBOOT.PBP)
Shift + O => 裝載記憶棒(從選單中選擇並載入虛擬記憶棒的 PBP 映像檔

Shift + S => 保存快照(儲存遊戲狀態,存檔放置在安裝目錄底下,例如:...\JPCSP\Snap_UCAS40307.bin)
Shift + L => 載入快照(讀取遊戲進度,此功能請慎用,因為粉容易搞掛模擬器!!)
Ctrl + E => 退出(離開遊戲並關閉模擬器視窗)





JPCSP入口網站
http://jpcsp.org/

DOWNLOAD 新版本:
New jpcsp revision 3414
The revision 3414 of the emulator jpcsp was released and built. Here are the download links:

windows-x86-32: http://rapidga...x86-32.7z.html
windows-x86-64: http://rapidga...x86-64.7z.html
linux-x86-32: http://dfiles....iles/rwiwj8zgg
linux-x86-64: http://dfiles....iles/qekif4jk6
macosx: http://dfiles....iles/pe8yv2tkh

[code]Added debugging information to external GE (events logging).[/code]
check out the Live Downloads section for more builds
New jpcsp revision 3413
The revision 3413 of the emulator jpcsp was released and built. Here are the download links:

windows-x86-32: http://dfiles....iles/qk7uepquo
windows-x86-64: http://dfiles....iles/282oxz9kt
linux-x86-32: http://dfiles....iles/vomvr9wor
linux-x86-64: http://dfiles....iles/xy6bvv6wl
macosx: http://dfiles....iles/wynnkmtn7

check out the Live Downloads section for more builds
New jpcsp revision 3410
The revision 3410 of the emulator jpcsp was released and built. Here are the download links:

windows-x86-32: http://dfiles....iles/qf148rt7q
windows-x86-64: http://dfiles....iles/ygg4atp7z
linux-x86-32: http://dfiles....iles/sx66k8uac
linux-x86-64: http://rapidga...x86-64.7z.html
macosx: http://dfiles....iles/901hamv8j

check out the Live Downloads section for more builds







2013年11月28日 星期四

[APP 作品] Android TV BOX 飯店電視選單系統 Hotel TV Menu

偶然的狀況下同鞋請我幫忙寫了這個飯店的HotelTVmenu選單系統,使用Android TV Box
做飯店的介紹,電視功能,多媒體播放功能......等等
前導頁是多國語言選單,先選擇正體(繁體)中文,簡體中文,英文,日文後進入下面功能選單

 
之後進入飯店介紹一
介紹二
介紹三
 
介紹四

其餘點選電視按鈕即會進入數位電視DVB-T Tunner 觀看電視節目
節目頻道由飯店電視調配,點選多媒體則由客人(使用者)播放sdcard的音樂,影片,照片等內容
點選說明則顯示按鍵,遙控器使用說明....(也嘗試加上網路收音機,youtube,pps等可欣賞)
所有動作皆是透過遙控器進行


未來可能加入即時訊息傳送,如最新優惠,飯店活動,飯店公告,線上購物,帳單查詢,客房服務...
後臺頁面更新,文字圖片,背景等

[Android] INTEL HAXM 模擬器加速:使用 Intel ATOM 架構

於 Intel® 架構加速 Android* 模擬器

完整原文請參考 intel 網站

摘要:
如果您是 Android* 開發者,且對 Android 模擬器的效能不太滿意,那麼請務必閱讀本篇文章。Android 開發者總是對模擬器的效能怨聲載道,抱怨速度緩慢、使用起來痛苦不堪,實在不該如此。現在,只要您的電腦正常更新、具備內建 Intel® 虛擬化技術的 Intel® 處理器、可執行 Microsoft Windows* 或 Apple Mac OS* 系統,即可使用 Intel® 硬體加速執行管理器 (Intel® HAXM),輕鬆將 Android 模擬器的速度加快至一定程度,縮短 Android 應用程式測試與除錯所需的時間,若是 Linux 系統則可使用 KVM。本文將詳細說明模擬器加速所需的各項步驟及使用方法,然後再進一步解說如何使用原生開發套件 (NDK) 編譯 x86 原生碼,以及如何將包含 x86 原生資料庫的 Android 應用程序包 (APK) 正確上傳至 Google Play 商店。Intel HAXM 也可以用於加速 Tizen* 模擬器,但不在本文探討範圍內,詳細資訊請見 tizen.org 網站的軟體開發套件 (SDK) 部分。
1. 簡介
本文提供 Intel® 硬體加速執行管理器 (Intel® HAXM) 的安裝教學。Intel® HAXM 是用於輔助硬體的虛擬引擎 (超管理器),採用 Intel®虛擬化技術 (Intel® VT),可促進 Android* 於 Windows* 環境的發展效率。文中也會詳述如何在 Linux* 系統中設定輔助硬體的 KVM,並提供於 x86 架構本機編譯及上傳應用程式至 Google Play 商店的最佳方案。
2. 安裝
2.1. 事前準備
  • 需先安裝 Android 軟體開發套件 (SDK)。請至http://software.intel.com/en-us/android下載。
  • 電腦的 Intel 處理器需支援 Intel VT-x 及延伸記憶體 64 技術 (EM64T),且需在 BIOS 中啟用病毒防護技術 (Execute Disable Bit) 功能。


使用心得:必須是INTEL CPU BIOS 要啟用VT,確實有感覺模擬器快了15~30%,但還是感覺慢啊,只能說總算還是有改善...

也有提供IMAGE 下載

參考其他說明文章

[Android] 新版 Android 4.0 後 run 舊版的 http request 修正 android.os.NetworkOnMainThreadException

解決 android.os.NetworkOnMainThreadException
此文參考 http://my.eoe.cn/iceskysl/archive/4382.html 做一下筆記

好久不写Android代码手都生了,找出自己之前写的程序发现跑不了了,也没啥特别的错误提示,就看到一句有用的错误Caused by: android.os.NetworkOnMainThreadException,查了下原因上在4.0之后在主线程里面执行Http请求都会报这个错,大概是怕Http请求时间太长造成程序假死的情况吧。
解决办法有两个思路,分别是:
第一种方法:直接忽视,强制使用(强烈不推荐,但是修改简单)

在MainActivity文件的setContentView(R.layout.activity_main)下面加上如下代码

if (android.os.Build.VERSION.SDK_INT > 9) {
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
}


第二种方法:使用Thread、Runnable、Handler (推荐使用)
在Runnable中做HTTP请求,不用阻塞UI线程~

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.share_mblog_view);
    new Thread(runnable).start();
}
Handler handler = new Handler(){
    @Override
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
        Bundle data = msg.getData();
        String val = data.getString("value");
        Log.i("mylog","请求结果-->" + val);
    }
}
Runnable runnable = new Runnable(){
    @Override
    public void run() {
        //
        // TODO: http request.
        //
        Message msg = new Message();
        Bundle data = new Bundle();
        data.putString("value","请求结果");
        msg.setData(data);
        handler.sendMessage(msg);
    }
}

[Android] Source not found

有時在debug 過程會發現一些訊息
有些並不會產生錯誤
有興趣去trace 下去則可對程式更加了解

像這Sorce not found  的訊息,其實只要到 sdk manager 裡勾選,下載所需 package 即可

[Android] asm.jar功能:將手機畫面傳送到 PC 電腦螢幕 Android Screen Monitor

我們在使用Android App 時,有時候須將Android 裝置,如手機,平板畫面投影至螢幕或者投影機上,這時就需要一個小工具來幫忙,所幸Google 貼心的提供了此程式

Android Screen Monitor

The Android Screen Monitor (ASM) is a tool to monitor screen on the device or emulator.
ASM is an Android Debug Bridge (adb) client, When it starts monitoring screen, ASM connects to adb on port 5037 and receives frame buffer continuously on the device or emulator and transfer image to your desktop window.
You can rotate and scaling monitor window and export a image into PNG file as screen shot tool.

asm.jar功能:
1. 可將Android手機畫面連續傳送至PC螢幕上,方便演講者Demo Android手機功能給他人看。
2. 傳送頻率:約1秒傳送1張照片。

asm.jar使用方式:

1. 將adb.exe所在路徑加到path環境變數。
2. adb.exe檔案在一般Android開發會放在Android SDK目錄,例如C:\android-sdk-windows\platform-tools
3. adb.exe檔案在AppInventor則會放在C:\Program Files\AppInventor\commands-for-Appinventor
4. 命令列執行: java -jar asm.jar

參看:
http://code.google.com/p/android-screen-monitor/
 
asm.jar 下載連結

System Requirements

  • Ver.2.00 - 2.50
    • JRE(JDK) 5 or 6 and must set path to java bin directory
    • Android 1.5-4.2 SDK and must set path to android sdk tools and platform-tools directory
  • Ver.1.00 - 1.50
    • Windows XP (32-bit) or Vista (32-bit)
    • Android 1.5-1.6 SDK and must set path to android sdk tools and platform-tools directory

Install

  1. Install JRE(JDK) 5 or 6 and set path to java bin directory
  2. Install Android SDK and set path to android sdk tools and platform-tools directory
  3. Download Android Screen Monitor

[Android] SQL Connect Test

//先下載JTDS JDBC DRIVER 放到PROJECT 的LIBRARY中

package com.example.sqlconntest;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.TextView;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
//import com.example.sqlconntest.R;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity
{

 private String UserName = "sa";
 private String Password = "111";


    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        ConnectTask dt = new ConnectTask();
        dt.execute();
    }
   
    class ConnectTask extends AsyncTask<Integer, Integer, String>
    {
     Connection con = null;
     @Override
  protected void onPreExecute() {
       super.onPreExecute();
  }
   
  @Override
  protected String doInBackground(Integer... params) {
   TextView tv;
   tv=(TextView)findViewById(R.id.textView1);

   //建立資料庫連接
   try {
    Class.forName( "net.sourceforge.jtds.jdbc.Driver");
    con = DriverManager.getConnection( "jdbc:jtds:sqlserver://10.0.2.2:1433/travel", UserName, Password);   
//10.0.2.2是使用模擬器的PC本機IP,TRAVEL 是我的DB NAME
    testConnection(con);
    tv.setText("連結資料庫成功!");
   } catch (ClassNotFoundException e1) {
    // TODO Auto-generated catch block
    e1.printStackTrace();
    tv.setText("Driver error");
    Log.e("Class.forName::ClassNotFoundException", e1.getMessage());
   }catch (SQLException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
     tv.setText("Connection Error");
   }

   return "OK";
  }
  @Override
  protected void onPostExecute(String result) {
   super.onPostExecute(result);
  }

  public void testConnection(Connection con) throws java.sql.SQLException {         
         try {   
             String sql = "SELECT * FROM 景點資料 Where Region='台北市'";
             Statement stmt = con.createStatement();
             ResultSet rs = stmt.executeQuery(sql);
            
             while (rs.next()) {
                 Log.e("&&&&&", rs.getString("NameChs"));
                 Log.e("&&&&&", rs.getString("OperateUserName"));                  
             }   
             rs.close(); 
             stmt.close(); 
         } catch (SQLException e) { 
             System.out.println(e.getMessage().toString()); 
         } finally { 
             if (con != null) 
                 try { 
                     con.close(); 
                 } catch (SQLException e) { 
                 } 
         } 
     }
    }
}

[Android] Http Client

import org.apache.http.HttpVersion;
import org.apache.http.client.HttpClient;
import org.apache.http.conn.ClientConnectionManager;
import org.apache.http.conn.params.ConnManagerParams;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
import org.apache.http.conn.ssl.SSLSocketFactory;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;

public class CustomHttpClient {
    private static HttpClient customHttpClient;

    /** A private Constructor prevents instantiation */
    private CustomHttpClient() {
    }

    public static synchronized HttpClient getHttpClient() {
        if (customHttpClient == null) {
            HttpParams params = new BasicHttpParams();
            HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
            HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
            HttpProtocolParams.setUseExpectContinue(params, true);
            HttpProtocolParams.setUserAgent(params,  "Mozilla/5.0 (Linux; U; Android 2.2.1; en-us; Nexus One Build/FRG83) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1" );
            params.setParameter("charset", "UTF-8"); // 要設成utf-8,否則中文的utf-8網頁會出錯
            ConnManagerParams.setTimeout(params, 1000);

            HttpConnectionParams.setConnectionTimeout(params, 5000);
            HttpConnectionParams.setSoTimeout(params, 10000);

            SchemeRegistry schReg = new SchemeRegistry();
            schReg.register(new Scheme("http",  PlainSocketFactory.getSocketFactory(), 80));
            schReg.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
            ClientConnectionManager conMgr = new ThreadSafeClientConnManager(params,schReg);
            customHttpClient = new DefaultHttpClient(conMgr, params);
        }
        return customHttpClient;
    }
}

[自行車] 更換 BB 補充記要

補充一下一些容易遺漏及疏忽的地方 (部分圖片由google 圖片搜尋,若有不妥請通知更換)

第一點,也是最重要的就是 BB 右蓋 要卸下的方向是順時針方向轉動是鬆,往逆

時針方向是緊,

其餘螺絲或環都是一般的逆時針鬆取下.

這點萬一旋錯了就不能拿下BB右蓋囉,要小心再小心!!

 
 
 
第二點卸下左BB蓋前有一鎖環需先卸下,前文中遺漏了,使用工具如圖,為一勾狀的工具



第三點有些BB是特規需用特殊套筒,如8腳BB如下圖似乎是shimano獨有規格?
 
 
第四點換上新BB時也要留意方向喔,通常培林BB上有標示LR
(密封式的BB也減少了沙塵的入侵,保持了優良的轉動特性,平時也不需保養喔,通常壞了換掉即可)
 
 
 第五點舊滾珠BB的樣式,此款其實也是頗耐用,畢竟先前用了那麼多年,要常保養上油就是,優點就是便宜囉,難怪很多車出廠都採用降低成本嘛...
 
(*注意別看就這麼一根,其實他也是有分左右邊的喔,第一次換吃了苦頭,裝好幾次都不對,還以為是滾珠沒裝好,尤其裡面還有個朔膠墊片,還不知要擺哪裡,若大盤端裝到短的那邊,齒輪會卡到後車架)
 
 
 
第六點補充一些BB工具的正確名稱
 
 

2013年11月27日 星期三

[自行車] DIY 更換 登山車 培林 BB

[自行車] DIY 更換 登山車 培林 BB

  家裡的登山車不知不覺已經十幾年了,印象中是萬客隆還在的時代買的,當時大約也要6XXX~7XXX元,鋁合金車架,21段變速,還不差......,但賣場車畢竟比不上大品牌,不像大品牌可以找得到維修站....又騎了這麼多年(雖然大都是放著的時間較多),

且多年來都沒保養過,騎乘時有些許異音,轉動感覺也不太順暢,在上網爬文多日及反覆測試抓問題後,
發覺BB的問題較大, BB有分好幾種:
  1. 滾珠式BB (就是原車淘汰下來的)
  2. 培林式BB (如本文圖示) ....PS:其實還有分鐵蓋,鋁蓋BB,中軸也有分材質
  3. 陶瓷式BB
  4. 外掛式(好像是搭配一體大盤)



這次的主角就是它了...68*122 鋁蓋培林BB (花了 NT$238)
*注意122是它的兩端長度單位是mm公厘,通常登山車是三盤較長

在網路找到新北市一家自行車材料行,準備購買工具及培林BB回家自行DIY
(雖然量起原來的有點像 123又有點像122 手邊又沒有夾尺,但現場也只有 122可選,還是決定衝了...)

沒想到這時店員(還是老闆?分不太清楚) 大方地說,您把車騎來,我們工具可以借您維修喔
喝喝...真是太好了,

ps:其實中間還上過掏寶 找過一些工具,還滿便宜的,就是要花時間等待運送


像這樣一個工具箱RMB 130 不含運


也有一些套裝,可以自選工具的組合...(最下面那隻好像不錯,三合一的工具,台灣網拍還沒看到)



...於是擇一日天氣還不錯的下午就騎著單車過去了

借用工具:

1.退盤器 (大約價格 NT$120)

2.BB套筒 (20齒,大約價格 NT$120)

3.套筒板手
4.中軸鎖片勾把
5.槌子
6.黃油少許 (老闆真好連這也...以上都幫我省了起來)

過程重點須先將曲柄的六角螺絲先旋下
之後才用退盤器取下左邊曲柄,再取下右邊大盤連右曲柄
一開始不知道退盤器用法順序差點把曲柄的螺紋毀了
好險經由店員(老闆?)指點,順利拆下左邊
右邊後來是拆了大盤,但右BB 卻因鏽而沒法拆下
PS:爬文發現大家都是右邊BB蓋難拆,再來就是鎖牙後飛輪,了呵呵年久失修,沒保養就越難。

這時心裡真是五味雜陳...
難道就此功虧一簣嗎
又天色已晚,11月的台北大約下午五點天色就開始漸漸變黑了
於是打定主意先組裝回去...下次再努力奮戰囉!


(真的是越拆越熟練,這天拆了約三次,第一次花了一個半小時,第二次約一個小時不到,第三次,大約20分鐘左右...呵呵,有進步不少)
最後跟老闆交關了一組肉球把手80,就先打道回府。



[Android] Bluetooth 參考文件

http://developer.android.com/guide/topics/wireless/bluetooth.html
http://www.anddev.org/serial_over_bluetooth_simple_test_client-t11106.html

[Android] Call another APK file

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setDataAndType(Uri.fromFile(new
        File(Environment.getExternalStorageDirectory() + "/path/"
        + "app_apk.apk")), "application/vnd.android.package-archive");
        CurrentActivity.this.startActivity(intent);

[Android] read image from sdcard


File sdCard = Environment.getExternalStorageDirectory();
File directory = new File (sdCard.getAbsolutePath() + "/Pictures");
File file = new File(directory, "image_name.jpg"); //or any other format supported
FileInputStream streamIn = new FileInputStream(file);
Bitmap bitmap = BitmapFactory.decodeStream(streamIn); //This gets the image
streamIn.close();

[Android] 圖片放大修改

Android 圖片放大修改
package com.Demo;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.ImageView;
public class TestImage extends Activity {
/** Called when the activity is first created. */
private static final String tag = "TestImage.............";
String imageUrl= "http://ccleu.blogspot.tw/image/test_img.png";
Bitmap bmImg;
ImageView imView;
Button button1;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
imView = (ImageView) findViewById(R.id.imview);
imView.setImageBitmap(returnBitMap(imageUrl));
Bitmap bitmap = returnBitMap(imageUrl);
imView.setImageDrawable(resizeImage(bitmap, 600, 600));
}
public Bitmap returnBitMap(String url) {
URL myFileUrl = null;
Bitmap bitmap = null;
try {
myFileUrl = new URL(url);
} catch (MalformedURLException e) {
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) myFileUrl.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
Log.v(tag,bitmap.toString());
return bitmap;
}
public static Drawable resizeImage(Bitmap bitmap, int w, int h) {
// load the origial Bitmap
Bitmap BitmapOrg = bitmap;
int width = BitmapOrg.getWidth();
int height = BitmapOrg.getHeight();
int newWidth = w;
int newHeight = h;
Log.v(tag,String.valueOf(width));
Log.v(tag,String.valueOf(height));
Log.v(tag,String.valueOf(newWidth));
Log.v(tag,String.valueOf(newHeight));
// calculate the scale
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// create a matrix for the manipulation
Matrix matrix = new Matrix();
// resize the Bitmap
matrix.postScale(scaleWidth, scaleHeight);
// if you want to rotate the Bitmap
// matrix.postRotate(45);
// recreate the new Bitmap
Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0, width,height, matrix, true);
// make a Drawable from Bitmap to allow to set the Bitmap
// to the ImageView, ImageButton or what ever
return new BitmapDrawable(resizedBitmap);
}
}

[Android] Battery資訊


利用BroadcastReceiver及IntentFilter物件偵測Battery資訊

    public void onCreate() {
        .......
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_BATTERY_CHANGED);
        registerReceiver(mBroadcastReceiver, filter);
    }
    public void onDestroy() {
        .............
        unregisterReceiver(mBroadcastReceiver);
    }
    private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
                // status
                switch (intent.getIntExtra("status", 0)) {
                case BatteryManager.BATTERY_STATUS_UNKNOWN:
                    statusString = "unknown";
                    break;
                case BatteryManager.BATTERY_STATUS_CHARGING:
                    statusString = "charging";
                    break;
                case BatteryManager.BATTERY_STATUS_DISCHARGING:
                    statusString = "discharging";
                    break;
                case BatteryManager.BATTERY_STATUS_NOT_CHARGING:
                    statusString = "not charging";
                    break;
                case BatteryManager.BATTERY_STATUS_FULL:
                    statusString = "full";
                    break;
                default:
                    statusString = "unknown";
                    break;
                }
                // health
                switch (intent.getIntExtra("health", 0)) {
                case BatteryManager.BATTERY_HEALTH_UNKNOWN:
                    healthString = "unknown";
                    break;
                case BatteryManager.BATTERY_HEALTH_GOOD:
                    healthString = "good";
                    break;
                case BatteryManager.BATTERY_HEALTH_OVERHEAT:
                    healthString = "over heat";
                    break;
                case BatteryManager.BATTERY_HEALTH_DEAD:
                    healthString = "dead";
                    break;
                case BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE:
                    healthString = "over voltage";
                    break;
                case BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE:
                    healthString = "unspecified failure";
                    break;
                default:
                    healthString = "unknown";
                    break;
                }
                // plugged
                switch (intent.getIntExtra("plugged", 0)) {
                case BatteryManager.BATTERY_PLUGGED_AC:
                    acString = "plugged ac";
                    break;
                case BatteryManager.BATTERY_PLUGGED_USB:
                    acString = "plugged usb";
                    break;
                default :
                    acString = "disconnect";
                    break;
                }
                // others
                boolean present = intent.getBooleanExtra("present", false);
                int level = intent.getIntExtra("level", 0);
                int scale = intent.getIntExtra("scale", 0);
                int icon_small = intent.getIntExtra("icon-small", 0);
                int voltage = intent.getIntExtra("voltage", 0);
                int temperature = intent.getIntExtra("temperature", 0);
                String technology = intent.getStringExtra("technology");
            }
        }
    };