1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server

61 1 0

Đ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

Thông tin cơ bản

Tiêu đề Xây Dựng Ứng Dụng Upload Ảnh Cho Di Động Hỗ Trợ J2ME Phía Server
Tác giả Phạm Xuân Bào
Người hướng dẫn ThS. Lương Mạnh Bá
Trường học Trường Đại Học Bách Khoa Hà Nội
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2011
Thành phố Hà Nội
Định dạng
Số trang 61
Dung lượng 1,83 MB

Cấu trúc

  • CHƯƠNG 0: GIỚI THIỆU BÀI TOÁN (10)
  • CHƯƠNG 1: TỔNG QUAN VỀ HỆ ĐIỀU HÀNH DI ĐỘNG (14)
    • 1.1. Tổng quan về các hệ điều hành di động (14)
      • 1.1.1. Apple iPhone (14)
      • 1.1.2. Google Android (15)
      • 1.1.3. RIM BlackBerry (16)
      • 1.1.4. Microsoft Windows Mobile (17)
      • 1.1.5. Symbian (18)
  • CHƯƠNG 2: MÔI TRƯỜNG LẬP TRÌNH (20)
    • 2.1. Tổng quan về ngôn ngữ lập trình J2ME (20)
      • 2.1.1. Giới thiệu về J2ME (Java 2 Micro Edition) (20)
      • 2.1.2. Lý do chúng ta cần J2ME (20)
      • 2.1.3. Các thành phần của J2ME (21)
    • 2.2. Giới thiệu CLDC và MIDP (25)
      • 2.2.1. CLDC (25)
      • 2.2.2. MIDP (27)
    • 2.3. Lập trình mạng với J2ME (32)
    • 2.4. Lập trình mạng với J2SE (33)
      • 2.4.1. Cách chuyển dữ liệu trên mạng, giao thức TCP và UDP (33)
      • 2.4.2. Dịch vụ từ phía máy chủ và khái niệm cổng (port) (34)
      • 2.4.3. Giao tiếp theo mô hình khách/chủ (34)
      • 2.4.4. Lập trình mạng thông qua Socket (35)
  • CHƯƠNG 3: PHÂN TÍCH THIẾT KẾ HỆ THỐNG (36)
    • 3.1. Tổng quan kiến trúc hệ thống (36)
    • 3.2. Xác định yêu cầu chức năng hệ thống (39)
      • 3.2.1. Đặc tả Use Case (41)
      • 3.2.2. Biểu đồ Hoạt động (44)
      • 3.2.3. Biểu đồ tuần tự (45)
      • 3.2.4. Cơ sở dữ liệu (49)
    • 3.3. Xây dựng Module kết nối phía Server (50)
      • 3.3.1. Vai trò (50)
      • 3.3.2. Kiến trúc (50)
  • CHƯƠNG 4: CÀI ĐẶT HỆ THỐNG (53)
    • 4.1. Cài đặt phía Client (53)
    • 4.2. Cài đặt phía Server (53)
    • 4.3. Hình ảnh chương trình (55)
    • 4.4. Đánh giá về hệ thống (59)
  • KẾT LUẬN..................................................................................................................61 (3)
  • TÀI LIỆU THAM KHẢO............................................................................................62 (3)

Nội dung

GIỚI THIỆU BÀI TOÁN

Điện thoại di động đang ngày càng thể hiện vai trò lớn lao của mình trong cuộc sống thường nhật của chúng ta Vậy nên số người gắn bó với mobile ngày càng tăng cao và chưa có dấu hiệu dừng lại.

Theo nhiều cuộc nghiên cứu, đến năm 2015, số lượng người truy cập Internet từ di động sẽ vượt qua số lượng truy cập trên máy tính cá nhân Trong tương lai, điện thoại di động sẽ trở thành phương tiện làm việc chủ yếu của con người Để chuẩn bị cho tương lai này, nhiều công ty đang “chạy đua” để cho ra mắt những nền tảng di động, những ứng dụng và thiết kế mới.

Ngày nay, mọi người ngày càng bỏ ra nhiều thời gian để sử dụng di động hơn. Dưới đây là những con số thống kê về tình trạng sử dụng điện thoại di động trên toàn cầu hiện này:

- Hiện nay, toàn thế giới có khoảng 4 tỉ người sử dụng điện thoại di động. Trong đó có 1,08 tỉ người sử dụng điện thoại thông minh (Smartphone), còn 3,05 tỉ người sử dụng các loại điện thoại cơ bản (nghe, gọi, nhắn tin).

- 86% người sử dụng điện thoại di động truy cập Internet trong khi đang xem Tivi

- Trung bình, mỗi ngày, một người Mỹ sử dụng 2,7 giờ đồng hồ để truy cập mạng xã hội thông qua điện thoại di động Khoảng thời gian này nhiều gấp 2 lần số thời gian mỗi người Mỹ bỏ ra cho bữa ăn hàng ngày và bằng 1/3 độ dài giấc ngủ trung bình mỗi đêm.

- Hiện nay, có đến 91% người dùng di động với mục đích truy cập vào các mạng xã hội Với những người truy cập Internet từ máy tính, chỉ có 79% trong số họ truy cập vào mạng xã hội.

Hình 1: So sánh số lượng người truy cập mạng xã hội bằng máy tính và di động

- Theo thống kê, 61% người sử dụng điện thoại di động để chơi game, 55% để theo dõi tình hình thời tiết, 50% sử dụng để tìm kiếm và dò bản đồ, 49% sử dụng để truy cập mạng xã hội, 42% dùng để nghe nhạc, 36% theo dõi tin tức, 33% dùng để xem phim…

- 1/3 trong số 600 triệu thành viên của mạng xã hội Facebook thường truy cập mạng xã hội qua các thiết bị di động Còn với tiểu blog Twitter, trong số hơn

165 triệu người dùng, có đến 50% số người cập nhật tin tức thông qua điện thoại di động.

- Phụ nữ từ lứa tuổi 35-54 là nhóm người hoạt động tích cực nhất trên các mạng xã hội thông qua các điện thoại di động.

- 30% số người sử dụng Smartphone truy cập mạng xã hội thông qua trình duyệt mặc định của di động Còn lại là cài đặt thêm các trình duyệt khác để sử dụng.

- Mỗi ngày có đến hơn 200 triệu lượt xem video từ các thiết bị di động.

- Theo dự đoán, đến năm 2015, lượng người sử dụng điện thoại di động để truy cập Internet sẽ vượt qua lượng người dùng máy tính cá nhân.

Hình 2: Thống kê lượng người sử dụng điện thoại di động

Theo những con số thống kê trên, thì điện thoại di động đã trở thành một vật dụng không thể thiếu trong cuộc sống của chúng ta Ngoài các chức năng cơ bản của điện thoại (nghe, gọi, nhắn tin), thì điện thoại di động ngày nay còn được sử dụng với nhiều chức năng khác nhau Ngoài các chức năng được cài đặt sẵn trong điện thoại như nghe nhạc, chụp ảnh, nghe Radio, xem Tivi, game… thì xu hướng người sử dụng điện thoại cài đặt thêm các phần mềm tiện ích cho dế yêu của mình gia tăng rất nhanh Và xu hướng người dùng không sử dụng các phần mềm có sẵn trên di động mà sử dụng các phần mềm tiện ích tương tự được cài đặt thêm vào máy gia tăng Lý do của vấn đề này là do các phần mềm có sẵn không đáp ứng được nhu cầu của người sử dụng về giao diện, chức năng, tính mềm dẻo so với các phần mềm kia Chính vì thế mà có hàng ngàn các phần mềm cho di động được ra đời và ngành lập trình cho điện thoại di động đang trở thành một ngành hot thu hút nhiều lập trình viên đi theo hiện nay.

Các phần mềm cho di động hiện nay thuộc rất nhiều chủng loại với mục đích sử dụng khác nhau và rất đa dạng Có thể chia phần mềm di động thành 2 loại như sau:

 Phần mềm có kết nối Internet (GPRS, 3G…)

 Phần mềm không kết nối Internet

Những phần mềm không kết nối Internet thì hầu hết là các Game hay một số phần mềm tiện ích như máy tính, âm lịch…

Những phần mềm có kết nối Internet là những phần mềm được kết nối đến một hoặc nhiều server để lấy dữ liệu Hiện nay những phầm mềm thuộc loại này rất đa dạng và điển hình là các phần mềm như đọc tin tức, xem dự báo thời tiết, nghe nhạc online, game online, …

