.:: CODE SNIPPET ::.

"Your time is limited, so don't waste it living someone else's life"

Tag Archives: mobile

Sử dụng android.hardware.Camera để khai thác camera của android


Sau vài ngày tìm hiểu, mình muốn hướng dẫn phương pháp sử dụng android.hardware.Camera để khai thác Camera của các thiết bị android. Với cách này, mình có thể hiểu rõ hơn cách thức hoạt đông của camera và từ đó, mình có thể điều chỉnh, thêm thắt vào như ý mình muốn.:)
Android SDK cung cấp một kết nối đến Camera của máy. Sau đó sử dụng nó để chụp ảnh cách dễ dàng. Tuy nhiên, phần khó hơn một tí là làm sao để người dùng có thể xem được mình đang chuẩn bị chụp cái gì. Nghĩa là người dùng có thể thấy được camera đang bắt được hình ảnh gì. Điều này được thực hiện bằng cách nhúng một Preview của camera vào trong ứng dụng sử dụng camera của bạn.
Để khái quát về ví dụ mình tóm tắt trước như sau:
+Đầu tiên mình có một project tên là CameraControl, project này bao gồm một Activity cùng tên như vậy, và một lớp Preview.
+Lớp Preview là một surface và được đặt vào bên trong của activity CameraControl Read more of this post

Chương trình nhận dạng chữ viết qua camera của điện thoại Android


Bài post này hướng dẫn cách để các bạn làm một chương trình đơn giản để nhận dạng các chữ viết mà bạn chụp được qua camera của điện thoại Android. Chương trình này sử dụng source nguồn Tesseract -OCR. Chương trình này mình build sử dụng Android 4.1.2 (API 16)Android NDK r8b Các bạn sẽ làm theo các bước sau nhé:

1. Để chuẩn bị, các bạn download cái Android NDK về và giải nén ra để đâu đó đi nha. Ví dụ như của mình, mình để tại địa chỉ E:\android-ndk-r8b.( Tí dùng lại sau).
2. Download source code tess-two về. Đây là project chứa các công cụ để biên dịch Tesseract để dùng trên Android. Nó bao gồm một project dạng library của Android để cung cấp cho Java API phương cách truy xuất vào và sử dụng source Tesseract đã được biên dịch trước. Trong source mà các bạn download về thì chỉ cần cái project tess-two thui nhé, mấy cái kia chưa nghiên cứu tới.hihi.

3. Tiến hành build cái source tess-two vừa download về bằng command line. Các bạn mở commandline và dẫn tới thư mục chứa source tess-two như sau: Read more of this post

Xử lý việc load ảnh nhanh chóng trong android listview


Áp dụng tìm kiếm Heuristic vào bài toán Mã Đi Tuần


Thuật giải Heuristic là một sự mở rộng khái niệm thuật toán. Nó thể hiện cách giải bài toán với các đặc tính sau:Thường tìm được lời giải tốt (nhưng không chắc là lời giải tốt nhất)
Giải bài toán theo thuật giải Heuristic thường dễ dàng và nhanh chóng đưa ra kết quả hơn so với giải thuật tối ưu, vì vậy chi phí thấp hơn.Thuật giải Heuristic thường thể hiện khá tự nhiên, gần gũi với cách suy nghĩ và hành động của con người.Có nhiều phương pháp để xây dựng một thuật giải Heuristic, trong đó người ta thường dựa vào một số nguyên lý cơ bản như sau:
+ Nguyên lý vét cạn thông minh: Trong một bài toán tìm kiếm nào đó, khi không gian tìm kiếm lớn, ta thường tìm cách giới hạn lại không gian tìm kiếm hoặc thực hiện một kiểu dò tìm đặc biệt dựa vào đặc thù của bài toán để nhanh chóng tìm ra mục tiêu.
+ Nguyên lý tham lam (Greedy): Lấy tiêu chuẩn tối ưu (trên phạm vi toàn cục) của bài toán để làm tiêu chuẩn chọn lựa hành động cho phạm vi cục bộ của từng bước (hay từng giai đoạn) trong quá trình tìm kiếm lời giải.
+ Nguyên lý thứ tự: Thực hiện hành động dựa trên một cấu trúc thứ tự hợp lý của không gian khảo sát nhằm nhanh chóng đạt được một lời giải tốt.
Hàm Heuristic: Trong việc xây dựng các thuật giải Heuristic, người ta thường dùng các hàm Heuristic. Đó là các hàm đánh già thô, giá trị của hàm phụ thuộc vào trạng thái hiện tại của bài toán tại mỗi bước giải. Nhờ giá trị này, ta có thể chọn được cách hành động tương đối hợp lý trong từng bước của thuật giải.
Hàm ước lượng trong thuật toán Heuristic Read more of this post

