Mã hóa
Chương trình có thể mã hóa một tập tin có định dạng bất kỳ, từ dạng thuần văn bản đến dạng nhị phân thành các tập tin ảnh PNG. Ví dụ mã hóa tập tin ringtone.mid 2.2 kB.
Dưới đây là các ảnh của tập tin ringtone.mid đã được mã hóa ra các ảnh mã QR.
ringtone.mid_1.png ringtone.mid_2.png
ringtone.mid_5.png ringtone.mid_6.png
ringtone.mid_9.png ringtone.mid_10.png
ringtone.mid_11.png ringtone.mid_12.png
Hình 17:Các ảnh mã QR được chương trình tạo ra từ tập tin MID ringtone.mid
Giải mã
Chương trình đã giải mã thành công các tập tin ảnh mã QR hoặc quét các ảnh này để tạo lại tập tin ban đầu trước khi mã hóa.
Nhập đường dẫn Màn hình chờ giải mã
Giải mã thành công Mở lại tập tin đã giải mã
Hình 18:Một số hình ảnh về giải mã các tập tin ảnh
Ứng dụng
Chương trình đã thực hiện thành công vào việc truyền nhận tập tin giữa máy tính và điện thoại Android và giữa hai điện thoại Android với nhau…
Hiện tại thực nghiệm vẫn đang tiến hành để hoàn thiện chương trình và có thể chuyển hướng phát triển sang hướng tiếp theo đó là truyền dữ liệu giữa hai thiết bị di động sử dụng hai nền tảng khác nhau (có thể là BlackBerry, Android, iPhone, Window Mobile, Symbian…) với nhau.
Kết luận
Khóa luận đã giới thiệu một số nghiên cứu trong thời gian qua về nền tảng Android và mã vạch của em, xây dựng thành công “Ứng dụng lưu trữ thông tin bằng chuỗi mã vạch” trên nền tảng Android phiên bản 1.1.
Về lý thuyết, khóa luận này đã trình bày một số nghiên cứu về các nền tảng di động, đặc biệt là nền tảng Android, so sánh thấy được những điểm mạnh điểm yếu của nền tảng này so với các nền tảng di động khác cũng như tương lai của nền tảng Android. Khóa luận cũng đã giới thiệu về mã vạch, các ứng dụng của mã vạch hiện nay, bộ thư viện mã nguồn mở Zxing và cách sử dụng bộ thư viện này như thế nào.
So với các khóa luận trước về di động, khóa luận này đi nghiên cứu sâu hơn về tìm hiểu các nền tảng di động hiện nay, so sánh, đánh giá được tiềm năng của mỗi nền tảng. Về nền tảng Android, cách đây một năm Android vẫn chưa có loại sản phẩm nào chạy nền tảng này, do đó khóa luận lần trước mới chỉ dừng ở thực nghiệm trên trình giả lập, sau một năm nền tảng Android đã có những thay đổi đáng kể (do Android vẫn đang trong quá trình hoàn thiện để cạnh tranh được với đối thủ iPhone), khóa luận lần này tiếp tục nghiên cứu sự thay đổi của nền tảng Android, thiên về kiến trúc là chủ yếu. Khóa luận cũng đưa ra được đánh giá và sự so sánh với các nền tảng khác như iPhone và các nền tảng khác…
Về thực nghiệm, khóa luận đã ứng dụng công nghệ mã vạch QR và sử dụng bộ thư viện Zxing vào xây dựng thành công “Ứng dụng lưu trữ thông tin bằng chuỗi mã vạch” trên nền tảng Android, triển khai tốt trên điện thoại G1 HTC Mobile. Ứng dụng có khả năng lưu trữ và truyền thông tin giữa hai điện thoại G1 với nhau và giữa G1 với máy tính hay các vật hiển thị ảnh khác.
Hướng phát triển tiếp theo sẽ là khảo sát ý kiến, hoàn thiện, tối ưu các chức năng của chương trình. Điểm mạnh nhất của mã vạch trong lưu trữ thông tin là sử dụng ảnh, do đó nó không ảnh hưởng khi truyền thông tin bởi các nền tảng khác nhau. Tiếp tục phát triển ứng dụng trên các nền tảng di động khác (như iPhone, Palm OS, Brew, J2ME, Windows Mobile hay Symbian…) và trên máy bàn. Nhờ ứng dụng của mã vạch, chúng ta sẽ không còn bị phụ thuộc vào các nền tảng mà mình sử dụng.
Phụ lục 1
Hướng dẫn sử dụng chương trình
Khởi động chương trình
Để khởi động chương trình ta chọn chương trình trong danh sách ứng dụng.
Hình 19:Màn hình danh sách các ứng dụng
Chương trình hiển thị một menu các chức năng chính: Encode, Decode, Help.
Mã hóa
Để vào chức năng mã hóa ta chọn [Encode] trong cửa sổ màn hình chính. Tiếp đó, ta thực hiện nhập đường dẫn tập tin muốn mã hóa và nhấn nút [Encode].
Hình 21:Cửa sổ chức năng mã hóa
Giải mã ảnh
Để vào chức năng giải mã ảnh, ta chọn [Decode] >> [Images]. Tiếp đó là ta thực hiện quét lần lượt các ảnh mã QR của tập tin cần giải mã (các ảnh có thể không theo thứ tự trừ ảnh và ảnh cuối).
Hình 22:Cửa sổ giải mã
Giải mã tập tin ảnh
Để vào chức năng giải mã tập tin ảnh, ta chọn [Decode] từ màn hình chính của chương trình. Tiếp đến, ta thực hiện nhập đường dẫn tập tin ảnh đầu tiên cần giải mã, nhấn nút [Files].
Phụ lục 2
Một số thuật ngữ cơ bản của nền tảng Android
Phụ lục này giải thích một số thuật ngữ về Android, dựa trên [14].
Tập tin .apk
Là tập tin ứng dụng đóng gói Android. Mỗi ứng dụng Android được biên dịch và đóng gói lại trong một tập tin đơn. Nó bao gồm tất cả mã của ứng dụng (tập tin .dex), các tài nguyên (resources), (tài sản) assets và tập tin khai báo (manifest). Tập tin ứng dụng đóng gói có thể có tên bất kỳ nhưng nhất thiết phải có phần mở rộng là .apk. Ví dụ ten_tap_tin.apk. Để cho tiện, một tập tin ứng dụng đóng gói.
Tập tin .dex
Là tập tin đã được biên dịch từ mã chương trình ứng dụng Android. các chương trình được biên dịch ra các tập tin .dex (Dalvik Executable), sau đó được nén lại vào 1 tập tin .apk duy nhất trên thiết bị. Các tập tin .dex có thể được tạo ra nhờ ứng dụng biên dịch dịch tự động được viết trên ngôn ngữ lập trình Java.
Action
Là mô tả của một thứ mà một cái gửi Intent muốn hoàn thành. Một hành động là một giá trị kiểu xâu được gán cho một Intent. Các xâu có thể được định nghĩa bởi Android hoặc bởi một người phát triển thứ 3. Ví dụ, android.intent.action.VIEW cho một địa chỉ Web, hoặc com.example.rumbler.SHAKE_PHONE cho một ứng dụng tùy chỉnh để rung điện thoại.
Activity
Là một màn hình đơn trong một ứng dụng, hỗ trợ của mã JAVA và kế thừa từ lớp Activity. Thông thường, một activity được biểu diễn tự nhiên bằng một cửa sổ đầy màn hình mà có thể nhận và xử lý các sự kiện UI và thực thi các tác vụ phức tạp, bởi vì Window nó sử dụng để vẽ lại các cửa sổ của nó. Mặc dù một Activity thường là đầy màn hình, nó cũng có thể nổi hay trong suốt.
Adb
Viết tắt của Android Debug Bridge, một ứng dụng gỡ rối dòng lệnh đi kèm trong SDK. Nó cung cấp các công cụ để duyệt thiết bị, công cụ sao chép trên thiết bị và
chuyển tiếp các cổng cho việc gỡ rối. Nếu triển trên Eclipse sử dụng ADT Plugin, adb được tích hợp sẵn trong môi trường phát triển.
Application
Xét về khía cạnh thành phần, một ứng dụng Android bao gồm một hay nhiều activity, services, listeners và intent receiver. Xét về khía cạnh tập tin nguồn, một ứng dụng Android bao gồm mã nguồn, các tài nguyên, các tài sản và một tập tin khai báo. Trong quá trình biên dịch, những tập tin này được đóng gói lại trong một tập tin đơn được gọi là tập tin ứng dụng đóng gói.
Canvas
Là một mặt vẽ xử lý phức hợp các bít hiện thời dựa theo Bitmap hay đối tượng Surface. Canvas là cách đơn giản nhất, dễ dàng nhất để vẽ các đối tượng 2D trên màn hình. Tuy nhiên, nó không hỗ trợ cảm nhận gia tốc phần cứng như OpenGL ES làm. Lớp cơ sở của nó là Canvas.
Content Provider
Là một lớp dữ liệu trừu tượng mà ta có thể sử dụng để giao tiếp dữ liệu ứng dụng của ta với các ứng dụng khác một cách an toàn. Một content provider được xây dựng trên lớp ContentProvider, lớp này xử lý nội dung xâu truy vấn của một dạng cụ thể để trả về dữ liệu theo một dạng cụ thể.
Dalvik
Là máy ảo của nền tảng Android. Máy ảo Dalvik là một máy ảo thông dịch mà chạy các tập tin định dạng tập tin thực thi Dalvik (.dex), một định dạng được tối ưu hóa hiệu quả lưu trữ và thực thi lập bản đồ bộ nhớ. Máy ảo là máy ảo dựa trên thanh ghi và có thể thực thi các lớp đã biên dịch bằng bộ biên dịch ngôn ngữ Java và được chuyển đổi sang định dạng .dx bằng cách sử dụng công cụ “dx”.
DDMS
Dịch vụ theo dõi gỡ rối Dalvik, là ứng dụng gỡ rối đi kèm với SDK. Nó cung cấp chụp màn hình, ghi lại sụp đổ và xử lý kiểm tra khả năng. Nếu phát triển trên Eclipse sử dụng ADT Plugin, DDMS được tích hợp vào môi trường phát triển.
Dialog
Là một cửa sổ nổi, thực hiện hành động ít quan trọng. Một dialog có thể chỉ có các nút và được chỉ định để thực hiện một hành động đơn giản (như là lựa chọn nút) và có
thể trả về một giá trị. Android cung cấp một dialog mặc định, đơn giản cho ta với các nút chức năng, mặc dù ta cũng có thể tự định nghĩa bố trí dialog. Lớp cơ sở của các dialog là Dialog.
Drawable
Là một tài nguyên trực quan được biên dịch mà có thể sử dụng như hình nền, tiêu đề, hay phần khác của màn hình. Drawable thường được tải vào trong thành phần giao diện khác, ví dụ như một ảnh nền. Drawable không có khả năng nhận các sự kiện, nhưng lại gán các thuộc tính khác như là “trạng thái”, để kích hoạt các lớp con như các đối tượng hoạt họa hay các thư viện hình ảnh. Nhiều các đối tượng drawable được tải từ các tập tin tài nguyên − xml hay các tập tin ảnh nhị phân. Các tài nguyên drawable được biên dịch vào các lớp con của lớp android.graphics.Drawable.
Intent
Là một đối tượng thông điệp cho phép ta có thể khởi chạy hay giao tiếp không đồng bộ với các ứng dụng khác/các activity khác. Một đối tượng Intent là một trường hợp cụ thể trong lớp Intent. Nó bao gồm vài trường mà ta có thể cung cấp, để xác định ứng dụng/activity nhận Intent và làm gì khi xử lý Intent. Một ứng dụng có thể gửi Intent tới một ứng dụng đích hoặc gửi quảng bá và có thể được xử lý tuần tự bởi nhiều ứng dụng.
Intent Filter
Là một đối tượng mà một ứng dụng khai báo trong tập tin manifest của nó, cho hệ thống biết những loại Intent nào được chấp nhận. Thông qua intent, một ứng dụng có thể cho biết quan tâm những loại dữ liệu nào.
Broadcast Receiver
Là một lớp ứng dụng lắng nghe các Intent quảng bá, mà không phải được gửi đến một application/activity đích nào. Hệ thống cung cấp một Intent quảng bá cho tất cả các bộ nhận quảng bá được quan tâm, mà xử lý Intent theo tuần tự.
Layout Resource
Là một tập tin XML mô tả bố cục của một màn hình Activity.
Là một tập tin khai báo mà mỗi ứng dụng đều phải định nghĩa, để mô tả tên gói ứng dụng, phiên bản, các thành phần (các activity, intent filter, service), các thư viện được sử dụng và mô tả các activity khác nhau, v.v…
OpenGL ES
Adroid cung cấp bộ thư viện OpenGL ES để ta có thể sử dụng cho các ảnh 3D phức tạp 1 cách nhanh chóng. Nó khó sử dụng hơn đối tượng Canvas, nhưng lại tốt hơn cho cá đối tượng 3D.
Resources
Là các thành phần của ứng dụng không phải lập trình ngoài mã ứng dụng được biên dịch, nhưng lại có thể tải từ mã ứng dụng bằng cách sử dụng định dạng tham chiếu phổ biến. Android hỗ trợ nhiều loại resource, nhưng resource đặc trưng của chương trình bao gồm các xâu, các thành phần bố cục, đồ họa và các tập tin truyền thông, v.v… Resource của một ứng dụng luôn được lưu trong thư mục con res/* của dự án.
Service
Là một đối tượng của lớp Service chạy dưới nền (không có sự xuất hiện của giao diện người sử dụng) để thực hiện các hành động liên tục, như là chơi nhạc hay theo dõi hoạt động mạng.
Surface
Một đối tượng kiểu Surface miêu tả một khối bộ nhớ để lấy ra ngoài màn hình. Một Surface có một đối tượng Canvas để vẽ và cung cấp các phương thức trợ giúp khác nhau để vẽ các lớp và thay đổi kích thước của surface. Ta không nên dùng lớp này trực tiếp; sử dụng SurfaceView để thay thế.
SurfaceView
Một đối tượng View mà chứa một Surface để vẽ và các phương thức trình bày để xác định cỡ của nó và định dạng một cách tự động. Một SurfaceView cung cấp một cách để vẽ độc lập với luồng UI cho các hoạt động cần nhiều tài nguyên (như là các trò chơi hay xem trước của máy ảnh), nhưng nó sử dụng thêm bộ nhớ là điều tất yếu. SurfaceView hỗ trợ cả đồ họa Canvas và OpenGL ES. Lớp cơ sở là SurfaceView.
Đặt thuộc tính (cỡ chữ, màu nền, v.v…) gói lại cùng để định nghĩa các thiết lập hiển thị mặc định khác nhau. Android cung cấp vài theme chuẩn, được liệt kê ở R.style (bắt đầu bằng “Theme_”).
URI trong Android
Android sử dụng chuỗi URI như là cơ sở cho việc yêu cầu dữ liệu trong một content provider (chẳng hạn như lấy danh sách địa chỉ liên lạc) và các hành động yêu cầu trong một Intent (như mở một trang Web trong trình duyệt). Định dạng địa chỉ URI đặc trưng theo loại hình sử dụng, một ứng dụng có thể xử lý các địa chỉ URI xác định và các xâu theo cách nào nó muốn. Vài địa chỉ URI được dành riêng cho các thành phần của hệ thống. Ví dụ, yêu cầu về dữ liệu từ một content provider phải sử dụng “content://”. Trong một Intent, một URI sử dụng một “http://” sẽ được trình duyệt xử lý.
View
Là một đối tượng vẽ vào một vùng hình chữ nhật trên màn hình và xử lý chạm, nhấn phím và các sự kiện tương tác khác. Một View là lớp cơ sở cho phần lớn các thành phần bố cục của một màn hình Activity hay Dialog (các textbox, các cửa sổ, v.v…). Nó nhận lời gọi từ đối tượng cha của nó (xem Viewgroup phía dưới) để tự vẽ chính mình và cho đối tượng cha biết về vị trí và độ lớn của nó.
Viewgroup
Là một đối tượng chứa nhóm một tập hợp các View con. Viewgroup chịu trách nhiệm quyết định vị trí của các view con ở đâu và độ lớn của chúng là bao nhiêu, cũng như gọi đến từng cái để vẽ lại chính nó khi thích hợp. Vài viewgroup không nhìn thấy và chỉ là cho bố cục, trong khi các cái khác có UI bên trong. Các viewgroup đều nằm trong gói widget và là mở rộng của lớp trừu tượng ViewGroup.
Widget
Một tập hợp đầy đủ các lớp con đã cài đặt mà vẽ lại các mẫu phần tử và các thành phần UI, như là một textbox hay menu popup. Bởi vì một widget đã cài đặt đầy đủ, nó xử lý đo lường và tự vẽ lại chính nó và đáp ứng với các sự kiện màn hình. Các widget đều ở trong gói android.widget.
Window
Là một ứng dụng Android, một đối tượng thừa kế từ lớp trừu tượng Window mà xác định các phần tử của một cửa sổ chung, chẳng hạn như giao diện (chữ của thanh tiêu đề, vị trí và nội dung của các menu, v.v…). Dialog và Activity sử dụng một cài đặt
của class này để vẽ lại cửa sổ. Chúng ta không cần phải cài đặt lớp này hay sử dụng các cửa sổ trong ứng dụng của mình.
Tài liệu tham khảo
[1] Smartphone. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia:
http://en.wikipedia.org/wiki/Smartphone
[2] Mobile Development mindmap. (n.d.). Được lấy từ trang Mobile Development:
http://mobilephonedevelopment.com/archives/600
[3] Binary Runtime Environment for Wireless. (n.d.). Được lấy từ trang Wikipedia, the
free encyclopedia:
http://en.wikipedia.org/wiki/Binary_Runtime_Environment_for_Wireless
[4] What is BREW? (n.d.). Được lấy từ trang Tech-FAQ.com: http://www.tech-faq.com/
brew.shtml
[5] Symbian OS. (n.d.). Được lấy từ trang Answers.com: http://www.answers.com/topic/
symbian-os
[6] Blackberry. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia:
http://en.wikipedia.org/wiki/Blackberry
[7] iPhone. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia:
http://en.wikipedia.org/wiki/IPhone
[8] What is Android? (n.d.). Được lấy từ trang Android Offical Website:
http://www.android.com/about/
[9] Application Fundamentals (n.d.). Được lấy từ trang Android Offical Website: http://
developer.android.com/guide/topics/fundamentals.html
[10]Mã vạch. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia:
http://vi.wikipedia.org/wiki/Mã_vạch
[11]Mã QR. (n.d.). Được lấy từ trang Wikipedia, the free encyclopedia:
http://vi.wikipedia.org/wiki/Mã_QR