Xây dựng ứng dụng tìm kiếm đa phương tiện trên điện thoại iphone

109 407 0
Xây dựng ứng dụng tìm kiếm đa phương tiện trên điện thoại iphone

Đ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ìm kiếm đa phương tiện trên điện thoại iphone

PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP Thông tin sinh viên Họ tên sinh viên: Điện thoại liên lạc: học quy Lớp: CNPM Hệ đào tạo: Đại Đồ án tốt nghiệp thực tại: Đại học Bách Khoa Hà Nội Thời gian làm ĐATN: Từ ngày 28 /02/2010 đến 28/05 /2010 Mục đích nội dung ĐATN - Tìm hiểu môi trường lập trình điện thoại iPhone - Tìm hiểu mô hình cổng thông tin tìm kiếm trực tuyến điện thoại di động - Xây dựng ứng dụng hỗ trợ người dùng điện thoại (thành phần client) Các nhiệm vụ cụ thể ĐATN Từ mục đích nội dung, nhiệm vụ cụ thể đồ án thực - Tìm hiểu lập trình điện thoại di động - Tìm hiểu iPhone - Tìm hiểu công cụ, ngôn ngữ, tảng lập trình cho điện thoại iPhone - Tìm hiểu lập trình mạng, multithreading, media cho iPhone - Tìm hiểu mô hình hệ thống Mobile Portal - Xây dựng ứng dụng tìm kiếm đa phương tiện điện thoại iPhone CNPM Lời cam đoan sinh viên: Tôi - An Thị Hồng - cam kết ĐATN công trình nghiên cứu thân hướng dẫn Thạc sĩ Lương Mạnh Bá Các kết nêu ĐATN trung thực, chép toàn văn công trình khác Hà Nội, ngày 24 tháng 05 năm 2010 Tác giả ĐATN Xác nhận giáo viên hướng dẫn mức độ hoàn thành ĐATN cho phép bảo vệ: Hà Nội, ngày tháng năm Giáo viên hướng dẫn Ths Lương Mạnh Bá CNPM TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP Nhận thức nhu cầu tìm kiếm thông tin di động, hệ thống cổng thông tin di động Mobile Portal đời bắt đầu vào hoạt động Mobile Portal sử dụng công nghệ tìm kiếm máy tìm kiếm Socbay (trang chủ www.socbay.com) phát triển Công ty Cổ phần dịch vụ công nghệ thông tin Naiscorp với khả đem lại cho người dùng thông tin sàng lọc, lựa chọn chuẩn hóa riêng cho thiết bị di động Trọng tâm đồ án xin trình bày thành phần client hệ thống Mobile Portal - Ứng dụng Petto phát triển tảng iPhone Các phần báo cáo: Phần 1: Nền tảng công nghệ Chương 1: Tìm hiểu môi trường lập trình di động, tổng quan lập trình iPhone Giới thiệu ngôn ngữ, công cụ lập trình Tìm hiểu lập trình mạng, mutithread, core audio Chương 2: Đưa mô hình tổng quan cổng thông tin tìm kiếm trực tuyến Từ đưa ứng dụng mà đồ án xây dựng “xây dựng ứng dụng tìm kiếm đa phương tiện điện thoại iPhone” – thành phần đóng vai trò client mô hình Phần 2: Xây dựng chương trình Chương 3: Giới thiệu loại ứng dụng iPhone, phát biểu toán cần giải Chương 4: Xây dựng dịch vụ tìm kiếm đa phương tiện Phân tích, thiết kế ứng dụng CNPM MỤC LỤC PHIẾU GIAO NHIỆM VỤ ĐỒ ÁN TỐT NGHIỆP .1 TÓM TẮT NỘI DUNG ĐỒ ÁN TỐT NGHIỆP DANH MỤC HÌNH DANH MỤC BẢNG LỜI NÓI ĐẦU ĐỒ ÁN TỐT NGHIỆP NÀY ĐÃ ĐƯỢC HOÀN THÀNH SAU MỘT THỜI TÌM HIỂU, XÂY DỰNG TẠI CÔNG TY CỔ PHẦN DỊCH VỤ CÔNG NGHỆ THÔNG TIN NAISCORP NGOÀI SỰ CỐ GẮNG VÀ NỖ LỰC CỦA BẢN THÂN, CÒN CÓ SỰ GIÚP ĐỠ CỦA NHIỀU NGƯỜI ĐỂ EM CÓ THỂ HOÀN THÀNH ĐƯỢC ĐỒ ÁN NHƯ NGÀY NAY TRƯỚC HẾT, EM XIN ĐƯỢC GỬI LỜI CẢM ƠN SÂU SẮC ĐẾN THS LƯƠNG MẠNH BÁ - BỘ MÔN CÔNG NGHỆ PHẦN MỀM, VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG, TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI ĐÃ HẾT LÒNG GIÚP ĐỠ, ĐỊNH HƯỚNG VÀ CHỈ DẠY TẬN TÌNH GIÚP EM VƯỢT QUA NHỮNG KHÓ KHĂN TRONG QUÁ TRÌNH EM LÀM ĐỒ ÁN TỐT NGHIỆP EM XIN ĐƯỢC GỬI LỜI CẢM ƠN TỚI CÁC THẦY CÔ GIÁO TRONG TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI NÓI CHUNG VÀ CÁC THẦY CÔ TRONG VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG, BỘ MÔN CÔNG NGHỆ PHẦN MỀM NÓI RIÊNG ĐÃ TẬN TÌNH GIẢNG DẠY, TRUYỀN ĐẠT CHO EM NHỮNG KIẾN THỨC, NHỮNG KINH NGHIỆM QUÝ BÁU TRONG SUỐT NĂM HỌC TẬP VÀ RÈN LUYỆN TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI PHẦN I: NỀN TẢNG CÔNG NGHỆ 10 CHƯƠNG 1: TÌM HIỂU MÔI TRƯỜNG LẬP TRÌNH TRÊN IPHONE 10 1.1 Tổng quan lập trình di động 10 1.1.1 Thị trường lập trình di động 10 1.1.2 Những khó khăn lập trình cho di động 11 1.2 Tổng quan lập trình iPhone 12 1.2.1 Giới thiệu iPhone 12 Cuộc cách mạng công nghệ điện thoại di động mang tên iPhone .12 Giới hạn iPhone 14 1.2.2 Các tảng phát triển di động hứa hẹn năm 2010 14 1.2.3 Môi trường lập trình iPhone 16 1.2.4 iPhone SDK: 16 Phân tích ứng dụng: 16 Cài đặt iPhone SDK: .20 iPhone Simulator: 22 1.2.5 Xcode .23 1.Mô hình MVC ( Model - View - Controller) .23 Các template thường dùng 24 Sự bố trí project Xcode 24 1.2.6 Interface Builder 26 Mở Interface Builder: 26 Tạo file Interface Builder .26 Cửa sổ tài liệu .28 1.3 Công cụ lập trình .32 1.3.1 Ngôn ngữ Objective-C 32 CNPM Lịch sử ngôn ngữ Objective-C 32 Lớp, đối tượng thông điệp .33 Định nghĩa lớp .37 1.3.4 Lập trình mạng 43 Tổng quan: 43 Lập trình mạng với CFNetwork 44 1.3.5 MultiThreading 54 Về lập trình thread 54 Quản lý thread 60 Run loop .66 1.3.6 Core Audio 70 Core Audio gì? 70 Cơ Core Audio 72 CHƯƠNG 2: TỔNG QUAN VỀ HỆ THỐNG TÌM KIẾM MOBILE PORTAL 78 2.1 Hệ thống Mobile Portal 78 2.2 Máy tìm kiếm Socbay (Socbay Search Engine) 79 2.3.1 Thu thập liệu cho dịch vụ 80 2.3.2 Phân tích truy vấn ngắn dựa thói quen người dùng .81 2.4 Tầng giao diện di động (Mobile Interface) 81 2.4.1 Quá trình chuẩn hóa liệu cho thiết bị di động: 82 2.4.2 Thiết kế module kết nối client server 83 2.5 Ứng dụng Petto .83 PHẦN II: XÂY DỰNG CHƯƠNG TRÌNH 84 CHƯƠNG 3: ỨNG DỤNG TRÊN IPHONE 84 3.1 Các loại ứng dụng iPhone 84 3.2 Phát biểu toán 84 CHƯƠNG 4: XÂY DỰNG CÁC DỊCH VỤ TÌM KIẾM ĐA PHƯƠNG TIỆN DỰA TRÊN MÁY TÌM KIẾM SOCBAY 86 4.1 Xác định yêu cầu hệ thống: .86 4.2 Đặc tả user case: .87 4.2.1 Tin tức 87 4.2.2 Đọc truyện 88 4.2.3 Địa điểm .89 4.2.4 Cẩm nang tư vấn 90 4.2.5 Hình ảnh .91 4.2.6 Nhạc MP3 .92 4.3 Các vấn đề kỹ thuật, thuật toán 93 4.3.1 Việc kết nối, truyền nhận liệu client server: 93 4.3.2 Hiển thị 94 4.3.3 MP3 streaming .94 4.4 Thiết kế giao diện: 96 4.4.1 Giao diện chính: 96 4.4.2 Dịch vụ Tin Tức: 97 4.4.3 Dịch vụ Truyện: .97 4.4.4 Dịch vụ Địa Điểm: 98 4.4.5 Dịch vụ Cẩm Nang Tư Vấn: 98 4.4.6 Dịch vụ Hình Ảnh: 99 CNPM 4.4.7 Dịch vụ Nhạc MP3: .99 4.5 Thiết kế lớp: 100 4.5.1 Tầng Cocoa Touch Application 100 Lớp ứng dụng: .100 Dịch vụ Tin Tức: 102 Dịch vụ nhạc MP3 .104 4.5.2 Tầng Mobile Interface: 105 4.5.3 Quan hệ tầng Mobile Interface Cocoa Touch Application: 106 TỔNG KẾT ĐÁNH GIÁ 107 Một số kết đạt 107 Nhược điểm 107 Hướng phát triển: .108 TÀI LIỆU THAM KHẢO 109 CNPM DANH MỤC HÌNH HÌNH 1.1 CÁC NỀN TẢNG LẬP TRÌNH DI ĐỘNG 11 HÌNH 1.2 APPLE DEV CENTER 21 HÌNH 1.3 XCODE - NEW PROJECT 23 HÌNH 1.4 XCODE EDITOR 25 HÌNH 1.5 INTERFACE BUILDER - NEW FILE 27 HÌNH 1.6 CỬA SỔ TÀI LIỆU INTERFACE BUILDER .29 HÌNH 1.7 CỬA SỔ THƯ VIỆN INTERFACE BUILDER 30 HÌNH 1.8 CỬA SỔ THUỘC TÍNH INTERFACE BUILDER .31 HÌNH 1.9 BẢNG KẾT NỐI CỦA INTERFACE BUILDER 32 HÌNH 1.10 CẤU TRÚC FILE GIAO DIỆN CỦA MỘT LỚP 39 HÌNH 1.11 CẤU TRÚC FILE THỰC THI CỦA MỘT LỚP 40 HÌNH 1.12 CFNETWORK VÀ CÁC LỚP PHẦN MỀM KHÁC TRONG MAC OS X 45 HÌNH 1.13 CẤU TRÚC CFSTREAM API 47 HÌNH 1.14 CẤU TRÚC VÀ NGUỒN CỦA RUNLOOP 67 HÌNH 1.15 KIẾN TRÚC CORE AUDIO CỦA MAC OS X 71 HÌNH 1.16 KIẾN TRÚC CORE AUDIO CỦA HỆ ĐIỀU HÀNH IPHONE 72 HÌNH 1.17 BA LỚP API CỦA CORE AUDIO 73 HÌNH 1.18 CẤU TRÚC CORE AUDIO CỦA HỆ ĐIỀU HÀNH IPHONE .74 HÌNH 2.1 MÔ HÌNH HỆ THỐNG MOBILE PORTAL .78 HÌNH 2.1 MÔ HÌNH ĐƠN GIẢN CỦA SOCBAY SEARCH ENGINE 79 HÌNH 4.1 USERCASE TỔNG THỂ CỦA HỆ THỐNG 86 HÌNH 4.2 MP3 STREAMING 95 HÌNH 4.3 GIAO DIỆN CHÍNH CỦA ỨNG DỤNG 96 HÌNH 4.4 GIAO DIỆN CHÍNH CỦA DỊCH VỤ TIN TỨC 97 HÌNH 4.5 GIAO DIỆN CHÍNH CỦA DỊCH VỤ TRUYỆN 97 HÌNH 4.6 GIAO DIỆN CHÍNH CỦA ĐỊA ĐIỂM 98 HÌNH 4.7 GIAO DIỆN CHÍNH CỦA DỊCH VỤ CẨM NANG TƯ VẤN .98 HÌNH 4.8 GIAO DIỆN CHÍNH CỦA DỊCH VỤ HÌNH ẢNH .99 HÌNH 4.9 GIAO DIỆN CHÍNH CỦA DỊCH VỤ NHẠC MP3 99 CNPM HÌNH 4.10 BIỂU ĐỒ LỚP CỦA TẦNG ỨNG DỤNG COCOA TOUCH 100 HÌNH 4.11 BIỂU ĐỒ LỚP CỦA LỚP ỨNG DỤNG 101 HÌNH 4.12 BIỂU ĐỒ LỚP CỦA DỊCH VỤ TIN TỨC 102 HÌNH 4.13 BIỂU ĐỒ LỚP CỦA DỊCH VỤ NHẠC MP3 104 HÌNH 4.14 BIỂU ĐỒ LỚP CỦA TẦNG MOBILE INTERFACE 105 DANH MỤC BẢNG BẢNG 1.1 CÁC TEMPLATE ỨNG DỤNG THƯỜNG DÙNG 24 BẢNG 1.2 CÁC TEMPLATE CỦA INTERFACE BUILDER 28 BẢNG 1.3 CÁC PHƯƠNG THỨC QUẢN LÝ BỘ NHỚ CỦA OBJECTIVE-C .41 BẢNG 1.4 PROPERTY ATTRIBUTE 42 BẢNG 1.5 CÁC CÔNG NGHỆ CÓ THỂ SỬ DỤNG THAY THẾ THREAD TRONG ỨNG DỤNG 57 BẢNG 1.6 CÁC LOẠI THREAD 57 BẢNG 1.7 GIAO TIẾP GIỮA CÁC THREAD 60 BẢNG 1.8 CHI PHÍ SỬ DỤNG THREAD 62 BẢNG 1.9 CẤU HÌNH THREAD 64 BẢNG 1.10 CÁC CHẾ ĐỘ RUN LOOP 68 BẢNG 2.1 CÁC DỊCH VỤ 81 BẢNG 4.2 ĐẶC TẢ USERCASE DỊCH VỤ TIN TỨC .88 BẢNG 4.3 ĐẶC TẢ USERCASE DỊCH VỤ TRUYỆN .89 BẢNG 4.4 ĐẶC TẢ USERCASE DỊCH VỤ ĐỊA ĐIỂM .90 BẢNG 4.5 ĐẶC TẢ USERCASE DỊCH VỤ CẨM NANG TƯ VẤN .91 BẢNG 4.6 ĐẶC TẢ USERCASE DỊCH VỤ HÌNH ẢNH 92 BẢNG 4.7 ĐẶC TẢ USERCASE DỊCH VỤ NHẠC MP3 93 CNPM LỜI NÓI ĐẦU Đồ án tốt nghiệp hoàn thành sau thời tìm hiểu, xây dựng Công ty Cổ phần dịch vụ công nghệ thông tin Naiscorp Ngoài cố gắng nỗ lực thân, có giúp đỡ nhiều người để em hoàn thành đồ án ngày Trước hết, em xin gửi lời cảm ơn sâu sắc đến ThS Lương Mạnh Bá - Bộ môn Công nghệ phần mềm, Viện Công nghệ Thông tin Truyền thông, trường Đại học Bách Khoa Hà Nội hết lòng giúp đỡ, định hướng dạy tận tình giúp em vượt qua khó khăn trình em làm đồ án tốt nghiệp Em xin gửi lời cảm ơn tới thầy cô giáo trường Đại học Bách Khoa Hà Nội nói chung thầy cô viện Công nghệ Thông tin Truyền thông, Bộ môn Công nghệ phần mềm nói riêng tận tình giảng dạy, truyền đạt cho em kiến thức, kinh nghiệm quý báu suốt năm học tập rèn luyện trường Đại học Bách Khoa Hà Nội Ngoài ra, em xin gửi lời cảm ơn đến anh Nguyễn Xuân Tài, anh Mai Đình Thắng anh chị em công ty Naiscorp tạo điều kiện để em hoàn thành sản phẩm đồ án CNPM PHẦN I: NỀN TẢNG CÔNG NGHỆ CHƯƠNG 1: TÌM HIỂU MÔI TRƯỜNG LẬP TRÌNH TRÊN IPHONE 1.1 Tổng quan lập trình di động 1.1.1 Thị trường lập trình di động Số lượng thiết bị di động ngày tăng Việt Nam, nhiều người coi điện thọai di động vật thiếu sống ngày Cùng với phát triển mạnh mẽ công nghệ thông tin thời đại mới, người sử dụng di động bắt đầu hướng tới nhu cầu cao cấp Không nghe-gọi, nhắn tin mà họ muốn sở hữu điện thoại có khả truy cập mạng thực ứng dụng máy tính bỏ túi Để thực tính cao cấp đọc báo, tiểu thuyết, tra từ điển, đồ giới giải trí với ca nhạc, xem phim, chơi game… tảng phần cứng nhà sản xuất điện thoại cung cấp cân phải có phần mềm chuyên dụng cài đặt di động để thực chức Tuy nhiên, thị trường di động thị trường sôi động với đủ loại thiết bị di động nhà sản xuất có kiểu dáng, tính năng, tốc độ xử lý, nhớ trong, hình giao diện… khác Và có nhiều nhà sản xuất mà lại chuẩn công nghệ (về mặt phần mềm) áp dụng chung cho tất máy điện thoại di động nên công việc lập trình cho điện thoại di động toán khó cho lập trình viên Việc lựa chọn tảng phát triển cho điện thoại di động vấn đề nan giải Hiện kể tên tảng di động phổ biến: iPhone, Window Mobile, Android, J2ME, Symbian Nhìn vào hình thấy phần phong phú thị trường CNPM 10 - Sử dụng dịch vụ Audio File Stream để phân tích dãy byte nhận về, tập hợp lại thành cách gói âm - Các gói âm đẩy vào buffer - Khi buffer đầy, buffer đưa vào hàng đợi để chuẩn bị phát lại - Với hàng đợi buffer, đẩy buffer cho đối tượng AVAudioPlayer để phát lại, sau buffer phát lại, giải phóng hết liệu giữ quay trở lại chờ nhận liệu - Nếu liệu gửi nhanh, AVAudioPlayer không kịp xử lý hết, gói âm phải đợi có buffer trống để đẩy vào, buffer phải “xếp hàng lần lượt” để đến phát lại Hình 4.2 MP3 Streaming CNPM 95 4.4 Thiết kế giao diện: 4.4.1 Giao diện chính: Hình 4.3 Giao diện ứng dụng CNPM 96 4.4.2 Dịch vụ Tin Tức: Hình 4.4 Giao diện dịch vụ Tin Tức 4.4.3 Dịch vụ Truyện: Hình 4.5 Giao diện dịch vụ Truyện CNPM 97 4.4.4 Dịch vụ Địa Điểm: Hình 4.6 Giao diện Địa Điểm 4.4.5 Dịch vụ Cẩm Nang Tư Vấn: Hình 4.7 Giao diện dịch vụ Cẩm Nang Tư Vấn CNPM 98 4.4.6 Dịch vụ Hình Ảnh: Hình 4.8 Giao diện dịch vụ Hình Ảnh 4.4.7 Dịch vụ Nhạc MP3: Hình 4.9 Giao diện dịch vụ Nhạc MP3 CNPM 99 4.5 Thiết kế lớp: 4.5.1 Tầng Cocoa Touch Application Hình 4.10 Biểu đồ lớp tầng ứng dụng Cocoa Touch Để thấy rõ thuộc tính phương thức lớp, biểu đồ lớp chia nhỏ thành phần Nhằm mục đích đơn giản hóa nên liên kết với phần khác giản lược Và lớp xây dựng tương đồng nên em xin phép trình bày lớp ứng dụng lớp dịch vụ Tin Tức Nhạc MP3 Lớp ứng dụng: CNPM 100 Hình 4.11 Biểu đồ lớp lớp ứng dụng - Lớp ApplicationDelegate có nhiệm vụ nhận kiện liên quan tới vòng đời ứng dụng đáp ứng lại kiện + applicationDidFinishLauching: kiện xảy sau khởi đầu ứng dụng + applicationWillTerminate: kiện xảy trước đóng ứng dụng - Lớp MainViewController: hiển thị giao diện chương trình, tùy thuộc vào lựa chọn người dùng mà chuyển đến chức tương ứng + Khi ứng dụng mở ra, lớp MainViewController khởi tạo, tạo kết nối socket tới server + Tùy thuộc vào lựa chọn người sử dụng chuyển đến chức tương ứng CNPM 101 Dịch vụ Tin Tức: class Dich v u Tin Tuc TinTucChuyenMuc View Controller - *socket: Socket *spinner: UIActivityIndicatorView *tinTucController: NSMutableArray parent_id: UInt32 start: UInt32 numGet: UInt32 + - connectSocketWithParameter(UInt32, UInt32, UInt32) : void parserIntToCharArray(UInt32) : char* reloadTableData(NSNotification*) : char* TinTucTinMoi View Controller # # # - cate_id: UInt32 key: UInt32 socket: Socket* spinner: UIActivityIndicatorView* start: UInt32 tinMoiController: NSMutableArray* numGet: UInt32 + - connectSocketWithParameter(UInt32, UInt32, UInt32, UInt32) : void parserIntToCharArray(UInt32) : char* createRequestData() : char* reloadTableData(NSNotification*) : void scrollViewDidEndDecelerating(UIScrollView*) : void viewDidLoad() : void numberOfSectionsInTableView(*UITableView) : NSInteger tableView:cellForRowAtIndexPath(NSInteger, UITableView*) TinTucChiTiet View Controller - socket: Socket* spinner: UIActivityIndicatorView* item_id: UInt32 webView: UIWebView* + - connectSocketWithItem_id(UInt32) : void reloadData(NSNotification*) : void parserIntToCharArray(UInt32) : char* createRequestData() : char* viewDidLoad() : void dealloc() : void Hình 4.12 Biểu đồ lớp dịch vụ Tin Tức CNPM 102 - Lớp TinTucChuyenMucViewController: hiển thị danh sách chuyên mục có chuyên mục + Mỗi đối tượng lớp TinTucChuyenMucViewController khởi tạo, đối tượng gửi request lên server thông qua hàm connectionSocketWithParameter với tham số truyền vào rõ yêu cầu chuyên mục thuộc chuyên mục cha nào, lấy phần tử, phần tử - Lớp TinTucTinMoiViewController: hiển thị danh sách cách chuyên mục chuyên mục - Lớp TinTucChiTietViewController: hiển thị tin tức chi tiết CNPM 103 Dịch vụ nhạc MP3 class Dich v u nhac MP3 MP3ChuyenMuc View Controller - socket: Socket* mp3ChuyenMucViewController: NSMutableArray* spinner: UIActivityIndicatorView* parent_id: UInt32 numGet: UInt32 start: UInt32 + - connectSocketWithParameter(UInt32, UInt32, UInt32) : void parserIntToCharArray(UInt32) : char* scrollViewDidEndDecelerating(UIScrollView*) : void createRequestData() : char* reloadTableData(NSNotification*) : void viewDidLoad() : void numberOfSectionsInTableView(UITableView*) : NSInteger dealloc() : void MP3Player MP3DanhSach View Controller - socket: Socket* mp3DanhSachController: NSMutableArray spinner: UIActivityIndicatorView* key: UInt32 cate_id: UInt32 bitRate: UInt32 dataOffset: NSInteger fileLength: NSInteger seekByteOffset: NSInteger audioDataByteCount: UInt64 processedPacketsCount: UInt64 processedPacketsSizeTotal: UInt64 seekTime: double sampleRate: double packetDuration: double lastProgress: double + - connectSocketWithKey(UInt32, UInt32) : void parserIntToCharArray(UInt32) : char* createRequestData() : char* reloadTableData(NSNotification) : void viewDidLoad() : void dealloc() : void MP3TinTuc ViewController - socket: Socket* spinner: UIActivityIndicatorView* item_id: UInt32 webView: UIWebView* + - connectSocketWithItem_id(UInt32) : void reloadData(NSNotification*) : void parserIntToCharArray(UInt32) : char* createRequestData() : char* viewDidLoad() : void dealloc() : void - button: UIButton* volumeSlider: UIView* positionLabel: UILabel* durationLabel: UILabel* progressSlider: UISlider* streamer: AudioStreamer* progressUpdateTimer: NSTimer* urlString: NSString * + + + + - buttonPressed(id) : IBAction spinButton() : void updateProgress(NSTimer*) : void sliderMoved(UISlider*) : IBAction setButtonImage(UIImage*) : void createStreamer() : void destroyStreamer() : void viewDidLoad() : void playbackStateChanged(NSNotification*) : void dealloc() : void AudioStreamer - url: NSURL* audioQueue: AudioQueueRef audioFileStream: AudioFileStreamID asbd: AudioStreamBasicDescription internalThread: NSThread* audioQueueBuffer: AudioQueueBufferRef[] packetDescs: AudioStreamPacketDescription[] fillBufferIndex: unsigned int bytesFilled: size_t packetsFilled: size_t inuse: bool[] buffersUsed: NSInteger httpHeaders: NSDictionary* state: AudioStreamerState stopReason: AudioStreamerStopReason errorCode: AudioStreamerErrorCode err: OSStatus discontinuous: bool queueBuffersMutex: pthread_mutext_t queueBufferReadyCondition: pthread_cond_t notificationCenter: NSNotificationCenter* + + + + + + + + + + initWithURL(NSURL*) : id start() : void pause() : void stop() : void isPaused() : BOOL isIdle() : BOOL isWaiting() : BOOL isPlaying() : BOOL seekToTime(double) : void calculatedBitRate() : double Hình 4.13 Biểu đồ lớp dịch vụ Nhạc MP3 CNPM 104 4.5.2 Tầng Mobile Interface: class MobileInterfaceClass Socket - writeStream: CFWriteStreamRef readStream: CFReadStream packetArray: NSMutableArray* + + + + - initWithNoData() : void startStreamToHost(int, NSString*) : void startWriteStreamWithCode(UInt8*, char*, UInt8*, int, char*) : void destroySocketConnection() : void readStreamCallback(void*, CFStreamEventType, CFReadStreamRef) : void dealloc() : void Packet - packetHeader: RequestHeader_t* packetData: char* packetBytesArray: UInt8* image: UInt8* image_length: UInt32 + + + + + + + + + allocateHeader() : void packetSetHeaderData(UInt8*) : void allocatePacketBytesArrayWithDataLength(unsigned int) : void copyCharBytesToBuffer(int, int, int, UInt8*, UInt8*) : void copyIntBytesToBuffer(int, int, int, UInt8*, UInt8*) : void createClientRequestWithCode(int, char*, UInt8*, UInt8*, int, char*) : void analyzePacketDataToCategoryReceiveData(CategoryReceive_t) : void analyzePacketDataToSearchResultReceiveData(SearchResultReceive_t) : void analyzePacketDataToDetailReceiveData(DetailReceive_t ) : void Hình 4.14 Biểu đồ lớp tầng Mobile Interface - Lớp Socket có nhiệm vụ tạo kết nối socket tới server, gửi request lên server nhận trả lời server - Lớp Packet chứa thông tin gói thông tin tương ứng với request client hay trả lời server Với trả lời server, lớp packet nhận nhiệm vụ phân tích liệu lấy thành thông tin hữu ích để hiển thị lên hình CNPM 105 4.5.3 Quan hệ tầng Mobile Interface Cocoa Touch Application: Mỗi lớp tầng Cocoa Touch Application chứa biến thành phần thể lớp Socket, mảng chứa thể lớp Packet thuộc tầng Mobile Interface CNPM 106 TỔNG KẾT ĐÁNH GIÁ Một số kết đạt Về tìm hiểu kiến thức môi trường lập trình cho điện thoại iPhone Hiểu cấu trúc chương trình ứng dụng iPhone tự xây dựng chương trình riêng Ứng dụng Petto xây dựng tương đối hoàn thiện với chức đặt Một số ưu điểm ứng dụng • • • • Giao diện bắt mắt người sử dụng Cung cấp cho người dùng nhiều dịch vụ để chọn lựa Có khả hiển thị tiếng Việt Ứng dụng có khả tích hợp nhanh chóng dịch vụ tìm kiếm, dịch vụ giá trị gia tăng (như nhắn tin)… Nhược điểm Tuy cố gắng hoàn thiện sản phẩm mức tốt nhiên ứng dụng không tránh khỏi mặt hạn chê: • Dữ liệu chuẩn hóa cho thiết bị di động không tránh khỏi sai sót • Việc sử dụng socket stream để trao đổi liệu client server thiết lập bắt lỗi kết nối mạng, kết nối truyền nhận liệu sai chưa bắt time out Nếu việc kết nối socket thành công trình truyền nhận liệu lâu, ứng dụng chưa có cách xử lý • Việc tìm kiếm dừng mức tĩnh, tức người dùng lựa chọn danh sách mục hiển thị Ví dụ dịch vụ tin tức, người dùng muốn xem thông tin mục tin nhất, chẳng có cách khác phải tự tìm danh sách chuyên mục hiển thị Chưa có chức cho người dùng nhập từ khóa vào tìm kiếm • Dịch vụ ảnh, nghe nhạc MP3 chưa chưa có chức download CNPM 107 Hướng phát triển: Trong thời gian tới, ứng dụng tập trung vào việc nâng cấp tính có, giải vấn đề tồn tại, bổ sung tính để đáp ứng nhu cầu thị trường • Bổ sung thêm dịch vụ chứng khoán, bóng đá • Cho phép người dùng khả tương tác với hệ thống upload thông tin rao vặt, upload hình ảnh, nhạc… • Nghiên cứu, cải tiến tính chơi nhạc ứng dụng, tiến tới việc cho xem video online môi trường thiết bị di động • Cho phép người dùng download nhạc, hình ảnh CNPM 108 TÀI LIỆU THAM KHẢO iPhone Developer: http://developer.apple.com/iphone/index.action Apple Dave Mark| Jeff LaMache, Beginning iPhone Development - Exploring the iPhone SDK , Appress,2009 Dave Mark| Jeff LaMache, More iPhone Development - Tackling iPhone SDK , Appress,2009 Jonathan Zdziarski, iPhone SDK Application Development, st Edition, O’Reilly Media, Inc, 2009 James A.Brannan, iPhone SDK Programming - A Beginning’s Guide, McGraw-Hill, 2010 Jiva DeVoe, Cocoa Touch for iPhone OS 3, Wiley Publishing, Inc, 2009 CNPM 109 [...]... là một phần của gói ứng dụng Vùng có thể truy nhập trong một ứng dụng được gọi là sandbox Không thể đọc file được tạo bởi ứng dụng khác Không thể ghi vào bất cứ nơi nào ngoài sandbox của ứng dụng Ứng dụng có vòng đời ngắn: các ứng dụng iPhone không thể thường trú trong bộ nhớ Các ứng dụng thường trú trong bộ nhớ là ứng dụng có thể chạy ẩn trong khi người dùng chạy ứng dụng khác iPhone chỉ cho phép... Window-based application Ứng dụng Áp dụng với những ứng dụng chỉ có một view (cảnh) Một controller quản lý view chính của ứng dụng Áp dụng với những ứng dụng phải sử dụng nhiều view và cần một navigation trung gian giữa chúng Áp dụng với những ứng dụng sử dụng tới đồ họa, 3D game Cung cấp một controller đặc biệt hiển thị một nút bên dưới màn hình Đây là template thích hợp cho các ứng dụng kiểu cho iPod hay... biểu diễn ứng dụng thực sự Thư mục này chứa file nhị phân thực thi và tất cả các tài nguyên hỗ trợ đáng tin _CodeSignature: thư mục chứa chữ ký cho mỗi file trong ứng dụng để đảm bảo rằng ứng dụng không bị sửa đổi từ dạng ban đầu của nó Tất cả ứng dụng phải được “ký” mới có thể chạy trên iPhone Default.png: file ảnh được hiển thị ở màn hình khi ứng dụng bắt đầu được mở ra và giữ cho đến khi ứng dụng khởi... màn hình cảm ứng, và không hỗ trợ nhiều hơn 2 ngón tương tác lên màn hình cảm ứng Ứng dụng sẽ không nhận điện thoại gọi đến Không thể truy nhập mạng EDGE/3G Không có chức năng ghi hình và ghi âm Chỉ có sẵn một số ứng dụng của iPhone: Contacts, Safari, Photos và Settings Không thể thấy tác động của ứng dụng lên CPU và bộ nhớ của iPhone bởi máy desktop có nhiều tài nguyên hơn để chạy ứng dụng Đồ họa chậm... nguyên mà ứng dụng cần cũng như các thuộc tính mang thông tin về ứng dụng và file thực thi nhị phân của ứng dụng iPhone SDK build file thực thi nhị phân cho chương trình và gửi các file nó cần vào thư mục chương trình này Do vậy, để xây dựng một ứng dụng hoàn thiện, các file hỗ trợ cần được cài đặt phải được chỉ ra cho Xcode IDE Ứng dụng chỉ được thực thi CNPM 16 bên trong “sandbox” của iPhone Thuật... số điện thoại của một người liên lạc để gọi điện iPhone cũng mở nhạc và tạo ra các danh mục mở (playlist), bằng cách chỉ việc dùng khẩu lệnh Đây là một trong các tính năng mới được thêm vào sau này của iPhone iPhone 3GS được chuẩn hóa bằng các tính năng tiếp cận sử dụng (accessibility) hỗ trợ cho người khuyết tật iPhone cung cấp các dữ liệu vị trí để tìm đến các ứng dụng cài đặt sẵn và Cửa Hàng Ứng Dụng. .. tình trạng tràn bộ nhớ Người sử dụng ứng dụng trên di động đòi hỏi tốc độ phải nhanh, ví như mở một game, người ta không thể ngồi chờ cả chục phút để game load xong Do đó, quá trình đóng, mở ứng dụng phải diễn ra nhanh chóng Hơn nữa, dù có thông minh đến mấy, nhiều chức năng đến mấy, chiếc điện thoại di động cũng phải là “chiếc điện thoại trước đã Vậy khi đang chạy ứng dụng, bất thình lình có một tin... Xcode, phát triển viên cần phải tạo một thư mục khung app để chứa ứng dụng Khung app cung cấp tất cả các thông tin cần thiết cho iPhone biết về sự tồn tại của ứng dụng như là một gói, nên nó có thể được chạy từ màn hình home của iPhone Nếu xây dựng ứng dụng bằng Xcode, bộ khung này sẽ được Xcode sinh ra tự động Ví dụ, sau khi biên dịch một ứng dụng có tên MyExample , Xcode tạo ra thư mục của MyExample bên... lần cài đặt Muốn tìm ra đường dẫn cài đặt chỉ có cách duy nhất là sử dụng các hàm như là NSHomeDirectory hay lớp như là lớp NSBundle Mỗi ứng dụng iPhone có một thư mục home riêng chứa thư mục Library và Documents, và thư mục tmp để chứa các file tạm.Thư mục chương trình của ứng dụng iPhone có cấu trúc đơn giản hơn của ứng dụng Mac cho máy tính để bàn, và tất cả các tài nguyên của ứng dụng đều được lưu... cho ra mắt iPhone 3G cùng với App Store - một “cửa hàng” các ứng dụng cho iPhone iPhone có màn hình cảm ứng đa điểm, bàn phím ảo hoàn toàn thay thế bàn phím thật và có một gia tốc kế bên trong Màn hình cảm ứng đa điểm tận dụng xúc giác tự nhiên của khách hàng mà không thông qua bút stylus Các thao tác trên máy được thực hiện dễ dàng chỉ bằng cách đặt ngón tay lên màn hình nhấn, kéo, thả… iPhone loại ... trình Tìm hiểu lập trình mạng, mutithread, core audio Chương 2: Đưa mô hình tổng quan cổng thông tin tìm kiếm trực tuyến Từ đưa ứng dụng mà đồ án xây dựng xây dựng ứng dụng tìm kiếm đa phương tiện. .. nhập ứng dụng gọi sandbox Không thể đọc file tạo ứng dụng khác Không thể ghi vào nơi sandbox ứng dụng Ứng dụng có vòng đời ngắn: ứng dụng iPhone thường trú nhớ Các ứng dụng thường trú nhớ ứng dụng. .. application Ứng dụng Áp dụng với ứng dụng có view (cảnh) Một controller quản lý view ứng dụng Áp dụng với ứng dụng phải sử dụng nhiều view cần navigation trung gian chúng Áp dụng với ứng dụng sử dụng

