データの保存

2015/08/31

(書き途中です)

https://bytedebugger.wordpress.com/2015/01/30/python-for-android-tutorial-6-saving-and-reading-user-data/

Storage — Kivy 1.9.2-dev0 documentation
http://kivy.org/docs/api-kivy.storage.html#module-kivy.storage

APIリファレンスによると保存できる形式は3つ

  • kivy.storage.dictstore.DictStore: use a python dict as a store
  • kivy.storage.jsonstore.JsonStore: use a JSON file as a store
  • kivy.storage.redistore.RedisStore: use a Redis database with redis-py

個人的にはpython dictで十分。

from kivy.storage.dictstore import DictStore

store = DictStore(filename)

さて、このfilenameが何にすればいいかが問題なんだが・・・。とりあえずAndroid端末でアプリが操作できるフォルダは、アプリ固有のフォルダと決まっている。
今使っているNexus7では、/sdcard/パッケージ名/になっているけど、多分、端末によって違うんじゃないか? スマホの内臓HDDの場合、/data/data/パッケージ名/filesらしい。
Javaでそのまま開発する場合は、Context.getFilesDir()などの関数で、デバイスを意識することなく出来るっぽいが、Kivyの場合は?

Handle database in kivy android app
http://stackoverflow.com/questions/28056620/handle-database-in-kivy-android-app

ここの回答によれば、jniusというモジュールを使えば、getFilesDir()を呼び出せるらしい。

jniusのインストールを試みる

pip install jnius
  • pipが古いって怒られた。pip install -update pip
  • JDK_HOMEがないと怒られた。環境変数にJDK_HOMEを追加する
  • JRE_HOMEがないと怒られた。環境変数にJRE_HOMEを追加する
  • ビルドでエラー。MinGWのgcc.exeでのコンパイルが上手くいかないらしい。今ここ