26/11/2018, 22:09

Cách lập trình Python trên Android

Có rất nhiều lý do khiến bạn bị hấp dẫn muốn trở thành một lập trình viên phát triển ứng dụng Android. Bạn nghĩ rằng việc xây dựng một ứng dụng sẽ đem lại cho mình kinh tế “kha khá” hay thậm chí trở thành người “thay đổi thế giới”, đó quả là những động lực thúc đẩy ...

Có rất nhiều lý do khiến bạn bị hấp dẫn muốn trở thành một lập trình viên phát triển ứng dụng Android. Bạn nghĩ rằng việc xây dựng một ứng dụng sẽ đem lại cho mình kinh tế “kha khá” hay thậm chí trở thành người “thay đổi thế giới”, đó quả là những động lực thúc đẩy mạnh mẽ. Hay những người khác thì chỉ đơn giản mong muốn rằng học code, viết chương trình, xây dựng những ứng dụng, công cụ để thỏa mãn đam mê của bản thân là mục tiêu xuyên suốt. Android là hệ điều hành cởi mở và dễ tiếp cận, chính vì vậy, việc bắt đầu thực hiện những mục tiêu của bạn tại đây là điều đúng đắn.

Vấn đề là việc học lập trình trên Android cũng không hoàn toàn là một nhiệm vụ dễ dàng. Trước kia, khi bạn muốn chạy một chương trình đơn giản “Hello World”, bạn cần phải download Android Studio, Android SDK và Java JDK. Bạn cần phải cài đặt các đường dẫn, tạo APK rồi thêm các quyền vào điện thoại của mình. Và rồi khi tất cả dường như đã sẵn sàng, bạn lại tiếp tục phải kiểm soát một số vấn đề như việc hiển thị chương trình lên màn hình. Có quá nhiều thứ “cản trở” bạn nhanh chóng tiến gần đến mục tiêu của mình.

Đó là lý do tại sao hiện nay rất nhiều lập trình viên chọn Python. Python là giải pháp thay thế giúp bạn khắc phục những khó khăn kể trên. Python lập trình rất đặc biệt, nó đơn giản, “thanh lịch” và cực kì thích hợp với người mới bắt đầu. Một vượt trội nữa đó là bạn có thể bắt đầu xây dựng script và thử nghiệm chúng trên thiết bị Android của mình gần như ngay lập tức.

Tóm lại, sử dụng Python là một trong những cách nhanh nhất để bắt đầu và thử nghiệm một số code đơn giản trên Android. Xa hơn, khi bạn đã quen thuộc làm việc với nó, bạn có thể tự nâng cấp điện thoại của mình với những tính năng riêng biệt chỉ mình bạn có và thậm chí có thể xây dựng một APK đầy đủ.

QPython cho Android

Vậy làm cách nào chúng ta bắt đầu với Python? Nếu mong muốn của bạn là học Python trên PC, bạn hãy tải xuống phiên bản mới nhất của Python 2 hoặc Python3 cùng với IDE (Integrated Development Environment). Bạn có thể xem thêm cách cài đặt Python cho máy tính của mình tại đây.

Nhưng trong bài viết này, mối quan tâm của Quantrimang không nằm ở đây. Để bắt đầu với Python trên Android, bạn cần phải có trong thiết bị của mình QPython (dùng để chạy code Python2) hoăc QPython3 (chạy code Python3).

Python là một dự án liên tục được cải tiến và phát triển, vậy nên để đảm bảo code của bạn chạy trơn tru nhất có thể, bạn nên tải phiên bản Python mới được update. Trong bài này mình sử dụng Python 3.6.1.

Có một vài vấn đề khi update từ Python ver2 lên ver3. Bạn sẽ phải có một vài chỉnh sửa khi muốn chạy code của Python2 ở version cao hơn, một số thư viện hay được sử dụng cũng bị phá vỡ. Vậy nên, nếu bạn là một newbie trong lập trình Python, bạn hãy bắt đầu với Python3 để có những kiến thức cập nhật nhất. Nhưng điều này không nghĩa rằng chúng tôi nói bạn không cần biết về Python2 đâu nhé. Trong tương lai, chắc chắn sẽ có nhưng trường hợp bạn cần phải revert về version 2 để làm việc với những thư viện hỗ trợ ở phiên bản cũ.