Ngày nay, hầu hết các điện thoại di động đều hỗ trợ chức năng chụp ảnh, hỗ trợ thẻ nhớ Chính vì thế mà nhu cầu sử dụng hình ảnh trên di động ngày càng tăng Trong những chuyến đi thăm quan, khi không có một chiếc máy ảnh trong tay, thì điện thoại di động sẽ trở lên rất hữu ích để chụp lại những hình ảnh đẹp Hoặc là khi đang đi trên đường bạn thấy một cảnh đẹp nào đó và muốn lưu trữ lại Và khi có những hình ảnh này thì nhu cầu của người dùng di động lại thay đổi Không dừng lại ở việc đã có những hình ảnh đẹp mà người dùng lại muốn chia sẻ những hình ảnh này cho bạn bè của mình Hiện nay, việc chia sẻ hình ảnh qua điện thoại có thể thực hiện qua những cách sau:

 Gửi ảnh thông qua Bluetooth: để có thể thực hiện được việc này thì yêu cầu di động của người gửi và người nhận đều phải hỗ trợ Bluetooth và quan trọng hơn là 2 di động phải ở gần nhau trong vòng bán kính là vài chục met Với nhu cầu chia sẻ hình ảnh ở trên thì cách này không phù hợp và không thể thực hiện được.

 Gửi ảnh thông qua tin nhắn đa phương tiện (MMS): để có thể gửi tin nhắn đa phương tiện thì cả di động của người gửi và người nhận đều phải cài đặt GPRS. Cách này sẽ không phù hợp khi số lượng ảnh gửi lớn vì sẽ rất tốn kém.

TỔNG QUAN VỀ HỆ ĐIỀU HÀNH DI ĐỘNG

Tổng quan về các hệ điều hành di động

Tính chất thông minh (Smart) của điện thoại thông minh (Smartphone) chủ yếu là do “phần mềm” mang lại Điện thoại thông minh hiện tại có thể xem như một máy tính cá nhân thu nhỏ, kết nối mạng và hệ điều hành đang giữ vai trò quyết định về sức mạnh, nét riêng của từng sản phẩm.

