跳到主要內容

發表文章

目前顯示的是 2012的文章

Facebook SDK Open Graph 全攻略(一)

大家好, 我是奶綠茶 身為一位快樂的打字人員(誤), 是一定要會 FB Connect 的啦 所以小弟就決定來來寫一系列的教學 因為 FB 規格像月亮,初一十五不一樣 , 所以寫一下撰寫日期, 2012 / 12 / 27 免得日後改版讀者看到舊的文章 教學使用的都是 JavaScript SDK 來開發 1.先成為 Facebook 開發人員, 需要電話認證。 https://developers.facebook.com/apps 2.建立新的應用程式 應用程式名稱:可以中文, 視別用 應用程式名稱空間:app.facebook.com/ XXXX , 通常會取一個短又好記的, 不可中文 網站管理:這個沒研究, 先不管 然後按下繼續 完成後, 就可以看到建立的應用程式 接著還可以再編輯設計 App ID:這個應用程式的唯一 ID 值, 初始化時會用到 App Secret:暫時先不管 基本資料料:就打一打吧 Display Name:就是你的應用程式名稱, 使用者 Connect 時就會出現 選擇你的應用程式如何跟 Facebook 結合 以 Facebook 登入網站: 如果你的網站是放在自己的 Domain, 想要有 FBConnect 的話, 就在這輸入 因為開發時, 一定都要是在 http 下才行, 可以在自己的本機架一個 localhost 會比較快 等正式上線再換網址即可 Facebook 上的 App: 如果你的應用程式是要掛在 app.facebook.com 下的話, 就要在這輸入 像開心農場那樣, 外框是 Facebook , 裡面是你的內容 一樣填上網址, 記得, 就算你只是要放在 FB 裡, 還是要填寫上"以 Facebook 登入網站" 不然一樣不給連。 手機版網頁:同以 Facebook 登入網站 原生 iOS 程式:給 iOS 用的 原生 Android 程式:給 Android 用的,之後幾篇會介紹到。 Facebook 上的 App: Facebook 會用 iFrame 把你包進來 Mobile Web:手機版網站用 Native iOS App:ios 原生程式用 專頁分頁:

新案上線:海尼根140年紀念瓶

大家好,我是奶綠茶 新案上線:海尼根140年紀念瓶 http://140bottle.heineken.com.tw/ 這次練習了使用 css + js 來製作網頁 只有聲音的部份使用到 flash 來控製 並使用 ShareObject 來記錄使用者是否關閉了聲音 這樣下次進來時,就不會自動播放,貼心吧,嘿  JS 裡實作 Command Design Pattern 身為一位專業的開發人員,是一定要學會的 同時還加入行動裝置的判斷並製作了手機版的網頁 http://140bottle.heineken.com.tw/m/ 地址也加入了台灣縣市路名 待整理好了再將原始碼分享出來

Away3d on ipad and Android

大家好,我是奶綠茶 分享一下小弟測試的練習程式 Away3D 在 ipad 和 Android 上跑的效果 http://flashdaily.net/post/35268152167/away3d-coverflow-ios-android-sources Away3D Coverflow on iPad3 (video) Away3D Coverflow on Android (video) IPA file for iOS APK file for Android Full source package

(刷機)SamsungGalaxyTab8.9 P7310 吃 ICS

大家好, 我是奶綠茶 台灣的 SamsungGalaxyTab8.9 一直等不到官方的升級 4.0 所以就手動自己來刷機吧 刷機有風險, 不怕死的往下看 刷上官方的 4.0 ROM 教學都是參考這個網站 點我 4.0 跑起來比原本三星的 3.0 順很多, 呼, 值得 接著要完美演出, 再補刷三星中文輸入法 點我 如果想換個口味, 刷上 CM10 的話 點我 忘了拍照 以上二個 ROM 我都有試刷成功 祝大家使用愉快 因為平版沒有外接式 SD卡, 想在 Recovery 模式下將檔案copy 進去的話 可以使用 adb 指令 adb push "本機端檔案路徑" /sdcard/ 最後一個斜線一定要加, 不然無效 轉載請註明出處

