Microsoft PowerPoint - Lab 3-1 Vehicular Navigation Systems.ppt [相容模式]

Size: px
Start display at page:

Download "Microsoft PowerPoint - Lab 3-1 Vehicular Navigation Systems.ppt [相容模式]"

Transcription

1 車輛定位與電子地圖整合服務 Android idprogramming Environment Nt Network koti Optimization i Lab Lb Department of Computer Science National Chiao Tung University 1 Project Objective 主要畫面設計 顯示 Google Maps 次要畫面設計 Outline 顯示輸入起 終點畫面 查看線上資料 取得繞境資料 繞境顯示於 Google Maps 2

2 Project Objective 在手機上開發車輛導航系統 在 Google Maps 劃出路徑規畫 提供目前位置服務, 並可將目前位置設定為起點或終點 3 程式架構 使用者可按 Menu-Route 進入輸入畫面 再輸入畫面輸入起點以及終點 點 Search 按鈕可在 Google Maps 上顯示繞境 4

3 程式執行流程 5 新增專案 取得使用地圖權限 顯示 Google Maps 編輯 AndroidManifest.xml Layout 畫面格式設定 編輯 main.xml 建立 main class vnspart1.java 建立 MapLayout Class MapLayout.java 在 main class 將 MapLayout 初始化 6

4 取得使用地圖權限 編輯 AndroidManifest.xml Google Maps 選擇性的 API, 若我們要使用他則必須在 application 標籤中宣告 <application </activity> <uses-library android:name="com.google.android.maps" /> </application> Google Maps 必須連接上網路才能取得資料, 因此必須在宣告 Intenet 的使用權限 <manifest </application> <uses-sdk android:minsdkversion= 8" /> <uses-permission android:name="android.permission.internet" /> </manifest> 7 Layout 畫面格式設定 編輯 main.xml 將 Layout 更改為 FrameLayout 格式 在 FrameLayout 中的所有物件皆會放置在畫面左上角 將 MapLayout 放置在 FrameLayout 中 此 MapLayout class 未來將會放置 Google Maps <FrameLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <com.demo.vns.vnspart1.maplayout android:id="@+id/map_layout" android:layout_width="fill_parent" android:layout_height="fill_parent" /> </FrameLayout> 8

