2012年12月28日 星期五

Android Apps初學必修課

碁峰資訊,AEL013800,ISBN:9789862767047
01 Android導論
02 建立應用程式開發環境
03 管理應用程式專案
04 應用程式專案架構
05 Activity初探
06 版面設計
07 事件處理
08 常用介面元件
09 對話視窗作業
10 程式偵錯與程式碼管理
11 功能表作業
12 Intent作業
13 檔案存取作業
14 資料庫作業
15 多媒體作業
16 應用Google MAP

2012年12月27日 星期四

2012十大熱門手機遊戲

資料來源: Yahoo奇摩新聞:  2012-十大熱門手機遊戲
1. 英雄越獄 (Prison Break)
2. 憤怒鳥星際大戰  (Angry Birds Stars Wars)
3. 鼠鼠塔 (Hamster Tower)
4. 雷電2013HD (Air Barrage HD)
5. 奇幻射擊 (Fanth Shooting)
6. 鐵道跑酷 (Subway Surfers)
7. 小企鵝大逃亡 (Penguin Run Free)
8. 寶石之星 (Jewels Star)
9. 搗蛋豬 (Bad  Piggies)
10. 山羊沖沖沖! (Go Go Goat)

2012年12月25日 星期二

Android程式設計 - Google Maps API v2應用程式基本架構

1. 開啟Android SDK Manager,確認已安裝Google Play services

2. google-play-services_lib專案匯入到工作區。在專案開發過程google-play-services_lib專案必須維持開啟狀態。

3. 建立Android專案。

4. google-play-services_lib加到Google Maps API v2應用程式專案。

5. 使用debug.keystoreSHA1碼及專案套件名稱(workshop.mapapiv2)到https://code.google.com/apis/console/官網申請Google Maps API v2 key。

6. 開啟專案之AndroidManifest.xml檔,在元素之結束標籤(
)前加入以下宣告。其中apiv2_key需置換為Google Maps API v2 key。
   <meta-data
     android:name="com.google.android.maps.v2.API_KEY"
     android:value="apiv2_key" />

7. AndroidManifest.xml元素之前加入以下宣告,其中your_package_name需置換為自己的App專案套件名稱。
  <permission
     android:name="your_package_name.permission.MAPS_RECEIVE"
     android:protectionLevel="signature" />
  <uses-permission
     android:name="your_package_name.permission.MAPS_RECEIVE" />
  <uses-permission android:name="android.permission.INTERNET"/>
  <uses-permission
     android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
  <uses-permission android:name=
     "com.google.android.providers.gsf.permission.READ_GSERVICES"/>

8. AndroidManifest.xml元素之前加入以下宣告。
  <uses-feature
     android:glEsVersion="0x00020000" android:required="true"/>

9. 開啟專案版面配置檔(activity_main.xml),移除預設的<TextView>,加入以下元件。如果Minimum Required SDK是指定為API 12之後版本,class屬性值可使用”com.google.android.gms.maps. MapFragment”。
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/map"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  class="com.google.android.gms.maps.SupportMapFragment"/>

10. 編輯專案程式檔(MainActivity.java)。將MainActivity改為繼承自FragmentActivity注意!如果Minimum Required SDK是指定為API 12之後版本,且版面配置檔class屬性值是使用”com.google.android.gms.maps. MapFragment時,則MainActivity要直接繼承Activity
  public class MainActivity extends FragmentActivity{
    @Override
     protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
     }
  }


2012年12月24日 星期一

Android程式設計 - 使用模擬器測試Google Maps API v2

Google Map API v2運行時需使用Google Play Service,由於模擬器預設並未安裝Google Play Service,因此無法直接使用模擬器測試程式,對開發程式較不方便。
http://saleh360.blogspot.tw/2012/12/android-running-google-maps-api-v2_12.html文章有介紹如何在模擬器中安裝Google Play Service,參考該篇文章,經過測試後重新整理說明如下:

1. 建立一個4.03模擬器 (不含Google API)。
2. 修改System目錄之檔案權限,允許寫入權限。

adb shell mount -o remount,rw -t yaffs2 /dev/block/mtdblock0 /system
adb shell chmod 777 /system/app