FP11.4 Worker 多執行序

大家期待以久的 Flash 多執行序來了(還是只有我在期待) 在之前 Flash 只要有程式塞住, 就會整個像死檔一樣的掛掉 現在多了執行序的幫忙, 可以把較吃效能的動做交由背景來除理 這樣就不會影響本來的動畫 筆者寫的 Demo 就是用 Sound 類別的 extract, 把整首 mp3 轉成 ByteArray , 好來製作加速播放功能,之前在轉換的過程,會整個卡住 用了 Worker 多執行序就可決解這樣的問題 線上 Demo, 請確定你的  FlashPlayer 為 11.4 以上的版本才看的到 https://dl.dropbox.com/u/2069696/blog/index.html?s=2012_10_09_FP11_Worker/worker 轉載請註明出處 /** * @author milkmidi */ package { import com.bit101.components.HUISlider; import com.bit101.components.PushButton; import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.Event; import flash.events.SampleDataEvent; import flash.media.Sound; import flash.system.MessageChannel; import flash.system.Worker; import flash.system.WorkerDomain; import flash.text.TextField; import flash.utils.ByteArray; import net.hires.debug.Stats; import swc.milkmidi.Intro_mc; public class LoadSoundExtract extends Sprite { static public const BYTES_PER_CALLBACK:int = 4096; private var samplesData:Byte

Flash AS3 阻檔 Event 事件

設計有個元件 box 偵聽 CLICK 事件 而 stage 也偵聽 CLICK 事件 當點擊 box 時,二個事件都會發生 如果要避免這樣的問題 解法很簡單,只要使用 Event 裡的 stopPropagation() 就可以中斷之後的事件, 這樣 stage 就不會接收到 package { import flash.display.Sprite; import flash.events.MouseEvent; public class EventTest extends Sprite{ public function EventTest() { var box:Sprite = new Sprite; box.graphics.beginFill(0xff0000); box.graphics.drawRect(0, 0, 50, 50); box.graphics.endFill(); box.addEventListener(MouseEvent.CLICK , onBoxClickHandler); addChild( box ); stage.addEventListener(MouseEvent.CLICK , onStageClickHandler); } private function onBoxClickHandler(e:MouseEvent):void { e.stopPropagation(); trace("onBox Click"); } private function onStageClickHandler(e:MouseEvent):void { trace("stage Click"); } } }

決解在Chrome裡無法使用 Flash PrintJob 的問題

大家好,我是奶綠茶 最近在使用 Flash PrintJob 時,突然遇到了這樣的問題 Chrome 使用Flash PrintJob 時,會啟動自身的列印功能 然後就一片白 後來想法一個解法, 大至如下 1.在 html 先放一個空白的 img 2.Flash 先將畫面 Draw 成 BitmapData ,再轉成 JPGEncoder 的 ByteArray 再轉成 Base64 字串 3 把 Base64 字串透過 JavaScript 丟進去剛剛產生的 img 標籤 4 呼叫 Html 裡的列印 這個 Bug 只會發生在 Chrome 內建的 Flash Player 如果你有裝自行安裝的 Flash Player 的話 可以在網址列輸入 chrome://plugins 然後重新啟用預設的 Player 線上 Demo: https://dl.dropbox.com/u/2069696/blog/2012_08_29_ChromePrintBug/index.html SourceCodeDownload 後來找到更快的解法了, 把要印的 Clip 物件 先加到 stage 上 印剛後, 移掉他 這樣就可以單用 AS Code 決解

2012 08 24 AS讀書會影片文章分享

分享一下小弟在 2012 08 24 AS讀習會的影片 主題是:原生大戰 Adobe AIR PPT: http://www.slideshare.net/milkmidi/2012-08-24nativevsadobeair 影片: http://www.youtube.com/watch?v=Gz27YtVazso&feature=youtu.be 因為時間的關系, 有些地方快速帶過 如有不懂或不清楚的,歡迎留言指教 謝謝大家