5 建立 Main Activity Class(1) Import Head File import android.os.bundle; import android.view.menu; import android.view.menuinflater; import com.google.android.maps.mapactivity; import com.google.android.maps.mapview; extends MapActivity 此 Activity 是 Google Maps 畫面, 所以我們必須繼承 MapActivity public class Vnspart1 extends MapActivity { 9 建立 Main Activity Class(2) 宣告 MapView 物件 用來處理地圖資訊 private MapView mapview; 建立 Menu 使用者可以點選 Menu 來選擇動作 (Route or Quit) protected static final int MENU_SEARCH = Menu.FIRST; protected static final lint MENU_QUIT = public boolean oncreateoptionsmenu(menu menu){ super.oncreateoptionsmenu(menu); menu.add(0, MENU_SEARCH, 0, Route"); menu.add(0, MENU_QUIT, 0, Quit ); return true; 10

6 建立 Menu 在 res 底下建立一資料夾 menu 在 menu 資料夾底下新增.xml 檔 menu.xml 在 menu.xml 檔中加入 <item /> <item /> 在 main class 加入下面 Code, 建立 public boolean oncreateoptionsmenu(menu ti menu) ){ MenuInflater inflater = getmenuinflater(); inflater.inflate(r.menu.menu, menu); return true; 11 建立 MapLayout Activity Class(1) Import Data import com.google.android.maps.mapview; import android.content.context; import android.util.attributeset; import android.widget.linearlayout; extends LinearLayout 此 class 是用來顯示地圖畫面, 因此必須繼承 LinearLayout public class MapLayout extends LinearLayout { 12

7 建立 MapLayout Class(2) 宣告 MapView 物件 用來設定地圖資訊 private MapView mapview; 必須建立下列函式, 並呼叫 init() it() 設定地圖 public MapLayout(Context context, AttributeSet attrs) { super(context, attrs); init(); public MapLayout(Context context) { super(context); init(); 13 建立 MapLayout Activity Class(3) 建立 init() 函式 用來式定地圖資訊 private void init() { 加入 setorientation(), 設定地圖方向, 水平或垂 直 setorientation(vertical); 14

8 建立 MapLayout Activity Class(4) LinearLayout 參數設定 setlayoutparams( new LinearLayout.LayoutParams(android.view.ViewGroup.LayoutParams.FILL y y _ PARENT, android.view.viewgroup.layoutparams.fill_parent)); 設定金鑰 this.mapview = new MapView(getContext(), MAP KEY"); mapview 的基本設定 mapview.setenabled(true); mapview.setclickable(true); 加入 mapview 至 LayOut 上 addview(mapview); 15 建立 MapLayout Activity Class(5) 建立 getmaplayout 方法 使其他 Class 可使透過此方法取得 Google Maps public MapView getmaplayout() { return mapview; 16

9 在 main class 將 MapLayout 初始化 加入宣告 MapLayout 物件 private MapLayout maplayout; 建立 initmap() 用來初始化地圖 private void initmap() { 17 在 main class 將 MapLayout 初始化 (2) 在 initmap() 加入 取得 MapLayout 實體物件 maplayout = (MapLayout)findViewById(R.id.map_layout); 利用 getmaplayout 取得地圖 mapview = maplayout.getmaplayout(); 設定地圖為可以觸控移動 mapview.setbuiltinzoomcontrols(true); 在 oncreate 中加入 public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); initmap(); 18

10 實驗結果 19 練習時間 20

11 建立輸入畫面 在 AndroidManifesr.xml 檔新增 search activity 建立 search.xml 建立 Search.java 修改 main.xml 檔 在地圖上輸出起點以及終點文字 顯示目前位置 設定 Menu 動作 21 輸入畫面設計 輸入方塊 提示文字 按鈕 22

12 建立 search.xml 顯示提示文字 顯示輸入方塊 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" />; <EditText android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="" /> <Button 顯示按鈕 再 string.xml 檔 加入文字 android:layout_width="wrap_content" android:layout_height="wrap_content" /> <string name="start_point">start point</string> <string name="end_point">end point</string> <string name="search search_button button">query</string> <string name="cancel_button">cancel</string> 23 設定 Menu 動作 設定 Menu Route, 當點下 Route 後會跳至 Search Activity 注意 switch case public boolean onoptionsitemselected(menuitem item){ switch(item.getitemid()){ case R.id.Route : Intent intent = new Intent(); intent.setclass(vnspart2.this, Search.class); startactivityforresult(intent, ACTIVITY_ROUTE); break; case R.id.Quit Q : finish(); break; return super.onoptionsitemselected(item); p 24

13 Import Head File import android.app.activity; import android.content.intent; import android.content.pm.activityinfo; import android.os.bundle; import android.view.view; import android.widget.button; import android.widget.edittext; 建立 Search.java(1) 宣告輸入方塊及按鈕 private EditText srctext; private EditText desttext; private Button buttonsearch; private Button buttonreturn; 25 畫面設定 setcontentview(r.layout.search); 設定畫面顯示方向 建立 Search.java(2) setrequestedorientation(activityinfo.screen _ ORIENTATION_ PORTRAIT); 宣告輸入方塊 方塊初始文字 srctext =(EditText)findViewById(R.id.editTextStart); t)fi dvi Id(Rid tst t) srctext.settext(" 新竹交通大學 "); desttext=(edittext)findviewbyid(r.id.edittextend); desttext.settext(" 新竹清華大學 "); 26

14 建立 Search.java(3) 宣告按鈕 按鈕文字設定 buttonsearch=(button)findviewbyid(r.id.buttonsearch); B Id(Ridb S h) buttonsearch.settext(r.string.search_button); 設定 Search 按鈕動作 設置 OnClickListener buttonsearch.setonclicklistener(new Button.OnClickListener() { ); 27 建立 Search.java(4) 在 OnClickListener 中加入下列 Code 宣告 Intent 以及 Bundle 將起點以及終點資料利用 putextras() 利用 sertresult() 將資料回傳前個 Activity, 並設置參數為 public void onclick(view v){ Intent i=new Intent(); Bundle b=new Bundle(); b.putstring("src", srctext.gettext().tostring()); b.putstring( putstring("dest", desttext.gettext().tostring()); tostring()); i.putextras(b); setresult(result_ok, i); finish(); 28

15 建立 Search.java(3) 設置 cancel 按鈕動作 buttonreturn=(button)findviewbyid(r.id.buttoncancel); buttonreturn.settext(r.string.cancel _ button); buttonreturn.setonclicklistener(new Button.OnClickListener() { ); 當按下按鈕時利用 setresult(), 設置回傳參數 public void onclick(view v) { setresult(result_canceled ); finish(); 29 修改 main.xml 檔 在 main.xml 檔內插入 TextView 用來顯示 Search Activity 回傳之起點及終點 <LinearLayout android:id="@+id/zoom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" i ti " ti > <TextView android:id="@+id/start" android:layout_width="fill_parent" android:layout_height="wrap_content" i ht " t t" android:textcolor="#ff0000" android:textstyle="italic" android:padding="20px" android:text="start" t "t t" /> </LinearLayout> 30

16 修改 main.java 接收 Activity 資料 再 main.java 加入下面 code, 接收 Search Activity protected void onactivityresult(int requestcode, int resultcode, Intent data){ if(requestcode==activity ACTIVITY_ROUTE){ if(resultcode==result_ok){ Bundle boude = data.getextras(); view_start.settext(boude.getstring("src")); view_end.settext(boude.getstring( end getstring("dest")); if(resultcode==result_canceled){ //do nothing 31 onactivityresult() 說明 用來接收 Activity 回傳資料 參數說明 requestcode: 辨識是哪個 Activity 回傳資料 resultcode: lc 辨識 Activity i 回傳的型態 Data: 儲存上個 Activity 所回傳的資料 32

17 顯示 MyLocation 新增 Class-MyOverlayer, 此 Class 繼承 MyLocationOverlay y public class MyOverlayer extends MyLocationOverlay { Override protected void drawmylocation(canvas canvas, MapView mapview, Location lastfix, GeoPoint myloc, long when) { 33 顯示 MyLocation 在 drawmylocation 中加入以下判斷式 (lastfix.hasspeed() && lastfix.getspeed() > 1) 判斷是否移動 if (lastfix.hasspeed() && lastfix.getspeed() > 1) {... else { 沒有移動執行下面程式碼 表示只顯示目前位置, 顯示 Google 內建 icon super.drawmylocation(canvas, mapview, lastfix, myloc, when); 34

18 顯示 MyLocation if(lastfix.hasspeed() && lastfix.getspeed() > 1) 若有移動則執行下段程式碼 若無 drawable 物件, 則宣告 drawable 物件, 取得其高度及寬度並新增 Point if (drawable == null) { drawable = mapview.getcontext().getresources().getdrawable(r.drawable.direction_arrow); accuracypaint = new Paint(); width = drawable.getintrinsicwidth(); i height = drawable.getintrinsicheight(); center = new Point(); 將目前位置投影至地圖上 將目前位置投影至地圖上 旋轉目前畫布,lastFix 為上一個位置, 旋轉角度為 GPS bearing 提供 設定 drawable 物件邊界 將圖形畫置畫布上 Projection projection = mapview.getprojection(); projection.topixels(myloc, center); canvas.rotate(lastfix.getbearing(), center.x, center.y); drawable.setbounds(center.x - width / 2, center.y - height / 2, center.x + width / 2, center.y + height / 2); drawable.draw(canvas); super.drawmylocation(canvas, mapview, lastfix, myloc, when); 35 Override MyLocation 程式 if (lastfix.hasspeed() && lastfix.getspeed() > 1) { if (drawable == null) { drawable = mapview.getcontext().getresources().getdrawable(r.drawable.direction_arrow); accuracypaint = new Paint(); width = drawable.getintrinsicwidth(); height = drawable.getintrinsicheight(); center = new Point(); Projection projection = mapview.getprojection(); projection.topixels(myloc, topixels(myloc center); canvas.rotate(lastfix.getbearing(), center.x, center.y); drawable.setbounds(center.x - width / 2, center.y - height / 2, center.x + width / 2, center.y + height / 2); else { drawable.draw(canvas); superdrawmylocation(canvas super.drawmylocation(canvas, mapview, lastfix, myloc, when); super.drawmylocation(canvas, mapview, lastfix, myloc, when); 36

19 顯示 MyLocation 初始化 GPS provider private void initlocationmanager() { locationlistener = new LocationListener(){ public void onlocationchanged(location location) { // TODO Auto-generated method stub locationupdated(location); public void onproviderdisabled(string provider) { // TODO Auto-generated method stub public void onproviderenabled(string provider) { // TODO Auto-generated method stub public void onstatuschanged(string provider, int status, Bundle extras) { // TODO Auto-generated method stub ; locationmanager = (LocationManager) getsystemservice(context.location_service); locationprovider = LocationManager.GPS_PROVIDER; locationmanager.requestlocationupdates(locationprovider, 0, 0, locationlistener); 37 在地圖上顯示自己位置 加入函式如下 新增物件實體 MyOverler 在 mapview 上加入 myoverlay 物件 private void initmylocation() { myoverlayer = new MyOverlayer(this, mapview); mapview.getoverlays().add(myoverlayer); myoverlayer.enablemylocation(); myoverlayer.runonfirstfix(new i Runnable(){ public void run(){ GeoPoint g = myoverlayer.getmylocation(); mapview.settraffic(true); mapview.getcontroller().setzoom(15); (1 ) mapview.getcontroller().setcenter(g); ); 38

20 實驗結果 39 練習時間 40

21 車輛定位與電子地圖整合服務 Android idprogramming Environment Nt Network koti Optimization i Lab Lb Department of Computer Science National Chiao Tung University 41 OUTLINE 改寫 onactivityresult() MapPoint Class 建立 地名轉經緯度 -Route-getGeoByAddress 取得路徑資料 - Route-findRoute 在地圖上畫上路徑 -MapOverlay-draw 建立當觸碰到路徑上 Pit Point 之方框及事件 MapOverlay-onTap MapOverlay-draw MapOverlay-getHitMapPoint 42

22 改寫 vns Acrivity 中 onactivityresult() 自 Search Acivity 中取得起點以及終點地址, 呼叫 getgeobyaddress() 將地址轉經緯度 利用 findroute protected void onactivityresult(int requestcode, int resultcode, Intent data){ if(requestcode==activity_route){ if(resultcode==result_ok){ Bundle b = data.getextras(); Toast toast = Toast.makeText(Vns.this,b.getString("src")+b.getString("dest"), kt h b S (" ") b S ("d ") Toast.LENGTH_SHORT); toast.show(); GeoPoint srcgp = route.getgeobyaddress(b.getstring("src")); GeoPoint destgp = route.getgeobyaddress(b.getstring("dest")); route.findroute(srcgp, destgp, Color.BLUE, mapview); if(resultcode==result_canceled){ //do nothing 43 建構路徑上 Point 之 Class 路徑上的 Point 我們加入下列中幾個成員 GeoPoint 用來辨認 Point 的經緯度 Type 用來便是此點的型態 Event 儲存此 Point 的事件描述 由以上幾點可建構出下面的 Class public class MapPoint { private GeoPointpoint; private int type; private String event; public MapPoint(int type, String event,double latitude, double longitude) { this.type = type; this.event = event; point = new GeoPoint((int)(latitude*1e6),(int)(longitude*1e6)); 44

23 建構路徑上 Point 之 Class 建立下列幾個方法以便未來取得 MapPoint 上資料 getpoint() 取得此 Point 的經緯度 getevent() 取得此 Point 的事件描述 gettype() 取得此 Point 的型態 public GeoPoint getpoint() { return point; public String getevent() { return event; public int gettype() { return type; 45 地名轉經緯度 使用者輸入為地址資料 Google Maps 認知為經緯度資料 必須將地址轉換成經緯度 Google 提供 API Geocoder 利用 Geocoder 將地址轉換成經緯度 在 Route Class 中加入 getgeobyaddress() findroute() 46

24 地名轉經緯度 - Geocoder Class 介紹 新增一個 Geocoder 物件 vns 為呼叫新增此物件之 Activity Locale.getDefault() 為查詢時所指定的區域 可使用 getdefault() 默認區域, 或者指定地區 Geocoder mgeocoder = new Geocoder(vns, Locale.getDefault()); 47 地名轉經緯度 - 利用 Geocoder 轉換地址 利用 Geocoder 中 getfromlocationname() 方法取得轉換後資料 strsearchaddress 為輸入地址資料 1 表示回傳的資料個數 List<Address> lstaddress = mgeocoder.getfromlocationname(strsearchaddress, 1); 48

25 地名轉經緯度 - 取得經緯度 宣告 Address Class 取得 Geocoder 轉換後 List 中第 0 筆資料 利用 Address Class 中,getLatitude() 及 getlongitude() 方法取得經緯度 將取得之經緯度加入新增之 GeoPoint 中 Address adslocation = lstaddress.get(0); double geolatitude = adslocation.getlatitude()*1e6; double geolongitude = adslocation.getlongitude()*1e6; gp = new GeoPoint((int) geolatitude, (int) geolongitude); 49 Input 為一段地址 地址轉經緯度 Code Reture 一個 GeoPoint ( 內含地址之經緯度 ) 加入至 Route Class 中 public GeoPoint getgeobyaddress(string strsearchaddress){ GeoPoint gp = null; Geocoder mgeocoder = new Geocoder(vns, Locale.getDefault()); List<Address> lstaddress = mgeocoder.getfromlocationname(strsearchaddress, 1); if (!lstaddress.isempty()){ Address adslocation = lstaddress.get(0); double geolatitude = adslocation.getlatitude()*1e6; double geolongitude = adslocation.getlongitude()*1e6; gp = new GeoPoint((int) geolatitude, (int) geolongitude); return gp; 50

26 取得起點至終點路徑 手機 Google Maps 必無內建找尋路徑功能 必須利用網路上 Google Maps 路徑找尋功能 利用 URL 連上網路 取得回傳 KML 檔 自 KML 檔中取得路徑資料 51 取得起點至終點路徑 - 利用 URL 新增一 String 用來儲存網址 仿照下圖中 urlstring.append() 依序將往只填入 String 中 下圖紅色框線, 上者為起點 下者為終點 StringBuilder urlstring = new StringBuilder(); urlstring.append(" google urlstring.append("&saddr="); urlstring.append( Double.toString((double)src.getLatitudeE6()/1.0E6 )); urlstring.append(","); urlstring.append( Double.toString((double)src.getLongitudeE6()/1.0E6 )); urlstring.append("&daddr="); urlstring.append( Double.toString((double)dest.getLatitudeE6()/1.0E6 )); urlstring.append(","); urlstring.append( Double.toString((double)dest.getLongitudeE6()/1.0E6 )); urlstring.append("&ie=utf8&0&om=0&output=kml"); p 52

27 練習 1 練習時間 在 onavtivityresult() 中將轉換後的經緯度顯示出來 練習 2 下圖中網址輸入經緯度後, 利用瀏覽器取得 KML 檔 交大 : 緯度 = , 經度 = 清大 : 緯度 = , 經度 = 緯度, 經度 &daddr= 緯度, 經度 &ie=utf8&0&om=0&output=kml 53 宣告 取得起點至終點路徑 - 宣告 Document 用來處存 URL 回傳的 KML 檔 HttpURLConnection 用來與 Internet 連接 URL 用來儲存 URL 網址 Document doc = null; HttpURLConnection urlconnection= null; URL url = null; 54

28 取得起點至終點路徑 - Connect Internet & Get KML File 新增一 URL 並將網址存入 URL 中 設定 urlconnerction 並與 Internet 連線 將回傳的 KML 檔存入 doc 中 url = new URL(urlString.toString()); tostring()); urlconnection=(httpurlconnection)url.openconnection(); urlconnection.setrequestmethod("get"); urlconnection.setdooutput(true); urlconnection.setdoinput(true); urlconnection.connect(); t() DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newdocumentbuilder(); doc = db.parse(urlconnection.getinputstream()); 55 取得起點至終點路徑 - 網址 &.kml 檔中所需內容 完整 URL 網址 p g p, &om=0&output=kml 回傳 KML 檔中的路徑資料 <GeometryCollection> <LineString> <coordinates> , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , </coordinates> </LineString> </GeometryCollection> 56

29 取得起點至終點路徑 - 自 KML 檔中取得經緯度 取得經緯度字串, 可利用下列方式 getelementbytagname g 表示取得特定的 Tag Item() 表示取得 KML 中第幾個特定的 Tag getfirstchild() 表示取得下一層 Tag, 但若第一次呼叫則回傳的是自己 getnodevalue() 取得 Tag 中的資料 String path=doc.getelementsbytagname("geometrycollection").item(0).getfirstchild().getfirstchild().getfirstchild().getnodevalue() ; 57 取得起點至終點路徑 getelementsbytagname("geometrycollection").item(0).getfirstchild() getfirstchild() getfirstchild() getnodevalue() 58

30 取得起點至終點路徑 - 在 MapViewer 中加入方法 將經緯度加入至 List 中 第一個參數代表此點之型態 第二個參數為此點之事件描述 第三 第四為經緯度值第四為經緯度值 routepath 為所宣告知 List private List<MapPoint> routepath; public void addroutepath(int type, String eventdescriptor, double lat, double lng) { routepath.add(new MapPoint(type,eventDescriptor, lat, lng)); 59 取得起點至終點路徑 - 在 MapViewer 中加入方法 取得儲存此路徑上之點的 List public List<MapPoint> i getroutepath() { return routepath; 將儲存路徑上點之 List 中資料清空 public void clearroutepath() { routepath.clear(); 60

31 取得起點至終點路徑 - 加入至 routepath 中 將一連串的經緯度資料 (Path) 拆開 利用 addroutepath() 將拆開的經緯度資料放入 routepath 中 未來畫路徑將依據 routepath 中資料 String [] pairs = path.split(" "); for(int i=0;i<pairs.length;i++){ StringBuilder addstr = new StringBuilder(); lnglat = pairs[i].split(","); addstr.append(" 經度 :"); addstr.append(lnglat[1]); addstr.append(", 緯度 :"); addstr.append(lnglat[0]); mapoverlay.addroutepath(0, addstr.tostring(), Double.parseDouble(lngLat[1]), Double.parseDouble(lngLat[0])); 61 取得 KML 檔中的路徑指示 KML 檔中會有許多的 Placemark tag, 這些 Placemark tag 中會含有路徑的指示資料 可以在 Placemark tag 下的 name tag 中可以找到路徑指示 Placemark tag 中的 coordinates tag 也可以找到此指示的經緯度座標 62

32 取得 KML 檔中的路徑指示 路徑上的指示描述 此路徑描述的經緯度位置 63 取得 KML 檔中的路徑指示 可以利用之前取得路徑經緯度的方法來取得路徑指示描述 String length = doc.getelementsbytagname("name").item(k).getfirstchild().getnodevalue(); 取得此指示描述的經緯度 String lnglat = doc.getelementsbytagname("coordinates").item(k).getfirstchild().getnodevalue().split(","); 64

33 Draw Route In The Map 在 MapOverLay 修改 draw() 方法畫路徑 URL 回傳為多個經緯度值 儲存這多個經緯度值至 List 中 利用此 List 將點標至地圖上 將點與點之間連線 65 Draw Route In The Map - 畫出路徑 (1) 宣告一個 Projection 用來將地圖上之點投影至手機上 private Projection projection; projection = mapview.getprojection(); 宣告 Iterator 用來控制 List Iterator<MapPoint> iterator; iterator = mapviwer.getroutepath().iterator(); 66

34 Draw Route In The Map - 畫出路徑 (2) 設定 Paint 物件顏色, 未來畫圖時會根據設定的顏色 paint.setcolor(color.blue); 設定畫圖的範圍, 參數的設定表示畫圖位置及範圍相對於 p1 RectF oval1 = new RectF(p1.x - 10, p1.y - 10,p1.x + 10, p1.y + 10); 利用 drawoval() 畫上圓型在上述兩個設定參數 canvas.drawoval(oval1, paint); 67 Draw Route In The Map - 畫出路徑 (3) 當第一次讀取到此 List 時, 會先判斷 List 是否有資料 若 List 中有資料, 則新增一 Point(p1) 並取得第一筆資料 將第一筆資料利用 Projection 投影至手機地圖上, 並標上起點圖式 if (iterator.hasnexiteratort()) { MapPoint startpoint = iterator.next(); Point p1 = new Point(); projection.topixels(startpoint.getpoint(), p1); paint.setcolor(color.blue); RectF oval1 = new RectF(p1.x - 10, p1.y - 10,p1.x + 10, p1.y + 10); canvas.drawoval(oval1, l1 paint);. 68

35 Draw Route In The Map - 畫出路徑 (4) 繼續往下尋找下一筆資料 當此 List 還有資料, 則在新增一 Point(iP1), 再將所讀到下一筆資料投影至手機地圖上 將兩點做連線 while (iterator.hasnext()) { MapPoint ipoint = iterator.next(); Point ip1 = new Point(); projection.topixels(ipoint.getpoint(), ip1); paint.setcolor(color.blue); paint.setstrokewidth(5); paint.setalpha(250); canvas.drawline(p1.x, p1.y, ip1.x, ip1.y, paint);. 69 Draw Route In The Map - 畫出路徑 (5) 判斷 List 是否還有資料, 若無資料, 則將剛剛新增那一點標上結束圖式 若 List 還有資料, 則標上路徑中圖式並將第二個 Point (ip1)assign 至第一個 Point (p1) RectF oval2=new RectF(iP1.x - mradius,ip1.y - mradius,ip1.x + mradius,ip1.y + mradius); if (!iterator.hasnext()) { paint.setcolor(color.green); l paint.setalpha(255); canvas.drawoval(oval2, paint); else { paint.setcolor(color.black); paint.setalpha(255); canvas.drawoval(oval2, paint); p1 = ip1; 70

36 Draw Route In The Map 加入至 MapOverlay public boolean draw(canvas canvas, MapView mapview, boolean shadow, long when) { projection = mapview.getprojection(); if (shadow == false) { Iterator<MapPoint> iterator; iterator = mapviewer.getroutepath().iterator(); (); if (iterator.hasnext()) { MapPoint startpoint = iterator.next(); paint.setantialias(true); Point p1 = new Point(); projection.topixels(startpoint.getpoint(), p1); paint.setcolor(color.blue); RectF oval1 = new RectF(p1.x - mradius,,p1.y - mradius, p1.x + mradius, p1.y + mradius); canvas.drawoval(oval1, paint); while (iterator.hasnext()) { MapPoint ipoint = iterator.next(); Point ip1 = new Point(); projection.topixels(ipoint.getpoint(), ip1); paint.setcolor(color.gray); ) paint.setstrokewidth(5); paint.setalpha(120); canvas.drawline(p1.x, p1.y, ip1.x, ip1.y, paint); RectF oval2=new RectF(iP1.x - mradius,ip1.y - mradius,ip1.x + mradius,ip1.y + mradius); if (!iterator.hasnext()) { paint.setcolor(color.green); paint.setalpha(255); p canvas.drawoval(oval2, paint); else { paint.setcolor(color.black); paint.setalpha(255); canvas.drawoval(oval2, paint); p1 = ip1; return super.draw(canvas, mapview, shadow, when); 71 練習 練習時間 在地圖上畫出起點至終點路徑 72

37 路徑對話框設計 首先需要設計點道路徑上點時所跳出之對話框 當 Touch 道路徑上所標示的點, 則跳出對話框 73 路徑對話框設計 必須在 MapOverlay Class 中實作或修改下列方法 ontap() 方法, 當我們觸碰到螢幕時所發生的事件 draw() 方法, 畫出對話方框 新增 gethitmappoint(), i 用來確認觸碰的點是否在路徑上 74

38 路徑對話框設計 - 設計對話框 宣告一 Point, 儲存 Touch 銀幕上位置 selectedmappoint 表示觸碰在 Google Maps 上的 Point seldestinationoffset 表示在螢幕上的一 Point 將 selectedmappoint 投影在螢幕上的一 Point seldestinationoffset Point seldestinationoffset = new Point(); mapview.getprojection().topixels(selectedmappoint.getpoint(), seldestinationoffset); 75 路徑對話框設計 宣告對話框之長寬度, 並新增對話框 INFO_ WINDOW_ WIDTH 設定方框的寬度 INFO_WINDOW_HEIGHT 設定方框的高度 利用上述宣告的參數宣告一個方框 int INFO_WINDOW_WIDTH = 200; int INFO_WINDOW_HEIGHT = 20; RectF infowindowrect = new RectF(0,0,INFO_WINDOW_WIDTH,INFO_WINDOW_HEIGHT); 76

39 路徑對話框設計 宣告當 Touch 銀幕時, 設定對話框會在 Touch 螢幕上點的位置 int infowindowoffsetx = seldestinationoffset.x-info_window_width/2; int infowindowoffsety = seldestinationoffset.y-info_window_height-bubbleicon.getheight(); infowindowrect.offset(infowindowoffsetx,infowindowoffsety); 利用 canvas 將對話框畫在螢幕上 infowindowrect 為上面所設定之參數 2 3 個參數為設定方框左右的圓弧度 getinnerpaint 為額外自訂的 Paint 物件 canvas.drawroundrect(infowindowrect, 5, 5, getinnerpaint()); 77 路徑對話框設計 設定對話框中可加入文字位置 取出路徑上點中的事件 利用 canvas.drawtext() 將事件寫入對話框中 gettexpaint 為自訂的 Paint 物件 int TEXT_OFFSET_X X = 10; int TEXT_OFFSET_Y = 15; String showevent = selectedmappoint.getevent(); canvas.drawtext(showevent,infowindowoffsetx+text_offset_x,infowindowoffsety+text_offset_y,gettextpaint()); 78

40 自訂的 Paint 物件 路徑對話框設計 在此函式中新增一個 Paint() 物件 利用 setargb() 設定顏色 setantialisa() 設定反鋸齒 public Paint gettextpaint() { if ( textpaint == null) { textpaint = new Paint(); textpaint.setargb(255, 255, 255, 255); textpaint.setantialias(true); return textpaint; 79 路徑對話框設計 private void drawinfowindow(canvas canvas, MapViewmapView, boolean shadow) { if ( selectedmappoint!= null) { if (shadow) { else { Point seldestinationoffset = new Point(); mapview.getprojection().topixels(selectedmappoint.getpoint(), seldestinationoffset); int INFO_WINDOW_WIDTH = 200; int INFO_WINDOW_HEIGHT O = 20; RectF infowindowrect = new RectF(0,0,INFO_WINDOW_WIDTH,INFO_WINDOW_HEIGHT); int infowindowoffsetx = seldestinationoffset.x-info_window_width/2; int infowindowoffsety = seldestinationoffset.y-info_window_height-bubbleicon.getheight(); infowindowrect.offset(infowindowoffsetx,infowindowoffsety); canvas.drawroundrect(infowindowrect, 5, 5, getinnerpaint()); canvas.drawroundrect(infowindowrect, 5, 5, getborderpaint()); int TEXT_OFFSET_X = 10; int TEXT_OFFSET_Y = 15; String showevent = selectedmappoint.getevent(); canvas.drawtext(showevent,infowindowoffsetx+text_offset_x,infowindowoffsety+text_offset_y,gettextpaint()); 80

41 ontap() 事件 設定當手觸碰到螢幕時事件 首先, 當手觸碰到螢幕時會去看 selectpoint 是否為 Null, 並將結果存入 isremovepriorpopup p中 private MapPoint public boolean ontap(geopoint p, MapView mapview) { boolean isremovepriorpopup = (selectedmappoint!= null);. 81 ontap() 事件 呼叫 gethitmappoint() 確認觸碰的點是否是路徑上的 Point, 若是則回傳觸碰到 Point selectedmappoint = gethitmappoint(mapview,p); 測試 ir isremovepriorpopup Pi P OR (selectedmappoint!= null), 若回傳 True 則重畫畫面 if ( isremovepriorpopup selectedmappoint!= null) { mapview.invalidate(); 82

42 ontap() 事件 回傳 (return selectedmappoint!= null), 畫對話方框時會依據這回傳的值 private MapPoint public boolean ontap(geopoint p, MapView mapview) { boolean isremovepriorpopup = (selectedmappoint!= null); selectedmappoint = gethitmappoint(mapview,p); if ( isremovepriorpopup selectedmappoint!= null) { mapview.invalidate(); return selectedmappoint!= null; 83 確認觸碰點是否在路徑上 宣告一 MapPoint 表示未來要回傳的 Point 宣告一方框表示觸控的區域 宣告一 Point-screenCoords 用來投影 routepath 上的 Point 宣告一 Point-touchCoords 用來投影處空到螢幕上的 Point MapPoint hitmaplocation = null; RectF hittestrecr = new RectF(); Point screencoords = new Point(); Point touchcoords = new Point(); 84

43 確認觸碰點是否在路徑上 在 While 迴圈中 將路徑上的 Point 投影至宣告的 screencoords mapview.getprojection().topixels(testlocation.getpoint(), screencoords); 設定觸控的範圍 hittestrecr.set(-mradius,-mradius*2,mradius,0); hittestrecr.offset(screencoords.x,screencoords.y); 85 確認觸碰點是否在路徑上 將觸控的 Point 投影至 touchcoords mapview.getprojection().topixels(tappoint, touchcoords ); 若觸控的 Point 在設定的方框內, 則 break 跳出迴圈, 並將此 Point assign 至 hitmaplocation 中 if (hittestrecr.contains(touchcoords.x, touchcoords.y)) { hitmaplocation = testlocation; break; 回傳 hitmaplocation tappoint = null return hitmaplocation; 86

44 確認觸碰點是否在路徑上 確定觸碰的 Point 是否在 routepath 上 private MapPoint gethitmappoint(mapviewmapview, GeoPoint tappoint) { MapPoint hitmaplocation = null; RectF hittestrecr = new RectF(); Point screencoords = new Point(); Point touchcoords = new Point(); Iterator<MapPoint> iterator = this.getroutepath().iterator(); while(iterator.hasnext()) t h t()) { MapPoint testlocation = iterator.next(); mapview.getprojection().topixels(testlocation.getpoint(), screencoords); hittestrecr.set(-mradius,-mradius*2,mradius,0); hittestrecr.offset(screencoords.x,screencoords.y); mapview.getprojection().topixels(tappoint, touchcoords ); if (hittestrecr.contains(touchcoords.x, touchcoords.y)) { hitmaplocation = testlocation; break; tappoint = null return hitmaplocation; 87 練習時間 練習時間 將 Route 中路徑改為事件路徑 加上觸碰對話框 88

45 設計泡泡對話框 (1) 外部這一個水平 Linear Layout 是一個 Image View 內部是一個垂直的 Linear Layout 89 設計泡泡對話框 (2) 外部整個 Linearlayout 設定 <?xml version="1.0 0" encoding="utf utf-8 8"?> <LinearLayout xmlns:android=" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" android:paddingbottom="35dip" android:paddingleft="10dip" android:minwidth="200dip" @ _ overlay_ bg_ selector" android:paddingtop="0dip" android:paddingright="0dip">.. </LinearLayout> 90

46 設計泡泡對話框 (3) 設定當按到 Bulloon 時 Bullon overlay bg selector" drawable/balloon_overlay_bg_selector 為一個 XML 檔內容如下 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android=" android com/apk/res/android"> <item android:state_pressed="true" /> <item android:state_pressed="false" /> </selector> 91 設計泡泡對話框 (4) 內部垂直 Linearlayout <LinearLayout android:layout_width="wrap_content" idth " " android:layout_height="wrap_content" android:orientation="vertical" android:layout_weight="1" android:paddingtop="10dip" <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" android:text="balloon balloon_item_title title" android:textsize="16dip" android:textcolor="#ff000000"></textview> <TextView android:layout_height="wrap_content" android:layout_width="fill_parent" it i t" android:text="balloon_item_snippet" android:textsize="12dip"></textview> </LinearLayout> 92

47 ImageView 設定 設計泡泡對話框 (5) <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" _ img_ button" android:paddingleft="10dip" android:paddingbottom="10dip" android:paddingright="8dip" android:paddingtop="8dip"> </ImageView> 93

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

Microsoft PowerPoint - Lab 2-3 Android Google Maps.ppt [相容模式]

Microsoft PowerPoint - Lab 2-3 Android Google Maps.ppt [相容模式] 車輛定位與電子地圖整合服務 定位與 Google Maps Network Optimization Lab Department of Computer Science National Chiao Tung University 1 定位與 Google Maps Lab 簡介 : 路徑軌跡記錄程式 Google Maps 程式技巧 取得目前位置經緯度 建立 Google Maps 標示目前位置

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

Microsoft Word - PHP7Ch01.docx

Microsoft Word - PHP7Ch01.docx PHP 01 1-6 PHP PHP HTML HTML PHP CSSJavaScript PHP PHP 1-6-1 PHP HTML PHP HTML 1. Notepad++ \ch01\hello.php 01: 02: 03: 04: 05: PHP 06:

More information

投影片 1

投影片 1 Chapter 11 Google 服務應用開發 Google 服務應用開發 Google 提供了許多免費服務, 例如搜尋引擎 Google Map Google 翻譯 Google 文件 Google 日曆 GMail Google Talk Youtube 等常見的服務,Google 擁有大量的資料以及對這些資料作分析的能力, 因此可以提供更多元的服務類型 在豐富的資源下將 Google 服務與

More information

0511-Android程式之GPS應用_專題週記4

0511-Android程式之GPS應用_專題週記4 逢甲大學通訊工程學系專題研究 Android 程式之 GPS 應用 專題週記 0511 學生姓名 陳彥儒 D0035131 廖元譽 D0077791 指導老師 楊豐瑞老師繳交日期 2014.05.11 1 匯入 GoogleMap 1.1 取得授權步驟 目前進度 取得 Google 授權鑰匙 實作程式尚未成功 1.1.1 建立個人的 keystore 1.1.2 由個人的 keystore 查詢 SHA1

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

建立Android新專案

建立Android新專案 經濟部工業局 Android 智慧型手機程式設計實務應用班 Android WebService 建國科技大學資管系 饒瑞佶 2012/4 WebService 需要 ksoap2-android-assembly-2.5.2-jar-withdependencies.jar 或 ksoap2-android-assembly-2.5.2-jar-withdependencies_timeout1.jar

More information

Android 开发教程

Android 开发教程 封面 1 文件存取编程基础 文件 文件可以用来存储比使用引用更大数量的数据 Android 提供方法来读 写文件 只有本地文件可以被访问 优点 : 可以存储大容量的数据 缺点 : 文件更新或是格式改变可能会导致巨大的编程工作 文件操作 读文件 Context.openFileInput(String name) 打开一个与应用程序联系的私有文件输入流 当文件不存在时抛出 FileNotFoundException

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp 01 1.6 Spyder Anaconda Spyder Python Spyder Python Spyder Spyder 1.6.1 Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Spyder Python File

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

untitled

untitled ArcGIS Server Web services Web services Application Web services Web Catalog ArcGIS Server Web services 6-2 Web services? Internet (SOAP) :, : Credit card authentication, shopping carts GIS:, locator services,

More information

mvc

mvc Build an application Tutor : Michael Pan Application Source codes - - Frameworks Xib files - - Resources - ( ) info.plist - UIKit Framework UIApplication Event status bar, icon... delegation [UIApplication

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

ShareText

ShareText 作者 : 林致宇 日期 :2012/1/23 問題 : 如何分享分享文字資訊給其它的應用程式? 解答 : 有時候我們可能會希望 我們的應用程式的資訊 能夠讓使用者分享出去, 讓使用者能夠將此資訊傳送簡訊給其好友或寄電子郵件的方式寄給其好友, 這份文件將示範如何寫出這樣的應用程式 本文件將產出兩個 App, 第一個 App 是 分享資料的來源, 名為 CopyPaste_Source, 功能非常簡單,

More information

RecyclerView and CardVew

RecyclerView and CardVew RecyclerView and CardView 建國科技大學資管系饒瑞佶 2017/10 V1 CardView CardView A CardView is a ViewGroup. Like any other ViewGroup, it can be added to youractivity or Fragment using a layout XML file. To create an

More information

Microsoft Word - 02.目錄.doc

Microsoft Word - 02.目錄.doc 目錄 -1- 目錄 序 準備篇 一 使用說明... 0-2 二 標示說明... 0-6 三 注意事項... 0-7 第一類 Android 基礎知識 -UI 設計及語法應用 101. 整存整付計算機... 1-2 102. 電費計算機... 1-8 103. 點餐系統... 1-18 104. 計算 BMI 值... 1-23 105. MENU 功能選單... 1-36 106. 畫廊展示...

More information

Microsoft PowerPoint - 12 特色开发.ppt [兼容模式]

Microsoft PowerPoint - 12 特色开发.ppt [兼容模式] 手 机 应 用 平 台 软 件 开 发 12 特 色 开 发 刘 宁 Email:liuning2@mail.sysu.edu.cn Android 的 传 感 器 系 统 传 感 器 系 统 综 述 传 感 器 系 统 层 次 结 构 传 感 器 系 统 的 硬 件 抽 象 层 传 感 器 系 统 的 使 用 传 感 器 系 统 综 述 传 感 器 (Sensor) 系 统 可 以 让 智 能 手

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information

Android 编程基础 Android 开发教程 & 笔记 1

Android 编程基础 Android 开发教程 & 笔记 1 Android 开发教程 & 笔记 1 多式样 ProgressBar 撰写 : 地狱怒兽 联系 :zyf19870302@126.com 普通圆形 ProgressBar 该类型进度条也就是一个表示运转的过程, 例如发送短信, 连接网络等等, 表示一个过程正 在执行中 一般只要在 XML 布局中定义就可以了

More information

PowerPoint 簡報

PowerPoint 簡報 UI 設計 Android 專案目錄架構 Android 專案建立後會自動產生 3 個主要目錄 src:java 程式檔案 res: 資源 ( 文字 圖形 聲音檔案等 ) 與 UI 設定有關的 layout 檔 此目錄內檔案名稱只能為小寫字母 數字 _. gen:r.java 根據 res 目錄內容自動產生 不要去修改 R.java Android 中所有的資源檔案 ( 圖片 XML 等 ) 命名都必須使用英文小寫,

More information

Database_001

Database_001 作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的

More information

EJB-Programming-3.PDF

EJB-Programming-3.PDF :, JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Value Object Design Pattern J2EE Design Patterns Value Object Value Object Factory J2EE EJB Test Client

More information

untitled

untitled 1 Outline 流 ( ) 流 ( ) 流 ( ) 流 ( ) 流 ( ) 狀 流 ( ) 利 來 行流 if () 立 行 ; else 不 立 行 ; 例 sample2-a1 (1) 列 // 料 Console.Write(""); string name = Console.ReadLine(); Console.WriteLine(" " + name + "!!"); 例 sample2-a1

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F

1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET NET Framework.NET Framework 2.0 ( 3 ).NET Framework 2.0.NET F 1 Framework.NET Framework Microsoft Windows.NET Framework.NET Framework NOTE.NET 2.0 2.0.NET Framework.NET Framework 2.0 ( 3).NET Framework 2.0.NET Framework ( System ) o o o o o o Boxing UnBoxing() o

More information

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2

Python a p p l e b e a r c Fruit Animal a p p l e b e a r c 2-2 Chapter 02 變數與運算式 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 type 2.2.4 2.3 2.3.1 print 2.3.2 input 2.4 2.4.1 2.4.2 2.4.3 2.4.4 2.4.5 + 2.4.6 Python Python 2.1 2.1.1 a p p l e b e a r c 65438790

More information

Android 开发教程

Android 开发教程 封面 1 GUI 可视化设计器 DroidDraw DroidDraw 是一个基于 Java Swing 的 Android 界面设计器, 可以通过它来生成复杂的 Android Layout XML 文 件,Android 的 Layout 和 Swing Layout 中有很好的对应, 设计器的代码编写起来比较容易 2 AnDroidDraw AnDroidDraw 是一个与 DroidDraw

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 多个用户界面的程序设计 3.1 页面的切换与传递参数值 3.1.1 传递参数组件 Intent Intent 是 Android 系统的一种运行时的绑定机制, 在应用程序运行时连接两个不同组件 在 Android 的应用程序中不管是页面切换还是传递数据或是调用外部程序都可能要用到 Intent Intent 负责对应用中某次操作的动作 动作涉及的数据 附加数据进行描述, Android

More information

KillTest 质量更高 服务更好 学习资料 半年免费更新服务

KillTest 质量更高 服务更好 学习资料   半年免费更新服务 KillTest 质量更高 服务更好 学习资料 http://www.killtest.cn 半年免费更新服务 Exam : 310-055Big5 Title : Sun Certified Programmer for the Java 2 Platform.SE 5.0 Version : Demo 1 / 22 1. 11. public static void parse(string str)

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年秋北京 Android是什么 Android不仅仅是一个操作系统 它更是一个完整的软件框 架 Android基于Linux内核 2005年Google公司收购了Android公司 Google公司选择使用Apache许可证开放Android源码

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

可 Web 编程的NativeUI 设计与实现

可 Web 编程的NativeUI  设计与实现 可 Web 编程的 NativeUI 设计与实现 张袁炜 zhangyuanwei@baidu.com 欢迎转岗简历请发 About Me @ 张袁炜 直达号 网址导航 百度 音乐 前端 Node.js Android Arduino RaspberryPI https://github.com/zhangyuanwei Outline 一个 Hybrid App 的进化史 Native UI 实现原理

More information

建模与图形思考

建模与图形思考 C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性

More information

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6

1.JasperReport ireport JasperReport ireport JDK JDK JDK JDK ant ant...6 www.brainysoft.net 1.JasperReport ireport...4 1.1 JasperReport...4 1.2 ireport...4 2....4 2.1 JDK...4 2.1.1 JDK...4 2.1.2 JDK...5 2.1.3 JDK...5 2.2 ant...6 2.2.1 ant...6 2.2.2 ant...6 2.3 JasperReport...7

More information

Android + NFC

Android + NFC Android + NFC 建國科技大學資管系饒瑞佶 2017/3 v1 讀取 Tag UUID Android 2.3.3 (API Level 10) 才有支援完整的 NFC 功能 只要 NFC 相容都讀的到 (NFC 或 Mifare) 建立新專案修改 AndroidManifest.xml 加入 , 如果有 NFC Tag 進入感測範圍, 本 App 也會變成可處理的

More information

建模与图形思考

建模与图形思考 F06_c 观摩 :ContentProvider 基於軟硬整合觀點 架构與 DB 引擎移植方法 ( c) By 高煥堂 4 通用性基类 ContentProvider 基於軟硬整合觀點 的使用范例 刚才的范例里, 我们直接使用 DataPersist 类的接口来与 SQLite 沟通 本节将替 DataPersist 配上 ContentProvider 基类, 让 Client 能透过 ContentProvider

More information

FY.DOC

FY.DOC 高 职 高 专 21 世 纪 规 划 教 材 C++ 程 序 设 计 邓 振 杰 主 编 贾 振 华 孟 庆 敏 副 主 编 人 民 邮 电 出 版 社 内 容 提 要 本 书 系 统 地 介 绍 C++ 语 言 的 基 本 概 念 基 本 语 法 和 编 程 方 法, 深 入 浅 出 地 讲 述 C++ 语 言 面 向 对 象 的 重 要 特 征 : 类 和 对 象 抽 象 封 装 继 承 等 主

More information

1. 2. Flex Adobe 3.

1. 2. Flex Adobe 3. 1. 2. Flex Adobe 3. Flex Adobe Flex Flex Web Flex Flex Flex Adobe Flash Player 9 /rich Internet applications/ria Flex 1. 2. 3. 4. 5. 6. SWF Flash Player Flex 1. Flex framework Adobe Flex 2 framework RIA

More information

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款

使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 JAVA 程 序 设 计 ( 肆 ) 徐 东 / 数 学 系 使 用 Java 语 言 模 拟 保 险 箱 容 量 门 板 厚 度 箱 体 厚 度 属 性 锁 具 类 型 开 保 险 箱 关 保 险 箱 动 作 存 取 款 使 用 Java class 代 表 保 险 箱 public class SaveBox 类 名 类 类 体 实 现 封 装 性 使 用 class SaveBox 代 表 保

More information

實作SQLiteOpenHelper類別

實作SQLiteOpenHelper類別 SQLiteOpenHelper 類別存取 SQLite 建國科技大學資管系 饒瑞佶 2013/5 V1 Android 連結資料庫 MySQL SQL Server Web Service 遠端資料庫 Internet Intranet Android SQLite 單機資料庫 Android vs. SQLite 透過 SQLiteOpenHelper 類別來操作 建立資料庫 ( 建構子 ) 建立資料表

More information

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit

(TestFailure) JUnit Framework AssertionFailedError JUnit Composite TestSuite Test TestSuite run() run() JUnit Tomcat Web JUnit Cactus JUnit Java Cactus JUnit 26.1 JUnit Java JUnit JUnit Java JSP Servlet JUnit Java Erich Gamma Kent Beck xunit JUnit boolean JUnit Java JUnit Java JUnit Java 26.1.1 JUnit JUnit How

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 49 [P.51] C/C++ [P.52] [P.53] [P.55] (int) [P.57] (float/double) [P.58] printf scanf [P.59] [P.61] ( / ) [P.62] (char) [P.65] : +-*/% [P.67] : = [P.68] : ,

More information

untitled

untitled 1 LinkButton LinkButton 連 Button Text Visible Click HyperLink HyperLink 來 立 連 Text ImageUrl ( ) NavigateUrl 連 Target 連 _blank _parent frameset _search _self 連 _top 例 sample2-a1 易 連 private void Page_Load(object

More information

1 請 至 下 載 Google Earth 6.0 版 圖 6-1: 下 載 畫 面 2 開 啟 Google Earth, 認 識 Google Earth 的 基 本 介 面 2. 搜 尋 1. 主 功 能 選 單 5. 工 具 列 6 導 航

1 請 至  下 載 Google Earth 6.0 版 圖 6-1: 下 載 畫 面 2 開 啟 Google Earth, 認 識 Google Earth 的 基 本 介 面 2. 搜 尋 1. 主 功 能 選 單 5. 工 具 列 6 導 航 一 課 程 介 紹 : Google Earth & Google Map 操 作 與 應 用 Google Map / Google Earth 都 是 由 Google 所 提 供 的 地 圖 網 路 服 務 Google Map 是 透 過 網 路 瀏 覽 器, 直 接 在 線 上 瀏 覽 高 解 析 度 的 衛 星 影 像 以 及 各 個 地 區 詳 盡 的 主 題 圖 ( 譬 如 : 道

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Fortran Algol Pascal Modula-2 BCPL C Simula SmallTalk C++ Ada Java C# C Fortran 5.1 message A B 5.2 1 class Vehicle subclass Car object mycar public class Vehicle extends Object{ public int WheelNum

More information

Microsoft Word - ASM SDK 說明文件

Microsoft Word - ASM SDK 說明文件 System Monitor SDK (for Android) 開發者指南說明書 1. 技術項目簡介 經由簡化的應用程式介面 (Application Programming Interface), 可 提供給 Android 應用程式開發者開發基於 System monitor 的應用程式 2. 應用範圍說明 本技術可應用於具備 Android 系統 2.3.3 以上版本的 Android 嵌入式裝

More information

Microsoft Word - ch04三校.doc

Microsoft Word - ch04三校.doc 4-1 4-1-1 (Object) (State) (Behavior) ( ) ( ) ( method) ( properties) ( functions) 4-2 4-1-2 (Message) ( ) ( ) ( ) A B A ( ) ( ) ( YourCar) ( changegear) ( lowergear) 4-1-3 (Class) (Blueprint) 4-3 changegear

More information

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK

關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK 2 l 跨裝置網頁設計 Android ios Windows 8 BlackBerry OS Android HTML 5 HTML 5 HTML 4.01 HTML 5 CSS 3 CSS 3 CSS 2.01 CSS 3 2D/3D PC JavaScript

More information

untitled

untitled PowerBuilder Tips 利 PB11 Web Service 年度 2 PB Tips PB9 EAServer 5 web service PB9 EAServer 5 了 便 web service 來說 PB9 web service 力 9 PB11 release PB11 web service 力更 令.NET web service PB NVO 論 不 PB 來說 說

More information

untitled

untitled 1 .NET 利 [] [] 來 說 切 切 理 [] [ ] 來 說 拉 類 類 [] [ ] 列 連 Web 行流 來 了 不 不 不 流 立 行 Page 類 Load 理 Response 類 Write 料 Redirect URL Response.Write("!! ives!!"); Response.Redirect("WebForm2.aspx"); (1) (2) Web Form

More information

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B

9, : Java 19., [4 ]. 3 Apla2Java Apla PAR,Apla2Java Apla Java.,Apla,,, 1. 1 Apla Apla A[J ] Get elem (set A) A J A B Intersection(set A,set B) A B A B 25 9 2008 9 M ICROEL ECTRON ICS & COMPU TER Vol. 25 No. 9 September 2008 J ava 1,2, 1,2, 1,2 (1, 330022 ; 2, 330022) :,. Apla - Java,,.. : PAR ;Apla - Java ; ;CMP ; : TP311 : A : 1000-7180 (2008) 09-0018

More information

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题

2009年3月全国计算机等级考试二级Java语言程序设计笔试试题 2009 年 3 月 全 国 计 算 机 等 级 考 试 笔 试 试 卷 二 级 Java 语 言 程 序 设 计 ( 考 试 时 间 90 分 钟, 满 分 100 分 ) 一 选 择 题 ( 每 题 2 分, 共 70 分 ) 下 列 各 题 A) B) C) D) 四 个 选 项 中, 只 有 一 个 选 项 是 正 确 的 请 将 正 确 选 项 填 涂 在 答 题 卡 相 应 位 置 上,

More information

PowerPoint 簡報

PowerPoint 簡報 Paint 繪圖板 JAVA 程式設計 指導老師 : 鄞宗賢 組員 : 4A3G0901 劉彥佐 4A3G0907 韓偉志 畫面預覽 匯入參數 package paint; import java.awt.*; import java.awt.event.*; import javax.swing.*; 主程式 public class paint{ public static void main(string[]

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 程 式 設 計 與 應 用 班 Android Google Maps 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 Google Maps Reference: http://developer.android.com/resources/tutorials/views/hello-mapview.html

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一八年秋北京 Android 是什么 Android 不仅仅是一个操作系统, 它更是一个完整的软件框架 Android 基于 Linux 内核 2005 年 Google 公司收购了 Android 公司 Google 公司选择使用 Apache

More information

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog 計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 介面元件 -TableLayout Toast AlertDialog 國立高雄大學資訊工程學系張保榮教授 大綱 TableLayout 版面配置 Toast 版面配置 AlertDialog 版面配置 TableLayout

More information

建立Android新專案

建立Android新專案 Android 智慧型手機程式設計 Android Google Maps 建國科技大學資管系饒瑞佶 2012/4 V1 2012/8 V2 2013/5 V3 V4 2014/10 v5 Google Maps Reference: https://developers.google.com/maps/documentation/android/start#creating _an_api_project

More information

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer)

2/14 Buffer I12, /* x=2, buffer = I 1 2 */ Buffer I243, /* x=34, buffer = I 2 43 */ x=56, buffer = I243 Buffer I243I265 code_int(int x, char *buffer) 1/14 IBM Rational Test RealTime IBM, 2004 7 01 50% IBM Rational Test RealTime IBM Rational Test RealTime 1. 50% IBM Rational Test RealTime IBM Rational Test RealTime 2. IBM Rational Test RealTime Test

More information

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系

教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 學校系所 : 樹德科技大學資訊工程學系 教育部補助資訊軟體人才培育先導計畫 100 年度課程發展專案計畫 實驗課程名稱 : IPC(Inter-Process Communication) 開發教師 : 張晉源老師 開發學生 : 林政揚 (s11639104@stu.edu.tw) 學校系所 : 樹德科技大學資訊工程學系 實驗目的 本實驗的目的在於讓同學們可以了解 Android 系統核心內部的行程通訊的原理, 透過呼叫系統提供的其中一樣服務

More information

java2d-4.PDF

java2d-4.PDF 75 7 6 G r a d i e n t P a i n t B a s i c S t r o k e s e t P a i n t ( ) s e t S t o r k e ( ) import java.awt.*; import java.awt.geom.*; public class PaintingAndStroking extends ApplicationFrame { public

More information

任务实施 (1) 创建项目 图 3-1 欢迎界面 首先创建一个工程, 将其命名为 BoXueGu, 指定包名为 com.boxuegu (2) 导入界面图片将欢迎界面所需要的背景图片 launch_bg.png 导入到 drawable 文件夹中, 项目的 icon 图标 app_icon.png

任务实施 (1) 创建项目 图 3-1 欢迎界面 首先创建一个工程, 将其命名为 BoXueGu, 指定包名为 com.boxuegu (2) 导入界面图片将欢迎界面所需要的背景图片 launch_bg.png 导入到 drawable 文件夹中, 项目的 icon 图标 app_icon.png 第 3 章注册与登录模块 学习目标 掌握欢迎界面的开发, 能够独立制作欢迎界面 ; 掌握注册和登录模块的开发, 能够实现用户登录功能 博学谷项目的注册与登录模块主要用于创建用户账号, 管理用户信息 当用户注册成功后会跳转到登录界面, 用户登录后可以修改密码以及设置密保, 且只有设置过密保的账户才可以找回密码 本章将针对注册与登录模块进行详细讲解 3.1 欢迎界面 任务综述 在实际开发中, 开启应用程序时首先会呈现一个欢迎界面,

More information

基于CDIO一体化理念的课程教学大纲设计

基于CDIO一体化理念的课程教学大纲设计 Java 语 言 程 序 设 计 课 程 教 学 大 纲 Java 语 言 程 序 设 计 课 程 教 学 大 纲 一 课 程 基 本 信 息 1. 课 程 代 码 :52001CC022 2. 课 程 名 称 :Java 语 言 程 序 设 计 3. 课 程 英 文 名 称 :Java Programming 4. 课 程 类 别 : 理 论 课 ( 含 实 验 上 机 或 实 践 ) 5. 授

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

More information

javaexample-02.pdf

javaexample-02.pdf n e w. s t a t i c s t a t i c 3 1 3 2 p u b l i c p r i v a t e p r o t e c t e d j a v a. l a n g. O b j e c t O b j e c t Rect R e c t x 1 y 1 x 2 y 2 R e c t t o S t r i n g ( ) j a v a. l a n g. O

More information

新版 明解C++入門編

新版 明解C++入門編 511!... 43, 85!=... 42 "... 118 " "... 337 " "... 8, 290 #... 71 #... 413 #define... 128, 236, 413 #endif... 412 #ifndef... 412 #if... 412 #include... 6, 337 #undef... 413 %... 23, 27 %=... 97 &... 243,

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 系 统 下 Java 编 程 详 解 作 者 : 华 清 远 见 第 1 章 Android 基 本 概 念 本 章 简 介 本 章 主 要 介 绍 Android 基 本 概 念 方 面 的 内 容, 包 括 Android 平 台 特 性 Android 系 统 架 构 Android 开 发 框 架 和 Android 开 发 环 境 搭 建 1.1 Android 简 介 Android

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF

2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF Chapter 2 WF 2.1 WF 2.2 2. XAML 2. 2 WF 1 T I P WF WF WF WF WF WF WF WF 2.1 WF WF WF WF WF WF WF WF WF WF EDI API WF Visual Studio Designer 1 2.1 WF Windows Workflow Foundation 2 WF 1 WF Domain-Specific

More information

EJB-Programming-4-cn.doc

EJB-Programming-4-cn.doc EJB (4) : (Entity Bean Value Object ) JBuilder EJB 2.x CMP EJB Relationships JBuilder EJB Test Client EJB EJB Seminar CMP Entity Beans Session Bean J2EE Session Façade Design Pattern Session Bean Session

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID

59 1 CSpace 2 CSpace CSpace URL CSpace 1 CSpace URL 2 Lucene 3 ID 4 ID Web 1. 2 CSpace LireSolr 3 LireSolr 3 Web LireSolr ID 58 2016. 14 * LireSolr LireSolr CEDD Ajax CSpace LireSolr CEDD Abstract In order to offer better image support services it is necessary to extend the image retrieval function of our institutional repository.

More information

INTRODUCTION TO COM.DOC

INTRODUCTION TO COM.DOC How About COM & ActiveX Control With Visual C++ 6.0 Author: Curtis CHOU mahler@ms16.hinet.net This document can be freely release and distribute without modify. ACTIVEX CONTROLS... 3 ACTIVEX... 3 MFC ACTIVEX

More information

麻 省 理 工 學 院 是 在 西 元 2013 年 12 月 3 日 推 出 MIT App Inventor 2 網 站, 提 供 免 費 的 雲 端 服 務, 使 用 者 可 以 透 過 瀏 覽 器 來 開 發 Android 裝 置 應 用 程 式, 該 網 站 的 網 址 為 : http

麻 省 理 工 學 院 是 在 西 元 2013 年 12 月 3 日 推 出 MIT App Inventor 2 網 站, 提 供 免 費 的 雲 端 服 務, 使 用 者 可 以 透 過 瀏 覽 器 來 開 發 Android 裝 置 應 用 程 式, 該 網 站 的 網 址 為 : http 資 訊 學 科 中 心 6 月 份 電 子 報 用 MIT App Inventor2 程 式 拼 圖 來 開 發 Android 裝 置 應 用 程 式 李 啟 龍 學 習 Android 裝 置 程 式 設 計, 可 以 不 必 學 習 較 為 艱 澀 的 Java 語 法, 只 要 使 用 拼 圖 模 式 來 組 合 程 式, 就 可 以 完 成 Android 裝 置 的 應 用 程 式 MIT

More information

3.1 num = 3 ch = 'C' 2

3.1 num = 3 ch = 'C' 2 Java 1 3.1 num = 3 ch = 'C' 2 final 3.1 final : final final double PI=3.1415926; 3 3.2 4 int 3.2 (long int) (int) (short int) (byte) short sum; // sum 5 3.2 Java int long num=32967359818l; C:\java\app3_2.java:6:

More information

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074>

<4D6963726F736F667420506F776572506F696E74202D20332D322E432B2BC3E6CFF2B6D4CFF3B3CCD0F2C9E8BCC6A1AAD6D8D4D8A1A2BCCCB3D0A1A2B6E0CCACBACDBEDBBACF2E707074> 程 序 设 计 实 习 INFO130048 3-2.C++ 面 向 对 象 程 序 设 计 重 载 继 承 多 态 和 聚 合 复 旦 大 学 计 算 机 科 学 与 工 程 系 彭 鑫 pengxin@fudan.edu.cn 内 容 摘 要 方 法 重 载 类 的 继 承 对 象 引 用 和 拷 贝 构 造 函 数 虚 函 数 和 多 态 性 类 的 聚 集 复 旦 大 学 计 算 机 科 学

More information

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc

Fun Time (1) What happens in memory? 1 i n t i ; 2 s h o r t j ; 3 double k ; 4 char c = a ; 5 i = 3; j = 2; 6 k = i j ; H.-T. Lin (NTU CSIE) Referenc References (Section 5.2) Hsuan-Tien Lin Deptartment of CSIE, NTU OOP Class, March 15-16, 2010 H.-T. Lin (NTU CSIE) References OOP 03/15-16/2010 0 / 22 Fun Time (1) What happens in memory? 1 i n t i ; 2

More information

Microsoft Word zw

Microsoft Word zw 第 1 章 Android 概述 学习目标 : Android Android Android Studio Android Android APK 1.1 1. 智能手机的定义 Smartphone 2. 智能手机的发展 1973 4 3 PC IBM 1994 IBM Simon PDA PDA Zaurus OS 1996 Nokia 9000 Communicator Nokia 9000

More information

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难

2 Java 语 言 程 序 设 计 教 程 1.2.1 简 单 性 Java 语 言 的 语 法 与 C 语 言 和 C++ 语 言 很 接 近, 使 得 大 多 数 程 序 员 很 容 易 学 习 和 使 用 Java 另 一 方 面,Java 丢 弃 了 C++ 中 很 少 使 用 的 很 难 第 1 章 Java 概 述 Java 的 诞 生 Java 的 特 点 Java 开 发 环 境 安 装 与 配 置 创 建 并 运 行 一 个 简 单 的 Java 程 序 Java 语 言 是 当 今 计 算 机 软 件 行 业 中 最 热 门 的 网 络 编 程 语 言, 以 Java 为 核 心 的 芯 片 技 术 编 译 技 术 数 据 库 连 接 技 术, 以 及 基 于 企 业 级

More information

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++;

int *p int a 0x00C7 0x00C7 0x00C int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; Memory & Pointer trio@seu.edu.cn 2.1 2.1.1 1 int *p int a 0x00C7 0x00C7 0x00C7 2.1.2 2 int I[2], *pi = &I[0]; pi++; char C[2], *pc = &C[0]; pc++; float F[2], *pf = &F[0]; pf++; 2.1.3 1. 2. 3. 3 int A,

More information

Microsoft Word - Learn Objective-C.doc

Microsoft Word - Learn Objective-C.doc Learn Objective C http://cocoadevcentral.com/d/learn_objectivec/ Objective C Objective C Mac C Objective CC C Scott Stevenson [object method]; [object methodwithinput:input]; output = [object methodwithoutput];

More information

51 C 51 isp 10 C PCB C C C C KEIL

51 C 51 isp 10   C   PCB C C C C KEIL http://wwwispdowncom 51 C " + + " 51 AT89S51 In-System-Programming ISP 10 io 244 CPLD ATMEL PIC CPLD/FPGA ARM9 ISP http://wwwispdowncom/showoneproductasp?productid=15 51 C C C C C ispdown http://wwwispdowncom

More information