Android智慧型手機程式設計實務應用班

Slides:



Advertisements
Similar presentations
单元二:面向对象程序设计 任务二:借书卡程序设计.
Advertisements

第三讲 面向对象(上).
第2章  Android应用的界面编程.
自 然 探 索 圓周美語 My name is.
MVC Servlet与MVC设计模式.
實驗五:多媒體播放器選單介面.
Part 2 開發Android應用程式的流程
類別與物件 Class & Object.
Android + Web Service 建國科技大學 資管系 饒瑞佶 2017/3 V1.
ArrayAdapter & Spinner
Android App 系統開發教學 Luna 陳雯琳 2014/12/18
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
實驗四:單位轉換程式.
Chapter 13 Android 實戰演練.
Android + JUnit 單元測試 建國科技大學資管系 饒瑞佶 2012/8/19V4.
實驗十三:顯示目前經緯度位置.
Ch06 再談選單元件 物件導向系統實務.
第四章 在 C# 中实现 OOP 概念.
第10章 App微信分享的实现 倚动实验室.
Android資料庫處理 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
程序與函數的類別方法 目的:模組化程式設計 方法:由上而下設計 注意事項:(1)獨立性 (2)結合問題 (3)子問題間的溝通.
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
第8章 Android内容提供者(ContentProvider)应用
Chapter 6 Advanced UI Design.
崑山科技大學資訊管理系 伺服網頁程式設計 系統開發細部流程 教師:游峰碩.
Java 程式設計 講師:FrankLin.
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
Android Intent 建國科技大學 資管系 饒瑞佶 2011/1.
Chapter 6 進階UI設計.
西南科技大学网络教育系列课程 高级语程序设计(Java) 第五章 继承、接口与范型.
ContentProvider與資料共享
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
ANDROID PROGRAMMING2.
程式設計實作.
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
Android 基礎.
實驗十四:顯示與控制地圖.
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第6章 建立Android使用介面 6-1 介面元件的基礎 6-2 Android的事件處理 6-3 按鈕元件 6-4 文字元件
郑晟 昆明理工大学 云南省计算机技术应用重点实验室
Ch02-基礎語法.
生活智慧王 樹德科技大學 資訊工程系 指導教授 : 陳毓璋 教授 小組成員: 劉上緯 翁維廷 洪文財.
第六章 属性、索引器、委托和事件.
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
Ch17 SharedPreference與檔案應用
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
主编:钟元生 赵圣鲁.
實驗九:延續實驗八, 製作一個完整音樂播放器
Location Based Services - LBS
Android WebService Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
Oop8 function函式.
第二章 Java语法基础.
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
Android WebService Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
#include <iostream.h>
第二章 Java基本语法 讲师:复凡.
第16章 天气预报 --Web Service调用
RecyclerView and CardView
第6單元 6-1 類別的繼承 (Class Inheritance) 6-2 抽象類別 (Abstract Class)
Android Speech To Text(STT)
C# 匿名委派 + Lambda + Func 建國科技大學 資管系 饒瑞佶.
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
JAVA 程式設計與資料結構 第三章 物件的設計.
讀取網路資料及JSON開放資料 靜宜大學資管系 楊子青
Part 8 Broadcast Receiver、Service和App Widget
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
Presentation transcript:

Android智慧型手機程式設計實務應用班 經濟部工業局 Android智慧型手機程式設計實務應用班 Android WebService 建國科技大學 資管系 饒瑞佶 2012/4

WebService 需要ksoap2-android-assembly-2.5.2-jar-with-dependencies.jar或ksoap2-android-assembly-2.5.2-jar-with-dependencies_timeout1.jar ProjectPropertiesJava Build PathLibraries Add External JARs 需要設定DNS才可以連結有Domain Name的WebService dns解決方法 adb shell #getprop 查看DNS設定 [net.dns1]: [192.168.2.1] net.dns1 就是目前的設定 setprop net.dns1 168.95.1.1  設定成可以用的 DNS

幾個重點 沒有參數的WebService 有參數的WebService DNS問題