Thư viện chính mà chúng tôi sẽ sử dụng sau đây là Kivy và thật may mắn là nó được hỗ trợ trên Python3.

Viết code đơn giản với một số biến và input.

Sau khi đã tải xuống và cài đặt QPython3, bạn đã có một môi trường để bắt đầu lập trình. Bạn đã có thể load các script từ đây và sau này sẽ rất hữu dụng khi bạn tạo các ứng dụng gốc (native app) của riêng mình, ví dụ bạn có thể tạo ra một số công cụ cơ bản để làm toán, công cụ kiểm tra học tập, hay công cụ để lưu trữ và lấy dữ liệu...Nó hoàn toàn nằm trong tay bạn.

Vậy chúng ta hãy học cách xây dựng những công cụ đó tại đây. Trước tiên bắt đầu với ứng dụng “Hello World”.

Để thực hiện, bạn hãy mở QPython3 và chọn “Editor”. Đây là nơi bạn có thể viết code hoặc chỉnh sửa những tệp lệnh khác. Cá nhân mà nói, việc edit sẽ dễ dàng thực hiện hơn nếu bạn có bàn phím và chuột bluetooth khi làm việc ở đây.

Bây giờ bạn hãy chạy lệnh:

print(“Hello World”)

Sau đó lưu tập lệnh với đuôi “.py”. Bạn lưu bằng cách nhấp vào biểu tượng đĩa mềm ở dưới cùng. Lưu ý lệnh “print” phải là chữ thường.

Chạy chương trình bằng cách click vào biểu tượng mũi tên và dòng chữ “Hello World” sẽ xuất hiện trên màn hình cùng với rất nhiều biệt ngữ khác. Đây là nơi các script của bạn sẽ chạy, gọi là bảng điều khiển (console). Sau này bạn có thể thêm các tính năng đồ họa cho màn hình này.

Tiếp theo hãy thử với các biến. Biến (variable) là tên của một vùng trong bộ nhớ được sử dụng để lưu trữ thông tin, dữ liệu. Không giống như những ngôn ngữ khác, khi lập trình với Python bạn không cần phải xác định biến. Theo dõi ví dụ sau:

Name = “Adam”
print(“Hello ” + Name)

Đây là một đoạn code gọi tên với biến Name và gán giá trị “Adam” để chào đón người dùng với tên của họ.

Cũng có thể thực hiện dễ dàng với ví dụ:

Number=7
print(“The number is “ + Number)

Điểm thiết thực của biến ở đây là nó cho phép chúng ta thay đổi các phần tử trong đoạn code.Ta có thể viết Number = Number + 1 để các giá trị tăng dần. Tương tự như vậy, tạo một app nhỏ như này:

Name = input(“What is your name please?”)
print(“Why hello “ + Name)

Input của lệnh trên cho phép lấy dữ liệu từ user. Trong trường hợp này, bạn đang sử dụng dữ liệu nhập của người dùng để xác định biến Name. Lưu ý các biến có phân biệt chữ hoa và chữ thường. Các lệnh trong Python được viết bằng chữ thường nên khai báo biến bằng chữ hoa sẽ dễ phân biệt hơn.

Vậy là sử dụng một vài dòng code này đã đem lại vài điều thú vị đặc biệt riêng cho thiết bị Android của bạn. Một ví dụ script nữa về chi tiết tuổi của bạn như này:

Age = int(input(“How old are you?”))
print(“In “, 100 – Age, “ years, you will be 100! That’s around “, (100 -Age) * 365, “ days!”)

Chương trình nhỏ này thì cho bạn biết còn bao nhiêu ngày nữa bạn sẽ 100 tuổi. Ở đây sử dụng một vài toán tử (nhân “*”, trừ “-”). Khai báo int ở đầu cho biết input nhập vào phải là số nguyên.

