データの保存
2015/08/31
(書き途中です)
データの保存形式は自由にプログラミングすればよいと思うけど、ストレージ機能もある。
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
Storageについてはこっちのページで
問題はデータの形式ではなく、デバイスによって、保存権限がある場所が違うってとこで、どこに保存したらよいかが問題。
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でのコンパイルが上手くいかないらしい。今ここ