Trên thị trường điện thoại thông minh hiện nay đang có 5 hệ điều hành nổi bật: Apple iPhone (một số cảm nhận dựa trên sản phẩm cụ thể là iPhone 3G0, Google Android (G1), Microsoft Windows Mobile (HTC Touch Diamond), Nokia S60 3 rd Edition cho Symbian (N96) và RIM BlackBerry (BlackBerry Bold) Sự khác biệt giữa chúng được thể hiện qua các tiêu chí về tính năng, độ dễ dùng, sự trực quan và ứng dụng (có thể trong hệ điều hành di động hoặc hãng thứ ba cung cấp) đi kèm.

Tiểu sử: iPhone là phiên bản thu nhỏ của HĐH của Mac, thiết kế riêng cho iPhone 3G. Ứng dụng tốt nhất cho iPhone: Evernote dễ thương, hữu ích và miễn phí.

Sử dụng: Giao tiếp đa điểm (multitouch) trên iPhone 3G đã tạo được một sự đột phá và thích thú khi sử dụng Các hệ điều hành khác có thể khiến bạn như lạc vào mê hồn trận trình đơn hoặc quên cách thao tác, nhưng iPhone biết cách đơn giản hóa tất cả thao tác sử dụng và tạo được sự đồng bộ xuyên suốt Hệ điều hành thiếu chức năng cắt- dán nhưng không hề ảnh hưởng đến việc sử dụng.

Hình thức: Tuyệt vời Hệ điều hành đã mang đến một giao diện hoàn toàn mới, đặt dấu ấn phong cách, đẹp cả về hình thức lẫn hiệu ứng. Ứng dụng có sẵn: phần mềm tích hợp chạy cực tốt, đặc biệt là trình duyệt Safari đã giúp duyệt dễ dàng các site vốn không được thiết kế để xem trên điện thoại di động. Chương trình nhạc và phim của iPhone cũng vậy Tuy nhiên, iPhone thiếu ứng dụng làm việc: không thể tìm kiếm trong email, không được cung cấp ứng dụng soạn thảo văn bản, quản lý công việc. Ứng dụng mở rộng: Sau khi Apple mở iPhone cho các nhà phát triển thứ ba chỉ mới vài tháng đã có hàng ngàn ứng dụng sẵn sàng chờ tải về từ dịch vụ trực tuyến App Store Trong số đó có Facebook và ứng dụng ghi chú Evernote thiết kế xuất sắc mà miễn phí Nhưng Apple có luật: ứng dụng của hãng thứ ba không được chạy nền hoặc chỉ truy vấn dữ liệu của chính ứng dụng đó, làm giới hạn đáng kể tính năng tất cả ứng dụng từ nhắn tin đến văn phòng Và Apple với vai trò là nhà phân phối độc quyền phần mềm iPhone có quyền hạn chế một số ứng dụng.

Tiểu sử: Hệ điều hành điện thoại di động mới cả Google thể hiện tham vọng của các công ty điện thoại về nền tảng điện thoại mã nguồn mở cho phép mọi người tự ý tùy biến

Sử dụng: Trên điện thoại G1, Android khá giống iPhone/ BlackBerry Đa phần dùng màn hình cảm ứng nhưng bạn có thể bi lăn, nút Menu, Home, Back Hơn nữa, desktop có thể tùy biến Nhìn chung, Android có thể tốt hơn các nền tảng trước nhưng chưa thể bằng iPhone.

Trình duyệt Web trong Google Android dễ nhìn và là đối thủ trực tiếp với Safari trong iPhone.

Desktop Android là một sự thu gọn của desktop hệ điều hành PC như WindowsVista và OS X Leopard Người dùng có thể sắp xếp lại shortcut và cài đặt widget như đồng hồ (clock), trường tìm kiếm.

Hình 4: Điện thoại G1 chạy HĐH Android

Hình thức: Android không nghệ thuật như iPhone nhưng mới và cuốn hút, đặc biệt thích hợp với màn hình độ phân giải cao của G1. Ứng dụng mở có sẵn: Ứng dụng dính liền với dịch vụ của Google như Gmail và

Google Calendar (Việc đầu tiên khi khởi tạo điện thoại là khai báo thông tin tài khoản Google) Trình duyệt của Android không có được chức năng đa chạm như iPhone nhưng không thể xem thường Tiện ích nghe nhạc cho phép tải các bài hát không-DRM từ Amazon nhưng lại chỉ xem được định dạng video You Tube.

Giống iPhone, Android có tiện ích cho tìm kiếm, tải về và cài đặt phần mềm của hãng thứ ba cung cấp. Ứng dụng mở rộng: Các nhà phát triển mới ở giai đoạn đầu hướng đến Android.

Dịch vụ trực tuyến Market cho phép bạn tải ứng dụng trực tiếp về điện thoại từ Gooogle Không như iPhone, bạn có thể tìm ứng dụng tại những website kinh doanh độc lập như Handago.

Tiểu sử: Hệ điều hành này trên điện thoại thông minh BlackBerry của RIM, trong đó có mẫu mới nhất là Bold và Storm BlackBerry Bold giới thiệu trình duyệt mới, nhiều cải tiến, mang đến sự chính xác.

Sử dụng: Nguyên lý đơn giản trong giao diện BlackBerry chỉ thay đổi nhỏ sau cả một thập niên Theo cách riêng, giao diện BlackBerry có sự logic và nhất quán như iPhone: có thể làm việc sử dụng với bi lăn, nút Menu và một nút có chức năng trở lại màn hình trước đó.

Nếu đã làm quen, bạn có thể tao tác cực nhanh (chưa kể đến mẫu Storm dùng màn hình cảm ứng kiểu iPhone).

Hình thức: Hệ điều hành BlackBerry thiên về chữ và giản dị dù các mẫu điện thoại gần đây như Bold đã có phông sắc sảo và biểu tượng tinh xảo hơn Ứng dụng sẵn có: Ứng dụng e-mail và lịch của BlackBerry vẫn là chuẩn mực về hiệu quả sử dụng và khả năng kết nối thời gian thực, tin cậy với hệ thống tin nhắn đang dùng rộng rãi như Microsoft Exchange.

Bản mới nhất có giao diện sành điệu hơn và màu sắc hơn trước nhưng vẫn đọng lại sự đơn giản, nhất quán nổi tiếng của BlackBerry.

MÔI TRƯỜNG LẬP TRÌNH

Tổng quan về ngôn ngữ lập trình J2ME

2.1.1 Giới thiệu về J2ME (Java 2 Micro Edition)

J2ME là một nhánh của ngôn ngữ lập trình Java được phát triển nhằm hướng tới việc lập trình cho các thiết bị “nhỏ” (micro) có bộ nhớ, khả năng hiển thị và xử lý hạn chế.

Ban đầu Java được xây dựng chỉ gồm một phiên bản duy nhất, ngày nay được biết đến với tên J2SE (Java 2 Standard Edition), với phương châm là “Viết một lần, chạy trên mọi môi trường” (“Write once, run anywhere”) Java được hình thành trên ý tưởng xây dựng một ngôn ngữ mà lập trình viên chỉ cần viết một lần duy nhất nhưng ứng dụng có thể chạy trên bất cứ môi trường nào có hỗ trợ máy ảo Java (Java Virtual Machine JVM) Để làm được việc này, Java sử dụng một phương thức biên dịch mã nguồn tương đối khác so với các ngôn ngữ lập trình truyền thống Bộ biên dịch Java không biên dịch mã nguồn trực tiếp sang mã máy mà biên dịch sang một dạng mã trung gian mà máy ảo Java hiểu được (mã bytecode) Khi có nhu cầu sử dụng ứng dụng, máy ảo Java sẽ đọc mã trung gian này và dịch ra mã máy và thực thi Nhờ vào quá trình trung gian đó một ứng dụng Java có thể chạy trên bất kì môi trường nào có cài đặt máy ảo Java tương thích. Được giới thiệu lần đầu vào năm 1995, ngày nay mục tiêu của Java nhắm đến cũng thay đổi khá nhiều Java hiện nay không chỉ nhắm đến họ máy tính để bàn đơn thuần; hai năm sau ngày đầu ra mắt, một phiên bản mới Java là J2EE (Java 2 Enterprise Edition) đã được giới thiệu nhắm tới việc phát triển các ứng dụng có quy mô lớn hơn. Phiên bản mới nhất được thêm vào dòng ngôn ngữ Java là J2ME (Java 2 Micro Edition) J2Me nhắm đến việc phát triển ứng dụng cho các thiết bị có năng lực hạn chế như đầu giải mã kỹ thuật số TV set-top boxes, điện thoại di động…

2.1.2 Lý do chúng ta cần J2ME

Ngày nay ngành công nghiệp sản xuất thiết bị di động trên thế giới đang phát triển nhanh chóng Các thiết bị di động ngày cảng hiện đại hơn, “thông minh” hơn và ngày càng có nhiều tính năng nổi bật Đơn cử như chiếc điện thoại di động, ngày nay chúng không chỉ đơn thuần đảm nhận chức năng hội thoại mà còn có thêm chức năng như chụp ảnh, nghe nhạc, xem phim… như một “trung tâm giải trí” Các thiết bị gia dụng khác như lò vi sóng, TV cũng ngày càng được trang bị những tính năng hiện đại hơn Nhu cầu phát triển phần mềm cho các thiết bị di động, gia dụng ngày càng tăng cao và được đánh giá là một ngành công nghiệp có thể đem lại nhiều tỉ đô la doanh thu.

Một thực tế đặt ra cho các nhà phát triển phần mềm trên các thiết bị này là hiện nay không có một chuẩn hóa nào danh cho các sản phẩm phần cứng Các thiết bị trên thị trường hiện nay rất đa dạng và mang nhiều đặc điểm cũng như cấu hình khác nhau. Trước thực tế đó, việc có thể chạy trên nhiều môi trường là một lợi thế lớn của ngôn ngữ Java Các nhà phát triển Java đã cho ra đời ngôn ngữ J2ME hướng đến việc phát triển phần mềm cho thiết bị di động Ngôn ngữ J2ME thực sự là một ngôn ngữ nhỏ gọn, dễ nắm bắt, chặt chẽ và thích hợp cho các thiết bị có khả năng hạn chế Các thiết bị di động trên thị trường hiện nay, đặc biệt là điện thoại di động hầu hết đều hỗ trợ ngôn ngữ J2ME và J2ME đã thực sự trở thành một ngôn ngữ phổ biến nhất trong lĩnh vực lập trình di động.

Hình 8: Các thiết bị hỗ trợ J2ME

2.1.3 Các thành phần của J2ME

Khái niệm thiết bị di động là tương đối rộng lớn Chúng bao hàm những thiết bị có kích thước vật lý khác nhau nhiều lần và cho dù cùng kích thước nhưng những thiết bị này vẫn có khả năng xử lý cũng như hiển thị khác nhau (Những chiếc điện thoại hiển thị 12,000 pixels cho đến những chiếc PDA 20,000 pixels) Để đáp ứng được nhu cầu khác nhau của những thiết bị này, bản thân ngôn ngữ J2ME cũng được chia thành những thành phần phần nhỏ hơn

2.1.3.1 Configuration Để đáp ứng nhu cầu cho nhiều chủng loại thiết bị khác nhau, Sun đã đưa ra khái niệm Configuration Khái niệm Configuration có mối liên hệ chặt chẽ với máy ảo Java.Nói chính xác hơn, một Configuration qui định những thành phần và những thư viện gốc của ngôn ngữ Java mà máy ảo phải hỗ trợ cho Configuration đó.

Việc phân chia những Configuration khác nhau chủ yếu dựa vào khả năng bộ nhớ, năng lực hiển thị, năng lực xử lý và khả năng kết nối mạng của các thiết bị Như chúng ta đã biết, các thiết bị di động rất khác nhau về nguồn tài nguyên và khả năng phần cứng Với những thiết bị có năng lực hạn chế, nếu ta đưa ra quá nhiều thư viện hỗ trợ vào máy ảo trên thiết bị đó sẽ gây chậm hệ thống và dư thừa không cần thiết Với những thiết bị có khả năng cao hơn, chúng ta sẽ đưa thêm nhiều thư viện hỗ trợ vào máy ảo giúp ích cho công việc lập trình của các nhà phát triển Do đó, nhu cầu phân chia thành nhiều Configuration là việc cần thiết.

Hiện nay Sun đã đưa ra hai loại Configuration khác nhau:

 152 kb (minimum) bộ nhớ để chạy Java

 256 kb (minimum) bộ nhớ cấp phát động

 Kết nối mạng liên tục, băng thông rộng

 CLDC (Connected Limited Device Configuration)

 128 kb (minimum) bộ nhớ để chạy Java

 32 kb (minimum) bộ nhớ cấp phát động

 Giao diện người dùng hạn chế

 Năng lực tiêu tốn ít (Chủ yếu dùng pin)

 Kết nối mạng Wireless, chậm

Việc phân chia này thực chất cũng chỉ mang tính tương đối Công nghệ hiện nay đang phát triển khá nhanh, và việc phát triển này càng làm cho ranh giới giữa các loại Configuration này trở nên không rõ ràng.

Configuration thực ra chỉ cung cấp một số rất ít các lớp và người phát triển ứng dụng hầu như không thể chỉ làm việc đơn thuần với các Configuration này Ta có thể thấy điểu này qua một ví dụ: các Configuration không hỗ trợ các công cụ về giao diện (GUI), do đó nếu chỉ dùng Configuratioin thì lập trình viên phải xây dựng tất cả các chức năng giao diện từ đầu Vì lý do này Sun đã linh hoạt đưa thêm một khái niệm mới nằm ở tầng trên của Configuration, đó là Profiles Ta có thể xem Profile là một mở rộng của khái niệm Configuration Profile định nghĩa các thư viện giúp lập trình triên phát triển ứng dụng cho một dạng thiết bị nào đó Ví dụ Mobile Information Device Profile (MIDP) định nghĩa các hàm API cho các thành phần giao diện, nhập liệu và xử lý sự kiện, lưu trữ, kết nối mạng và xử lý thời gian… phù hợp với màn hình hiển thị và khả năng xử lý của các thiết bị di động Profile MID được định nghĩa trên nền tảng củaCLDC Ngoài ra chúng ta còn một số Profile tiêu biểu khác như:

 PDA Profile: tương tự MIDP, nhưng với thị trường là các máy PDA với màn hình và bộ nhớ lớn hơn

 Foundation Profile: cho phép mở rộng các tính năng của CDC với phần lớn các thư việ của bộ Core Java2 1.3

 Ngoài ra còn có Personal Basic Profile, Personal Profile, RMI Profile, Game Profile Đồ án này chủ yếu chỉ đề cập đến Profile MID và các thư viện liên quan để phục vụ cho việc viết ứng dụng trên thiết bị điện thoại di động.

Một chương trình Java sẽ được biên dịch thành mã trung gian sau đó chính máy ảo Java sẽ biên dịch mã này sang mã máy để thực thi Máy ảo Java sẽ chịu trách nhiệm việc cung cấp tính năng bảo mật, cấp phát và thu hồi bộ nhớ, quản lý việc điều phối các tiến trình Chúng ta có thể nói chính máy ảo Java làm cho chương trình Java “chạy”. Với CDC, máy ảo Java có cùng đặc tính như J2SE Tuy nhiên với CLDC, Sun đã phát triển riêng một dạng máy ảo chuyên biệt được gọi là K Virtual Machine, gọi tắt là KVM Chính những hạn chế về tài nguyên của các thiết bị di động đã đề ra nhu cầu về sự ra đời của KVM KVM không phải là một máy ảo Java “truyền thống”:

 Máy ảo chỉ cần 40-80 kb bộ nhớ

 Chỉ đòi hỏi 20-40 kb bộ nhớ động (heap)

 Có thể chạy với bộ vi xử lý 16-bit và xung nhịp 25 MHz Đến đây chúng ta có thể hình dung phần nào cấu trúc tổng thể của một chương trình J2ME như sau:

Hình 9: Cấu trúc chương trình J2ME

Nếu chương trình được biên dịch với CDC, chương trình sẽ chạy trên các máy ảo

“Truyền thống” và mang các đặc tính như chương trình J2SE.

Nếu chương trình được biên dịch với CLDC, chương trình sẽ chạy với máy ảo chuyên biệt KVM và những đặc tính riêng cho CLDC đòi hỏi.

Với chương trình xây dựng bởi MIDP, chúng ta có cấu trúc chuyên biệt như sau:

Hình 10: Cấu trúc chương trình MIDP

Tầng dưới cùng là hệ điều hành có hỗ trợ máy ảo Java (KVM), bên trên là CLDC và trên cùng là MID profile Lúc này khái niệm “Viết một lần, chạy bất cứ môi trường nào” của Sun không còn hoàn toàn chính xác bởi vì đã xuất hiện máy ảo chuyên biệtKVM Một số chương trình viết bằng MIDP sẽ không chạy trên môi trường J2SE và ngược lại Tuy nhiên chúng ta phải cảm kích các nỗ lực của Sun đã giúp cho Java trở thành một trong những ngôn ngữ có khả năng độc lập với môi trường bên dưới nhất hiện nay, điều này đúng với cả môi trường thiết bị di động.

Giới thiệu CLDC và MIDP

Khi đề ra yêu cầu về phần cứng việc xem xét các chi tiết như bộ xử lý, bộ nhớ… và các phần mềm hiện có trên các thiết bị di động là việc vô cùng quan trọng Nhằm mục đích phục vụ tối đa các thiết bị hiện có trên thị trường, CLDC chỉ đề ra các yêu cầu về bộ nhớ và không đề ra yêu cầu nào cho các thành phần khác Yêu cầu tối thiểu có thể sử dụng CLDC như sau:

 128 kilobytes để chạy JVM và các thư viện của CLDC Không phân biệt loại bộ nhớ sử dụng (ROM, Flash…), bộ nhớ của thiết bị phải bảo lưu được nội dung lâu dài, ngay cả khi ngắt điện Bộ nhớ này thường được gọi là Nonvolatile Memory.

 32 kilobytes bộ nhớ trống để cấp phát các đối tượng (objects) Bộ nhớ này thường được gọi là Volatile Memory (hay là “heap”).

CLDC có yêu cầu tối thiểu về mặt phần mềm Hệ điều hành phải tương thích với JVM và có chức năng quản lý các ứng dụng Java, bao gồm:

 Cho phép chọn và kích hoạt ứng dụng

 Cho phép gỡ bỏ ứng dụng khỏi thiết bị

Do các thiết bị di động dùng CLDC thường có tài nguyên hạn chế nên Sun đã đề ra máy ảo Java KVM phục vụ riêng cho các thiết bị này Máy ảo KVM thực chất là một bộ phận con của các máy ảo trên môi trường J2SE và J2EE nên cũng có nhiều hạn chế và khác biệt so với hai phiên bản trên.

 Không hỗ trợ kiểu dữ liệu float: Việc xử lý số float đòi hỏi nhiều tài nguyên xử lý, ngoài ra các thiết bị di động không có những cấu hình phần cứng dành riêng cho việc xử lý số float nên trong J2ME chúng ta không thể khai báo các biến, mảng float, các hàm cũng không nhận tham số và trả về các số float.

 Phương thức finalize: trong J2SE, chúng ta có thể khai báo phương thức finalize (Tương tự như phương thức destructor) Garbage Collector sẽ gọi phương thức này trước khi hủy bỏ một đối tượng, phương thức này thường được dùng để thu hồi các tài nguyên hệ thống như socket, file handles… trước khi đối tượng bị

“phá hủy” Tuy nhiên trong J2ME chúng ta không có phương thức finalize.

 Error Handling: trong J2ME chúng ta vẫn được hỗ trợ các công cụ về việc bắt lỗi (Chủ yếu thông qua try catch) Tuy nhiên khả năng về xử lý lỗi của J2ME cũng hạn chế hơn với hai phiên bản còn lại.

 Không hỗ trợ việc sử dụng code của các ngôn ngữ lập trình khác.

 Không hỗ trợ Reflection: trong J2SE và J2EE, chúng ta có thể dùng các lớp Reflection để tìm hiểu thông số môi trường máy ảo Java đang thực hiện nhưng đối với J2ME thì không.

 Không hỗ trợ ThreadGroup: mỗi thread được quản lý riêng biệt, không còn lớp ThreadGroup Nếu muốn điều khiển một lúc nhiều threads chúng ta có thể dùng mảng hoặc Vector.

J2ME cũng còn một số điểm khác biệt so với J2SE và J2EE, một trong những khác biệt chính là Class Verify (Tạm dịch là “Kiểm tra lớp”) Các lớp trước khi được load sẽ thông qua một quá trình “kiểm tra” về sự hợp lệ và tính nguyên vẹn Đây là một cơ chế quan trọng để đảm bảo an toàn (security) của Java Quá trình này trong J2SE và J2EE có thể chiếm đến 50 kbytes bộ nhớ, trong J2ME chúng được chia thành 2 giai đoạn:

 Tiền kiểm tra (Pre-verifycation): trước khi một lớp được nạp vào thiết bị, một phần mềm sẽ được sử dụng để thêm vào một số thông số bổ sung vào file class. Quá trình này giảm thời gian và bộ nhớ cần thiết để máy ảo thực hiện giai đoạn

2 trong quá trình kiểm tra File class sau khi được “tiền kiểm tra” sẽ tăng dung lượng khoảng 5%.

 Kiểm tra nội thiết bị (In-device verification): Khi thiết bị nạp các file class đã được tiền kiểm tra, công cụ kiểm tra trong thiết bị sẽ thực hiện một vài kiểm tra để xác nhận tính hợp lệ của đoạn code Nếu phát hiện một lỗi nào đó bộ kiểm tra sẽ phát sinh báo cáo và từ chối nạp lớp đối tượng vào bộ nhớ Quá trình này đòi hỏi ít bộ nhớ và tài nguyên hơn nhiều lần so với trong J2SE và J2EE.

CLDC không hỗ trợ tất cả các lớp và thư viện được hỗ trợ trong ngôn ngữ Java truyền thống mà chỉ hỗ trợ những thư viện thật sự cần thiết đối với thiết bị di động.

Ngoài ra trong CLDC chúng ta cũng được hỗ trợ việc truy vấn một số thuộc tính của hệ thống:

 Lấy thông tin về paltform của thiết bị:

 Lấy thông tin về bảng mã mặc định:

 Lấy thông tin về version và tên của configuration:

 Lấy thông tin về profile:

Ngoài ra chúng ta có thể truy cập lớp Runtime để lấy các thông số về thiết bị như: Runtime runtime = Runtime.getRuntime();

//Thông tin về bộ nhớ

System.out.println(“Total memory:” + runtime.totalMemory());

//Thông tin về bộ nhớ trống

System.out.println(“Free memory:” + runtime.freeMemory());

 Màn hình ít nhất phải có 96x54 pixels

 Có ít nhất một thiết bị nhập liệu: bàn phím hoặc màn hình cảm ứng

 Có ít nhất 128 kilobytes bộ nhớ non-volatile để chạy các thành phần của MID

 Có ít nhát 8 kilobytes bộ nhớ non-volatile để lưu các cấu hình chương trình và dữ liệu

 Có ít nhất 32 kilobytes để chạy Java

 Có kết nối không dây (wireless network)

Mặc dù hệ điều hành của từng thiết bị có thể khác nhau nhưng phải đáp ứng được các yêu cầu tối thiểu sau:

 Hệ điều hành phải hỗ trợ việc xử lý ngắt, xử lý exception và hỗ trợ xử lý đồ hoạc bitmap để xuất dữ liệu ra màn hình

 Hệ điều hành phải nhận được tín hiệu nhập liệu (input) và chuyển dữ liệu đó cho máy ảo Java

 Hệ điều hành phải hỗ trợ việc đọc/ghi vào bộ nhớ non-volatile Không đòi hỏi hệ điều hành phải định nghĩa file system nhưng phải cho phép ghi dữ liệu dạng persistent (không bị mất dữ liệu khi tắt máy, ngắt điện).

 Phải hỗ trợ truy xuất mạng, đặc biệt phải có tính ngăng đọc/ghi dữ liệu thông qua mạng không dây (wireless network).

Hình 11: Cấu trúc thiết bị MID

Tầng dưới cùng là phần cứng của thiết bị di động Bên trên phần cứng ta có hệ điều hành điều khiển các hoạt động Bên trên hệ điều hành ta có thể chia thành 2 phần riêng biệt Chúng ta sẽ thấy phần bên phải là các chương trình native application (tạm dịch là “Chương trình nguyên gốc”) Trước khi J2ME ra đời, thông thường đây là các loại chương trình duy nhất có trên các thiết bị Đây là loại chương trình được nhà sản xuất đưa sẵn vào máy di động lúc sản xuất như chương trình chọn tiếng chuông, chỉnh thông số điện thoại, chỉnh giờ… Chính nhờ J2ME ra đời chúng ta mới có chức năng cài đặt thêm các chương trình được viết thêm vào thiết bị di động.

Lập trình mạng với J2ME

Việc kết nối giữa Client với Server sẽ thông qua mạng Nó cho phép các thiết bị di động sử dụng các ứng dụng liên quan đến mạng như ứng dụng chat, game online, tin tức, tìm kiếm thông tin trực tuyến.

CLDC cung cấp một khung tổng quát để thiết lập kết nối mạng Ý tưởng là nó đưa ra một khung mà các hiện trạng khác nhau sẽ sử dụng Khung CLDC không định nghĩa giao thức thật sự.

Hình 12: Khung kết nối Để sử dụng kết nối mạng hoặc các việc tương tự ta sử dụng class Connector với phương thức open() Phương thức open() nhận một tham số đầu vào là chuỗi kết nối, từ chuỗi kết nối này mà Connector sẽ biết được giao thức kết nối nào sẽ được sử dụng. Định dạng của chuỗi kết nối là : Protocol:address;parameters

CLDC chỉ xác định tham số là một chuỗi nhưng nó không định nghĩa bất kỳ giao thức thật sự nào Các hiện trạng có thể định nghĩa các giao thức kết nối như HTTP, Socket, FTP, Datagram, File… Phương thức open() sẽ trả về một đối tượng

Connector Đối tượng này sau đó có thể đóng vai trò là một giao thức xác định được trong định nghĩa chuỗi kết nối:

Connector.open(“:;”);

Ví dụ một số giao thức:

Comport: Connector.open(“comm.:0;baudrate34”0;

File: Connector.open(“file://filename.txt”);

HTTP: Connector.open(“http://www.socbay.com”);

Lập trình mạng với J2SE

Trong hệ thống Upload Ảnh, nhiệm vụ của em là xây dựng Server để các Client có thể kết nối đến Để xây dựng Server, em dùng J2SE và sử dụng giao thức kết nối là Socket Sau đây em xin trình bày những vấn đề lý thuyết liên quan.

2.4.1 Cách chuyển dữ liệu trên mạng, giao thức TCP và UDP

Quá trình chuyển dữ liệu trên mạng diễn ra khá phức tạp Chi tiết quá trình nãy diễn ra tương tự như trong thực tế ta gửi thư hay bưu phẩm, trước hết phải ghi rõ địa chỉ nơi đến (trường hợp này là địa chỉ IP của máy chủ), sau đó có thể gửi thông thường hay gửi bảo đảm (tùy theo cách gửi mà thư hay bưu phẩm có chắc chắn đến được tay người nhận hay không), người nhận sau khi nhận được có thể hồi âm trả lời là đã nhận đủ hoặc bị mất mát gì đó trong quá trình chuyển tải Người gửi có thể gửi tiếp những phần bị mất hoặc không cần gửi nữa.

Các chuyển dữ liệu đảm bảo dựa vào giao thức TCP (Transmission Control Protocol) còn cách chuyển không đảm bảo dựa vào giao thức UDP (User Datagram Protocol).

Giao thức TCP gửi từng gói dữ liệu đi, nơi nhận theo giao thức này phải có trách nhiệm thông báo và kiểm tra xem dữ liệu đã đến đủ hay chưa, có lỗi hay không có lỗi. Trước khi chuyển dũ liệu bao giờ cũng có sự kết nối giữa máy gửi và máy nhận Do phải bảo đảm dữ liệu được truyền chính xác và luôn duy trì kết nối nên sử dụng giao thức TCP cần chiếm thêm một số tài nguyên của hệ thống và cách lập trình cho giao thức này hơi khó (phải thực hiện các bước kiểm tra dữ liệu theo yêu cầu của TCP). Truyền dữ liệu theo TCP thường áp dụng cho các dịch vụ như truyền tập tin, các dịch vụ trực tuyến trên Internet đòi hỏi độ tin cậy cao.

Giao thức UDP ngược lại không đáng tin cậy lắm, không có sự kết nối trước nào giữa nơi gửi và nơi nhận, dữ liệu gửi đi mặc định rằng máy tính ở đầu luôn ở trạng thái sẵn sàng để tiếp đón dữ liệu gửi đến Nếu dữ liệu gửi đến bị lỗi trong quá trình truyền hay không nhận được đầy đủ, giao thức UDP cũng không có thông tin phản hồi gì lại cho nơi gửi Tuy nhiên, UDP không đòi hỏi nhiều tài nguyên của hệ thống và cách lập những ứng dụng không đòi hỏi sự chính xác cao như dịch vụ thông báo giờ, tỷ giá hay các dịch vụ gửi tin nhắn.

2.4.2 Dịch vụ từ phía máy chủ và khái niệm cổng (port)

Khi kết nối vào máy chủ ta có thể yêu cầu máy chủ nhiều dịch vụ khác nhau, như dịch vụ truy tìm và đọc trang web trên Internet, dịch vụ gửi nhận e-mail, dịch vụ dò tìm hệ thống tên vùng DNS… Mỗi dịch vụ đều có cách gửi nhận dữ liệu theo quy ước riêng TCP và UDP chỉ chịu trách nhiệm đưa dữ liệu từ một máy tính này đến một máy tính khác, còn dữ liệu đó sẽ được gửi cho dịch vụ nào thì phải thông qua một quy định nữa là cổng (hay port) Mỗi chương trình dịch vụ sẽ sử dụng một cổng khác nhau để truy xuất thông tin Cổng là một số nguyên dương có giá trị từ 1 đến 16383.

Máy chủ (Server) sẽ qui định cổng được sử dụng cho mỗi loại dịch vụ Thông tin giữa máy khác (client) và máy chủ (server) phải sử dụng cổng tương ứng nhau thì mới trao đổi với nhau được Tuy nhiên, hầu hết các chương trình dịch vụ nổi tiếng hiện nay đều có qui định chuẩn cổng dành riêng cho mình như:

Nếu tự xây dựng một ứng dụng làm dịch vụ trên máy chủ ta phải chọn cho mình một số cổng có các giá trị khác nhau với nhưng giá trị cổng mà nhưng dịch vụ nổi tiếng đã sử dụng.

2.4.3 Giao tiếp theo mô hình khách/chủ

Có rất nhiều dịch vụ hỗ trợ trên Internet như e-mail, nhóm tin (newsgroup),chuyển tập tin (file transfer), đăng nhập từ xa (remote login), truy tìm các trang Web…Những dịch vụ này được tổ chức và kiến trúc theo mô hình khách/chủ (mô hình client/server) Các chương trình ở máy khách (Client) như trình duyệt (web browser) hay chương trình gửi nhận e-mail sẽ tạo ra kết nối (Connection) với một máy chủ ở xa(server) sau đó gửi các yêu cầu đến máy chủ, các chương trình dịch vụ trên máy chủ như Web server hay mail server… sẽ xử lý những yêu cầu này và gửi kết quả ngược lại cho khách hàng (client) Thông thường một dịch vụ trên máy chủ phục vụ cho rất nhiều máy khách.

2.4.4 Lập trình mạng thông qua Socket

Trước khi yêu cầu một dịch vụ trên máy chủ thực hiện một nhiệm vụ gì đó, máy khách (Client) phải có khả năng kết nối được với máy chủ (Server) Quá trình kết nối này được Java thực hiện thông qua một cơ chế trừu tượng hóa gọi là Socket Nếu kết nối Socket thành công thì máy khách và máy chủ có thể trao đổi dữ liệu với nhau thực hiện các yêu cầu về dịch vụ trên máy chủ Việc kết nối theo cơ chế Socket cần biết hai thông tin chủ yếu đó là địa chỉ của máy cần kết nối và số hiệu cổng của chương trình dịch vụ Java cung cấp lớp Socket và lớp ServerSocket, hai lớp này được đặt trong gói thư viện java.net.

PHÂN TÍCH THIẾT KẾ HỆ THỐNG

Tổng quan kiến trúc hệ thống

Socbay iMedia là phần mềm ứng dụng đa phương tiện dành riêng cho điện thoại di động tại Việt hiện nay Sản phẩm được phát triển trên nền tảng công nghệ tìm kiếm và xử lý dữ liệu của Socbay Công nghệ đã được ứng dụng thành công với phần mềm Socbay Mobile Search và các sản phẩm của đối tác như Vinasearch, của Vinaphone, VTC iMedia của VTC.

Socbay iMedia mang lại lợi ích tối đa cho người sử dụng di động bằng việc tích hợp dịch vụ tiện ích đa dạng trên cùng một ứng dụng Sau đây là các dịch vụ đã có của Socbay iMedia:

Sau đây là biểu đồ Use Case của hệ thống Socbay iMedia:

Hình 13: Mô hình Use Case của hệ thống

Chức năng của từng Use Case:

 Xem tin theo chuyên mục

 Chức năng thông tin cẩm nang

 Xem cẩm nang theo chuyên mục

 Xem cẩm nang chi tiết

 Chức năng tra từ điển

 Tra từ điển theo từ người dùng nhập

 Chức năng Xem thông tin bóng đá

 Xem thông tin bóng đá theo giải đấu

 Xem chi tiết lịch thi đấu, kết quả…

 Chức năng xem thông tin chứng khoán

 Xem thông tin cổ phiếu theo sàn giao dịch

 Xem chi tiết biến động giá cổ phiếu

 Chức năng xem kết quả xổ số

 Xem kết quả xổ số

 Chức năng tra địa điểm

 Xem địa điểm theo chuyện mục

 Xem chi tiết địa điểm

Do mô hình của hệ thống là rất lớn nên trong khuôn khổ đồ án tốt nghiệp này nhóm em chỉ đảm nhận làm một chức năng đó là Hình ảnh (Hệ thống Upload Ảnh) và sau đây là mô hình Use case tổng thể của hệ thống với chức năng Hình ảnh:

Hình 14: Mô hình Use case tông thể của hệ thống cho chức năng hình ảnh.

Trong chức năng Hình ảnh, thì hệ thống chia làm 2 phần đó là Client và Server.Phần Client do bạn Ngô Đức Tiệp đảm nhận còn em xử lý phần Server Sau đây là mô hình tổng thể của Hệ thống (phần khoanh đỏ chính là phần em đảm nhận):

Hình 15: Mô hình kết nối của hệ thống

Hệ thống Upload ảnh được chia thành 3 tầng với những chức năng và nhiệm vụ cụ thể của từng tầng:

 Client (J2ME MIDlet): tầng này chịu trách nhiệm kết nối đến server và gửi nhận dữ liệu đến server Tầng này sẽ duy trì kết nối với server từ khi bắt đầu bật ứng dụng cho tới khi thoát khỏi ứng dụng.

 Server: tầng này chịu trách nhiệm mở ra một cổng để cho các client có thể kết nối đến, chịu trách nhiệm gửi và nhận dữ liệu đến các Client, xử lý dữ liệu để lưu vào Database.

 DataBase: tầng này sẽ lưu những dữ liệu liên quan đến người sử dụng và những thông tin liên quan đến dữ liệu về ảnh do người sử dụng upload lên.

Ngoài ra, trong hình trên ta còn thấy có 1 tầng Internet Tầng này chịu trách nhiệm trao đổi thông tin giữa Client và Server Để có thể kết nối giữa Client và Server thông qua Internet thì Client và Server đều sử dụng giao thức kết nối là Socket.

Xác định yêu cầu chức năng hệ thống

Các chức năng của hệ thống được mô tả trong hình ảnh sau:

Hình 16: Mô hình UseCase của hệ thống

Chức năng đăng ký: Cho phép người sử dụng tạo một tài khoản để có thể sử dụng được chương trình Upload Ảnh.

Chức năng đăng nhập: Để sử dụng được chương trình thì người dùng phải có tài khoản và phải qua bước đăng nhập thì mới có thể sử dụng được các tiện ích của chương trình.

 Chụp ảnh (nếu điện thoại có hỗ trợ Camera) rồi Up vào Album đã được chọn.

 Lấy ảnh có sẵn trong máy (trong máy hoặc thẻ nhớ) để Up vào Album đã được chọn.

 Chức năng xem ảnh: Người dùng có thể xem ảnh với các hình thức sau:

 Xem ảnh có sẵn trong máy (trong máy hoặc thẻ nhớ)

 Xem ảnh của mình đã Up

 Xem những ảnh mới được Up lên server

 Chức năng quản lý hình ảnh: Người dùng có thể có những thao tác với Album hoặc từng ảnh như:

 Tìm kiếm ảnh theo tên

Mô tả Use case cho phép người dùng tạo tài khoản để có thể sử dụng những tiện ích của chương trình

Người sử dụng Điều kiện đầu vào

Luồng sự kiện Kết quả đầu ra

Hiển thị kết quả của việc đăng ký.

1.Người dùng Chọn Command Đăng ký và điền đầy đủ thông tin cần thiết.

2.Hệ thống Hệ thống sẽ kiểm tra xem dữ liệu có hợp lệ hay không (có trường nào bỏ trống?).

Nếu như hợp lệ hệ thống sẽ gửi yêu cầu đăng ký cùng với thông tin người dùng đã điền đến server.

Server sẽ nhận yêu cầu đăng ký và thông tin của người sử dụng Hệ thống sẽ kiểm tra xem tên tài khoản đã tồn tại chưa.

Nếu tốn tại thì thông báo lại cho người sử dụng ngược lại sẽ tạo mới tài khoản và thông báo kết quả cho ngưởi sử dụng

Mô tả Use case cho phép người dùng đăng nhập để bắt đầu sử dụng những tiện ích

Tác nhân Người sử dụng Điều kiện đầu vào

Luồng sự kiện Kết quả đầu ra

Tác nhân Hành động Hiển thị kết quả đăng nhập.

1.Người dùng Điền thông tin tài khoản và mật khẩu rồi đăng nhập (Có thêm lựa chọn lưu mật khẩu)

2.Hệ thống Hệ thống kiểm tra xem có trường nào bỏ trống không? Nếu không thì sẽ gửi yêu cầu đăng nhập đến server cùng với thông tài khoản và mật khẩu.

Hệ thống nhận và xử lí dữ liệu từ server trả về trước khi hiển thị kết quả

Mô tả Use case cho phép người dùng có thể Up ảnh của mình lên server Có 2 hình thức để up ảnh đó là chụp ảnh hoặc lấy ảnh có sẵn trong máy

Người sử dụng Điều kiện đầu vào

Luồng sự kiện Kết quả đầu ra

Tác nhân Hành động Hiển thị kết quả Up ảnh.

1.Người dùng Chọn ảnh để up và điền tên muốn đặt cho ảnh và chọn album sẽ chứa ảnh Có thể tạo thêm album mới.

2.Hệ thống Hệ thống sẽ gửi ảnh dưới dạng byte đến server cùng các thông tin đi kèm theo ảnh.

Server sẽ nhận dữ liệu về ảnh và lưu ảnh lại đồng thời sẽ lưu dữ liệu liên quan vào database.

Mô tả Use Case này cho phép người dùng có thể xem ảnh của mình dưới những hình thức: xem ảnh có sẵn trong máy, xem ảnh của mình up, hoặc xem những ảnh mới được up lên server Khi xem ảnh từ server gửi về người dùng có thể lưu những hình ảnh mà mình thích.

Người sử dụng Điều kiện đầu vào

Luồng sự kiện Kết quả đầu ra

Tác nhân Hành động Hiển thị ảnh muốn xem.

1.Người dùng Chọn hình thức xem ảnh và chọn ảnh muốn xem 2.Hệ thống Hệ thống sẽ gửi yêu cầu xem ảnh đến

Server sẽ lấy dữ liệu từ database tướng ứng từ đó sẽ đọc ảnh tương ứng và gửi đến client dưới dạng byte.

Use case : Quản lý hình ảnh

Mô tả Đối với những hình ảnh do chính mình up lên server thì người dùng có thể thêm, sửa và xóa album, ảnh.

Người sử dụng Điều kiện đầu vào

Luồng sự kiện Kết quả đầu ra

Tác nhân Hành động Hiển thị kết quả.

1.Người dùng Người dùng nhấn lệnh muốn thực hiện 2.Hệ thống Hệ thống sẽ gửi yêu cầu đến Server.

Server sẽ dựa vào lệnh muốn thực hiện để thao tác vơi database.

Mô tả Use Case này cho phép người dùng có thể tìm kiếm hình ảnh theo tên có trên server

Tác nhân Người sử dụng Điều kiện đầu vào

Luồng sự kiện Kết quả đầu ra

Tác nhân Hành động Hiển thị kết quả.

1.Người dùng Gõ tên ảnh muốn tìm và nhấn lệnh tìm kiếm 2.Hệ thống Hệ thống sẽ gửi yêu cầu đến Server.

Server sẽ dựa vào dữ liệu từ client để tìm kiếm trên database rồi gửi kết quả về cho client

Biểu đồ hoạt động của chức năng Up ảnh:

Hình 17: Biểu đồ hoạt động của chức năng Up ảnh

Hình 18: biểu đồ hoạt động chức năng xem ảnh

Hình 21: biểu đồ tuần tự chức năng đăng nhập

Hình 21: Biểu đồ tuần tự của chức năng Up ảnh

Hình 22: Biểu đồ tuần tự của chức năng Xem ảnh trong máy

Hình 24: Biểu đồ tuần tự chức năng xem ảnh mới Up

Hình 25: Biểu đồ tuần tự chức năng Tìm kiếm

Trong hệ thống hệ quản trị Cơ sở dữ liệu được sử dụng ở đây là MySQL Lý do dùng hệ quản trị này là quy mô về cơ sở dữ liệu của hệ thống là không lớn Sau đây là các bảng dữ liệu được sử dụng trong hệ thống:

Kiểu dữ liệu Giải thích

Id Int Khóa của bảng dữ liệu

Username Nvarchar(50) Tài khoản của người dùng

Password Nvarchar(50) Mật khẩu của người dùng

Kiểu dữ liệu Giải thích

Id Int Khóa của bảng dữ liệu

UserId Int Id của tài khoản tạo Album

Name Nvarchar(50) Tên của album

DateCreate DateTime Ngày tạo Album

IsDelete Bit Để biết thông tin về album đã bị xóa hay chưa

Kiểu dữ liệu Giải thích

Id Int Khóa của bảng dữ liệu

AlbumId Int Id của album sẽ chưa ảnh

Name Nvarchar(50) Tên của ảnh

NameFile Nvarchar(100) Đường dẫn chứa ảnh trên server

DateTime Ngày ảnh được upload lên server

IsDelete Bit Để chứa thông tin về ảnh đã bị xóa hay chưa

Sau đây là sơ đồ quan hệ của các bảng dữ liệu:

Hình 26: Các bảng dữ liệu và quan hệ.

Xây dựng Module kết nối phía Server

- Khi có một kết nối được gửi về từ phía Client thì Server phải tạo được kết nối và duy trì kết nối với Client cho đến khi Client thoát khỏi ứng dụng

- Khi kết nối đã được thông suốt giữa Client và Server, tất cả những yêu cầu được gửi về từ Client phải được xử lý chính xác và nhanh chóng trả lại kết quả cho Client.

- Tất cả những thông tin của người dùng phải được lưu trữ lại, vì thế nhiệm vụ của Server là phải kết nối đến một hệ quản trị Cơ sở dữ liệu (MySQL) để lưu trữ những thông tin này.

- Tất cả những ảnh do người dùng upload lên Server phải được lưu trữ lâu dài, không được để mất đi những hình ảnh này.

Hình 27: Cơ chế hoạt động phía Server

Listener: là bộ lắng nghe những kết nối từ phía Client Khi có một yêu cầu kết nối từ Client gửi đến, Listener sẽ tạo ra một Socket, Socket này sẽ làm nhiệm vụ giao tiếp trực tiếp với Client (gửi và nhận thông tin).

Soket: Việc trao đổi thông tin với Client sẽ được thực hiện ở đây Ứng với mỗi

Client khác nhau thì sẽ có một Socket khác nhau Socket này được duy trì cho đến khi Client thoát khỏi hệ thống.

Packets: đây là dữ liệu dùng để trao đổi giữa Client và Server, dữ liệu này ở dạng byte Khi nhận được dữ liệu, nó sẽ được chuyển về dạng String để biết được lệnh mà Client yêu cầu. Định dạng của Packets:

Header là thông tin bắt buộc của định dạng dữ liệu và nó là những từ khóa được định nghía trước Dựa vào Header mà cả Client và Server mới có thể hiểu được lệnh mà bên kia yêu cầu, qua đó mới trả về thông tin chính xác Bảng sau đây sẽ liệt kê tất cả những Header được dùng trong hệ thống:

STT Từ khóa Giải thích

1 UploadImage Từ khóa này để định nghĩa việc Client sẽ Upload Image lên Server Theo sau Từ khóa này sẽ là thông tin về album chứa ảnh, tên ảnh… Và theo sau đó sẽ là ảnh dưới dạng byte sẽ được gửi.

2 Login Định nghĩa việc đăng nhập Theo sau header này sẽ là

3 Register Định nghĩa việc đăng nhập Theo sau sẽ là thông tin về

Username, password và những thông tin khác.

4 ListAlbum Định nghĩa việc Client yêu cầu danh sách Album của họ.

5 ListImageName Định nghĩa việc Client yêu cầu danh sách tên tất cả những file ảnh mà họ đã Upload trong 1 album nhất định Theo sau sẽ là Id của Album mà người sử dụng muốn xem

6 ViewImage Định nghĩa việc Client muốn xem một ảnh có trên

Server, ảnh này có thể là do người dùng Upload lên hoặc những ảnh mới Upload Theo sau Header này sẽ là Id của ảnh muốn xem.

Khi người dùng đang xem một ảnh có trên Server, để không phải trở về danh sách tên ảnh mới xem được ảnh tiếp theo Khi Server nhận được Header này thì sẽ gửi ảnh kế tiếp (tương ứng với kiểu mà người dùng đang xem) của ảnh mà người dùng đang xem.

8 ViewImagePre Tương tự như ViewImageNext.

9 NewUpload Header này định nghĩa việc Client muốn xem danh sách những ảnh mới được Upload lên Server.

10 DeleteAlbum Khi người dùng muốn xóa một album của mình thì họ sẽ gửi một thông điệp với Header này cùng với Id của Album.

11 DeleteImage Header này định nghĩa việc người sử dụng muốn xóa một ảnh của mình Theo sau sẽ là Id của ảnh muốn xóa.

12 Search Khi muốn tìm kiếm ảnh theo tên thì thông điệp gửi đi phải kèm theo Header này Theo sau header này là từ khóa mà người sử dụng muốn tìm kiếm.

CÀI ĐẶT HỆ THỐNG

Cài đặt phía Client

Để thiết bị di động có thể chạy được ứng dụng Upload ảnh thì thiết bị này phải hỗ trợ Java và phải cài đặt kết nối mạng như GPRS, 3G Nếu thiết bị hỗ trợ đầy các tiêu chuẩn trên thì chỉ cần Copy hai file Upanh.jar và Upanh.jad và tiến hành đặt sau đó là có thể chạy được ứng dụng.

Cài đặt phía Server

Để một máy tính có thể làm được server cho ứng dụng Upload ảnh thì yêu cầu máy tính phải cài đặt hệ quản trị Cơ sở dữ liệu là MySQL, cài đặt JDK Sau khi cài đặt đủ 2 phần mềm trên thì máy tính có thể làm được server.

Nếu như có một máy tính làm server thì chỉ cần cài đặt 2 phần mềm trên là đủ. Nhưng đôi khi việc để có một server để chạy thử là việc khó khăn, vì vậy để một máy tính bình thường có thể làm server thì cần phải làm qua những bước sau (đây là hướng dẫn trên modem Comtrend, các modem khác thì có thể làm tương tự):

- Mở browser để vào địa chỉ của Modem (thường là địa chỉ 192.168.1.1 hoặc

- Sau khi tiến hành đăng nhập xong thì sẻ chuyển đến trang cấu hình cho Modem.

- Trong trang cấu hình, chọn NAT và tiếp theo chọn Virtual Servers (ở phía bên trái của màn hình).

- Ở bên phải của mành hình sẽ có Button Add, click chuột vào Button đó sẽ chuyển đến trang:

Hình 28: Trang cấu hình NAT

Phần Server Name thì có thể chọn tên mặc định hoặc gõ tên muốn đặt cho Server của mình (ví dụ: Upload Ảnh).

Tiếp theo là gõ địa chỉ IP của máy muốn làm Server cho hệ thống Upload ảnh Để tránh sự thay đổi IP trong mạng LAN sau mỗi lần khởi động máy thì nên đặt địa chỉ IP tĩnh cho máy tính đó (ví dụ: 192.168.1.30).

Sau đó là gõ dải của cổng mà hệ thống Upload ảnh khởi tạo (ví dụ: 1234).

Sau đó click chuột vào Save/Apply.

- Bước cuối cùng là lấy địa chỉ IP của Modem ở trên mạng Internet (có thể vào trang http://ip2location.com/để lấy) Sau khi có địa chỉ IP, thì nhiệm vụ của Client là sửa chuỗi kết nối tương ứng với địa chỉ IP và cổng của Server (ví dụ chuỗi kết nối:

Bây giờ máy tính đã có thể trở thành server.

 Ưu điểm của cách cấu hình này: o Thuận tiện cho việc kiểm tra Khi chưa hoàn thành xong hệ thống mà việc kiểm tra cần phải diễn ra thường xuyên thì việc đẩy lên Server sẽ mất rất nhiều công Với cách này thì chỉ cần cấu hình là có thể kiểm tra luôn. o Không tốn kém nhất là khi không có server.

 Nhược điểm của cách cấu hình này: o Địa chỉ IP của modem thay đổi liên tục theo ngày nên mỗi ngày chạy chương trình thì phải kiểm tra lại địa chỉ IP và thay đổi lại địa chỉ IP trênClient

Hình ảnh chương trình

Sau đây là những kết quả mà nhóm em đạt được trong thời gian thực hiện đồ án. Đầu tiên là Đăng ký:

Khi đăng ký thành công, ứng dụng sẽ chuyển sang Form đăng nhập.

Sau khi đăng nhập thành công, ứng dụng sẽ chuyển sang Form chính Form này chứa những chức năng của ứng dụng: Xem ảnh và đăng ảnh.

Nếu như chọn chức năng xem ảnh, ứng dụng sẽ chuyển sang Form Xem ảnh Ở đây sẽ liệt kê tất cả những chức năng xem ảnh như: Xem ảnh trong máy, Xem ảnh của mình upload, xem ảnh mới được upload lên hệ thống, Tìm kiếm hình ảnh.

Hình 32: Chức năng xem ảnh và tìm kiếm

Sau đây là một vài hình ảnh liên quan đến Chức năng xem ảnh:

Hình 33: Xem ảnh trong máy

Hình 34: Xem ảnh mới upload

Hình 35: Xem album của mình

Hình 36: Danh sách ảnh trong album

Hình 37: Form Xem ảnh Ở Form chính, nếu chọn chức năng đăng ảnh thì ứng dụng sẽ chuyển sang Form đăng ảnh Ở đây sẽ liệt kê tất cả những Album của mình và người dùng có thể thêm mới Album.

Hình 38: Chức năng xem và tạo album

Khi chọn được album để upload, ứng dụng chuyển sang Form chọn cách thức upload Có hai cách thức upload là lấy ảnh trong máy hoặc chụp ảnh để upload.

Hình 39: Form chọn cách thức upload ảnh

Ngày đăng: 04/10/2023, 16:08

HÌNH ẢNH LIÊN QUAN

Hình 1: So sánh số lượng người truy cập mạng xã hội bằng máy tính và di động - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 1 So sánh số lượng người truy cập mạng xã hội bằng máy tính và di động (Trang 11)
Hình 2: Thống kê lượng người sử dụng điện thoại di động - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 2 Thống kê lượng người sử dụng điện thoại di động (Trang 12)
Hình 4: Điện thoại G1 chạy HĐH Android - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 4 Điện thoại G1 chạy HĐH Android (Trang 16)
Hình 5: Điện thoại BlackBerry - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 5 Điện thoại BlackBerry (Trang 17)
Hình 6: HĐH Microsoft Windows Mobile - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 6 HĐH Microsoft Windows Mobile (Trang 18)
Hình 8: Các thiết bị hỗ trợ J2ME - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 8 Các thiết bị hỗ trợ J2ME (Trang 21)
Hình 9: Cấu trúc chương trình J2ME - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 9 Cấu trúc chương trình J2ME (Trang 24)
Hình 10: Cấu trúc chương trình MIDP - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 10 Cấu trúc chương trình MIDP (Trang 24)
Hình 11: Cấu trúc thiết bị MID - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 11 Cấu trúc thiết bị MID (Trang 28)
Bảng cấu trúc file manifest.mf Manifest-Version: 1.0 - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Bảng c ấu trúc file manifest.mf Manifest-Version: 1.0 (Trang 30)
Hình 13: Mô hình Use Case của hệ thống - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 13 Mô hình Use Case của hệ thống (Trang 37)
Hình 14: Mô hình Use case tông thể của hệ thống cho chức năng hình ảnh. - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 14 Mô hình Use case tông thể của hệ thống cho chức năng hình ảnh (Trang 38)
Hình 15: Mô hình kết nối của hệ thống - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 15 Mô hình kết nối của hệ thống (Trang 39)
Hình 16: Mô hình UseCase của hệ thống - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 16 Mô hình UseCase của hệ thống (Trang 40)
Hình 17: Biểu đồ hoạt động của chức năng Up ảnh - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 17 Biểu đồ hoạt động của chức năng Up ảnh (Trang 44)
Hình 18: biểu đồ hoạt động chức năng xem ảnh - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 18 biểu đồ hoạt động chức năng xem ảnh (Trang 45)
Hình 21: biểu đồ tuần tự chức năng đăng nhập - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 21 biểu đồ tuần tự chức năng đăng nhập (Trang 46)
Hình 21: Biểu đồ tuần tự của chức năng Up ảnh - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 21 Biểu đồ tuần tự của chức năng Up ảnh (Trang 46)
Hình 22: Biểu đồ tuần tự của chức năng Xem ảnh trong máy - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 22 Biểu đồ tuần tự của chức năng Xem ảnh trong máy (Trang 47)
Hình 24: Biểu đồ tuần tự chức năng xem ảnh mới Up - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 24 Biểu đồ tuần tự chức năng xem ảnh mới Up (Trang 48)
Hình 25: Biểu đồ tuần tự chức năng Tìm kiếm - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 25 Biểu đồ tuần tự chức năng Tìm kiếm (Trang 48)
Bảng Account - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
ng Account (Trang 49)
Hình 26: Các bảng dữ liệu và quan hệ. - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 26 Các bảng dữ liệu và quan hệ (Trang 50)
Hình 27: Cơ chế hoạt động phía Server - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 27 Cơ chế hoạt động phía Server (Trang 51)
Hình 28: Trang cấu hình NAT - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 28 Trang cấu hình NAT (Trang 54)
Hình 31: Form Chính - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 31 Form Chính (Trang 56)
Hình 34: Xem ảnh mới upload - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 34 Xem ảnh mới upload (Trang 57)
Hình 38: Chức năng xem và tạo album - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 38 Chức năng xem và tạo album (Trang 58)
Hình 37: Form Xem ảnh - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 37 Form Xem ảnh (Trang 58)
Hình 39: Form chọn cách thức upload ảnh - Xây dựng ứng dụng upload ảnh cho di động hỗ trợ j2me phía server
Hình 39 Form chọn cách thức upload ảnh (Trang 59)
w