Các vòng lặp WHILE và các câu lệnh IF

Vòng lặp WHILE trong Python được sử dụng chạy lặp đi lặp lại một đoạn code khi điều kiện cho trước trả về giá trị là TRUE. Thêm các dòng sau vào script tuổi phía trên:

Count = 0
print(“Let’s count your remaining years…”)

while Count < Age:
Count = Count + 1
print(“That’s “, Count, “ years, “, Age – Count, “ to go!”)

print(“And we’re done!)

Chú ý hai dòng tiếp dưới while được thụt lề nghĩa là chúng là một phần của vòng lặp. Nếu đã học C, C++ hay Java bạn sẽ biết rằng những ngôn ngữ lập trình này sử dụng { } để xác định các khối code. Trong Python thì khác, những khối lệnh sẽ được nhận biết thông qua thụt lề. Đó là lý do vì sao thụt lề trong Python vô cùng quan trọng, nếu bạn lùi dòng nhầm chương trình sẽ báo lỗi ngay.

Cùng với vòng lặp, câu lệnh IF trong lập trình Python cũng là một phần rất quan trọng. Câu lệnh IF dùng để thực thi các lệnh có điều kiện, nếu lệnh đúng thì thực thi lệnh đó, nếu sai thì lệnh không thực hiện. Ví dụ:

if Age > 50:
print(“You’re over half way!”)

Ngoài ra Python cũng có câu lệnh IF...ELSE. Thực thi khối lệnh IF nếu điều kiện đúng, nếu sai thì thực hiện ELSE.

if Age > 50:
print(“You’re over half way!”)
else:
print(“Ah, still young!”)

Lệnh ELIF cũng rất hữu dụng. ELIF là viết gọn của ELSE IF, nó cho phép chúng ta kiểm tra nhiều điều kiện. Nếu điều kiện là sai, nó sẽ kiểm tra điều kiện của khối ELIF tiếp theo và cứ như vậy cho đến hết. Nếu tất cả các điều kiện đều sai nó sẽ thực thi khối lệnh của ELSE.

if Age > 50:
print(“You’re over half way!”)
elif Age < 50:
print(“Ah, still young!”)
else:
print(“You’re exactly halfway!”)

Ở đây Python sẽ thông báo “You’re exactly halfway!” khi user chính xác 50 tuổi (không lớn hơn 50, cũng không nhỏ hơn 50).

Sử dụng Library và tạo ra một game đơn giản.

Sử dụng những code vừa giới thiệu trong bài viết đã đủ để bạn tạo một game nhỏ đơn giản. Trước khi làm được điều đó, hãy cùng Quantrimang tìm hiểu cách sử dụng các thư viện trong Python.

Python đi kèm với các thư viện mà ta gọi là “Python Standard Library” - thư viện chuẩn Python, không cần cài đặt thêm bất kì chương trình nào. Trò chơi mà chúng ta sẽ làm quen dưới đây sẽ là dạng đoán số như “higher or lower” - cao hơn hay thấp hơn. Để thực hiện điều này, chúng ta cần tạo một số ngẫu nhiên và không lệnh nào trong Python thực hiện được. Viết lệnh như sau:

from random import randint

Tiếp đó ta đã có thể sử dụng hàm randint(lowest,highest) với hai tham số là số thấp nhất và số cao nhất.

Hoàn thành game bằng đoạn code sau:

from random import randint
RandomNumber = randint(0, 10)
print(“I’m thinking of a number between 1 and 10, can you guess what it is?”)

Guess = 11

while Guess != RandomNumber:
Guess = int(input(“Have a guess…”))
if Guess > RandomNumber:
print(“Too high!”)
if Guess < RandomNumber:
print(“Too low!”)

print(“Got it!”)

Mặc dù đây chưa phải là ứng dụng của Android nhưng cũng chẳng gì có thể ngăn cản bạn tạo các script như thế này, thậm chí bạn có thể chia sẻ nó với bạn bè hoặc đồng nghiệp nếu họ cũng sử dụng QPython3.