Áp dụng giải thuật AKT vào bài toán tháp Hà Nội


Chương trình áp dụng giải thuật AKT, mội trạng thái được mô tả bằng mảng hai chiều. Để ước lượng đối với trạng thái của trò chơi, ta sẽ tính trạng thái của cột thứ ba. Tại một trạng thái, thì số bước để đưa cột thứ ba về đúng như trạng thái đích là bao nhiêu? Ta thấy tại một trạng thái của cột thứ ba thì có một số đĩa nằm đúng vị trí của nó, và cũng có một số đĩa không nằm đúng vị trí của nó. Số lượt để ta có thể đưa cột thứ ba về đúng trạng thái đích bằng tổng số lượt mang những đĩa không đúng vị trí ra khỏi cột thứ ba cộng với số lượt mang những đĩa còn lại vào cho đúng vị trí của nó trong cột thứ ba.
Một số hàm chính trong chương trình:

 int GetNumberOfDiskOfPillar(Integer[] pPillar) Tính tổng số đĩa hiện có trong một cột nào đó.
 int GetRightPositions(Integer[] pPillar) Tính số đĩa nằm đúng vị trí trong một cột nào đó
 void H() // Là hàm tri thức bổ sung có giá trị bằng số vị trí sai trên cột thứ 3.
 Void Generate() Tính toán các bước đi cho bài toán Áp dụng giải thuật AKT

Mặc dù thuật giải tương đối đơn giản, bài toán với n đĩa sẽ cần ít nhất 2n-1 lần di chuyển. Tuy nhiên với số lượng Cọc nhiều hơn 3 thì vẫn chưa biết được sẽ cần ít nhất bao nhiêu lần di chuyển để giải bài toán. Do vậy việc áp dụng bước tiến dãy (tiếng Anh sequential advancement) để xác định vị trí của một số lượng lớn các đĩa trên ba cọc sau một số lớn tuỳ ý các bước tiến là không thực tế. Lời giải tối ưu cho bài toán Tháp Hà Nội với bốn cọc hay nhiều hơn vẫn còn là một bài toán mở. Đây là một ví dụ tiêu biểu cho thấy một bài toán đơn giản, có thể giải được vẫn có thể trở thành khó hơn rất nhiều bằng cách hơi nới lỏng một số ràng buộc của nó.
Mặc dù không biết được chính xác cần bao nhiêu lần di chuyển, có thể có một vài kết quả tiệm cận. Có một “lời giải được coi như tối ưu” có thể áp dụng một cách đệ quy để tìm một lời giải–xem giải thích cũng như một vài biến thể của bài toán bốn cọc trong bài khảo sát của Paul Stockmeyer. Read more of this post

Run project android trên máy ảo android x86


Như bình thường, mình hay chạy ứng dụng đang viết trên emulator sinh ra từ AVD Manager. Bằng cách này mình thấy là ứng dụng run rất chậm, và nhiều lần bị treo không chạy do bị tràn bộ nhớ trong.
Một cách khác giúp khắc phục những nhược điểm trên của emulator đó là cài một máy ảo android vào Virtual Box. Việc cài đặt máy ảo này thì khá đơn giản. Mình sẽ download các bộ cài đặt android từ địa chỉ sau và cài đặt như cài các máy ảo khác.

Sau đây là những thao tác để chạy project đang code trên máy máy ảo này.
Trước tiên mình sẽ tạo 2 adapter cho máy ảo android.

Adapter 1 sẽ là NAT.
Read more of this post

Áp dụng giải thuật A* cho bài toán Tacanh


Để áp dụng giải thuật A* cho bài toán Tacanh trước tiên cần nắm rõ về giải thuật A* đã nhá.

Một trình trạng nào đó của trò chơi Tacanh thì có thể đi đến đích hay là không. Nó phụ thuộc vào chuyện mình chọn đích cho nó. Đích của một tình trạng có thể là một trong hai trường hợp sau:

Đích I


Read more of this post

%d bloggers like this: