Trong khi đó Smartphone chạy trên một hệ điều hành hoàn thiện và cung cấp platform cho các nhàphát triển ứng dụng thứ 3 để có thể phát triển ứng dụng của mình.. Hình 3 Share of worldwid
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
KHOA ĐIỆN TỬ - VIỄN THÔNG
&
-BÁO CÁO
THỰC TẬP TỐT NGHIỆP
Phát triển ứng dụng chia sẻ thông tin giao thông
dựa trên thiết bị di động
Giáo viên hướng dẫn: Phạm Văn Tiến Sinh viên thực hiện: Phạm Anh Tuấn
Mã số sinh viên: 20063510
Lớp: Điện tử 1 – K51
Hà Nội - 02/2010
Trang 2Hà Nội - 02/2010
Trang 3MỤC LỤC
-o0o -DANH MỤC HÌNH VẼ 4
1 MỞ ĐẦU: 5
2 NỘI DUNG THỰC TẬP: 7
2.1.Bada platform 7
2.1.1 Định nghĩa 7
2.1.2 Kiến trúc 8
2.1.3 Bada application framework 9
2.1.3.1 Chu kỳ sống của ứng dụng 9
2.1.3.2 Sự chuyển đổi trạng thái của ứng dụng 10
2.1.3.3 Launching Applications 11
2.1.4 Lập trình bada cơ bản 12
2.1.4.1 Hai pha khởi tạo 12
2.1.4.2 Object Ownership Policy 13
2.1.4.3 Privileged API 15
2.1.5 Các tính năng bada 16
2.1.5.1 Tính năng cơ bản 16
2.1.5.2 Tính năng tương tác người dùng 16
2.1.5.3 Tính năng hướng dịch vụ 17
2.2.Công cụ phát triển 17
2.3.Ứng dụng chia sẻ thông tin giao thông 18
2.3.1 Mô tả ứng dụng 18
2.3.2 Xây dựng các tính năng ứng dụng 20
2.3.2.1 Chụp ảnh và upload ảnh lên server 20
2.3.2.2 Chức năng bản đồ số cho ứng dụng 22
Trang 42.3.2.2.1 Hiển thị bản đồ 22
2.3.2.2.2 Sử dụng dịch vụ chuyển từ tọa độ sang tên đương phố (ReverseGeoCoding) 23
2.3.2.2.3 Lây dữ liệu từ GPS sensor 24
2.3.2.3 Chức năng tương tác với người dùng 25
2.3.2.4 Quản lý File và tệp tin 26
2.3.2.5 Download ảnh 26
2.3.3 Kết quả đạt được 27
TÀI LIỆU THAM KHẢO: 30
Trang 5DANH MỤC HÌNH VẼ
Hình 1 SmartPhone……… 7Hình 2 Feature Phone
………7
Hình 3 Share of worldwide 2010 Q4 smartphone sales to end users by operating system, according to Canalys 8
Hình 4 bada architecture 9
Hình 5 Application Life-cycle 11
Hình 6 Application State Transition 12
Hình 7 Launching Application 12
Hình 8 Code cause resource leak 13
Hình 9 Hai pha khởi tạo 14
Hình 10 Ownership giứa hai đối tượng 15
Hình 11 Các namespace cơ bản 17
Hình 12 Các namespace thực hiện tính năng tương tác người dùng 18
Hình 13 Service-oriented namespaces 18
Hình 14 Tổng quan cấu trúc hệ thống 20
Hình 15 Thiết kế của cấu trúc hệ thống 21
Hình 16 Chụp ảnh - upload ảnh 28
Hình 17 Hiển thị ảnh trên bản đồ 29
Hình 18 Chọn đường/phố muốn xem ……….29
Hình 19 Kết quả……… …29
Hình 20 Quản lý ảnh ……… 30
Hình 21 Xem ảnh qua Web……….30
Trang 61 MỞ ĐẦU:
Hiện nay nhu cầu sử dụng điện thoại trên thế giới ngày càng tăng nhanh Những chiếcsmartphone hay feature phones không còn xa lạ với người sử dụng Do vậy nhu cầu vềứng dụng phục vụ công việc, giải trí cho dòng điện thoại này đã và đang trở thành mộtđiểm “nóng” Định nghĩa feature phones dùng để mô tả những chiếc di động cấp thấp cóhiệu năng tính toán thấp hơn một smartphone Đa số các feature phone phải chạy cácứng dụng dựa trên nền một platform như JavaME hoặc BREW Các feature phones có ítAPI hỗ trợ cho lập trình ứng dụng, và bị giới hạn do bộ nhớ rất nhỏ (J2ME) Trong khi
đó Smartphone chạy trên một hệ điều hành hoàn thiện và cung cấp platform cho các nhàphát triển ứng dụng thứ 3 để có thể phát triển ứng dụng của mình Các ứng dụng chạytrên smartphone (native application) do đó sẽ thân thiện hơn và đáp ứng được tối đa yêucầu từ người dùng
Hình 1 SmartPhone Hình 2 Feature Phone
Nền tảng di động – mobile platform chính là “trái tim” của các thiết bị smartphone Cácnền tảng smartphone đang phổ biến nhất hiện nay là Symbian gần đây với Symbian^3,Window Mobile gần đây với Window Phone 7, và các nền tảng mở như iOS, Android,PalmOS và SamSung bada vừa công bố
Các nền tảng mở trên smartphone đang dần trở lên chiếm ưu thế và phổ biến hơn so vớicác nền tảng khác do tính mở với số lượng người dùng ngày càng tăng và kho ứng dụngphong phú
Trang 7Hình 3 Share of worldwide 2010 Q4 smartphone sales to end users by operating system, according to Canalys Trong quá trình thực tập tại phòng nghiên cứu truyền thông nhúng 411 – C9, thuộc bộ môn Kỹ thuật thông tin, khoa Điện tử - Viễn thông, Đại học Bách Khoa Hà Nội, em
đã cùng nhóm nghiên cứu tìm hiểu các nền tảng mở trên smartphone và xây dựng ứng dụng chia sẻ thông tin giao thông trên thiết bị SamSung WAVE GT-S8500 chạy hệ điềuhành bada Trong báo cáo này em xin đi sâu vào platform bada và việc xây dựng ứng dụng chia sẻ thông tin giao thông trên bada platform
2 NỘI DUNG THỰC TẬP:
2.1 Bada platform
2.1.1 Định nghĩa
bada là một nền tảng phần mềm cho thiết bị di động do Samsung
Electronics phát triển Bada được thiết kế để sử dụng trong các dòng điện thoại thông minh cao cấp và trung cấp
Trang 82.1.2 Kiến trúc
bada có kiến trúc 4 lớp:
Kernel
bada, theo như định nghĩa của Samsung, không phải là một hệ điều hành,
nhưng là một nền tảng có nhân có thể cấu hình, cho phép sử dụng nhân Linux hoặc các hệ điêu hành thời gian thực (RTOS)
Nhân Linux thường được dùng nhiều hơn cho các điện thoại thông minh cao cấp, trong khi RTOS thường có trong các smartphone tầm trung do có chân bộ nhớ nhỏ hơn
Hình 4 bada architecture
Device
Lớp Device chứa chức năng chính (core functions) của platform Lớp cungcấp những chức năng cơ bản như đồ họa, giao thức, gọi điện (telephony), bảo mật, sự kiện (event) …
Trang 9Cung cấp các chức năng đặc trưng như SNS, bản đồ, thương mại Để cungcấp các chức năng này, Samsung xây dựng bada server để các ứng dụng bada có thể sử dụng service components của server
“This layer contains the service-oriented functions that are provided by application engines and server-assisted components The application engines provided by the service layer include Contact and Messaging engines The server-assisted features are provided by RESTful Web- service components that inter-connect with the service components of the bada Server This enables applications to manage data that is stored on remote servers, such as geographic
information and user presence information Access to the server-assisted features is possible through APIs on the Framework layer ”
“This layer contains the open API framework of bada It consists of the application framework,
as well as interfaces and classes that provide access to the functionality on the underlying layers The application framework provides features for application life-cycle management, event handling and application controls The interfaces provided by the open API framework include several basic interfaces that are needed by all applications for handling data types, utilities, basic device features and application state and for creating the graphical user interface The API framework also contains interfaces related to UI, multimedia, communication, internationalization, location, security, commerce and Web browsing, as well as interfaces that provide access to the services provided by the underlying service layer.”
2.1.3 Bada application framework
2.1.3.1 Chu kỳ sống của ứng dụng
Hình dưới đây mô tả chu kỳ sống của 1 ứng dụng bada,bao gồm chuyển đổi trạng thái của ứng dụng từ background sang foreground và ngược lại
Trang 10Hình 5 Application Life-cycle
2.1.3.2 Sự chuyển đổi trạng thái của ứng dụng
Các ứng dụng bada có 4 trạng thái tương ứng sau:
Intializing
Application framework cài đặt ứng dụng và tạo frame ứng dụng
Nếu phương thức OnAppInitializing() trả về giá trị flase
tr ng thái ng d ng chuy n sang ạng thái ứng dụng chuyển sang ứng dụng chuyển sang ụng chuyển sang ển sang Terminating và thoát
Nếu phương thức OnAppInitializing()tr v giá tr ả về giá trị ề giá trị ị true ng ứng dụng chuyển sang
d ng kh i t o c p phát tài nguyên c a mình nh UI controls và ụng chuyển sang ởi tạo cấp phát tài nguyên của mình như UI controls và ạng thái ứng dụng chuyển sang ấp phát tài nguyên của mình như UI controls và ủa mình như UI controls và ư UI controls và
tr ng thái.ạng thái ứng dụng chuyển sang
Running
Trang 11Ứng dụng hủy các tài nguyên của riêng nó đã được cấp phát
Terminated
Appliction framework xóa ứng dụng khỏi bộ nhớ
Hình 6 Application State Transition
2.1.3.3 Launching Applications
Ứng dụng bada có thể chạy từ menu chính hoặc qua ứng dụng đang chạy
Hình 7 Launching Application
Trang 12Khi chạy một ứng dụng từ menu chính, trình quản lý tiến trình nạp những thư viện cần thiết và file nhị phân thực thi ứng dụng vào bộ nhớ “entry point” (OspMain) tạo ra một thể hiển của ứng dụng và thực thi nó Trongpha khởi tạo ứng dụng (OnAppInitializing()), tài nguyên, các thành phần giao diện (UI component) sẽ được nạp vào bộ nhớ, thực thi cáctiến trình được yêu cầu.
2.1.4 Lập trình bada cơ bản
2.1.4.1 Hai pha khởi tạo
Tránh hiện tượng rò rỉ tài nguyên nhớ (memory leak) Các ứng dụng bada được phát triển bằng C++, trong C++ khi xảy ra lỗi cấp phát tài nguyên trong hàm tạo của đối tượn, đối tượng được tạo không hoàn chỉnh
(partially constructed) và hàm hủy của đối tượng không được gọi đến
Hình 8 Code cause resource leak
Để tránh rò rỉ tài nguyên nhớ, sử dụng phương pháp 2 pha khởi tạo : đưa quá trình cấp phát tài nguyên ra khỏi hàm tạo, đưa quá trình này vào 1 phương thức khác Như ví dụ dưới đây quá trình cấp phát bộ nhớ cho 2
đối tương SimpleClass được đưa vào phương thức Construct():
Trang 13Hình 9 Hai pha khởi tạo
Các lớp trong bada application framework đều sử dụng 2 pha khởi tạo nếu lớp đó có khả năng phát sinh ngoại lệ trong quá trình thực thi hàm tạo của lớp đó
Để tránh overhead do C++ exceptions, Samsung bada sử dụng
kiểu dữ liệu result để bắt lỗi và các ngoại lệ xảy ra trong quá trình thực
thi ứng dụng (Exception handing)
2.1.4.2 Object Ownership Policy
Trang 14Ownership nhấn mạnh trách nhiệm xóa bỏ bộ nhớ cấp phát động và tránh memory leak Khi cấp phát vùng nhớ cho 1 đối tượng qua toán tử
new, vùng nhớ đấy phải được giải phóng khi no đã được dùng xong bằng toán tử delete
There are 2 rules for obtaining ownership in bada:
The new operator takes ownership of the allocated memory space
Ownership can be transferred, but it cannot be shared
Hình 10 Ownership giứa hai đối tượng
Trong bada những phương thức có tên kết thúc bằng chữ “N”, đối tượng trả về của phương thức phải được delete sau khi dùng xong để tránh memory leak
Trang 152.1.4.3 Privileged API
Open API của bada được chia làm 3 mức privilege:
Non-privileged: mức chứa các API có thể được sử dụng mà không
cần khai báo privilege trong file manefist.xml
Normal: mức chưa các API mà muốn sử dụng cần khai báo
privilege cần thiết trong file manefist.xml
System: mức chứa các API chỉ được sử dụng bởi các developer với
vai trò là đối tác của SamSung
Trong quá trình phát triển ứng dụng, để sử dụng các API của bada có
privilege level Normal, cần khai báo privilege group được
yêu cầu trong file manefist.xml mặc định project được tạo hoặc lựa chọn các privilege group cần thiết cho các API sẽ sử dụng khi đăng ký
Trang 16site thành công, tải file manefist được tạo về, và copy vào thư mục gốc của project.
Ví dụ ứng dụng chia sẻ thông tin giao thông cần sử dụng API của lớp Osp::Media::Camera c n khai báo privilege group ần khai báo privilege group CAMERA trong file manefist.xml nh sau:ư UI controls và
<Privilege>
<Name>CAMERA</Name>
</Privilege>
Tham kh o ả về giá trị Privilege level c a m i API trong bada API ủa mình như UI controls và ỗi API trong bada API
Reference (Ch n Help/Help Content/bada API Reference trên màn ọn Help/Help Content/bada API Reference trên màn hình chính c a bada IDE)ủa mình như UI controls và
Không gian thư viện lập trình (namespace) của bada được phân chia theo các tính năng : tính năng cơ bản, tính năng tương tác người dùng, tính năng hướng dịch vụ (service-oriented) Điều này giúp việc phát triển ứng dụng trở lên dễ dàng hơn, nhanh chóng tìm thấy các API và privilege group cần thiết cho ứng dụng
2.1.5.1 Tính năng cơ bản
Namespace cơ bản của bada
Hình 11 Các namespace cơ bản
Đây là các namespace cơ bản cần thiết cho tất cả các ứng dụng bada
2.1.5.2 Tính năng tương tác người dùng
Các namespace để phát triển tính năng tương tác với người dùng :
Trang 17Hình 12 Các namespace thực hiện tính năng tương tác người dùng
Các tính năng tương tác ở đây là: dàn trải đồ họa lên màn hình,
handling media, Tạo UI controls, sử dụng UI extensions,
và quản lý web controls
Sử dụng bộ công cụ bada SDK được cung cấp trên bada develop site
Bada SDK là bộ phát triển phần mềm bao gồm bada platform, tài liệu liên quan và các ví dụ mẫu
Các thành phần trong bada SDK:
Mã nhị phân của platform (Platform binaries), bộ thư viện phát triển ứng dụng
Trang 18Các file header.
Tool-chain bao gồm trình biên dịch, trình debug, và trình mô phỏng.Các ứng dụng ví dụ cho nhưng người làm quen vơi bada
IDE - Môi trương phát triển tích hợp (Integrated Development
Environtent) dựa trên công cụ phát triển C/C++ nổi tiến Eclipse CDT
2.3 Ứng dụng chia sẻ thông tin giao thông
2.3.1 Mô tả ứng dụng
Báo cáo này mô tả quá trình hoạt động , các thông số kĩ thuật, cấu trúc hệthống, phát triển phần mềm và việc triển khai hệ thống chia sẻ ảnh giao thôngthời gian thực trên điện thoại Bada Hệ thống này với mục đích cung cấp chongười dùng những thông tin cập nhật về tình hình giao thông trên các tuyếnđường hoặc 1 điểm cố định nào đó mà họ quan tâm Điểm sáng tạo này chính
là ở chỗ những người đi đường có thể có được các thông tin giao thông hayảnh giao thông từ cơ sở dữ liệu được xây dựng từ những người đi đường khácnhư họ chứ không chỉ là từ 1 trạm phát thanh nào đó (ví dụ như kênh VOVgiao thông) Nhờ có cơ sở dữ liệu trung tâm mà 1 số lượng lớn những người
Trang 19sử dụng có thể gửi ảnh đến đó cùng lúc Điều này giúp cho những người điđường có thể lấy được những thông tin giao thông mà họ quan tâm dễ dànghơn nhiều so với việc họ có được thông tin từ bản tin giao thông của 1 số trạmphát thanh trung tâm.
Hình 14 Tổng quan cấu trúc hệ thống
Nhờ có bản đồ số ở server mà người dùng có thể tìm kiếm ảnh giao thông bằng cách click vào vị trí mà họ muốn xem thay vì phải nhập tên của vị trí đó.
Cấu trúc của hệ thống được trình bày trong hình 14 Trong hệ thống đó, người dùng sử dụng điện thoại Bada, chụp hình giao thông và gửi nó đến back-end server Nhờ có máy thu GPS nhúng trong điện thoại di động nên ảnh gửi đi sẽ được đính kèm thông tin về vị trí nơi mà nó được chụp Thêm vào đó, tốc độ di chuyển của người đi đường cũng sẽ được gửi kèm với ảnh về server Do đó, người xem có thể có them thông tin về các điểm tắc nghẽn giao thông trên tuyến đường mà mình quan tâm Tại server,
Trang 20thể cung cấp giao diện web cho những ai sử dụng điện thoại di động hoặc lap top có thể truy cập và tìm kiếm ảnh giao thông
Hình 15 Thiết kế của cấu trúc hệ thống
2.3.2.1 Chụp ảnh và upload ảnh lên server
Sử dụng privilege group CAMERA và lớp Osp::Media::Camera để xây dựng chức năng chụp ảnh cho ứng dụng
Gọi phương thức result Osp::Media::Camera::Capture()đ ển sang
ch p nh.ụng chuyển sang ả về giá trị
Trang 21Xử lý ảnh chụp và upload ảnh lên server trong hàm callback:
void
CameraForm::OnCameraCaptured ( Osp::Base::ByteBuffer &
capturedData, result r ) {
Xử lý ảnh chụp Upload ảnh lên server
Uploadimage
->Upload(imagePath,street,streetup,longitude,latitude,host); }
Để xử lý ảnh chụp dùng lớp Image trong namespace Osp::Media Đoạncode sau nén ảnh nếu ảnh chụp quá lớn:
if (IsFailed(r)) goto CATCH;
//Compress the Jpeg
r = _pImage->CompressJpeg (imagePath, destPath,limitSize );
} Upload ảnh lên server dùng giao thức HTTP phương thức POST S ử
d ng các l p và giao di n trong namespace ụng chuyển sang ớp và giao diện trong namespace ện trong namespace Osp::Net::Http Privilege group yêu c u ần khai báo privilege group HTTP và NET
void HttpUpload::Upload(Osp::Base::String
filePath,Osp::Base:: String street,Osp::Base:: String
streetup,Osp::Base:: String longitude,Osp::Base:: String
latitude,Osp::Base:: String hostname) {
Tạo phiên HTTP pHttpSession
//Tạo phiên giao dịch Http Transaction trong phiên HTTP pHttpTransaction = pHttpSession ->OpenTransactionN();
Lấy thể hiện cho quá trình request HTTP pHttpRequest