現有可以被呼叫的WebService: WebService 攝氏與華氏轉換 取得國家 http://www.w3schools.com/webservices/tempconvert.asmx 取得國家 http://www.webserviceX.NET/country.asmx

攝氏與華氏轉換

WebService Step1:建立新專案HelloWS Step2:main.xml中建立一個輸入框(EditText)、兩個TextView與一個按鈕(Button) EditText TextView TextView Button

WebService Step3:加入ksoap2這個外部jar Step4:宣告webservice參數 //有參數值的Web Service ---攝氏與華氏轉換(AVD無法解析domain name) private static final String NAMESPACE = "http://tempuri.org/" ; private static final String URL = "http://www.w3schools.com/webservices/tempconvert.asmx"; private static final String METHOD_NAME = "CelsiusToFahrenheit"; private static final String SOAP_ACTION = "http://tempuri.org/CelsiusToFahrenheit"; private EditText et_pramater; // 輸入框 private Button btn_ok; // 按鈕 private TextView tv_msg; // 訊息框

宣告webservice參數

WebService Step5:建立物件

webservice主體 相對位置

WebService Step6:撰寫webservice主體 // webservice public String tempconvert(String aa){ String receivedString1="nok"; //預設回傳值 try { SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("Celsius", aa); //傳入帳號 SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); envelope.setOutputSoapObject(request); envelope.dotNet = true; HttpTransportSE androidHttpTransport = new HttpTransportSE(URL,TimeOut); androidHttpTransport.call(SOAP_ACTION, envelope); SoapPrimitive Result = (SoapPrimitive)envelope.getResponse(); receivedString1=Result.toString(); }catch(Exception e) { receivedString1="nok"; return receivedString1; } //---------------------------tempconvert--------------------------

呼叫tempconvert

呼叫tempconvert @Override public void onClick(View v) { // TODO Auto-generated method stub String to_be_transfered; to_be_transfered=et_pramater.getText().toString(); String value_return; if(to_be_transfered==null || "".equals(to_be_transfered)){ tv_msg.setText("您沒有輸入轉換值"); et_pramater.setFocusable(true); }else{ value_return=tempconvert(to_be_transfered); if(value_return=="nok"){ tv_msg.setText("轉換失敗"); tv_msg.setText(value_return); }

相對位置

執行結果

執行結果

錯誤原因 要開放網路存取權限(Manifest.xml) 要設定模擬器的DNS 允許使用jar <uses-permission android:name="android.permission.INTERNET"></uses-permission> 要設定模擬器的DNS 允許使用jar

設定模擬器DNS

執行結果

執行結果驗證

And suggestion or improvement?

My Suggestion 試試另一個取得國家代號的webservice 選用只能輸入數字的EditText 加入等待訊息或進度畫面 將結果帶到下一個Activity做顯示 回傳結果不只一筆,分割資料後,再用ListActivity做顯示 將結果存入SQLite …

整合ListView 無參數 回傳一組以,為分隔符號的結果 private static final String NAMESPACE = "http://tempuri.org/" ; private static final String URL = "http://211.20.52.86/map_ap_1/city.asmx"; private static final String METHOD_NAME = "city"; private static final String SOAP_ACTION = "http://tempuri.org/city";

整合ListView 呼叫Web Service ListView

整合Spinner WebService呼叫不變 要加一個有Spinner的layout Spinner

Spinner sp=(Spinner)findViewById(R.id.spinner1); //建立一個ArrayAdapter物件,並放置下拉選單的內容 ArrayAdapter<String> adapter = new ArrayAdapter<String>( WS_Spinner.this,android.R.layout.simple_spinner_item, cities ); //設定下拉選單的樣式 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); sp.setAdapter(adapter);

加入等待進度畫面

加入等待進度畫面

private void createCancelProgressDialog(String title, String message, String buttonText) { MyDialog = new ProgressDialog(this); MyDialog.setTitle(title); MyDialog.setMessage(message); MyDialog.setButton(buttonText, new DialogInterface.OnClickListener(){ public void onClick(DialogInterface dialog, int which){ // Use either finish() or return() to either close the activity or just the dialog MyDialog.dismiss(); return; } }); MyDialog.show();