Mục lục
Lời cảm ơn . 1
Lời nói ñầu . 2
Mục lục . 3
Danh mục hình ảnh, bảng biểu . 6
Chương 1 - Giới thiệu chung . 7
1.1. Quá trình hình thành ý tưởng . 7
1.2. Nhiệm vụcủa ñồán . 12
1.3. Cấu trúc ñồán . 12
Chương 2 - Phân tích hệthống . 14
2.1. Tổng quan . 14
2.1.1. Mô hình hoạt ñộng .14
2.1.2. Những yêu cầu cho KaraMobile .14
2.1.3. Những yêu cầu cho KaraServer .15
2.2. Thiết kếchi tiết . 16
2.2.1. Ứng dụng KaraMobile .16
Use case diagram .16
Sequence Diagram .19
2.2.2. Ứng dụng KaraAdmin .20
Use case Diagram .20
Activity Diagram .24
Sequence Diagram .26
2.2.3. KaraDatabase .28
Table Admin .30
Table Users .30
Table MusicData .31
Table Music .31
Table comment .32
Table setting .32
2.3. Cấu trúc tập tin MIDI/KAR . 33
2.3.1. Giới thiệu chung .33
Chuẩn MIDI .33
Chuẩn KAR .33
2.3.2. Cách thức lưu trữgiá trị.33
2.3.3. Cấu trúc tập tin MIDI/KAR .34
Phân ñoạn mở ñầu (header chunk) .35
Phân ñoạn rãnh (track chunk) .37
Track Event .38
MIDI Channel Event .39
SysEx Event .39
Meta Event.39
2.4. Công cụ, công nghệhỗtrợ. 41
Ứng dụng trên ñiện thoại di ñộng KaraMobile: .41
Hệthống KaraServer .41
KaraDatabase: .41
Chương 3 - Thiết kế, hiện thực hệthống . 42
3.1. Ứng dụng KaraMobile – phía client . 42
3.1.1. Giới thiệu J2ME .42
CLDC (Connected Limited Device Configuration) .43
MIDP (Mobile Information Device Profile).45
Máy ảo KVM (K Virtual Machine) : .47
3.1.2. RMS và cấu trúc lưu trữcủa thưviện trên mobile .47
Tìm hiểu vềRMS .47
Một số ñặc ñiểm cần lưu ý .50
Cấu trúc lưu trữtrong RMS (Record Management System) .51
3.2.3. Cấu trúc giao diện của KaraMobile .53
Sơ ñồmàn hình.53
Những thành phần giao diện chính .53
3.2. Hệthống KaraServer – phía server . 56
3.2.1. Giới thiệu vềJSP và Servlet .56
Giới thiệu JavaServerPages (JSP) .56
Cơchếhoạt ñộng của JSP .56
Những ñiểm nổi bật của công nghệJavaServerPages (JSP) .57
Chu trình sống của Servlet và JSP.61
3.2.2. Log4j .64
Giới thiệu .64
Cấu hình .65
Sửdụng .66
3.2.3. Cấu trúc của trang KaraAdmin .67
Sơ ñồtrang .67
Mô tảchi tiết .67
3.3. Kỹthuật kết nối dữliệu. 82
3.3.1. Giới thiệu chung vềkỹthuật: .82
3.3.2. Cấu trúc của các thông ñiệp .84
Chương 4 - Triển khai hệthống . 89
4.1. Mô hình Deploy Diagram . 89
4.3. Triển khai hệthống server . 89
4.2. Triển khai ứng dụng client . 91
Chương 5 - Kết luận, hướng phát triển . 92
5.1. Những thiếu sót . 92
KaraMobile.92
KaraAdmin .92
5.2. Hướng phát triển cho tương lai . 93
Danh mục tài liệu tham khảo . 94
Cấu trúc tập tin MIDI/KAR .94
J2ME .94
JSP/Servlet .94
Các nguồn khác .94
94 trang |
Chia sẻ: netpro | Lượt xem: 3119 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng ứng dụng hát karaoke trên Mobile, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
danh
sách comment vi phạm
o Edit rows in page : cho phép người quản trị quy ñịnh số dòng hiển thị
trên một trang web khi người quản trị sử dụng các chức năng như liệt kê
danh sách trên website quản trị.
• Auto Delete user : chức năng này hoạt ñộng tự ñộng, hệ thống sẽ xóa các
thành viên khỏi hệ thống mà sau thời gian quy ñịnh mà không ñăng nhập.thời
gian này ñược người quản trị quy ñịnh từ trước.
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 24
Activity Diagram
Hình 3 – Mô tả hoạt ñộng của chức năng Cấm User
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 25
Hình 4 – Mô tả hoạt ñộng cho chức năng Xóa comment
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 26
Sequence Diagram
Hình 5 – Sequence Diagram cho chức năng UserSignIn
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 27
Hình 6 – Sequence Diagram cho chức năng Cấm truy cập User
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 28
Hình 7 – Sequence diagram cho chức năng Xóa comment
2.2.3. KaraDatabase
Sau khi phân tích những chức năng chính của KaraAdmin, chúng ta ñưa ra
mô hình lớp thực thể (entity class diagram) như sau:
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 29
Hình 8- Mô hình Entity Class Diagram của KaraServer
Dựa vào mô hình trên, chúng ta sẽ thiết kế mô hình Cơ sở dữ liệu quan hệ
như sau:
Hình 9- Mô hình Cơ sở dữ liệu quan hệ cho KaraServer
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 30
Table Admin
Tên column Kiểu dữ liệu Khóa chính Mô tả
aName Varchar(20) Khóa chính Tên ñăng nhập của admin
aPass Varchar(20) Password dùng ñể ñăng nhập
Table Users
Tên column Kiểu dữ liệu Khóa chính Mô tả
uName Varchar(20) Khóa chính Tên ñăng nhập của user
uPassword Varchar(20) Password dùng ñể ñăng nhập
uData Varchar(256) Mô tả thông tin của user
uUpload Int
Mô tả số lẩn upload nhạc lên
cộng ñồng của user này
uLevel Int
Mô tả cấp bậc của user này trong
cộng ñồng
uDateBegin Datetime
Mô tả ngày tham gia của user
này
uDateLastLog Datetime
Mô tả ngày ñăng nhập cuối cùng
của user này
uAvailable TinyInt(1)
Mô tả user này có bị cấm truy
cập hay không.
0: cấm , 1: hoạt ñộng
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 31
Table MusicData
Tên column Kiểu dữ liệu Khóa chính Mô tả
mId Int Khóa chính Mã số bài hát
mLink Int Mô tả số lượng user ñang sở hữu
bài hát này
mData Blob Lưu trữ dữ liệu của bài hát
mSize Int Mô tả kích thước bài hát này,
dưới dạng bytes
Table Music
Tên column Kiểu dữ liệu Khóa chính Mô tả
mId Int Khóa chính Mã số bài hát, là khóa ngoại từ
table MusicData
uName Varchar(20) Khóa chính Mô tả tên của người upload bài
hát này lên, là khóa ngoại từ
table Users
mName Varchar(45) Tên của bài hát
mComposer Varchar(45) Tên của tác giả bài hát
mType Varchar(45) Thể loại của bài hát
mDownload Int Mô tả số lần download của bài
hát này
mDate Datetime Mô tả ngày bài hát này ñược
upload lên cộng ñồng
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 32
Table comment
Tên column Kiểu dữ liệu Khóa chính Mô tả
mId Int Khóa chính Mã số bài hát, là khóa ngoại từ
table Music
uName Varchar(20) Khóa chính Mô tả tên của người upload bài
hát này lên, là khóa ngoại từ
table Music
uNamePM Varchar(20) Khóa chính Mô tả tên của người comment
bài hát, là khóa ngoại từ table
Users
cData Varchar(256) Mô tả nội dung comment
cDate Datetime Mô tả ngày comment
Table setting
Tên column Kiểu dữ liệu Khóa chính Mô tả
TimeWaiting Int Thời gian quy ñịnh ñưa user
vào danh sách chờ
TimeDeleting Int Thời gian quy ñịnh mà hệ
thống sẽ tự ñộng xóa user
CommentBlack Nvarchar(256) Quy ñịnh các câu chữ trong
comment sẽ ñược liệt kê vào
comment vi phạm
RowsInPage Int Quy ñịnh số record trong một
page
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 33
2.3. Cấu trúc tập tin MIDI/KAR
2.3.1. Giới thiệu chung
Chuẩn MIDI
MIDI (Musical Instrument Digital Interface – Chuẩn giao tiếp của nhạc cụ
ñiện tử) là một giao thức chuẩn ñược ñịnh nghĩa từ năm 1983, và giúp cho các
nhạc cụ ñiện tử, máy tính, và các thiết bị khác có thể liên lạc, ñiều khiển, và
ñồng bộ với nhau. Chuẩn MIDI cho phép máy tính, bộ tổng hợp, bộ ñiệu khiển
MIDI, card âm thanh, bộ lấy mẫu, và trống ñiện tử có thể ñiều khiển lẫn nhau,
và trao ñổi dữ liệu với nhau.
Chuẩn MIDI không chuyển tải sóng âm thanh hoặc ña phương tiện, mà nó
chuyển tải “tín hiệu sự kiện” (event messages), ví dụ như là ñộ cao âm, và ñộ
nhạy của các nốt nhạc khi phát, ñiều khiển tín hiệu cho các thông số như âm
lượng, tiếng rung và tín hiệu ñồng hồ ñể thiết lập cho nhịp ñiều của nốt nhạc.
Là một giao thức ñiện tử, nó rất ñáng chú ý cho sự lựa chọn rộng rãi trong
ngành công nghiệp hiện nay.
(Theo Wikipedia.com)
Chuẩn KAR
Tập tin KAR thực chất là một tập tin MIDI, nhưng có thêm một phần lưu
trữ thông tin của bài nhạc như là tiêu ñề, tác giả, và thông tin của lời nhạc kèm
theo thời gian phát ñể ñồng bộ với nhạc. Chúng ta sẽ phân tích kỹ hơn về phần
này trong phần sau.
2.3.2. Cách thức lưu trữ giá trị
Tất cả các dữ liệu số ñều ñược lưu trữ theo ñịnh dạng “Big-Endian”, tức là
byte cao nhất sẽ ñứng ñầu tiên.
Ví dụ: các giá trị ñều ở dạng 4 byte
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 34
Giá trị thập
phân
Dữ liệu lưu trữ
Dạng nhị phân Dạng Hexa
5 00000000 00000000 00000000 00000101 00 00 00 05
7241 00000000 00000000 00011100 01001001 00 00 1c 49
Một số dữ liệu số ñược lưu trữ theo dạng dữ liệu có chiều dài biến ñổi, tức là
sử dụng 7 bit cuối ñể lưu giá trị, còn bit cao nhất lưu trữ cờ. Nếu cờ bằng 1 tức là
dữ liệu còn ñược chứa ở byt e tiếp theo, nếu cờ bằng 0 tức byte hiện tại ñã kết
thúc dữ liệu số.
Ví dụ:
Giá trị Giá trị có ñộ dài thay ñổi tương ứng
Nhị
phân
Hexa
Nhị
phân
Hexa
00 00000000 00 00000000
C8 11001000 8148 10000001 01001000
100000 00010000 00000000 00000000 C08000 11000000 10000000 00000000
2.3.3. Cấu trúc tập tin MIDI/KAR
Chúng ta sẽ cùng phân tích cấu trúc tập tin MIDI/KAR nhưng sẽ không ñi
sâu vào những ñặc ñiểm của nốt nhạc, mà chỉ quan tâm ñến cách thức lấy ñược
lời bài hát, và cách thức ñồng bộ lời với nhạc.
Cấu trúc tập tin MIDI/KAR ñược chia làm nhiều phân ñoạn (chunk). Có 2
loại phân ñoạn, ñó là phân ñoạn mở ñầu (header chunk) và phân ñoạn rãnh (track
chunk). Cấu trúc tổng quan như sau:
+ [ + ...]
Mỗi phân ñoạn ñều có 3 phần chính sau:
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 35
Chuỗi nhận dạng phân ñoạn: là một chuỗi gồm 4 ký tự. Nếu chuỗi là
“MThd” thì ñó là phân ñoạn mở ñầu, còn chuỗi là “MTrk” thì ñó là
phân ñoạn rãnh.
4 byte tiếp theo lưu trữ một số nguyên không âm: biểu hiện cho số
lượng byte có trong phần dữ liệu của phân ñoạn ñó.
Cuỗi cùng là phần dữ liệu của phân ñoạn, có số byte ñúng bằng giá trị
phía trên.
Phân ñoạn mở ñầu (header chunk)
Phân ñoạn mở ñầu chứa thông tin của bài hát chứa trong tập tin
MIDI/KAR bao gồm loại tập tin MIDI, số lượng các track, và ñộ chia thời
gian (time division). Lưu ý là luôn luôn chỉ có duy nhất một phân ñoạn mở
ñầu cho một tập tin MIDI/KAR, và phân ñoạn ñó luôn xuất hiện ñầu tiên. Sau
ñây là bản tóm tắt cấu trúc của phân ñoạn mở ñầu:
"MThd" + + + +
Trong ñó:
• “MThd”
có giá trị hexa là 0x4d546864, báo hiệu ñây là phân ñoạn mở ñầu
•
thông thường mang giá trị 6, vì phần dữ liệu của phân ñoạn này chỉ
chứa 3 giá trị, mỗi giá trị chiếm 2 byte.
•
chiếm 2 byte, lưu trữ kiểu ñịnh dạng của tập tin MIDI, chứa một
trong 3 giá trị {0, 1, 2}
o Kiểu 0 cho biết file MIDI/KAR có duy nhất 1 track chứa toàn bộ
“sự kiện” (event) của bài nhạc, bao gồm tên bài nhạc, nhịp ñộ bài
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 36
nhạc, và thông tin các nốt nhạc (thông thường, tập tin KAR không
thuộc kiểu ñịnh dạng này, do phải có ít nhất 1 track riêng biệt chứa
lời bài hát ñã ñược ñồng bộ theo thời gian, và ít nhất 1 track chứa
thông tin bài nhạc)
o Kiểu 1 cho biết tập tin MIDI/KAR có ít nhất 2 track. Thông
thường, track ñầu tiên chứa thông tin về bài nhạc như tiêu ñề, nhịp
ñiệu nhạc … Từ track thứ 2 trở ñi chứa thông tin về tiêu ñề, thông
tin các nốt nhạc …
o Kiểu 2 là một sự kết hợp của 2 kiểu trên. Nó chứa nhiều track,
nhưng mỗi track chứa một bài nhạc riêng biệt và không nhất thiết
phải ñược phát cùng lúc. Kiểu này thường ñược dùng ñể lưu trữ các
dãy âm ñiệu mẫu của trống, hoặc những dãy âm ñiệu mẫu của
những nhạc cụ khác.
•
chiếm 2 byte, lưu trữ một số không âm, là số lượng track có trong tập
tin MIDI. ðối với kiểu ñịnh dạng 1 thì số lượng track sẽ là 1, còn ñối với
ñịnh dạng 2-3, số lượng track có thể lên ñến 65536 (0xffff).
•
chiếm 2 byte, lưu trữ ñộ chia thời gian. ðây là trường dữ liệu cuối
cùng và cũng là trường dữ liệu phức tạp nhất. Nó ñược dùng ñể xác ñịnh
thời gian thực ñể phát một nốt nhạc hoặc việc ñồng bộ lời cho nhạc, so
với thời gian delta ñược lưu trữ trong thông tin bài nhạc. Giá trị ñộ chia
thời gian mang một trong 2 ñơn vị: số tick trên một nhịp (tick per beat),
hoặc số khung trên một giây (frame per second);
Bit cao nhất (bit mask 0x8000) của giá trị này sẽ lưu trữ loại ñơn vị
ñược sử dụng cho giá trị của 15 bit còn lại (bit mask 0x7fff): nếu là 0 thì
ñơn vị là số tick trên một nhịp, ngược lại nếu là 1 thì ñơn vị sẽ là số
khung trên một giây.
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 37
Số tick trên một nhịp chuyển ñổi số nhịp ñồng hồ hoặc vị trí tương
ñối của track (sẽ ñược mô tả ở phân ñoạn track) trong mỗi ¼ nốt nhạc.
Thông thường, giá trị nằm ở phạm vị 48 ñến 960.
Số khung trên một giây ñược ñịnh nghĩa bởi việc chia 15bit còn lại
ra thành 2 giá trị. 7bite ñầu tiên (có mặt nạ 0x7f00) ñịnh nghĩa số lượng
khung SMPTE và có thể mang các giá trị 24, 25, 29 và 30. 8bit còn lại
ñịnh nghĩa số lượng nhịp ñồng hồ hoặc vị trí tương ñối của track trên
mỗi khung. Ví dụ: giá trị 0x9978 có thể ñược phân ra làm 3 phần, bit ñầu
tiên báo hiệu rằng thời gian ñược tính theo dạng số khung trên giây. 7bit
tiếp theo mang giá trị 25 (0x19) và 8bit còn lại mang giá trị 120 (0x78).
ðiều ñó có nghĩa là tập tin MIDI ñược phát với tốc ñộ 24 khung trên giây
và có 120 nhịp trên một khung.
Phân ñoạn rãnh (track chunk)
Cấu trúc chung của phân ñoạn track như sau:
"MTrk" + + [+ ...]
Trong ñó:
• “MTrk”
có giá trị hexa là 0x4d54726b, báo hiệu ñây là phân ñoạn rãnh
•
chiếm 4 byte
•
dữ liệu của track event chứa thông tin về bài nhạc và ñịnh nghĩa các nốt
nhạc, thời gian phát từng nốt như thế nào. Chi tiết về track event sẽ ñược
phân tích trong phần sau.
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 38
Track Event
Cấu trúc của mỗi track event như sau:
+
Trong ñó:
•
lưu trữ theo ñịnh dạng dữ liệu có ñộ dài thay ñổi. Nó quyết ñịnh khi
nào một sự kiện ñược tiến hành phát so với sự kiện trước ñó trong cùng
một track. Giá trị này bằng 0 có nghĩa là sự kiện ñó phải ñược phát cũng
lúc với sự kiện trước ñó. Sự kiện ñầu tiên của một track quy ñịnh thời
gian phải chờ ñể bắt ñầu phát. Những sự kiện không bị tác ñộng bởi thời
gian như thông tin tác giả, thông tin bài hát, bản quyền … thường có giá
trị 0 và thường ở vị trí ñầu tiên của track. ðiều quan trọng là giá trị này
không phải là một giá trị cố ñịnh, mà nó phụ thuộc vào ñộ chia thời gian
(quy ñịnh trong phân ñoạn mở ñầu) và nhịp ñộ (tempo - ñược ñịnh nghĩa
trong một track event). Nếu nhịp ñộ không ñược ñịnh nghĩa, thì giá trị
mặc ñịnh của nó là 120.
•
ñược phân ra làm 3 loại sự kiện chính, ñể nhận biết ñược từng loại sự
kiện, ta dựa vào byte nhận dạng ñầu tiên của chuỗi dữ liệu sự kiện.
• là loại event không ñược gửi hoặc nhận thông qua
cổng MIDI. Event này có byte nhận dạng là 0xff
• là loại event dành riêng cho hệ thống, thường bắt
ñầu bằng byte 0xf0 hoặc 0xf7.
• (MIDI Channel Event)
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 39
MIDI Channel Event
Phần này chúng ta không ñi sâu vào phân tích, chúng ta chỉ chú ý ñến cấu
trúc chung của nó ñể có thể ñọc ñược chính xác những dữ liệu tiếp theo. Cấu
trúc cơ bản của MIDI Channel Event gồm:
+ + +
Trong ñó
•
chiếm ñộ dài 4 bit, lưu trữ loại nốt nhạc
•
chiếm ñộ dài 4 bit, lưu trữ kênh của midi
•
chiếm ñộ dài 1 byte, lưu trữ thông số kèm theo thứ 1
•
chiếm ñộ dài 1 byte, lưu trữ thông số kèm theo thứ 2
SysEx Event
Có 2 cấu trúc chính như sau:
0xF0 + 0xF7
0xF7 + 0xF7
Event này chỉ kết thúc khi gặp byte 0xf7. Và là event chỉ dàng riêng cho
hệ thống. Chúng ta cũng phân tích sâu event này vì nó không ảnh hưởng ñến
việc phân tích lời. Chúng ta chỉ tìm hiểu cấu trúc sơ bộ ñể có thể ñọc ñược
chính xác event tiếp theo.
Meta Event
Cấu trúc chung của meta event như sau:
0xff + + +
Trong ñó
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 40
• 0xff
byte nhận dạng event ñó là meta event
•
loại thông tin lưu trữ trong meta event. Có các loại meta event sau:
Mã loại Nội dung
0x00 Số thứ tự (dàng cho tập tin MIDI dạng 2)
0x01 Dữ liệu chuỗi văn bản
0x02 Thông tin bản quyền
0x03 Tên track, tên bài nhạc
0x04 Tên loại nhạc cụ
0x05 Lời bài hát
0x06 Marker text
0x07 ðiểm tín hiệu
0x20 MIDI channel prefix assignment
0x2f kết thúc track
0x51 Hiệu chỉnh nhịp ñộ
0x54 SMPTE offset
0x58 Time signature
0x59 Key signature
0x7f Sequencer specific event
•
ñộ dài của thông tin, ñược lưu ở dạng giá trị có ñộ dài thay ñổi
ðồ án tốt nghiệp Chương 2 - Phân tích hệ thống
Trang 41
•
dữ liệu của meta event
2.4. Công cụ, công nghệ hỗ trợ
Ứng dụng trên ñiện thoại di ñộng KaraMobile:
• Ứng dụng ñược phát triển trên nền tảng công nghệ J2ME, với cấu hính
CLDC 1.1 và MIDP 2.0
• Sử dụng Eclipse 3.4 Ganymede với plug-in MJT 9.1.
• Chạy giả lập và debug với bộ công cụ Sony Ericsson SDK 2.5.0.3
• Chương trình BitmapFontCreator ñể tạo bộ font bitmap Tiếng Việt. ðây là
chương trình mã nguồn mở, ñược tải về tại SourceForge.net
Hệ thống KaraServer
• Hệ thống ñược phát triển trên nền tảng công nghệ JSP/Servlet, phần
KaraAdmin ñược phát triển dựa trên JSP, còn KaraService ñược phát triển
dựa trên Servlet.
• Sử dụng Eclipse 3.4 Ganymede plug-in Web Development Tools
• HTTP Server: Apache Tomcat 6.0.18
• Thư viện Log4j 1.2.15 ñể ghi lại toàn bộ hoạt ñộng của hệ thống, giúp cho
việc bảo trì và sửa lỗi khi hệ thống ñã ñi vào hoạt ñộng.
• Thư viện MySQL Connector for Java 5.1.7, ñây là cầu nối chính với cơ sở
dữ liệu
KaraDatabase:
• Sử dụng hệ quản trị Cơ sở dữ liệu MySQL 5.0.67 với bộ ứng dụng
MySQL GUI, hỗ trợ quản trị cơ sở dữ liệu trực quan thông qua giao diện
thân thiện
ðồ án tốt nghiệp Chương 3 - Thiết kế, hiện thực hệ thống
Trang 42
Chương 3 - Thiết kế, hiện thực hệ thống
3.1. Ứng dụng KaraMobile – phía client
3.1.1. Giới thiệu J2ME
J2ME ñược phát triển từ kiến trúc Java Card, Embeded Java và Personal Java
của phiên bản Java 1.1. ðến sự ra ñời của Java 2 thì Sun quyết ñịnh thay thế
Personal Java và ñươc gọi với tên mới là Java 2 Micro Edition. J2ME là nền tảng
cho các thiết bị có tính chất nhỏ, gọn:
Version 1 Version 2
PCs JDK 1.1.x
Java 2 Platform.
J2SE
PDAs and
Communicators
PersonalJava
Java 2 Platform.
J2MSE/CDC
Phones and Pagers J2ME/CLDC
Embedded Devices EmbeddedJava J2ME/CLDC
Smart Cards JavaCard JavaCard
Lý do mà lập trình viên chọn J2ME
• Java ban ñầu ñược thiết kế dành cho các máy với tài nguyên bộ nhớ hạn
chế.
• Thị trường của J2ME ñược mở rộng ra cho nhiều chủng loại thiết bị như:
o Các lọai thẻ cá nhân như Java Card
o Máy ñiện thoại di ñộng
o Máy PDA (Personal Digital Assistant - thiết bị trợ giúp cá nhân)
ðồ án tốt nghiệp Chương 3 - Thiết kế, hiện thực hệ thống
Trang 43
o Các hộp ñiều khiển dành cho tivi, thiết bị giải trí gia dụng …
Kiến trúc của J2ME
CLDC (Connected Limited Device Configuration)
ðịnh nghĩa về Configuration (Cấu hình): là ñặc tả ñịnh nghĩa một môi
trường phần mềm cho một dòng các thiết bị ñược phân loại bởi tập hợp các
ñặc tính, ví dụ như:
• Kiểu và số lượng bộ nhớ
• Kiểu và tốc ñộ bộ vi xử lý
• Kiểu mạng kết nối
Do ñây là ñặc tả nên các nhà sản xuất thiết bị như Samsung, Nokia… bắt
buộc phải thực thi ñầy ñủ các ñặc tả do Sun qui ñịnh ñể các lập trình viên có
thể dựa vào môi trường lập trình nhất quán và thông qua sự nhất quán này, các
ứng dụng ñược tạo ra có thể mang tính ñộc lập thiết bị cao nhất có thể. Ví dụ
ðồ án tốt nghiệp Chương 3 - Thiết kế, hiện thực hệ thống
Trang 44
như một lập trình viên viết chương trình game cho ñiện thoại Samsung thì có
thể sửa ñổi chương trình của mình một cách tối thiểu nhất ñể có thể chạy trên
ñiện thọai Nokia, hoặc Motorola. Hiện nay Sun ñã ñưa ra 2 dạng
Configuration:
• CLDC (Connected Limited Device Configuration - Cấu hình thiết bị kết
nối giới hạn): ñược thiết kế ñể nhắm vào thị trường các thiết bị cấp thấp
(low-end), các thiết bị này thông thường là máy ñiện thọai di ñộng và
PDA với khoảng 512 KB bộ nhớ. Vì tài nguyên bộ nhớ hạn chế nên
CLDC ñược gắn với Java không dây (Java Wireless ), dạng như cho
phép người sử dụng mua và tải về các ứng dụng Java, ví dụ như là
Midlet.
• CDC- Connected Device Configuration (Cấu hình thiết bị kết nối): CDC
ñược ñưa ra nhắm ñến các thiết bị có tính năng mạnh hơn dòng thiết bị
thuộc CLDC nhưng vẫn yếu hơn các hệ thống máy ñể bàn sử dụng J2SE.
Những thiết bị này có nhiều bộ nhớ hơn (thông thường là trên 2Mb) và
có bộ xử lý mạnh hơn. Các sản phẩm này có thể kể ñến như các máy
PDA cấp cao, ñiện thoại web, các thiết bị gia dụng trong gia ñình …
Cả 2 dạng Cấu hình kể trên ñều chứa máy ảo Java (Java Virtual Machine)
và tập hợp các lớp (class) Java cơ bản ñể cung cấp một môi trường cho các
ứng dụng J2ME. Tuy nhiên, chúng ta chú ý rằng ñối với các thiết bị cấp thấp,
do hạn chế về tài nguyên như bộ nhớ và bộ xử lý nên không thể yêu cầu máy
ảo hổ trợ tất cả các tính năng như với máy ảo của J2SE, ví dụ, các thiết bị
thuộc CLDC không có phần cứng yêu cầu các phép tính toán dấu phẩy ñộng,
nên máy ảo thuộc CLDC không ñược yêu cầu hỗ trợ kiểu float và double.
CLDC ñịnh nghĩa một bộ các giao tiếp cơ bản cho lập trình ứng dụng và
máy ảo cho những thiết bị hạn chế về tài nguyên như mobile phones, pagers,
và PDA (personal digital assistant). Khi kết hợp với profile như là MIDP, nó
cung cấp Java platform vững chắc cho việc phát triển các ứng dụng mà liên
ðồ án tốt nghiệp Chương 3 - Thiết kế, hiện thực hệ thống
Trang 45
quan ñến bộ nhớ có giới hạn, sức mạnh xử lý, và khả năng về ñồ họa bị hạn
chế.
CLDC là thành phần cơ bản của kiến trúc Java 2 Platform, J2ME. Công
nghệ J2ME ñược phổ biến trong phạm vi API như configuration, profiles, and
package tùy chọn. Môi trường ứng dụng J2ME bao gồm configuration như
CLDC và profile như MIDP(Mobile Information Device Profile). Hơn nữa,
các package tùy chọn cung cấp khả năng xác ñịnh cụ thể các chức năng như
gửi thông ñiệp wireless, Mutimedia capture và chức năng phát lại (playback).
Do việc tùy thuộc về phần cứng, cho nên các nhà thiết kế và phát triển sản
phẩm phải chọn những gói thích hợp, sử dụng APIs hỗ trợ truy cập thuận lợi
ñến các component.
CLDC ñược thiết kế ñể mang lại sự tiện ích trên Java platform cho các
thiết bị kết nối mạng mà bị hạng chế về tốc ñộ xử lý, bộ nhớ, và khả năng về
ñồ họa. Như các cấu hình sau:
• Bộ xử lý 16-bit hoặc 32-bit với tốc ñộ clock là 16MHz hoặc cao hơn.
• Tối thiểu 160 KB ñể dùng thư viện CLDC và máy ảo.
• Tối thiểu 192 KB tiêu tốn cho Java platform.
• Tiêu thụ năng lượng thấp, hoạt ñộng nhờ vào năng lượng pin.
• Dùng kết nối wireless hoặc băng thông có giới hạn và không liên tục.
MIDP (Mobile Information Device Profile)
ðịnh nghĩa về Profile: Profile mở rộng Configuration bằng cách thêm vào
các class ñể bổ trợ các tính năng cho từng thiết bị chuyên biệt. Cả 2
Configuration ñều có những profile liên quan và từ những profile này có thể
dùng các class lẫn nhau. ðến ñây ta có thể nhận thấy do mỗi profile ñịnh nghĩa
một tập hợp các class khác nhau, nên thường ta không thể chuyển một ứng
dụng Java viết cho một profile này và chạy trên một máy hỗ trợ một profile
khác. Cũng với lý do ñó, bạn không thể lấy một ứng dụng viết trên J2SE hay
J2EE và chạy trên các máy hỗ trợ J2ME. Sau ñây là các profile tiêu biểu:
ðồ án tốt nghiệp Chương 3 - Thiết kế, hiện thực hệ thống
Trang 46
• Mobile Information Device Profile (MIDP): profile này sẽ bổ sung các
tính năng như hỗ trợ kết nối, các thành phần hỗ trợ giao diện người
dùng … vào CLDC. Profile này ñược thiết kế chủ yếu ñể nhắm vào
ñiện thọai di ñộng với ñặc tính là màn hình hiển thị hạn chế, dung
lượng chứa có hạn. Do ñó MIDP sẽ cung cấp một giao diện người dùng
ñơn giản và các tính năng mạng ñơn giản dựa trên HTTP. Có thể nói
MIDP là profile nổi tiếng nhất bởi vì nó là kiến thức cơ bản cho lập
trình Java trên các máy di ñộng (Wireless Java)
• 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ện của bộ Core Java2 1.3
MIDP 2.0 là phiên bản chỉnh sửa từ MIDP 1.0, và bao gồm một số ñặc
tính mới như là giao diện cho người sử dụng ñược hỗ trợ nhiều hơn, truyền
thông ña phương tiện và game, kết nối tốt hơn, bảo mật hơn.
• Cải tiến giao diện: thông qua kinh nghiệm người dùng, cải thiện khả
năng chuyển ñộng của ứng dụng, và có khả năng mở rộng hơn nữa.
Như là các cải thiện về Screen và Item. Thêm nữa, là các cải tiến về
cách bố trí (layout) ñộng cho việc di chuyển dễ dàng hơn.
• Hỗ trợ Media : âm thanh, video ñược cải tiến; cho phép âm thanh và
video chạy liên tục.
• Hỗ trợ Game: MIDP 2.0 thêm Game API vào tiêu chuẩn xây dựng
game. MIDP Game API bao gồm các chức năng game cụ thể, như là
các sprite và tiled layer và hỗ trợ về ñồ họa. Các chức năng ñược làm
ñơn giản hơn và cải thiện về ñiều khiển tốt hơn nhờ vào ñồ họa và hiệu
năng.
• Mở rộng kết nối: thông thường thì theo chuẩn HTTP, MIDP 2.0 hỗ trợ
thêm HTTPS, datagram, sockets, server sockét, và các serial giao tiếp
ðồ án tốt nghiệp Chương 3 - Thiết kế, hiện thực hệ thống
Trang 47
port. Mở rộng này làm cho khả năng kết nối ñơn giản hơn, là tiêu chuẩn
ñể tương thích với các cấu trúc phần mềm ñã tồn tại.
• Bảo mật: MIDP 2.0 thêm vào model bảo mật end-to-end mạnh mẽ,
ñược xây dựng theo các tiêu chuẩn mở, mà có thể bảo vệ mạng, các
ứng dụng và thông tin trên các thiết bị di ñộng. Còn hỗ trợ cả HTTPS
và các tiêu chuẩn ñã tồn tại như SSL và WTLS cho phép chuyển giao
dữ liệu mã hóa. Các domain bảo mật chống lại các truy cập không ñược
xác nhận và chức năng không hợp lệ cho ñến khi các truy cập, chức
năng ñược cho phép và chứng thực.
Máy ảo KVM (K Virtual Machine) :
Cũng giống như trên PC, muốn thực thi một ứng dụng Java, chúng ta cần
phải có một máy áo JVM (Java Virtual Machine). Khi bạn biên dịch mã nguồn
Java thành một lớp (.class) và ñặt chúng vào trong file lưu trữ JAR của Java,
máy ảo JVM sẽ biên dịch file .class này thành mã thự thi, và ñược ñiều khiển
bởi JVM. Các mã trong file .class gọi là mã bytecode.
ðối với thiết bị cấu hình dạng CDC, máy ảo JVM có toàn bộ chức năng
tương ñương với máy ảo phục vụ môi trường J2SE.
ðối với thiết bị cấu hình dạng CLDC, Sun cài ñặt một phiên bản thu nhỏ
hơn dành cho JVM gọi là K Virtual Machine (KVM).
3.1.2. RMS và cấu trúc lưu trữ của thư viện trên mobile
Tìm hiểu về RMS
Hình 10-Tổng quan về mối quan hệ giữa RMS và MIDlet
ðồ án tốt nghiệp Chương 3 - Thiết kế, hiện thực hệ thống
Trang 48
RMS (Record Management System – hệ thống quản lý bản ghi) là một tập
hợp các hàm API giúp cho một MIDlet có thể làm việc với hệ thống lưu trữ dữ
liệu nội bộ của ñiện thoại di ñộng. Ở hầu hết tất cả các loại ñiện thoại có hỗ trợ
chuẩn MIDP, RMS là nơi lưu trữ dữ liệu nội bộ duy nhất. Hiện nay, có rất
nhiều loại ñiện thoại có hỗ trợ việc giao tiếp với bộ nhớ ngoài của ñiện thoại,
nhưng việc thao tác với bộ nhớ ngoài của ñiện thoại có tốc ñộ tương ñối chậm,
và hay gặp phiền phức với những hộp thoại xác nhận quyền truy cập, do nó có
cơ chế bảo mật chặt chẽ và phức tạp hơn RMS. Chính vì những lý do ñó,
chúng ta sẽ chọn cách thức lưu dữ liệu trên RMS.
Tiếp theo, chúng ta sẽ cùng tìm hiểu một số thuật ngữ chính trong hệ
thống RMS:
• Record (bản ghi): là ñơn vị lưu trữ dữ liệu chính, duy nhất và nhỏ
nhất mà ta phải truy xuất trong RMS. ðiều quan trọng, RMS không
quy ñịnh kiểu dữ liệu cho một record, record ñó có thể mang bất lỳ
loại dữ liệu nào: từ một số nguyên, số thực, chuỗi, một tấm hình…
nói chung là bất kỳ loại dữ liệu nào mà người lập trình có thể mã hóa
sang chuỗi nhị phân theo một phương thức nào ñó. Tóm lại, dưới góc
ðồ án tốt
Các file đính kèm theo tài liệu này:
- Ứng dụng hát karaoke trên mobile và xây dựng cộng đồng nhạc KAR.pdf