2012年1月19日

Android + データ専用 SIM で「緊急通報のみ」を消す

こういうの。

※既にバッチファイル内で自動化処理も入ってます。

データ通信専用 SIM では実際には試してないけど恐らく緊急通報できないのだろうから「緊急通報のみ」も消してしまっていいのではないか、ということで消し方に関する話。
Clip to Evernote

2012年1月10日

「Android + データ専用 SIM での動作修正パッチ」動作報告リスト

Information for Non-Japanese speakers by SBS

Android + データ専用 SIM での動作修正パッチ」を使用した場合や、バッチファイルと同じような作業を手作業で行った場合、または非 deodex 環境に対して手作業で適用した場合に改善があった端末のリストです。
Clip to Evernote

Android + データ専用 SIM での動作修正パッチ

Information for Non-Japanese speakers by SBS

※Android 4.0.3 以降の端末の場合は現在ではこのページの内容よりも Xposed Installer + docomo MVNO Sim Patcher による手法のほうが副作用が少なく安全でオススメです。Xposed モジュールの手法で上手く動かなかった場合や、Android 4.0.3 未満の端末の場合のみ、このページの手法を試すことをオススメします。

これは主に docomo の MVNO でのデータ専用 SIM で発生する「セルスタンバイが大量にバッテリーを消費する問題」や「アンテナが表示されない問題」を回避するためのパッチです。
前回 b-mobile のデータ専用 SIM での動作を改善してみたものが、どうやら他の環境でも動く気配がしているのでバッチファイルにまとめました。
Clip to Evernote

2012年1月7日

GALAXY NEXUS GT-I9250 を買った

俺は初 Android が Honeycomb タブレットで、いわゆるところのスマートフォン的なものを持っていなかったので、試しに GT-I9250 を買ってみた。結局 Android 2.x のハードを持つことは一度もなかった。
先に b-mobile の話を書いてしまったので日記としては順番が逆っぽくなった。

初めてのことだらけなので、右も左もわからぬまま色々触っている。
今回は root を取らずに使うのは厳しそうなのでそのへんを含めて勉強する。

とりあえずイメージのバックアップのために bootloader を unlock して、ClockworkMod Recovery で試しに初期イメージをバックアップしてみた。
手順がすごく簡単だし、ちょっとした変更をするときでも積極的にバックアップしていくとよさそうだ。

簡単に上手くいったので続いて日本語フォントを突っ込むために同じく ClockworkMod Recovery で /system をマウントし、/system/fonts に MMCedar を突っ込み、/system/etc/fallback_fonts.xml を編集して DroidSansFallback.ttf の直前に定義を加えた。
最初はマルベリを入れて定義も一番上に追加したのだが、英数字までマルベリになるのは見た目的にイマイチな感じだったので色々試して今のやり方に落ち着いた。
日本語フォントもうまく出たので改めてこの状態のイメージをバックアップした。

次に、b-mobile のデータ専用 SIM を使う予定だったので、いろいろ調べて対策した。
自力で framework.odex を再構築するのはどうも上手くいかない気配がするので、最初から全て deodexed な CFW で作業するように方針を変更したら簡単にうまく行った
やっとこれでスタートラインに立てたような気がする。
Clip to Evernote

2012年1月6日

Android + b-mobile データ専用 SIM で電界強度を表示する

ここの内容を Galaxy Nexus に限定せずに大半を自動化するバッチファイルを作りました(2012/01/10)が、Android 4.0.3 以降の場合は今はもっとマシな方法があります(2013/04/04)。

docomo の MVNO のデータ専用 SIM で変な挙動を起こす話はそこそこ有名だと思う。
Android だと電界強度が出ずに電波なしに見えるとか、セルスタンバイが異常にバッテリーを食うとか。
よく回避策として電界強度はウィジェットとかアプリで、セルスタンバイに対しては機内モードで対応する話を見かけるのだが、そうではなくて根本的に問題を解決する方法がないか調べた。
わかりやすい解決策は出てこなかったものの、原因らしきものは見えてきたのでそれに対して応急処置をする形で対応させてみた。

Clip to Evernote

