前回こういう記事を書きました。
python + sqlite3 名前を入力したら対応した住所をgooglemapで開く。
やりたいこと
- qpythonを使いスマホでsqliteデータベースを作成: 名前と住所のデータベース
- データベースを名前で検索
- 名前に対応した住所を自動的にグーグルマップで開く
上記の3番目ではまっていたのですが、今回のandroidhelperモジュールを使うことで解決できました。
ちなみに、pythonで標準モジュールであるwebbrowserをつかってもスマホのブラウザは開くことができません。ですので「androidhelper」をつかうことによりスマホでブラウザオープンが実現できます。
androidhelperでスマホのブラウザを開く
データベースを検索し、見つかった名前に対応する住所をブラウザで開きます。
# sqlite3、androidhelperモジュールの読み込み
import sqlite3, androidhelper
droid = androidhelper.Android()
# データベースに接続
conn = sqlite3.connect("database.sqlite")
# カーソルオブジェクトの作成
c = conn.cursor()
# 名前検索
username = input("where name?: ")
print('\n') # 空行
# sql
select = "select * from users where name = '%s'" % username
address = ""
# 検索した名前からレコードを取得
for row in c.execute(select):
address = row[2]
break;
input("openbrowser? (please enter): ")
droid.view('https://www.google.com/maps/search/' + address)
# データベースの切断
conn.close()
このコードを実行すると、スマホのクロームブラウザが立ち上がるとおもいきや、「グーグルマップ」アプリが立ち上がります。どういう仕組みかはわかりませんが、クロームがurlを自動で解析してグーグルマップを立ち上げるようにしているのではないかと思います。
スマホでブラウザを開くことについて色々思考錯誤していましたが、androidhelperを使えばいいだけで、この情報にたどりつくのにかなり時間がかかりました。androidhelperの使い方に関しては他サイトを参考にされるのがよいかと思います。
まとめ: ひとまず完成
qpythonを使うことによってデータベース作成・削除・ユーザー登録/削除。検索。名前検索して対応した住所をグーグルマップで開く。これらすべてスマホでできました。ひとまずやりたいことはすべてできた感じです。
不満点としてはqpythonは体感速度が遅い気がする点ですが、解決方法がわからないので、これにて開発は一旦終わりです。

コメント