Honey, There Is a Python in My Android Phone!

James Ing Wei Tang

Gadgets General Python 3

See in schedule

This is a small code snippet that I have written in Python for the POC of getting the GPS coordinate from android phone:

import androidhelper
import json
import time
from bottle import Bottle, run, response, request

app = Bottle()
droid = androidhelper.Android()

@app.route("/location")
def get_location():

droid.startLocating()
droid.eventWaitFor('location', 12500)

time.sleep(0.1)

current_location = droid.readLocation().result

if not current_location:
current_location = droid.getLastKnownLocation().result

droid.stopLocating()
response.content_type = "application/json"

return json.dumps(
{
"result": current_location
}, indent=4
)
This project was initiated during my Christmas vacation, inspired by Android Barcode Scanner as I was looking on the solution that I could catalogue my books by scanning the ISBN using android phone.

This quick solution did save me enormous amount of time in cataloguing my books. Intriguing by the design of APIs that can interact with android intents, I decided to dig further to understand how the APIs works. In concept, there is an RPC call between android app and python interpreter within the app that acts as a bridge, which allows python APIs to trigger Android intents, upon calling related APIs. For example, using the code snippet above, when Python GPS API is executed, the API will send request to Android GPS intent via the RPC call. Once Android intent receives the request, it will grab the GPS data, and passes the GPS data back to Python GPS API through the same channel.

Reference:
python-for-android
Qpython
Android Barcode Scanner

Type: Talk (30 mins); Python level: Intermediate; Domain level: Intermediate


James Ing Wei Tang

Ing Wei is the chair for PyCon MY 2019, the co-chair of PyCon MY 2018, and vice president of MyPOP. He has spoken in various PyCons, particularly in PyCon APAC 2018, as well as involving in PyCon communities actively in Malaysia.

He uses python a lot in his daily work, especially coding the automation process and flow. During his past time, he likes to experience and perform hacking different things on operating system level.

Apart from programming language, he can also speak 5 different types of languages concurrently in one sentence. Please ask for demo if time permits.