Ngày đăng: 10/03/2016, 11:48

Từ khóa liên quan

Mục lục

  • Đồ án tốt nghiệp này đã được hoàn thành sau một thời tìm hiểu, xây dựng tại Công ty Cổ phần dịch vụ công nghệ thông tin Naiscorp. Ngoài sự cố gắng và nỗ lực của bản thân, còn có sự giúp đỡ của nhiều người để em có thể hoàn thành được đồ án như ngày nay.

  • Trước hết, em xin được gửi lời cảm ơn sâu sắc đến ThS Lương Mạnh Bá - Bộ môn Công nghệ phần mềm, Viện Công nghệ Thông tin và Truyền thông, trường Đại học Bách Khoa Hà Nội đã hết lòng giúp đỡ, định hướng và chỉ dạy tận tình giúp em vượt qua những khó khăn trong quá trình em làm đồ án tốt nghiệp.

  • Em xin được gửi lời cảm ơn tới các thầy cô giáo trong trường Đại học Bách Khoa Hà Nội nói chung và các thầy cô trong viện Công nghệ Thông tin và Truyền thông, Bộ môn Công nghệ phần mềm nói riêng đã tận tình giảng dạy, truyền đạt cho em những kiến thức, những kinh nghiệm quý báu trong suốt 5 năm học tập và rèn luyện tại trường Đại học Bách Khoa Hà Nội.

Tài liệu cùng người dùng

Tài liệu liên quan