Chương 3. Phân tích thiết kế bài toán

Một phần của tài liệu XÂY DỰNG HỆ THỐNG XEM VIDEO TRỰC TUYẾN TRÊN HỆ ĐIỀU HÀNH ANDROID (Trang 35 - 52)

Bài toán của chúng ta ở đây là xây dựng một hệ thống xem video trực tuyến dưới dạng streaming trên thiết bị sử dụng hệ điều hành mã nguồn mở Android. Như vậy có nghĩa là ta sẽ thiết phần mềm trên thiết bị cho phép người sử dụng có thể kết nối trực tiếp đến server cung cấp video, xem các video dưới dạng streaming, điều khiển việc xem video qua các chức năng như chạy, tạm dừng, tua, dừng lại hay phát lại…, ngoài ra còn cần các chức năng như tìm kiếm video hay cập nhập video mới có trên hệ thống. Đó là trên thiết bị, còn trên server, phải xây dựng một server cung cấp video cho phép streaming và có khả năng quản lý các video.

3.2. Phân tích yêu cầu

3.2.1.Yêu cầu người sử dụng

- Yêu cầu 1 (YC1):Có thể xem được các video từ trên internet dưới dạng streaming

mà không phải tải toàn bộ đoạn video về máy trước khi chạy.

- Yêu cầu 2 (YC2): Hệ thống phải cung cấp cho người sử dụng tìm kiếm một tên

video nào đó nhanh chóng, có thời lượng độ dài video đi cùng.

- Yêu cầu 3 (YC3):Video được cập nhập thường xuyên, phong phú.

- Yêu cầu 4 (YC4):Người dùng có thể cập nhập các video mới có trên server.

- Yêu cầu 5 (YC5):Người dùng có thể thực hiện các thao tác đối với chương trình

chạy video ở thiết bị như có thể tua, tạm dừng, tắt hay chạy lại video từ đầu.

- Yêu cầu 6(YC6): Thuận tiện, dễ sử dụng đối với người sử dụng.

3.2.2.Yêu cầu hệ thống

Đối với hệ thống xem video trực tuyến dưới dạng streaming thì nó đòi hỏi một số yêu cầu sau để có thể phát triển và trở lên phổ biến:

- Yêu cầu 7 (YC7): Công nghệ xử lý kĩ thuật ở hệ thống: cho phép phát video dưới dạng streaming để thiết bị có thể tải về và chạy video dưới dạng streaming. Đây là điều kiện cần để các nhà phát triển, cho dù không cùng kĩ thuật nhưng cũng có thể sử dụng hệ thống để phát triển phần mềm cho riêng mình.

- Yêu cầu 8 (YC8): Công nghệ xử lý kĩ thuật ở trên thiết bị chạy hệ điều hành mã

dạng streaming. Đòi hỏi kĩ thuật phải hạn chế tối đa độ trễ để không gây ra hiện tượng video đang xem bị giật hoặc phải chờ quá lâu.

- Yêu cầu 9 (YC9): Đường truyền: sử dụng công nghệ 3G, hạn chế đỗ trễ để khi xem

video không bị giật, bị trễ.

- Yêu cầu 10 (YC10): Giao diện trên thiết bị cầm tay: phải thân thiện, đơn giản, dễ

sử dụng cho nhiều lứa tuổi.

- Yêu cầu 11 (YC11s): Chức năng: có một số chức năng cơ bản hỗ trợ xem video

như tạm dừng (pause), tua (seek), chỉnh âm lượng, tìm kiếm video trên máy chủ theo tên, cập nhập video mới có trên hệ thống…

Tuy nhiên khóa luận chỉ tập trung nghiên cứu chủ yếu trên thiết bị.

3.3. Những khó khăn

- Hệ điều hành trên điện thoại hầu như không hỗ trợ các kết nối trực tiếp đến cơ sở dữ liệu, và Android cũng vậy, nó cũng không cung cấp các kết nối trực tiếp đến cơ sở dữ liệu.

- Không có thiết bị thật, sử dụng máy ảo đôi khi không phù hợp với thực tế hay có lỗi.

3.4. Giải pháp

3.4.1. Xử lý trên thiết bị

- Do trên hệ điều hành mã nguồn mở Android có cung cấp phương thức

setBufferingUpdateListener() (đã được nêu ở mục 2.2.2.5 về MediaPlayer)nên sẽ sử (adsbygoogle = window.adsbygoogle || []).push({});

dụng phương thức này để tải từng đoạn video vào trong bộ đệm, đến một độ dài đủ để có thể chạy video thì sẽ vừa ghi từ bộ đệm ra file đồng thời chạy video.

- Tạo ra giao diện theo kiểu danh sách, dễ dàng lựa chọn.

- Tạo ra một Servlet, có tác dụng lấy dữ liệu từ Server, chuyển thành các luồng dữ liệu mà thiết bị có thể đón nhận được.