Như vậy, bằng cách sử dụng Python Standard Library, bạn có thể ghi file, tải xuống mọi thứ từ website và còn nhiều điều thú vị nữa ngay trên thiết bị của mình.

Tất nhiên là còn rất nhiều thứ cần học thêm. Ví dụ bạn có thể tạo Class rất đơn giản như này:

def counter(Name):
length = len(Name)
return length;

NamePlease = input("Name length counter! Enter your name ")
print(counter(NamePlease))

Hay List được trình bày như này:

List = [“Apples”, “Oranges”, “Pears”]

Có rất nhiều tài nguyên của Python bạn cần tìm hiểu. Bạn có thể học Python cùng Quantrimang tại đây nhé.

Sử dụng Python Android Scripting Layer

Nếu muốn tạo một ứng dụng Android thực sự bằng Python, bạn sẽ có một vài lựa chọn, tùy thuộc ý tưởng và mục đích của bạn sử dụng ứng dụng đó như thế nào.

Nếu bạn chỉ muốn một app để truy cập những tính năng gốc thiết bị của mình thì hãy thực hiện với thư viện SL4A hay còn gọi là Python Android Scripting Layer. Thư viện này cho phép bạn làm những chức năng như hiển thị hộp thoại, đọc cảm xúc hay quyền truy cập vào camera.

Chương trình dưới đây sẽ mở camera và lưu ảnh của bạn:

import sl4a

droid = sl4a.Android()
droid.cameraInteractiveCapturePicture(“/sdcard/qpython.jpg”)

Hay bạn muốn mở một trang web bằng cách:

from android import Android

droid = Android()
droid.webViewShow(“https://www.quantrimang.com”)

Thậm chí bạn có thể khởi chạy để hiển thị giao diện của file HTML lưu trữ trên thiết bị. Đây sẽ là cách tuyệt vời để view các phần tử GUI (Graphical User Interface - Giao diện đồ họa người dùng)

droid.webViewShow('file:///sdcard/ index.html')

Thêm một điều nữa bạn có thể làm là tạo file để hiển thị HTML động dựa trên script bạn tạo ra. Hãy kết hợp chức năng này với Tasker (một công cụ tự động hóa mọi tác vụ trên thiết bị Android) để tạo ra những bất ngờ đầy tiềm năng.

Thư viện Kivy

Nếu bạn muốn đi xa hơn trong lĩnh vực này, bạn cần phải sử dụng Kivy. Kivy cho phép bạn tạo ra các ứng dụng Android với đầy đủ chức năng, cảm ứng đa điểm, đồ họa và hơn thế nữa. Đây cũng là cách giúp bạn biến những script của mình trong Python thành các APK có thể cài đặt trên thiết bị Android và phân phối qua CH Play. Điểm tuyệt vời, Kivy là một thư viện đa nền tảng nên bạn có thể tạo ứng dụng cho nhiều nền tảng khác khi sử dụng.

Bạn có thể hiển thị các phần tử UI (User Interface - Giao diện người dùng) như các nút hay đồ họa. Một ví dụ đơn giản:

from kivy.app import App
from kivy.uix.button import Button

class HelloWorld(App):
def build(self):
btn = Button(text='Hello World')
return btn

HelloWorld().run()

Kết luận

Nhìn tổng thế, Python không hẳn là một lựa chọn hoàn hảo cho việc phát triển các ứng dụng chuyên nghiệp, nhưng đây là ngôn ngữ tuyệt vời để bạn tạo các script và xây dựng công cụ tiện ích mang tính cá nhân cho thiết bị Android của mình. Quả thật mọi thứ đều dễ chịu hơn khi làm việc với Python trên điện thoại cùng QPython3. Đây là phương pháp được đánh giá là dễ dàng nhất với những người nhập môn viết code trên thiết bị di động.

Vậy bạn còn chần chừ gì mà không thử xem? Một thế giới lập trình ứng dụng Android phong phú đang chờ đấy. Chúc bạn thành công!

0