2012年1月5日

Eye-Fi でアップロード先に FTPS サーバを指定できる

たそがれねこ
普段 Eye-Fi からは ASUS Eee Pad Transformer TF101 へ画像を送っていて、画像を溜め込んでいる。
端末自体が 32GB あることもあってすぐにはパンクしないものの、ずっと Android に突っ込みっぱなしも微妙なので取りあえずどっかに退避させたかった。

まあ Picasa とかでもいいんだけど、Eye-Fi からアップロードすると 2048px には縮小できないし、どうやら FTP / FTPS サーバへのアップロードにも対応しているようなので Python で FTPS サーバを作ってみた。

pyftpdlib を使ってます。
#!/usr/bin/python
# -*- utf8 -*-

PORT       = 990
USERNAME   = 'yourname'
PASSWORD   = 'password'
BASE_PATH  = '/path/to/ftp/root'
SSL_KEY    = '/path/to/keyfile.key'
SSL_CERT   = '/path/to/certfile.crt'
PASV_PORTS = range(65500, 65535)

import os, datetime, shutil
from subprocess import Popen, PIPE
from pyftpdlib import ftpserver
from pyftpdlib.contrib.handlers import TLS_FTPHandler

class MyTLS_FTPHandler(TLS_FTPHandler):
  def on_file_received(self, file):
    date = None
    p = Popen(["dcraw", "-i", "-v", file], stdout=PIPE)
    for line in p.stdout:
      if line[:10] == "Timestamp:":
        date = datetime.datetime.strptime(line[11:].rstrip(), "%a %b %d %H:%M:%S %Y")
    if date:
      dest_path = BASE_PATH + "/" + date.strftime("%Y-%m-%d")
      if not os.path.exists(dest_path):
        os.makedirs(dest_path)
      filename = os.path.basename(file)
      if filename[len(filename)-9:] == ".JPG.jpeg":
        filename = filename[0:len(filename)-5]
      shutil.move(file, dest_path + "/" + filename)

def main():
  authorizer = ftpserver.DummyAuthorizer()
  authorizer.add_user(USERNAME, PASSWORD, BASE_PATH, perm='elradfmw')
  ftp_handler = MyTLS_FTPHandler
  ftp_handler.keyfile = SSL_KEY
  ftp_handler.certfile = SSL_CERT
  ftp_handler.passive_ports = PASV_PORTS
  ftp_handler.authorizer = authorizer
  ftpd = ftpserver.FTPServer(('', PORT), ftp_handler)
  ftpd.serve_forever()

if __name__ == '__main__':
  main()
普通にファイルをアップロードしたいだけであれば MyTLS_FTPHandler のところ全部必要なくてほとんどサンプルのままでいい感じになるはず。PASV_PORTS に指定した範囲のポートで PASV モードが動くので最低限ここのポートの範囲と PORT に指定したポートだけ空いていれば上手く動く。

自分が使うにあたって「撮影日でフォルダ分けしたい」というのがあったので、dcraw を使ってタイムスタンプを取得した上で JPEG ファイルと RAW ファイル(自分の場合は ARW 形式)を日付フォルダ内に突っ込むようにしてある。

で、作ってみたものの Eye-Fi の Android アプリからアップロードさせると何故かすげー遅い
だから結局 Eye-Fi からはアップロードさせずに AndFTP からアップロードさせるようにして使ってる。
AndFTP からアップロードした場合は全然遅くないので Eye-Fi のアプリがなんか変だと思う。

今は普通に FTPS サーバで受け取ってるだけだけど、ここから好きなサイズに縮小して Picasa に投げたりも当然できるのでちょっと変なことでも簡単にできそうでいい感じ。
Clip to Evernote

俺の正月

12月30日、年末年始に食べるものを買いに行く店を下調べした。
12月31日、年末年始に食べるものを買ったりするために出かけた。
1月1日、有野課長をひたすら見続けた。フォーゼとかの映画見た。地震きた。
1月2日、ゴロゴロしてた。
1月3日、ゴロゴロしてた。
1月4日、ゴロゴロしてた。
Clip to Evernote