3. 下載GoogleLoginService.apk、GoogleServicesFramework.apk及Phonesky.apk

GoogleLoginService.apk - www.dropbox.com/s/lfde3juixuy88rg/GoogleLoginService.apk
GoogleServicesFramework.apk - www.dropbox.com/s/9kurwyhbbuecaea/GoogleServicesFramework.apk
Phonesky.apk - www.dropbox.com/s/9x8924gtb52ksn6/Phonesky.apk


4. 安裝GoogleLoginService.apk、GoogleServicesFramework.apk及Phonesky.apk
adb push GoogleLoginService.apk /system/app/
adb push GoogleServicesFramework.apk /system/app/
adb push Phonesky.apk /system/app/
5.開啟瀏覽器,到APKTOP網站下載Google Maps
http://dl.apktops.com/app/201209/Google_Maps_6_12_0.apk
6. 開啟瀏覽器,到APKTOP網站下載Google Play Service
http://dl.papktop.com/2012/12/Google_Play_services_2_0_12.apk
新版本的Google Play Service
7. 安裝下載的Google Maps及Google Play Service

8. 測試Google Maps API v2應用程式




2012年12月21日 星期五

Android程式設計 - 使用Google Map V3 (1) 基本架構

Google自2012.12.3起聲明不支援Map API V1,即不再增加新功能,到2013.3.3前仍接受申請Map API V1 key。Map API V2改用com.google.android.gms.maps.MapFragment,仍需申請Map API V2 key;Google Map API V3則改為Javascript API方式,使用WebView來顯示Google Map,應用程式不需再申請Google Map API key,但同一頁面免費存取次數為25000次/天。

1. 編輯一個HTML檔(例如: googleMap.html),並放置到asset目錄。在html檔中置入一個<div>標籤,大小為全螢幕,用來顯示Google Map。
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" 
        src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript">
  function initialize() {
    var myLatlng = new google.maps.LatLng(23.937591,120.700807);  //地圖中心點
    var myOptions = {
           zoom: 17,
           center: myLatlng,
           mapTypeId: google.maps.MapTypeId.ROADMAP               //道路地圖
    }
    var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  }
</script>
</head>
<body style="margin:0px; padding:0px;" onload="initialize()">
  <div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>

2. 在版面配置中加入一個WebView元件
<RelativeLayout ...>
  <WebView android:id="@+id/webview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"/>
</RelativeLayout>

3. 撰寫MainActivity程式,設定WebView啟用JavaScript功能,之後載入googleMap.html。
public class MainActivity extends Activity{
    private static final String MAP_URL = "file:///android_asset/googleMap.html";
    private WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        setupWebView();
        this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    }   
    private void setupWebView(){
        webView = (WebView) findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);       
        webView.loadUrl(MAP_URL);  
    }
}




2012年11月26日 星期一

Android程式設計 - 使用相機LED做為手電筒


Android手機都配備一個高亮度白光LED做為相機閃光燈,程式中可控制這個高亮度白光LED把手機當成手持照明設備。
方法是調用setFlashMode(Parameters.FLASH_MODE_TORCH)方法設定閃光燈模式,讓LED在相機進到預覽模式時就處於ON狀態。程式碼如下:
  import android.hardware.Camera;
  import android.hardware.Camera.Parameters;
  ...
  Camera camera = Camera.open();
  Parameters p = camera.getParameters();
  p.setFlashMode(Parameters.FLASH_MODE_TORCH);
  camera.setParameters(p);
  camera.startPreview();        //開啟LED
調用camera.stopPreview()方法結束預覽模式即可關閉LED。而在結束程式前應調用release()方法釋放相機資源。
注意!要操控相機的LED,應用程式之AndroidManifest.xml文件中必須宣告android.permission.CAMERA使用權限。

2012年11月20日 星期二

使用JavaScript設計Apps

想用JavaScript設計Android Apps或iOS Apps,可試試這一款Appcelerator Titanium工具



2012年11月19日 星期一

Android程式設計 - 控制手機震動器

