Xây dựng ứng dụng đặt taxi trên thiết bị android

28 407 0
Xây dựng ứng dụng đặt taxi trên thiết bị android

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Xây dựng ứng dụng đặt taxi trên thiết bị android

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG CƠ SỞ TẠI THÀNH PHỐ HỒ CHÍ MINH ------------------------------ BÁO CÁO ĐỊNH KỲ THỰC TẬP TỐT NGHIỆP ĐẠI HỌC Đề tài : “Xây dựng ứng dụng đặt taxi trên thiết bị Android” Giáo viên hướng dẫn Hệ : ThS. Lê Minh Hóa : Đại học chính quy TPHCM, Tháng 8/2015 1 LỜI CẢM ƠN Sau một thời gian thực hiện Đồ án đến nay, mọi công việc đã hoàn thành. Trong quá trình thực hiện đồ án tôi đã nhận được nhiều sự giúp đỡ từ mọi người. Tôi xin chân thành gửi lời cám ơn đến những người tôi vô cùng biết ơn: Trước hết, tôi xin chân thành cảm ơn Khoa Công Nghệ Thông Tin, Học Viện Công Nghệ Bưu Chính Viễn Thông cơ sở tại Thành Phố Hồ Chí Minh đã tạo điều kiện tốt cho tôi thực hiện đề tài thực tập tốt nghiệp này. Tôi xin chân thành cảm ơn thầy Lê Minh Hóa đã tận tình hướng dẫn tôi trong suốt thời gian thực hiện đề tài. Cuối cùng tôi xin chân thành cảm ơn quý thầy cô trong khoa đã tận tình giảng dạy, trang bị cho chúng tôi những kiến thức quý báu trong những năm học vừa qua. Mặc dù đã cố gắng hoàn thành đề tài trong phạm vi cho phép, nhưng đây là ngôn ngữ mới, khá xa lạ với tôi nên không thể tránh khỏi sai sót, tôi rất mong nhận được sự đóng góp phê bình của các thầy cô để để được những kinh nghiệm khi ra trường và công việc sau này. TP.Hồ Chí Minh, tháng 08 năm 2015 Sinh viên 2 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập- Tự do- Hạnh phúc TP. Hồ Chí Minh, ngày tháng năm 2015 NHẬN XÉT CỦA ĐƠN VỊ THỰC TẬP THỰC TẬP TỐT NGHIỆP ĐẠI HỌC 1 Tên đề tài: “Xây dựng ứng dụng đặt taxi trên thiết bị Android”. 2 Sinh viên: 3 Giáo viên hướng dẫn: ThS.Lê Minh Hóa 4 Nơi thực tập: Học viện Công nghệ Bưu chính Viễn thông. NỘI DUNG NHẬN XÉT ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ..... ......................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ........... ................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ............................................................................................................................................... ................. Xác nhận của cơ sở thực tập (Ký, ghi rõ họ tên, đóng dấu) 3 CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM Độc lập- Tự do- Hạnh phúc TP. Hồ Chí Minh, ngày tháng năm 2015 NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN THỰC TẬP TỐT NGHIỆP ĐẠI HỌC 1. Tên đề tài: “Xây dựng ứng dụng đặt taxi trên thiết bị Android”. 2. Sinh viên: 3. Giáo viên hướng dẫn: ThS. Lê Minh Hóa 4. Nơi thực tập: Học Viện Công Nghệ Bưu Chính Viễn Thông. NỘI DUNG NHẬN XÉT 1. Đánh giá chung: ……………………………………………………………………………………………… …………………………………………………………………………………… 2. Đánh giá chi tiết: ……………………………………………………………………………………………… …………………………………………………………………………………… ……………………………………………………………………………………………… …………………………………………………………………………………… 3. Nhận xét về tinh thần, thái độ làm việc: ……………………………………………………………………………………………… …………………………………………………………………………………… 4. Kết luận: ……………………………………………………………………………………………… …………………………………………………………………………………… 5. Điểm hướng dẫn (): GIẢNG VIÊN HƯỚNG DẪN (Ký, ghi rõ họ tên) 4 LỜI MỞ ĐẦU Ngày nay hệ điều hành Android đã trở nên quá quen thuộc với số lượng thiết bị sử dụng đứng đầu, chiếm gần 80% số lượng người dùng và không ngừng tăng trưởng. Android có mã nguồn mở và Google phát hành mã nguồn theo Giấy phép Apache. Chính điều này giúp cho Android có được một cộng đồng hỗ trợ cực lớn. Các ứng dụng cho Android được phát triển bằng ngôn ngữ Java sử dụng Bộ phát triển phần mềm Android (SDK). SDK bao gồm một bộ đầy đủ các công cụ dùng để phát triển gồm có công cụ gỡ lỗi, thư viện phần mềm, bộ giả lập điện thoại dựa trên QEMU, tài liệu hướng dẫn, mã nguồn mẫu, và hướng dẫn từng bước. Môi trường phát triển tích hợp (IDE) được hỗ trợ có thể là Eclipse hoặc Android Studio. Các công cụ phát triển khác cũng có sẵn, gồm có Bộ phát triển gốc dành cho các ứng dụng hoặc phần mở rộng viết bằng C hoặc C++, Google App Inventor, một môi trường đồ họa cho những nhà lập trình mới bắt đầu, và nhiều nền tảng ứng dụng web di động đa nền tảng phong phú. Sau khi nghiên cứu đề tài tôi đã quyết định chia thời gian nghiên cứu làm hai giai đoạn: Giai đoạn một, tập trung nghiên cứu về những vấn đề cơ bản của ngôn ngữ, cách sử dụng .Net Web Service trong Android, cách thức đặt Taxi. Giai đoạn hai sẽ tiến hành viết chương trình dựa trên những gì đã nghiên cứu ở giai đoạn 1. 5 Mục lục 6 CHƯƠNG I: TÌM HIỂU VỀ WEB SERVICE, GOOGLE CLOUD MESSAGE I. Giới thiệu về Web Service: 1. Khái niệm : Theo định nghĩa của W3C (World Wide Web Consortium), Web service là một hệ thống phần mềm được thiết kế để hỗ trợ khả năng tương tác giữa các ứng dụng trên các máy tính khác nhau thông qua mạng Internet, giao diện chung và sự gắn kết của nó được mô tả bằng XML. Web service là tài nguyên phần mềm có thể xác định bằng địa chỉ URL, thực hiện các chức năng và đưa ra các thông tin người dùng yêu cầu. Một Web service được tạo nên bằng cách lấy các chức năng và đóng gói chúng sao cho các ứng dụng khác dễ dàng nhìn thấy và có thể truy cập đến những dịch vụ mà nó thực hiện, đồng thời có thể yêu cầu thông tin từ Web service khác. Nó bao gồm các mô đun độc lập cho hoạt động của khách hàng và doanh nghiệp và bản thân nó được thực thi trên server. 2. Đặc điểm : - Web service cho phép client và server tương tác được với nhau ngay cả trong những môi trường khác nhau. Ví dụ, đặt Web server cho ứng dụng trên một máy chủ chạy hệ điều hành Linux trong khi người dùng sử dụng máy tính chạy hệ điều hành Windows, ứng dụng vẫn có thể chạy và xử lý bình thường mà không cần thêm yêu cầu đặc biệt để tương thích giữa hai hệ điều hành này. - Phần lớn kĩ thuật của Web service được xây dựng dựa trên mã nguồn mở và được phát triển từ các chuẩn đã được công nhận, ví dụ như XML. - Một Web service bao gồm có nhiều mô-đun và có thể công bố lên mạng Internet. - Là sự kết hợp của việc phát triển theo hướng từng thành phần với những lĩnh vực cụ thể và cơ sở hạ tầng Web, đưa ra những lợi ích cho cả doanh nghiệp, khách hàng, những nhà cung cấp khác và cả những cá nhân thông qua mạng Internet. - Một ứng dụng khi được triển khai sẽ hoạt động theo mô hình client-server. Nó có thể được triển khai bởi một phần mềm ứng dụng phía server ví dụ như PHP, Oracle Application server hay Microsoft.Net… 7 3. Kiến trúc Web Service: - - - Tầng vận chuyển với những công nghệ chuẩn là HTTP, SMTP, JMS. Tầng giao thức tương tác dịch vụ (Service Communication Protocol) với công nghệ chuẩn là SOAP. SOAP là giao thức nằm giữa tầng vận chuyển và tầng mô tả thông tin về dịch vụ, cho phép người dùng triệu gọi một dịch vụ từ xa thông qua một thông điệp XML. Tầng mô tả dịch vụ (Service Description) với công nghệ chuẩn là WSDL và XML. WSDL là một ngôn ngữ mô tả giao tiếp và thực thi dựa trên XML. Web Service sử dụng ngôn ngữ WSDL để truyền các tham số và các loại dữ liệu cho các thao tác, các chức năng mà web service cung cấp. Tầng dịch vụ (Service) : Cung cấp các chức năng của Service. Tầng đăng ký (Service Registry) với công nghệ chuẩn là UDDI. Ngoài ra, để các dịch vụ có tính an toàn, toàn vẹn và bảo mật thông tin, trong kiến trúc dịch vụ Web, chúng ta có thêm các tầng Policy, Security, Transaction, Management. 4. Các thành phần của Web Service : a. XML – eXtensible Markup Language: Là một chuẩn mở do W3C đưa ra cho cách thức mô tả dữ liệu, nó được sử dụng để định nghĩa các thành phần dữ liệu trên trang web và cho những tài liệu B2B. Về hình thức, XML hoàn toàn có cấu trúc thẻ 8 giống như ngôn ngữ HTML nhưng HTML định nghĩa thành phần được hiển thị như thế nào thì XML lại định nghĩa những thành phần đó chứa cái gì. Với XML, các thẻ có thể được lập trình viên tự tạo ra trên mỗi trang web và được chọn là định dạng thông điệp chuẩn bởi tính phổ biến và hiệu quả mã nguồn mở. Do dịch vụ Web là sự kết hợp của nhiều thành phần khác nhau nên nó sử dụng các tính năng và đặc trưng của các thành phần đó để giao tiếp. XML là công cụ chính để giải quyết vấn đề này và là kiến trúc nền tảng cho việc xây dựng một dịch vụ Web, tất cả dữ liệu sẽ được chuyển sang định dạng thẻ XML. Khi đó, các thông tin mã hóa sẽ hoàn toàn phù hợp với các thông tin theo chuẩn của SOAP hoặc XML-RPC và có thể tương tác với nhau trong một thể thống nhất. b. WSDL – Web Service Description Language. WSDL định nghĩa cách mô tả dịch vụ Web theo cú pháp tổng quát của XML, bao gồm các thông tin: – Tên dịch vụ – Giao thức và kiểu mã hóa sẽ được sử dụng khi gọi các hàm của dịch vụ Web – Loại thông tin: thao tác, tham số, những kiểu dữ liệu (có thể là giao diện của dịch vụ Web cộng với tên cho giao diện này). Một WSDL hợp lệ gồm hai phần: phần giao diện (mô tả giao diện và phương thức kết nối) và phần thi hành mô tả thông tin truy xuất CSDL. Cả hai phần này sẽ được lưu trong 2 tập tin XML tương ứng là tập tin giao diện dịch vụ và tập tin thi hành dịch vụ. Giao diện của một dịch vụ Web được miêu tả trong phần này đưa ra cách thức làm thế nào để giao tiếp qua dịch vụ Web. Tên, giao thức liên kết và định dạng thông điệp yêu cầu để tương tác với dịch vụ Web được đưa vào thư mục của WSDL. WSDL thường được sử dụng kết hợp với XML schema và SOAP để cung cấp dịch vụ Web qua Internet. Một client khi kết nối tới dịch vụ Web có thể đọc WSDL để xác định những chức năng sẵn có trên server. 9 Sau đó, client có thể sử dụng SOAP để lấy ra chức năng chính xác có trong WSDL. c. Universal Description, Discovery, and Integration (UDDI) Để có thể sử dụng các dịch vụ, trước tiên client phải tìm dịch vụ, ghi nhận thông tin về cách sử dụng và biết được đối tượng nào cung cấp dịch vụ. UDDI định nghĩa một số thành phần cho biết các thông tin này, cho phép các client truy tìm và nhận những thông tin được yêu cầu khi sử dụng dịch vụ Web. d. SOAP – Simple Object Access Protocol Chúng ta đã hiểu cơ bản Web service như thế nào nhưng vẫn còn một vấn đề khá quan trọng. Đó là làm thế nào để truy xuất dịch vụ khi đã tìm thấy? Câu trả lời là các Web service có thể truy xuất bằng một giao thức là Simple Object Access Protocol – SOAP. Nói cách khác chúng ta có thể truy xuất đến UDDI registry bằng các lệnh gọi hoàn toàn theo định dạng của SOAP. SOAP là một giao thức giao tiếp có cấu trúc như XML. Nó được xem là cấu trúc xương sống của các ứng dụng phân tán được xây dựng từ nhiều ngôn ngữ và các hệ điều hành khác nhau. SOAP là giao thức thay đổi các thông điệp dựa trên XML qua mạng máy tính, thông thường sử dụng giao thức HTTP. Một client sẽ gửi thông điệp yêu cầu tới server và ngay lập tức server sẽ gửi những thông điệp trả lời tới client. Cả SMTP và HTTP đều là những giao thức ở lớp ứng dụng của SOAP nhưng HTTP được sử dụng và chấp nhận rộng rãi hơn bởi ngày nay nó có thể làm việc rất tốt với cơ sở hạ tầng Internet. Thông điệp theo định dạng SOAP là một văn bản XML bình thường bao gồm các phần tử sau: - Phần tử gốc – envelop: phần tử bao trùm nội dung thông điệp, khai báo văn bản XML như là một thông điệp SOAP. - Phần tử đầu trang – header: chứa các thông tin tiêu đề cho trang, phần tử này không bắt buộc khai báo trong văn bản. Header còn có thể mang những dữ liệu chứng thực, những chứ ký số, thông tin mã hóa hay cài đặt cho các giao dịch khác. 10 - Phần tử khai báo nội dung chính trong thông điệp – body, chứa các thông tin yêu cầu và thông tin được phản hồi. - Phần tử đưa ra các thông tin về lỗi -fault, cung cấp thông tin lỗi xảy ra trong qúa trình xử lý thông điệp. Một SOAP đơn giản trong body sẽ lưu các thông tin về tên thông điệp, tham chiếu tới một thể hiện của dịch vụ, một hoặc nhiều tham số. Có 3 kiểu thông báo sẽ được đưa ra khi truyền thông tin: request message(tham số gọi thực thi một thông điệp), respond message (các tham số trả về, được sử dụng khi yêu cầu được đáp ứng) và cuối cùng là fault message (thông báo tình trạng lỗi). Kiểu truyền thông: Có 2 kiểu truyền thông - Remote procedure call (RPC): cho phép gọi hàm hoặc thủ tục qua mạng. Kiểu này được khai thác bởi nhiều Web service. - Document: được biết đến như kiểu hướng thông điệp, nó cung cấp giao tiếp ở mức trừu tượng thấp, khó hiểu và yêu cầu lập trình viên mất công sức hơn. Hai kiểu truyền thông này cung cấp các định dạng thông điệp, tham số, lời gọi đến các API khác nhau nên việc sử dụng chúng tùy thuộc vào thời gian và sự phù hợp với Web service cần xây dựng. Cấu trúc dữ liệu: Cung cấp những định dạng và khái niệm cơ bản giống như trong các ngôn ngữ lập trình khác như kiểu dữ liệu (int, string, date…) hay những kiều phức tạp hơn như struct, array, vector… Định nghĩa cấu trúc dữ liệu SOAP được đặt trong namespace SOAPENC. Mã hóa: Giả sử service rquester và service provider được phát triển trong Java, khi đó mã hóa SOAP là làm thế nào chuyển đổi từ cấu trúc 11 dữ liệu Java sang SOAP XML và ngược lại, bởi vì định dạng cho Web Service chính là XML. Bất kỳ một môi trường thực thi SOAP nào cũng phải có một bảng chứa thông tin ánh xạ nhằm chuyển đổi từ ngôn ngữ Java sang XML và từ XML sang Java – bảng đó được gọi là SOAPMappingRegistry. Nếu một kiểu dữ liệu được sử dụng dưới một dạng mã hóa thì sẽ có một ánh xạ tồn tại trong bộ đăng ký của môi trường thực thi SOAP đó. 5. Ví dụ xây dựng một dịch vụ Web: B1: Tạo cơ sở dữ liệu như sau: B2: Dùng Visual Studio tạo một Web Service: - Tạo ASP.NET Web Application. 12 - Tạo Web Service: 13 B3: Tiến hành tương tác CSDL để viết các dịch vụ (dùng Linq) - Tạo kết nối: Chọn Server Explorer, chọn biểu tượng được khoanh đỏ. 14 - Màn hình kết nối hiện ra, tiến hành điền thông tin thích hợp. (Chú ý Test Connection nếu Succeeded là được). 15 16 - Add Linq: - Tiến hành kéo thả CSDL, Store Proceduce. 17 B4: Tiến hành viết dịch vụ getListTaxiNearCustomer trả về danh sách taxi trong bán kính 3km tính từ vị trí người dùng. 18 B5: F5 chạy thử dịch vụ. 19 II. Giới thiệu về Google Cloud Message (GSM). 1. Giới thiệu : Google Cloud Messaging (GCM) là một dịch vụ cho phép gửi dữ liệu từ máy chủ của bạn đến các thiết bị Android của người dùng, và ngược lại. GCM được sử dụng cho hoạt động giao dịch giữa các ứng dụng và máy chủ hỗ trợ đầu cuối. Cloud Messaging hiện đang được tích hợp vào Google Play Services và nhờ những cải tiến mạnh mẽ. 2. Nguyên tắc hoạt động : 3. Thành phần : Có 3 thành phần chính là: 20 - GCM Connection Servers: Máy chủ google dùng để gửi tin nhắn giữa server và client. - Client app. - App server. - Sender ID: Chính là project ID dùng để xác nhận app server nào được quyền gửi tin nhắn đến client. - API Key: app server dùng API key để truy cập vào các dịch vụ của Google. - Application ID. - Registration Token: do máy chủ GCM cung cấp cho client, cho phép client nhận được tin nhắn. 4. Sử dụng: 4.1 Client: - Để sử dụng, ta cần đăng ký token với GCM. Để làm được điều này sử dụng đối tượng InstanceID. InstanceID instanceID = InstanceID.getInstance(this); String token = instanceID.getToken(senderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); - Sử dụng một service extend InstanceIDListenerService để theo dõi sự thay đổi của token. Phương thức onTokenRefresh được gọi khi token bị thay đổi. @Override public void onTokenRefresh() { // Do something } - Sử dụng một service extend GcmListenerService để nhận tin nhắn. Phương thức onMessageReceived được gọi khi có tin nhắn truyền tới. @Override 21 public void onMessageReceived(String from, Bundle data) { String message = data.getString("message"); Log.i(TAG, "From: " + from); Log.i(TAG, "Message: " + message); } 4.2 Server: - Để gửi một tin nhắn, sử dụng POST request gồm 2 phần HTTP header và HTTP body. - HTTP header cần có các thành phần sau: + Authorization: key = YOUR_API_KEY + Content-Type: application/json cho định dạng JSON hoặc application/xwww-form-urlencoded;charset=UTF-8 cho định dạng plant text. Nếu không khai báo thì mặc định là plant text. Ví dụ: Content-Type:application/json Authorization:key=AIzaSyZ-1u...0GBYzPu7Udno5aA { "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx...", "data" : { ... }, } - HTTP body phụ thuộc vào việc phần HTTP header sử dụng JSON hay plant text. Một vài tham số cơ bản: + registration_ids: tham số này xác định danh sách các thiệt bị nhận được tin nhắn (token). Chỉ sử dụng với định dạng JSON. 22 + time_to_live: quy định thời gian lưu trữ ở bộ nhớ GCM nếu thiết bị offline. Tối đa là 4 tuần. Ví dụ: { "collapse_key": "score_update", "time_to_live": 108, "data": { "score": "4x8", "time": "15:16.2342" }, "to" : "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx..." } III. Giới thiệu về KSOAP2 API. 1. Giới thiệu : Là một thư viện được thiết kế và phát triển cho các hệ thống nhúng như điện thoại. kSOAP2 được tạo thành từ XML parse, de/serializer và transport layer. - XML parse: kSOAP2 sử dụng kXML và pull parse xml để phân tích cú pháp. - De/serializer: Mapping các đối tượng vào tài liệu XML và ngược lại. Có 2 đối tượng chính để thực hiện là là SoapPrimitives hoặc SoapObjects. - The transport layer: tầng này cung cấp các cơ chế để server và client truyền thông điệp với nhau. 2. Sử dụng : - Tạo phần body gồm namespace và tên phương thức. Thêm thuộc tính nếu cần thiết. 23 + Ví dụ một HTTP Request như hình dưới. Namespace sẽ là http://nhattuan.org, Method name là driverLogin. Chúng ta cần có thêm một thuộc tính imei dạng string/ Final String NAMESPACE = “http://nhattuan.org”; Final String METHOD_NAME = “driverLogin”; SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME); request.addProperty("imei",imei); - Tạo một Envelop (Sử dụng SOAP 1.1): SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // Sử dụng Web Service chạy trên .Net envelope.dotNet = true; // Thêm phần body vào envelop envelope.setOutputSoapObject(request); - Tạo đối tượng HTTPTransportSE để gửi request. 24 // URL địa chỉ của web service, ví dụ: // http://ttaxi.somee.com/TTaxiWebService.asmx HttpTransportSE transportSE = new HttpTransportSE(URL); - Gửi request: // SOAPAction = NAMESPACE + METHOD_NAME transportSE.call(SOAP_ACTION, envelope); - Nhận response từ server: + Dữ liệu trả về có kiểu Primitive Data: SoapPrimitive response=(SoapPrimitive) envelope.getResponse(); + Dữ liệu trả về có kiểu Complex Data: SoapObject response = (SoapObject) envelope.getResponse(); // Có thể duyệt mảng nếu có nhiều giá trị for(int i=0; i< response.getPropertyCount(); i++) { SoapObject soapItem =(SoapObject) response.getProperty(i); String item1 = soapItem.getProperty (“item1”).toString(); //……. } IV. Giới thiệu Google Play services location APIs. 1. Giới thiệu : Sử dụng Google Play services location APIs, ứng dụng có thể yêu cầu vị trí cuối cùng của thiết bị. Trong hầu hết các trường hợp, vị trí này chính là vị trí hiện tại của người dùng. Cụ thể, sử dụng một fused location provider để lấy vị trí cuối cùng của thiết bị. Fused location provider là một trong các location APIs của Google play 25 service. Nó quản lý công nghệ định vị và cung cấp một API cơ bản dùng để bạn có thể thiết lập các yêu cầu ở mức cao, ví dụ chế độ dò tìm với độ chính xác cao, hoặc điện năng thấp. 2. Sử dụng : - Để kết nối tới các API, chúng ta cần tạo một thể hiện của Google Play services API client. Trong phương thức onCreate(), sử dụng GoogleApiClient.Builder để tạo một thể hiện Google API Client, đồng thời thêm LocationServices API để sử dụng. mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .addApi(LocationServices.API) .build(); - Sau khi kết nối, ta có thể sử dụng phương thức getLastLocation() để lấy vị trí cuối cùng của thiết bị. Phương thức này trả về một đối tượng Location, từ đối tượng này có thể lấy được kinh độ, vĩ độ tương ứng. Tuy nhiên cũng có một số trướng hợp trả về null. - Để cập nhật vị trí thiết bị, trước tiên ta cần tạo một đối tượng LocationRequest dùng để lưu trữ các tham số thiết lập yêu cầu đến fused location provider. + setInterval () - Phương thức này đặt tốc độ tính bằng mili giây để ứng dụng của bạn sẽ nhận được vị trí cập nhật. + setFastestInterval () - Phương pháp này đặt tốc độ nhanh nhất tính bằng mili giây mà ứng dụng của bạn có thể xử lý việc cập nhật vị trí. + setPriority () - phương thức này đặt ưu tiên của các yêu cầu. LocationRequest mLocationRequest = new LocationRequest(); mLocationRequest.setInterval(10000); 26 mLocationRequest.setFastestInterval(5000); mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ ACCURACY); - Yêu cầu cập nhật: LocationServices.FusedLocationApi.requestLocationUpdates( mGoogleApiClient, mLocationRequest, this); - Khi có sự thay đổi về vị trí, phương thức LocationListener.onLocationChanged() được gọi: @Override public void onLocationChanged(Location location) { // Do something } - Dừng cập nhật: LocationServices.FusedLocationApi.removeLocationUpdates( mGoogleApiClient, this); - Lấy tên vị trí: Sử dụng đối tượng Geocoder. + Khởi tạo một đối tượng Geocoder: Geocoder geocoder = new Geocoder(this, Locale.getDefault()); + Để có được một địa tương ứng với một vị trí địa lý, gọi phương thuwcsc getFromLocation (), tham số truyền vào là vĩ độ và kinh độ từ đối tượng vị trí và số lượng tối đa của các địa chỉ mà bạn muốn lấy. List addresses = null; try { addresses = geocoder.getFromLocation( location.getLatitude(), 27 location.getLongitude(), // ở đây chỉ lấy 1 địa chỉ trả về. 1); } catch (Exception e) { } 28 [...]... viết dịch vụ getListTaxiNearCustomer trả về danh sách taxi trong bán kính 3km tính từ vị trí người dùng 18 B5: F5 chạy thử dịch vụ 19 II Giới thiệu về Google Cloud Message (GSM) 1 Giới thiệu : Google Cloud Messaging (GCM) là một dịch vụ cho phép gửi dữ liệu từ máy chủ của bạn đến các thiết bị Android của người dùng, và ngược lại GCM được sử dụng cho hoạt động giao dịch giữa các ứng dụng và máy chủ hỗ... //…… } IV Giới thiệu Google Play services location APIs 1 Giới thiệu : Sử dụng Google Play services location APIs, ứng dụng có thể yêu cầu vị trí cuối cùng của thiết bị Trong hầu hết các trường hợp, vị trí này chính là vị trí hiện tại của người dùng Cụ thể, sử dụng một fused location provider để lấy vị trí cuối cùng của thiết bị Fused location provider là một trong các location APIs của Google play... - Sau khi kết nối, ta có thể sử dụng phương thức getLastLocation() để lấy vị trí cuối cùng của thiết bị Phương thức này trả về một đối tượng Location, từ đối tượng này có thể lấy được kinh độ, vĩ độ tương ứng Tuy nhiên cũng có một số trướng hợp trả về null - Để cập nhật vị trí thiết bị, trước tiên ta cần tạo một đối tượng LocationRequest dùng để lưu trữ các tham số thiết lập yêu cầu đến fused location... lập yêu cầu đến fused location provider + setInterval () - Phương thức này đặt tốc độ tính bằng mili giây để ứng dụng của bạn sẽ nhận được vị trí cập nhật + setFastestInterval () - Phương pháp này đặt tốc độ nhanh nhất tính bằng mili giây mà ứng dụng của bạn có thể xử lý việc cập nhật vị trí + setPriority () - phương thức này đặt ưu tiên của các yêu cầu LocationRequest mLocationRequest = new LocationRequest();... 4 Sử dụng: 4.1 Client: - Để sử dụng, ta cần đăng ký token với GCM Để làm được điều này sử dụng đối tượng InstanceID InstanceID instanceID = InstanceID.getInstance(this); String token = instanceID.getToken(senderId, GoogleCloudMessaging.INSTANCE_ID_SCOPE, null); - Sử dụng một service extend InstanceIDListenerService để theo dõi sự thay đổi của token Phương thức onTokenRefresh được gọi khi token bị thay... "APA91bHun4MxP5egoKMwt2KZFBaFUH-1RYqx ", "data" : { }, } - HTTP body phụ thuộc vào việc phần HTTP header sử dụng JSON hay plant text Một vài tham số cơ bản: + registration_ids: tham số này xác định danh sách các thiệt bị nhận được tin nhắn (token) Chỉ sử dụng với định dạng JSON 22 + time_to_live: quy định thời gian lưu trữ ở bộ nhớ GCM nếu thiết bị offline Tối đa là 4 tuần Ví dụ: { "collapse_key": "score_update", "time_to_live":... request.addProperty("imei",imei); - Tạo một Envelop (Sử dụng SOAP 1.1): SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11); // Sử dụng Web Service chạy trên Net envelope.dotNet = true; // Thêm phần body vào envelop envelope.setOutputSoapObject(request); - Tạo đối tượng HTTPTransportSE để gửi request 24 // URL địa chỉ của web service, ví dụ: // http://ttaxi.somee.com/TTaxiWebService.asmx HttpTransportSE... lời gọi đến các API khác nhau nên việc sử dụng chúng tùy thuộc vào thời gian và sự phù hợp với Web service cần xây dựng Cấu trúc dữ liệu: Cung cấp những định dạng và khái niệm cơ bản giống như trong các ngôn ngữ lập trình khác như kiểu dữ liệu (int, string, date…) hay những kiều phức tạp hơn như struct, array, vector… Định nghĩa cấu trúc dữ liệu SOAP được đặt trong namespace SOAPENC Mã hóa: Giả sử... API cơ bản dùng để bạn có thể thiết lập các yêu cầu ở mức cao, ví dụ chế độ dò tìm với độ chính xác cao, hoặc điện năng thấp 2 Sử dụng : - Để kết nối tới các API, chúng ta cần tạo một thể hiện của Google Play services API client Trong phương thức onCreate(), sử dụng GoogleApiClient.Builder để tạo một thể hiện Google API Client, đồng thời thêm LocationServices API để sử dụng mGoogleApiClient = new GoogleApiClient.Builder(this)... tin ánh xạ nhằm chuyển đổi từ ngôn ngữ Java sang XML và từ XML sang Java – bảng đó được gọi là SOAPMappingRegistry Nếu một kiểu dữ liệu được sử dụng dưới một dạng mã hóa thì sẽ có một ánh xạ tồn tại trong bộ đăng ký của môi trường thực thi SOAP đó 5 Ví dụ xây dựng một dịch vụ Web: B1: Tạo cơ sở dữ liệu như sau: B2: Dùng Visual Studio tạo một Web Service: - Tạo ASP.NET Web Application 12 - Tạo Web Service:

Ngày đăng: 29/09/2015, 21:51

Mục lục

    TP.Hồ Chí Minh, tháng 08 năm 2015

    CHƯƠNG I: TÌM HIỂU VỀ WEB SERVICE, GOOGLE CLOUD MESSAGE

    I. Giới thiệu về Web Service:

    3. Kiến trúc Web Service:

    4. Các thành phần của Web Service :

    a. XML – eXtensible Markup Language:

    c. Universal Description, Discovery, and Integration (UDDI)

    d. SOAP – Simple Object Access Protocol

    5. Ví dụ xây dựng một dịch vụ Web:

    2. Nguyên tắc hoạt động :