ジャンル不定の日記です。

USBストレージの容量

引き続きONDA v719 3G 四核をいじってるが、/data/app等のアプリ本体はシンボリックリンクでSDカードのext4領域に移動させて、
それでも/dataの容量が不足するようなら/data/dataからアプリ単位でSDに移動させようと思ってる。
内部ストレージ(/data)の容量は元々1GBしか無いが、この方法で容量不足になることは解決できそう。


問題は、USBストレージ(/storage/sdcard0)の容量。
こちらは初期状態で5GB強で内部ストレージよりも大きいが、内部ストレージの節約のためだと思うが、大きいキャッシュデータなどをUSBストレージに自動的に保存するアプリがある。
手元の端末で、kindle、ニコニコ静画などの電子書籍アプリのメディアや、ゲームのキャッシュなどがUSBストレージに保存されて、既に1GBほど消費している。

Androidの機能で「DEFAULT WRITE DISK」を「USBストレージ」か「SDカード」で選択できるが、勝手にUSBストレージにデータを保存するアプリでは、この設定は無意味なようだ・・・

/data/dataと違い、 /storage/sdcard0はvfatでマウントされているので、シンボリックリンクが使えないから実体をSDに置いてリンクという方法は使えない。
/storage/sdcard1が外部のSDカードなんで、sdcard0の代わりにsdcard1を利用できれば解決できるが、AndroidのシステムがSDと一緒にマウントしてると思うので、initで入れ替えたりとかも問題ありそう。

/system/etc/vold.fstab がSDカードのマウント設定ぽいんで、これいじれば入れ替え出来そうな気がする。
SDカードなら容量不足になったら大きいのに変えればいいだけだから便利だが、今は16GBのSDにfat32は4GBしか作らなかったから、完全な入れ替えだと余計容量減っちゃう。
/systemの書き換えができない状態だから試すならまたファーム更新する必要があるし、完全入れ替えは現時点では見送りだな・・・

なにかいい方法はないものか・・・
自動的にUSBストレージにデータを保存するアプリというのは、ストレージの使い方が間違っていると思う。

SDカードへのapk移動方法に問題があった

先日、AndroidでSDを起動時に自動マウントして、いくつかのアプリをSDに移動させていたが、
アプリ単位でSDに移動してシンボリックリンクだと、アプリを更新するとリンクの位置に再度実体が置かれてしまうことが判明した・・・
あまり深く試さなかったが、前に実験で/data/app自体をSDに移動したら動かなかったぽく、全てではなくアプリ単位で移動したらうまく行っていたのでその方法をとっていたが、これではダメだね。

というわけで別の方法を考えたが、/data/app自体をシンボリックリンクにする以外に方法無さそうだし、
本来そのほうがインストール後に個別に移動させなくていいから楽なので、もう一回試してみた。
今回はすんなりうまく行った。
前回やった時はなにかミスってたのかも・・・

adb shell cp -a /data/app /storage/ext4sd/app
adb shell rm -rf /data/app
adb shell ln -s /storage/ext4sd/app /data/app
当然ですけど、/dataを書き換えるので、adbはroot権限。
SDのext4パーティションは起動時に/storage/ext4sdにマウントするようにしてある。
cpにaオプションで完全コピーして元を削除してリンクに。

あと、
/data/app-lib に共有ライブラリ?
/data/dalvik-cache にapkの中身?
がインストールされるようで結構な容量になるので、
adb shell cp -a /data/app-lib /storage/ext4sd/app-lib
adb shell rm -rf /data/app-lib
adb shell ln -s /storage/ext4sd/app-lib /data/app-lib
adb shell cp -a /data/dalvik-cache /storage/ext4sd/dalvik-cache
adb shell rm -rf /data/dalvik-cache
adb shell ln -s /storage/ext4sd/dalvik-cache /data/dalvik-cache
とそっちも移動しておいた。

/data/app-private にコピー防止アプリとやらがインストールされることもあるらしいのだが、空だったからそのまま。


/data/data の方はアプリ単位で一部移動済みだったが、速度低下してる感じもするので、
一旦戻して、容量食うようだったらアプリ単位で移動考えることにする。

FMラジオ聞けた

ONDA v719 3G 四核のFMラジオが周波数が日本に合わせられなくて聞けなかった件だが、
朝知ったMTK Engineering Modeで周波数を変える方法で聞けた。

プリインストールでcom.mediatek.engineermodeがインストールされていて、これでデバイスをいじれるようなんだが、
起動方法がわからないのでMTK Engineering Modeというアプリを入れて起動するとEngineering Modeが利用できる。
同種のアプリは他にもいくつかあった。

手順
  1. FM Radioを起動
  2. MTK Engineering Modeを起動
  3. MTK Settings → Connectivity → FM Receiver
  4. 目的の周波数を入力して Tune → 聞ける!
  5. 戻るボタンでFM Radioアプリに移動するが周波数そのまま
  6. ☆をタッチでチャンネル登録

チャンネル登録後にチャンネル名を設定しようとしても周波数が範囲外と言われて変更できない。
チャンネル名を設定するにはアプリのDBをいじらないとだめだね。
sqliteコマンドがインストールされていればADBだけで編集できて楽だったが、無いから母艦でいじるかSqlite操作用のアプリを入れる必要があるね。

チャンネル登録等の操作をしてるとラジオが完全止まっちゃうことがあるようだが、そうなったらアプリ再起動の必要があるぽい。
登録済みチャンネルを選択して登録済みの周波数に変更することはできる。

ラジオアプリでは登録済み以外の周波数にはできないので、周波数いじるのはEngineering Mode使うしか無いね。
スキャンできないから旅先とかで周波数がわからないとめんどうだね。

あと、コンセントに充電ケーブル繋ぐだけなら問題なかったが、PCと通信ケーブルつないでると聞けないぽいかも。


八王子だが、
  79.5 NACK5
  80.0 TOKYO FM
  81.3 J-WAVE
  82.5 NHK
の4局が拾えた。

ONDA v719 3G 四核のFMラジオ

ONDA v719 3G 四核のFMラジオが周波数が日本に合わせられなくて聞けない件だが、
MediatekのプリインapkでEngineering Modeってのが用意されてて、それで周波数を変えれることを知った。

com.mediatek.engineermodeは最初からインストールされているんだが、
起動方法がわからないんで、MTK Engineering Modeって起動用のアプリを入れた。
Engineering Modeを起動できるアプリは他にもいくつかあるっぽい。
アプリ入れ無くてもadbから起動とかできそうではある・・・

で、Engineering Modeでデバイスの周波数を変えるとラジオアプリの周波数も変わるんでチャンネル登録できるぽい。
周波数が変わることは確認できたが、時間的に放送が終わってるんだと思うが、聞けなかった・・・
昼間また試してみる。


標準のラジオアプリの、
/data/data/com.mediatek.FMRadio/databases/FMRadio.db
内のチャンネルリストを書き換えることで聞けるとの情報も得たが、
sqliteのDBを書き換えるよりもEngineering Mode使ったほうが簡単だね。


ただ、上記の方法はラジオアプリのサーチ範囲が変わらないから不便ではあるね。


デバイスの問題ではなくてアプリの問題のようなので、代わりのアプリ探したが、
「fm radio」とかで検索してもネットラジオばっか出てくるんだよね・・・

Spirit1 Spirit2 って本物FMラジオのアプリを見つけたが、有料。
PlayStoreでインストール可能になるんだが、Mediatek用では無さそうなんで違うものぽいし、金払ってまで試せないな。