Unity3D 呼叫 Android 端 Java 程式

大家好,我是奶綠茶 最近開始研究 Unity3D, 今天來分享如何使用 Unity3D 呼叫 Android 端的 Java 程式 或是 Android 呼叫 Unity3D 因為 Unity 編譯成 Android 平台時, 會發怖成 apk 檔, 並沒有原始碼 所以製作上有一點點的麻煩 1.新增一個新的 Android 專案 2.從 Unity 安裝路徑下 Unity\Editor\Data\PlaybackEngines\androidplayer\bin\ 複製 classes.jar 至 Android 裡的 libs 資料夾下 3.寫一個 public 的函式給 Unity 呼叫 這邊要注意一下, 當 Unity3D 呼叫 Android 的函式時, 會因為 UI Thread 安全性關系, 所以不能彈出 AlertDialog, 需要透過一個 Handler 來決解這個問題 package milkmidi.unity3d.android; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import com.unity3d.player.UnityPlayer; import com.unity3d.player.UnityPlayerActivity; public class MainActivity extends UnityPlayerActivity { public static final int SHOW_ALERT_DIALOG = 0; private Handler mHandler = new Handler(){ @Override public void handleMessage( Message msg ) { super.handleMessage( msg ); switch ( msg.what ) { case SHOW_ALE

Flex mxmlc Error: could not find a JVM

大家好, 我是奶綠茶 最近在使用 Flex 要匯出成 swc 時 發生了 Error: could not find a JVM 及 Error loading: C:\Program Files\Java\jdk1.6.0_25\jre\bin\server\jvm.dll 查了一下, 是因為 WIN7 64 預設是抓 Java 64 SDK , 但 Flex SDK 並不支援 64 位元 修改方法如下: 進到你的 Flex SDK\bin\ 找到 jvm.config 裡面有段 java.home 變數, 預設是空值 換成你的 32 位元的 Java SDK 路徑即可 java.home=C:/Program Files (x86)/Java/jre6 注意斜線不要打錯了

刷機 Runny Rom - N1 Version [Sense 3.5]

大家好, 我是奶綠茶 玩 Android 的樂趣就是可以不斷的刷機, 刷出歡樂, 刷出愛 但有時會刷出磚塊。 刷機有一定風險, 後果請自行負責 機子:Nexus One  ROM:Runny Rom - N1 Version [Sense 3.5] http://forum.xda-developers.com/showthread.php?t=1580873 首先你的機子要先 root 最好先練習刷 CM7 http://www.cyanogenmod.com/blog/cm7-nightly-builds 因為好上手, 也較不會失敗 這個版本的 ROM, 就是擁有 HTC Sense, 跑起來不算快, 但還可以接受 需求: Requirements: Full wipe before install. CM7/r2 Hboot or Stock HBOOT EXT4 Partition - Minimum 1GB. HIGHLY RECOMMENDED  4EXT RECOVERY TOUCH 1. 進 Recovery , 清掉所有的資料 2. 如果你刷過 CM 系列的話, 第二個就可以不管 3. 切 SD , Partition 至少要有 1G 這篇有完整的教學: http://zakipush.blogspot.tw/2012/01/minitool-partition-wizardext3ext4.html#.UBJoLLSis1I 4.刷 4EXT Recovery , 一定要用這個版本, 不然 ROM 刷進去後也無法啟動 5.開心的把 ROM 刷進去吧, 完成後, 第一次開機會有點久, 請等待

Android 4.x, 確定與取消

大家好,我是奶綠茶 不知道大家有沒有注意到在 Android 裡的 AlertDialog  確定鍵與取消鍵 4.x版:確定鍵在右邊 其他版:確定鍵在左邊 二者是不一樣的 有時會自製 AlertDialog 這時應該也要注意一下使用者的習慣, 這樣的使用者介面才會是完美 那要怎麼決解呢? 其實很簡單的 4.x版的 layout ,只要放在 res / layout-v14 / 裡, 然後把你的確定鍵放在右邊 其他版的 layout 就放與預設的 res / layout 裡即可 系統會自動判斷使用者的 SDK 版本去抓對映的 layout

Android 超好用的 ValueAnimator Tween類別

大家好,我是奶綠茶 在開發 Android, 經常會需要做一些動畫 在新版的 SDK 裡有個 ValueAnimator 可以使用 法簡單好學, 寫起來跟 Flash 的 TweenMax 差不多, 這就是我們要的 可惜官方說需要 SDK 11 以上的機子才能跑 經過測試也還真的需要 11 以上, (11 是代號 HoneyComb) 後來想到 Android 是 OpenSource, 就把他的類別拿來改一下, 這樣就可以在 2.2 的舊機子上使用 轉載請註明出處 bounceAnim = ValueAnimator.ofFloat( 起始值, 目標值); bounceAnim.setDuration( 1500 ); // 時間 bounceAnim.addUpdateListener 偵聽更新事件。 看吧,簡單好學, 不過這樣的方法依然無法使用 ObjectAnimator 這個類別, 反正 ValueAnimator 就己經夠用了 以下程式碼是改至官方提供的 API, 我把他改成 2.2 也可以跑的範例 package milkmidi.demo; import java.util.ArrayList; import milkmidi.android.animation.ValueAnimator; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.RadialGradient; import android.graphics.Shader; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.OvalShape; import android.os.Bundle; import android.view.View; import android.view.animation.AccelerateInterpolator; import android.widg

Flare3D SwitchColorFilter

大家好我是奶綠茶, 最近在研究 Flare3D, 已經有許多不錯的作品 看到了一個換色的效果很炫,Google 後找到了相關的技術文章 http://www.nissan-stagejuk3d.com/ nissan 就有用到這個效果, 該網站是使用 Away3D 參考文章: http://blog.volger.org/switchingcolor-shader/ Demo: https://dl.dropbox.com/u/2069696/blog/index.html?s=2012_06_15_Flare3D_switchcolorfilter/flare3d 轉載請註明出處 SourceCodeDownload

Adobe AIR application.xml

大家好,我是奶綠茶 最近在開發 App 時, 當有新版本時,要提醒使用者下載 每個 Adobe AIR 都需要一份 application.xml 的說明文件 裡面會定義 versionNumber 和 versionLabel 在執行階段該如何抓其變數呢? 用以下方法即可 var appXML:XML = NativeApplication.nativeApplication.applicationDescriptor; var ns:Namespace = appXML.namespace(); var versionNumber:String = appXML.ns::versionNumber; log("versionNumber = " + versionNumber); var versionLabel:String = appXML.ns::versionLabel; log("versionLabel = " + versionLabel);

Android Apk 反組譯與加工

大家好,我是奶綠茶 今天來討論關於 Android 反組譯與加工 反組譯工具有很多,在這使用的是 apktool 下載apktool1.4.3.tar.bz2,及apktool-install-windows-r04-brut1.tar.bz2 解開後,把三個檔放在同資料夾下 進入 Command 模式 反組譯 APK。 apktool d 你的檔案.apk 輸出的資料夾名稱 然著你就可以修改裡面的檔案 重新包裝成 APK apktool b 輸出的資料夾 新的檔名.apk 寫入簽屬檔,這樣才可以上架 jarsigner -verbose -keystore 你的.keystore   新的檔名.apk   簽屬檔名稱 完成 最近有專案使用 Adobe AIR 開發,呼叫原生系統的 AlertDialog(或其他的Dialog) 時 在 Android  3.0 以上, 樣式還是長成 2.2, 客戶不喜歡 查出問題點是出在 AIR 包裝時,會在你的 AndroidMainfest.xml 加入 activity android:theme="@style/Theme.NoShadow" 就是這個 theme 語法。 但 AIR 目前又不充許你修改, 只要用上面的方法,把 theme 拿掉即可 轉載請註明出處 參考文章: http://pervasivecode.blogspot.com/2011/11/phonegap-build-editing.html

米蘭數位 2012 暑期實習生招募 ‧ 用click點燃青春

米蘭暑期實習生招募 ‧ 用click點燃青春 想要擁有充實、又進步神速的暑假嗎? 想要一窺數位創意產業的職場生態嗎? 迎接未知挑戰,你總是熱血翻騰、躍躍欲試嗎? 米蘭就想要尋找這樣的你(指)  快送出你的履歷 這個暑假,你將有機會變得不一樣!(耀眼) 想了解米蘭 快加入米蘭文化 報名網址: http://medialand.com.tw/blog/article.asp?id=1405

PV3D班課程原始碼分享

大家好,我是奶綠茶 幾年前熱血的 PV3D , 到了現在已經不夠用了。 因為 PV3D 是使用數學式運算, 來仿 3D 效果 而現在 Flash 已經支援硬體加速的 3D 效果。 所以就把2010年的 PV3D班課程原始碼分享。 雖然是舊技術, 但裡面的程式碼觀念還是很讚的喔 學起來後, 要轉戰其他新的 3D Engine 是很快的。 祝大家學習愉快。 範例搶先看: http://www.flycan.com/pv3d_2010_06_webDemo/ 檔案下載: http://www.box.net/shared/3jfvp9iud3 密碼:milkmidipv3d201006 謝謝大家

Android App 程式開發入門班

大家好,我是奶綠茶 經過每天熱血的研究 Android 小弟我終於備好課程啦 Android App 程式開發入門班 完美的入門功略 首先你要 1.至少寫過任一 OOP 物件導向程式語言 2.對 CLASS 類別有一定基礎者 3.學員需自備 Android 手機,方便實機開發,因為模擬器真的太慢了... 一起來狂熱 Android 吧 開發己上架過的 App AXE Effect   Heineken 海尼根   WP7Contact lite   WP7Contact Pro   報名處: http://www.flycan.com.tw/course/android_app.php

Adobe Edge 動畫工具

大家好,我是奶綠茶 因為怕失業(誤), 所以認真的學起 css 和 Javascript 剛好手上有一個需要製作成 iPad 版的網站 但如果要用 Code 刻出來動畫好像有點不人性 好在 Adobe 即將推出一個 Html 動畫工具 可以到這兒下載 Preview 版 http://labs.adobe.com/technologies/edge/ 軟體介面使用上, 有點像是 AE + Flash 一樣的時間軸, 一樣有 Keyframe , 只是最後是輸出成 html 的格式 個人覺得最貼心的點 是整合了 jQuery 這樣程式人員就可以後續接手來完成其他的功能 真的大心呀 因為目前還是 preview 版, 所以奶綠我在開發時, 經常發生當機或一些小問題 我想正式版的推出一定會更好 專案:Toyota PriusC http://m.toyota.com.tw/2012_prius_c/index.asp 請自動將版面拉成 1024 x 768 IE請勿入內

Black Berry Bold 9900 雪白黑莓機初體驗

大家好,我是奶綠茶 奶綠茶我很榮幸的受邀參加 BlackBerry Bold 9900 耀白降臨部落客體驗會, 地點選在相當優雅的 Bianco Taipei, 整個家以白色系為主,和今天的主題非常的搭配 先列一下目前市面上主流的知慧型手機系統 iOS, Android, Windows Phone Black Berry 前三個大家應該都不莫生。 這就來簡單的介紹 BlackBerry。 在台灣通稱"黑莓機" 發展也很多年了,大多的使用者都在美國、歐洲等地, 以商務人士為主要組群, 其中最大的賣點就是: BlackBerry Messager 有點像是現在的 What's app, 但他強大的加密機制(安全,安全,很難破解), 還有優化的檔案壓縮技術(國外並沒有所謂的上網吃到飽, 所以檔案大小就變的非常重要) 都是其他系統很難取代的。 開發程式:和 Android 一樣是使用 Java 來開發 外型: 就跟 ShowGril 一樣的正(羞) 三白比一比: 左到右為 Galaxy Note , BlackBerry , 水果四袋s 解悉度為 640 x 480 , 字體大小看起來很舒服 這是 BlackBerry 的桌面, 有點類似 Android , 可以再展開 展開後的樣式, 左右拉動, 可以切換分類, 可以把常用的 App 加到我的最愛 市集: BlackBerry App World 就像是iOS的 App Store Android 的 Google Play 一樣 都可以透過市集來下載 App. 目前數量約為 6 萬, 相較之下算是比較少的 App World 主畫面, 如果有可更新的 App, 在 My World Icon 上就會有一個小紅星 新增連絡人 有個特別的欄位:BlackBerry PIN 只要對方也是使用 BlackBerry, 就可以透過這個 PIN 碼把 BlackBerry Message 串起來 地圖: 看起來是使用自家的Map, 但可到市集下載 GoogleMap 來使用 當天參加抽中大獎的邦邦 這張重點是邦邦, 不是 Show Girl(羞) 使用心得: 多了鍵盤

PC 上使用 Adobe AIR 開發 iOS App

大家好,我是奶綠茶 今天來分享如何在 PC 上使用 Adobe AIR 開發 iOS App 1.成為 apple 開發者 2.在 Mac 上產生一組有效的 p12 檔 3.在 pc 上安裝 openssl 4.在 pc 上把 Mac 產生的 p12 檔, 使用 openssl 再產生一組給 pc 用的 p12 檔 可以參考 adobe 的官方教學 http://help.adobe.com/zh_TW/as3/iphone/WS144092a96ffef7cc-371badff126abc17b1f-7fff.html 但其中有一段 Code 有誤 如果您使用的是 Mac 電腦上的鑰匙圈專用密鑰,請將它轉換成 PEM 密鑰: openssl pkcs12 -nocerts -in mykey.p12 -out mykey.pem 把本來的 mykey.pem 改成 mykey.key 這樣就可以產生出有效的 p12 檔 祝大家學習愉快 參考文章: http://www.codeandvisual.com/2011/exporting-for-iphone-using-air-27-and-flashdevelop-part-three-generating-developer-certificates-provisioning-profiles-and-p12-files/  

android C2DM 推播功能

大家好,我是奶綠茶 今天來介紹如何在 Android 寫推播功能 Android 上的正確名稱叫:C2DM 官方網址: http://code.google.com/intl/zh-TW/android/c2dm/ 看一遍,跟著做,就差不多可以完成 那要怎麼測試呢? 好在有好心人事寫了支測試程式 http://www.riaspace.com/2011/09/as3c2dm-air-native-extension-to-push-notifications-with-c2dm/ 該作者提供了一個 C2DMManager 的 AIR 桌面應用程式,方便你自己發送 經筆者測試,成功。 祝大家學習愉快

Native Android Admob Support For Adobe Air

大家好,我是奶綠茶 最近想在 Adobe AIR App 放上 Admob 的廣告 查了一下相關文章,最好的方法還是使用原生的類別 好在 AIR3.0 後已經可以呼叫原生程式 接著就可以開始來實作。 1.首先你要先知道如何在 Android 上放 Admob 參考官方教學 https://developers.google.com/mobile-ads-sdk/download 2.使用原生程式,開發出 AIR 可以呼叫的 jar 檔 這裡要注意的是,開發時要匯入 Admob的jar 但匯出時, 並不會把該 jar 包進去 所以最後還需要下個 Command 把二個 jar 合拼成一個(這個我卡了好久) 3.AIR端使用 ExtensionContext 類別 開發工具為 FlashDevelop 4.0 加上 Ant 外掛(用來快速執行Command) APK下載 轉載請註明出處 SourceCodeDownload

台灣街道路名表

大家好,我是奶綠茶 (資料已過時,請不要再用了,謝) 最近在專案上 客戶希望在下拉縣市地區時,能再多個街道選項 查了一下郵局,並沒有提供這樣的資訊 好再有隻 api 可以呼叫。 但考量會有跨網域呼叫的問題, 索性就把全部的資料抓下來, 丟到自家的資料庫 有需要的朋友,可以點這下載 補充:郵遞區號並不是唯一的 Key 值 像 新竹市 , 有 東區、西區、香山區, 但郵遞區號都是 300 呼叫的 API 是這隻 http://www.post.gov.tw/post/internet/f_searchzone/streetNameData.jsp (直接點是無效的, 請用任意程式用 POST傳值) city:臺北市 cityarea:信義區 就會得到該區的街道XML

新案上線:Heineken海尼根 Android App

大家好,我是奶綠茶 新案上線:Heineken海尼根 (iOS/Android) 這次小弟是開發 Android 的 App. 使用原生 Java 程式寫的, 不是用 air 喔。 這次的專案,讓我經驗值大增呀 之後再來補上這次用到的技術文章 點我進入頁面

Android 檢查網路是否連線中

大家好,我是奶綠茶 如何在 Android 檢查網路是否連線, 可以使用以下程式判斷: public static boolean isNetworkAvailable( Context context ) { ConnectivityManager cm = (ConnectivityManager) context .getApplicationContext().getSystemService( Context.CONNECTIVITY_SERVICE); if (cm == null) { return false; } else { NetworkInfo[] infos = cm.getAllNetworkInfo(); if (infos != null) { for (NetworkInfo networkInfo : infos) { if(networkInfo.getState() == NetworkInfo.State.CONNECTED){ return true; } } } } return false; } 但這樣就只能限自行呼叫,如果想要用偵聽的話,可以寫一個 BroadcastReceiver, 同時在 intentFilter 加上 action android:name="android.net.conn.CONNECTIVITY_CHANGE" public class ConnectionChangeReceiver extends BroadcastReceiver { @Override public void onReceive( Context context, Intent intent ) { boolean isNetworkAvailable = isNetworkAvailable(context); Toast.makeText(context, "isNetworkAvailable:"+isNetworkAvailable, Toast.LENGTH_LONG).show(); } public static

Android App 版本更新

大家好,我是奶綠茶 如何寫自動版本更新的提示呢? 1.先得到目前的版本: int versionCode = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode; 2.在自動的主機放置一個txt檔,並輸入一個版本號 3.檢查遠端的版本是否比較新 4.是的話,就開始下載 Intent updateIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://xxx.apk")); context.startActivity(updateIntent); context.finish(); 轉載請註明出處

Android Intent

在 Android 裡 要呼叫另一個 Activity 時 可以使用 方法1: Intent intent = new Intent( 目前Activity.this, 目標Activity.class); startActivity(intent); 方法2:可以帶入字串 Intent intent = new Intent(); ComponentName cName = new ComponentName( 目前Activity, "目標Packge+Class的字串"); intent.setComponent(cName); startActivity(intent); 方法3:使用 Action , 需在 Mainifest.xml也加入宣告 Intent intent = new Intent(); intent.setAction("milkmidi.android.IntentAction"); startActivity(intent); <activity android:name="xxx.xxx.XXXActivity"> <intent-filter< <action android:name="milkmidi.android.IntentAction"> <category android:name="android.intent.category.DEFAULT"> </category<</action<</intent-filter> >/activity> 轉載請註明出處

Android Design Preview tool

Android 好用之 Preview tool 你經常在 Photoshop 排好 layout , 想丟到手機上看呈現的畫面嗎 現在 Google 推出一個小工具 就可以把 PC 端的畫面同步到手機上 Windows 和 Mac 皆可使用,大推啦 影片: http://www.youtube.com/watch?feature=player_embedded&v=WvQrP1szEzg 下載: http://code.google.com/p/android-ui-utils/downloads/list

Flash座標自動產生器

大家好,我是奶綠茶 最近 Mobile Device 的需求越來越大 設計師們在出 layout 時, 還要自動辛苦的寫座標, 小弟就寫一個 flash 座標自動產生器, 就可以快速產生, 準時下班(誤) 可安裝在 flash CS3 以上的版本 使用方法 下載 mxp 檔, 然後安裝 開啟 flash 把要出現座標的物件,轉成 MovieClip 從 Componenet 面版找到 DisplayPosition 拉到場景上 編譯,完成,出現,下班(誤) 原樣 發怖後 轉載請註明出處

Flash TLF Text Bug

大家好,我是奶綠茶 最近朋友問我一個載入 flash 檔的問題 外部載入一個 swf , 並呼叫裡面一個 public 的函式 這麼簡單的問題,馬上就可以決解, 結果卻花了我半小時,一查之下才發現是 TLF Text 產生的 被載入的 swf 主程式碼 public class LoadedDoc extends MovieClip{ public function LoadedDoc() { trace("LoadedDoc"); } public function test():void { trace( "test"); } } 載入的主程式碼 var loginLoader:Loader = new Loader(); var url:URLRequest = new URLRequest("alert_as.swf"); loginLoader.load(url); loginLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loginPageLoadCompleteHandler); public function loginPageLoadCompleteHandler(e:Event){ var _alertAS:MovieClip = e.currentTarget.loader.content as MovieClip; _alertAS.test(); } 正常來說,這樣寫可以成功呼叫, 但當你的被載入swf有使用新版的 TLF Text時 flash會很好心的幫你多包了一層 Class, 導至就產生了錯誤 用 Flash Decompile 來看一下 使用 TLF Text 使用 Classic Text 目前還想不到解法, 先筆記一下

Android Back Key

大家好,我是奶綠茶 在使用 Android 時,有時會不小心按到 Back 鍵而離開應用程式 理想的操作,應該要有個提示讓使用者知道是否要離開。 只要 Override Activity 的 onKeyDown 事件, 加上提示的程式即可 常用的方法有二個, 1. 使用 Toast 提示,在一定的時間內按二次 Back 鍵 private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN){ if((System.currentTimeMillis()-exitTime) > 2000){ Toast.makeText(getContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); System.exit(0); } return true; } return super.onKeyDown(keyCode, event); } 2. 使用 AlertDialog ,讓使用者自行決定。 new AlertDialog.Builder( getContext) .setIcon(R.drawable.icon_info).setTitle(" ") .setMessage("確定要離開應用程式嗎?") .setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { } }).setNeutralButton("確定", n

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

大家好,我是奶綠茶 最近在寫 Android 程式時, 一直發生 java.lang.OutOfMemoryError: bitmap size exceeds VM budget 這個問題 後來查了一下,才知道是圖檔太大,超過能使用的記憶體 但透過 BitmapFactory.Options 這個類別就可以決解。 BitmapFactory.Options opts = new BitmapFactory.Options(); opts.inSampleSize = 4; Bitmap bitmap = BitmapFactory.decodeFile(imageFile, opts); 其中 inSampleSize 的數值,指的是將圖片大小除以 n 重點就要是如何算出正確的數值。 官方文件有提到,該值以 2 的平方為最佳 先準備一張 3000x2000 的圖片,放到 raw 資料夾裡 再沒有使用 inSampleSize 時 直接 decode, 就會發生 OutOfMemory 要算出最佳值,要對圖片 decode 二次 第一次先得到圖片的長、寬,然後再算出 sampleSize , 第二次再 deocde 得到所需要的圖片 BitmapFactory.Options opt = new BitmapFactory.Options(); opt.inJustDecodeBounds = true; //使用這個屬性, 就只會計算,但不會分配記憶體 Bitmap bitmap = BitmapFactory.decodeResource(res, R.raw.i3000x2000,opt); trace(opt.outWidth,opt.outHeight);//得到原始圖片長、寬 最佳 sampleSize 算法 轉貼至: http://www.maxhis.info/androiding/bitmap-size-exceed/ public static int computeSampleSize(BitmapFactory.Options options,int maxNumOfPixels) { return computeSampleSize(options,-1 , maxNumO