使用getSystemService(Context.VIBRATOR_SERVICE)方法取得振動器物件,之後可透過以下方法來控制手機振動器:
l void vibrate (long milliseconds)
使震動器作用一段指定時間。
milliseconds                震動器震動時間,單位為毫秒。
l void vibrate (long[] pattern, int repeat)
使震動器依給定的作用及次數。
pattern                        震動器動作方式。
repeat                         重複震動器動作之pattern資料索引值,設定為-1表示不重複。
例如下列程式碼會使震動器先靜止2秒後震動0.5秒,之後停留3秒震動0.5秒一直重複。
  Vibrator vibrator = null ;
  vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
  long[] pattern = {2000, 500, 3000, 500};
  vibrator.vibrate(pattern, 2);
結束程式前應透過cancel ()方法中止震動器。
注意!要操控震動器,應用程式之AndroidManifest.xml文件中必須宣告android.permission.VIBRATE使用權限。

2012年11月16日 星期五

大師談"優秀企劃人員必須具備的10個條件"

聽聽遊戲界大師Gordon Walton談"優秀企劃人員必須具備的10個條件":


10.對遊戲的熱情
9.深度廣度兼具的知識
8.問題的解決和分析能力
7.Flexibility 通融性
6.KISS (Keep it super simple)
5.與玩家神會(Player Empathy)
4.持續不斷的學習
3.團隊合作
2.正面思考
1.明確的溝通



Android程式設計 - 使用SlidingDrawer元件

SliderDrawer(滑軌抽屜元件)提供動態開啟/關閉版面功能,預設內含一個Button物件(@+id/handle)及一個LinearLayout佈局(@+id/content)。handle物件就是讓用者拉動滑軌抽屜的把手,content內則可依需要放置其它版面內容,就是拉開抽屜時所要顯示的內容。
使用者可透過點擊SliderDrawerhandle來開啟/關閉抽屜,也可直接拖曳handle來開啟/關閉抽屜。另外也可在程式中使用以下方法來控制SliderDrawer
l void open ()
打開SliderDrawer
l void close ()
闗閉SliderDrawer
l void toggle ()
切換SliderDrawer狀態。
l void animateClose ()
以動畫方式打開SliderDrawer
l void animateOpen ()
以動畫方式闗閉SliderDrawer
l void animateToggle ()
以動畫方式切換SliderDrawer狀態。

為了讓SliderDrawer版面看起來更美觀,我們可使用ImageView元件取代預設的Button物件。





2012年11月1日 星期四

南開科技大學電子工程系電腦遊戲設計組舉辦RPG遊戲設計競賽

南開科技大學電子工程系電腦遊戲設計組於10月31日舉辦RPG遊戲設計競賽,同學們擁躍組隊參加,發揮創意並應用課堂所學技能,從遊戲腳本、場景人物、配樂、音效、遊戲控制,彼此分工合作共同製作RPG遊戲。
各組先由同學上台簡報創作內容,再實機展示遊戲作品。經過激烈的競賽由本系專業教師及業界教師共同評選前三名。

參賽同學簡報作品內容

參賽同學展示遊戲內容(一)

參賽同學展示遊戲內容(二)

由本系專業教師及業界教師共同擔任評審

Android程式設計 - JSON資料處理(5)


處理網站回傳的JSON資料
對於網站回傳的JSON資料,其處理方式與處理JSON文件檔案作業大同小異,只是將原先由檔案串流讀取資料改為使用HTTP串流讀取資料。
假設http://mysite/testjson.php回傳的JSON資料,我們可以透過以下程式碼將回傳的JSON資料建立JSONObject
  URL jsonUrl = new URL("http://mysite/testjson.php");
  URLConnection c = jsonUrl.openConnection();
  c.setConnectTimeout(5000);        //設定連線逾期時間
  is = c.getInputStream();
  BufferedReader reader = new BufferedReader(new InputStreamReader(
            is, "big5"));
  Writer writer = new StringWriter();
  char[] buffer = new char[1024];
  int n;
  while ((n=reader.read(buffer)) != -1) writer.write(buffer, 0, n);
  is.close();
  String jsonstr = sb.toString();
  JSONObject json = new JSONObject(jsonstr);
同樣地,後續就可依據JSON文件結構一層一層解讀JSON資料。