3.4.2.Xử lý trên Server

- Quản trị cơ sở dữ liệu bằng hệ quản trị dữ liệu Oracle.

- Tạo servlet để kết nối và đưa yêu cầu từ thiết bị đến hệ thống và ngược lại.

3.5. Phân tích

3.5.1. Các chức năng của hệ thống

Với hệ thống này, người sử dụng sẽ được cung cấp các chức năng sau:

- Tìm kiếm video theo tên : cho phép người dùng tìm kiếm theo tên video từ trên cơ sở dữ liệu của hệ thống.

- Cập nhập video mới trên hệ thống đến thiết bị cầm tay: lấy các thông tin về video như tên video, độ dài, mã, địa chỉ mà trên thiết bị chưa có thông tin về những video đó để hiển thị cho người sử dụng xem.

- Chạy video dưới dạng Streaming: khi người sử dụng lựa chọn được video như ý thì chương trình sẽ phát video đó dưới dạng streaming.

3.5.2. Biểu đồ ca sử dụng

Hình 20: Biểu đồ ca sử dụng.

Biểu đồ ca sử dụng của hệ thống có ba tác nhân là Người dùng, Server và Servlet, có ba chức năng chính là Tìm kiếm, Cập nhập, Streaming và các chức năng phụ thuộc chức năng Streaming là Tua, Dừng lại, Phát lại từ đầu, Phát video, Tạm dừng. Để đi sau hơn vào các trọng tâm, luận văn xin chỉ phân tích ba chức năng chính là Tìm kiếm, Cập nhập và Streaming.

3.5.3. Luồng sự kiện 3.5.3.1. Tìm kiếm

Tên Ca sử dụng Tìm kiếm

Tác nhân Người dùng, Web service

Luồng sự kiện chính:

1. Nhập

2. dữ liệu vào EditText. 3. Nhấn nút Search.

4. Kiểm tra dữ liệu nhập vào có khác null không. 5. Server nhận dữ liệu, đưa qua Servlet.

6. Servlet thực hiện tìm kiếm, trả lại kết quả về thiết bị. 7. Hiển thị kết quả trên thiết bị.

Luồng dữ liệu phụ:

1. Thông báo lỗi nhập dữ liệu null. 2. Thông báo không có dữ liệu cần tìm.

3.5.3.2. Cập nhập

Tên Ca sử dụng Cập nhập

Tác nhân Người dùng, Web service

Sự kiện kích hoạt Người dùng nhấn vào nút Update Luồng sự kiện chính:

1. Nhấn nút Update. 2. Yêu cầu gửi lên Server. 3. Yêu cầu gửi lên Servlet. 4. Dữ liệu trả về thiết bị. (adsbygoogle = window.adsbygoogle || []).push({});

5. Dữ liệu hiển thị lại trên thiết bị. Luồng dữ liệu phụ:

1. Thông báo không có dữ liệu mới.

3.5.3.3. Streaming

Tên Ca sử dụng Streaming

Tác nhân Người dùng, Web service

Sự kiện kích hoạt Người dùng chọn video, nhấn vào nút Menu rồi chọn Stream.

Luồng sự kiện chính: 1. Chọn video. 2. Nhấn nút Menu. 3. Chọn Stream.

4. Kêt nối đến Server để lấy dữ liệu vào bộ đệm. 5. Chạy dữ liệu được lấy về bộ đệm.

Luồng sự kiện phụ

1. Thông báo video không thể Streaming được.

3.5.4. Thiết kế lớp

Dựa trên những thiết kế ở trên, chúng ta có thể chia hệ thống thành ba hệ thống con, gồm có hệ thống Server, hệ thống Servlet, hệ thống trên thiết bị,

Hình 21: Lớp trên thiết bị cầm tay

Lớp videoInfo: tạo ra đối tượng lưu trữ các giá trị cần biết của đối tượng là một video.

Phương thức:

- getVideoLink(): trả về link kết nối của đối tượng video.

- getVideoLengthKb(): trả về dung lượng tính bằng kb của đối tượng video.

- getVideoLengthSecond(): trả về độ dài tính bằng giây của đối tượng video.

- setVideoChecked(): đánh dấu đối tượng vifdeo.

- isChecked(): trả về giá trị của đối tượng video được đánh dấu hay chưa.

Lớp CustomeViewGroup: thừa kế từ lớp LinearLayout, hiển thị một đối tượng chứa nhiều thuộc tính ra màn hình.

Phương thức:

- CustomViewGroup(): chỉ có phương thức khởi tạo nhằm khởi tạo một đối tượng

có nhiều phương thức.

Lớp ListVideoAdapter: thừa kế từ lớp ArrayAdapter, lấy từng đối tượng video để hiện thị thành một danh sách.

Phương thức:

- ListVideoAdapter(): phương thức khởi tạo.

- getView(): là phương thức Override để hiện thị từng đối tượng video lên danh sách.

- onCheckedChanged(): thiết lập lại giá trị cho video khi được nháy chuột lựa chọn.

Lớp readData: kết nối và lấy dữ liệu từ trên Servlet. Phương thức: (adsbygoogle = window.adsbygoogle || []).push({});

- getData(): lấy dữ liệu trả về từ trên Servlet.

Lớp dbsvideo: là lớp chính, kế thừa từ lớp Activity có nhiệm vụ xử lý các sự kiện chọn Cập nhập, Tìm kiếm hay Stream.

- onCreate(): là phương thức khởi tạo của lớp Activity, được gọi đến khi lớp này

khởi tạo.

- onClick(): là lớp xử lý các hành động khi có sự kiện nháy chuột vào Button.

- onCreateOptionsMenu(): khởi tạo các mục cho thực đơn.

- onOptionsItemSelected(): xử lý các sự kiện khi lựa chọn mục trong thực đơn.

Lớp VideoPlayerDemo: kế thừa từ lớp Activity, có nhiệm vụ kiểm soát, thực hiện toàn bộ việc streaming video.

Phương thức:

- onCreate(): phương thức khởi tạo của lớp Activity.

- playVideo(): làm nhiệm vụ chuẩn bị và chạy streaming video.

- onBufferingUpdate(): kiểm soát việc tải video về bộ đệm và chạy nó khi có thể.

- onPrepared(): chuẩn bị cho việc phát video.

- onSurfaceCreated(): bắt đầu quá trình streaming ngay khi tạo bề mặt hiển thị.

- onDestroy(): giải phóng, kết thúc việc phát video. 3.5.4.2. Hệ thống Servlet

Lớp BaseDAO: là lớp cha, cung cấp các phương thức để xử lý trên Servlet. Phương thức:

- getParam(): trả về các thông số.

- setParam(): thiết lập các thông số.

- Lớp ContentServlet: làm nhiệm vụ nhận dữ liệu từ Server bị gửi lên, lấy dữ liệu từ Server và trả về thiết bị.

Phương thức:

- doGet(): nhận yêu cầu từ Server.

- DoPost(): trả dữ liệu về thiết bị.

Lớp ContentDAO: có nhiệm vụ kết nối cơ sở dữ liệu trên Server, lấy dữ liệu về để chuẩn bị đẩy xuống thiết bị.

Phương thức:

- getData(): gửi các câu truy vấn đến cơ sở dữ liệu rồi lấy về đưa vào một Vector

3.5.5. Biểu đồ tuần tự 3.5.5.1. Tìm kiếm

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

Người dùng nhập thông tin cần tìm kiếm là tên video vào một EditText, rồi nháy vào Button Search trên màn hình hiển thị, nó tiếp tục được gửi thông tin đến một Controller là là form điểu khiển tìm kiếm, tại đây dữ liệu nhập vào sẽ được kiểm tra với null, nếu nó bằng null thì sẽ gửi trả lại thông báo cho người sử dụng biết. Còn nếu khác null, nó sẽ được gửi tiếp đến Server để thực hiện việc tìm kiếm theo tên trên cơ sở dữ liệu. Tại cơ sở dữ liệu sẽ tiến hành kiểm tra xem với tên nhập vào đó thì có trong cơ sở dữ liệu không. Sau đó nó sẽ trả lại kết quả về form điều khiển tìm kiếm, rồi về form tìm kiếm, từ đây nó sẽ hiển thị cho người dùng biết kết quả của quá trình tìm kiếm.

Hình 23: Biểu đồ tuần tự của chức năng tìm kiếm.

Cũng tương tự chức năng Tìm kiếm thì chức năng Cập nhập cũng có quy trình làm việc giống như thế. Từ người dùng sẽ gửi yêu cầu cập nhập chức năng mới thông qua một form Cập nhập, sau đó yêu cầu cùng với những thông tin của những video đã có ở trên thiết bị sẽ được gửi đến một form điều khiển việc cập nhập, nó đóng vai trò kết nối với server. Từ đây nó sẽ gửi các truy vấn dến server. Tại server sẽ thực hiện các truy vấn, kiểm tra những video nào đã có trên thiết bị rồi trả về dữ liệu form Dk Cập nhập, rồi trả về form Cập nhập hiển thị cho người dùng. (adsbygoogle = window.adsbygoogle || []).push({});

3.5.5.3. Streaming

Hình 24: Biểu đồ tuần tự chức năng Streaming.

