2012年7月29日日曜日

/mnt/sdcard/ディレクトリのアクセス権限

ウォークマン(Zシリーズ)で、SHOT04(NokogiRider)をデバッグしていて機種依存の盲点をひとつ発見。

SHOT04の場合、SDカード(/mnt/sdcard)の下に専用のディレクトリを掘って、そこにプレイデータ(スコアとか)やリプレイデータを保存する仕様にしていたのですが、Zシリーズの場合、/mnt/sdcardにアクセス権限が無いようでした。

確かに、Androidの仕様として、/mnt/sdcardの有無は機種依存に成り得ます。
Androidの仕様として、アプリケーションが(ストレージパーミッションで)読み書きが保障されているのは、基本的に 標準のアプリケーションディレクトリ(/data/data/パッケージ名) 配下のみのようです。

という訳で、/mnt/sdcardにアクセス権限が無い場合、標準のアプリケーションディレクトリ(/data/data/パッケージ名)にデータファイルを保存する仕様にしておきました。


なお、/mnt/sdcardにアクセス権限がある場合は、SDカードに保存するようにします。
一般的にSDカードの方が空き領域が大きいので、標準のアプリケーションディレクトリに配置するデータは可能な限り小さくする方が、ユーザにとって親切だと思うし、リプレイデータとかを独自にバックアップしたりするのも楽なので。(/data/dataディレクトリの場合、パス決めウチで打たないとファイルへアクセスできないという...)


これは、InvaderBlock2も同じ仕様にしておく必要がありそうです。
まぁ、このバグに気付けただけでも、Zシリーズを購入した甲斐がありました。
Zシリーズ設備投資分のペイバックは無いでしょうけど。

しかし、Androidの機種依存には困ったものです。
SHOT04は、かなりその辺を柔軟に作ってましたが、それでもこういう手落ちは出てくる・・・


追記(8/4):
Xアプリで、音楽データを転送したら/mnt/sdcardに書き込み権限ができたっぽい?
とりあえず、SHOT04は、/mnt/sdcardに書き込み権限があれば、/mnt/sdcardにデータ保存して、なければ/data/dataにデータ保存する仕様にしておきます。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...