Sau khi lựa chọn video theo tên thông qua form lựa chọn, người sử dụng sẽ điều khiển việc Streaming thông qua form Dk Streaming. Tại form Dk Streaming nó sẽ thực hiện các truy vấn đến cơ sở dữ liệu chứa thông tin về video đã lựa chọn, tuy nhiên trước khi đưa yêu cầu đến Server, nó sẽ thực hiện việc kiểm tra xem dữ liệu video lựa chọn có hợp lệ hay không. Tại Server sẽ thwck hiện vieeck kiểm tra sự tồn tại của dữ liệu được gửi lên trong cơ sở dữ liệu, rồi sẽ tiền hành trả dữ liệu đã được yêu cầu về form DkVideo có chức năng quản lý, điều khiển các thao tác với video đang được streaming về thiết bị.

3.5.6.Biểu đồ trạng thái hoạt động

Hình 25: Biểu đồ hoạt động chức năng Tìm kiếm

Hình 26: Biểu đồ hoạt động chức năng cập nhập.

3.5.7. Cơ sở dữ liệu

Để có thể kiểm soát và đưa hệ thống trở thành phổ biến, lớn mạnh trên toàn thế giới thì việc sử dụng một hệ quản trị cơ sở dữ liệu đáng tin tưởng, bảo mật.. là điều hết sức quan trọng.

Trong luận văn này sẽ sử dụng cơ sở dữ liệu Oracle 10g để thiết kế và

quản trị cơ sở dữ liệu.

Cơ sở dữ liệu của hệ thống trước mắt sẽ chỉ có một bảng duy nhất, lưu giá trị : mã, tên của video, link kết nối đến video, độ dài tính theo giây của video, dung lượng video, thời gian chèn vào cơ sở dữ liệu.

Cơ sở dữ liệu mang tên: DBVideo. Mô tả cơ sở dữ liệu:

- Mã video : v_index (thuộc tính khóa). - Tên video: v_name

- Link của video: v_link.

- Độ dài tính theo giây : v_second - Dung lượng video : v_kb

- Thời gian chèn vào cơ sở dữ liệu : v_createdate

Bảng cơ sở dữ liệu:

Hình 28: Bảng cơ sở dữ liệu.

Màn hình chính của chương trình bao gồm một EditText cho phép người sử dụng gõ tên của video muốn tìm kiếm trên Server, nó mang một dòng chữ kiểu ẩn :”Enter the name here” nhằm mục đích ngầm gợi ý cho người sử dụng cách dùng.

Ngoài ra, màn hình chính còn có hai Button : Search và Update, button Search mang nhiệm vụ khi ta gõ tên video cần tìm rồi nháy vào Search thì hệ thống sẽ thực hiện các kết nối, tìm kiếm để tìm video có tên như người dùng đã nhập trên cơ sở dữ liệu của hệ thống, sau đó hiển thị lên màn hình cho người sử dụng biết có video với tên vừa nhập vào có hay không, và nếu có nó sẽ hiển thị các nội dung về video đó.

Để tiện cho việc năm bắt nội dung của video, trên màn hình còn hiển thị một danh sách tên những video cùng độ dài của nó. Mỗi một thành phần của danh sách gồm 3 phần con, có hai TextView, một để hiển thị tên của video, một để hiển thị độ dài của video, và một thành phần rất quan trọng, đó là một CheckBox, nó cho phép chuyển trạng thái để người sử dụng đánh dấu là đã chọn video.

Hình 29: Màn hình chính

Hiển thị Menu gồm hai thành phần là Streaming và Help, khi người sử dụng chưa chọn video mà đã chọn Streaming thì trạng thái màn hình sẽ không thay đổi, nhưng nếu khi đã chọn video rồi chọn Streaming thì màn hình sẽ nhảy sang một giao diện khác để chạy video.

Hình 30: Màn hình lựa chọn.(màn hình 1)

Đây là giao diện của Help, nó hiển thị ra hướng dẫn sử dụng chương trình này.

Hình 31: Màn hình Help.

Màn hình này dùng để hiển thị video và các chức năng của chương trình dùng để điểu khiển quá trình chạy video. Góc trái là một TextView hiển thị tên của video đang chạy. Ngay cạnh đó là một ImageButton, ImageButton này có chức năng là khi nháy vào nó, nó sẽ tự động tắt quá trình chạy video, rồi trở về màn hình chính bên trên (màn hình 1- Hình 30). Ở chính giữa màn hình là một bề mặt(Surface) đẻ hiển thị video. Các chức năng tạm dừng, tua về phía trước, tua về phía sau, chạy lại từ đầu được biểu diễn bằng các ImageButton rất trực quan và dễ sử dụng. Đặc biệt màn hình hiển thị này còn có một số chức năng giúp người dùng dễ năm bắt và sử dụng như: khi video đang chạy, ta nháy nút

Một phần của tài liệu XÂY DỰNG HỆ THỐNG XEM VIDEO TRỰC TUYẾN TRÊN HỆ ĐIỀU HÀNH ANDROID (Trang 35 - 52)