投稿

12月, 2012の投稿を表示しています

deprecated な Gallery の代替を自作する(1)

android プログラミングで遊ぶ。 ずっと作ってみたかったアプリがあって、先ずはフィルムストリップみたく写真を選ぶ機能から作ってみる。 本を見るとその名も Gallery というコンポーネントがあって、これを配置すれば簡単にできそうである。 ところが配置すると、『deprecated』とある。比較的新しい部品のようではあるが、android 4 からは非推奨らしいのだ。というわけで代替手段を探す。ところが… Gallery ばりにペタンと貼って終了、ってのはどうもなさそう。そもそもなんで Gallery が非推奨なんだって調べたら、どうもキャッシュに問題があるらしい。おそらくものすごく大量の画像リストを喰わせると落ちるとか、落ちないにしてもかなりメモリを喰うんだろうと想像。 無いものは作るしかない、ということで、ネットから拝借した HorizontalListView とキャッシュ機構を自作したら意外に簡単に実装できた。キャッシュのサイズを指定して、キャッシュがいっぱいになるまで画像を先読みしてため込んでおくということもできそう。僕は EOS-60D の画像ビューアを作ろうとしているので、高解像度の画像からサムネイルを作る処理というのは1フレームにはおさまりそうにないのだ。とりあえず、キャッシュ機構はこんな感じ。あらかじめ作った配列をサイズを保ったまま使いまわす。 package ps.ksk.imageanalyzer.util; public class LoopedCacheList { int buffersize = 0; int topPosition = 0; // 配列のどこが先頭か int topIndex = 0; // topPositionの本来のインデックス Object[] objectArray; public LoopedCacheList(int buffersize) { this.buffersize = buffersize; objectArray = new Object[buffersize]; } /** * 指定したインデックスに要素をキャッシュします. * 必要に応じてキャッシュ範囲をシフトし、はみ出す要素は削除します. * * @param in

ドキュメントスキャナ CANON DR-150 の分離パッドを復活させる

イメージ
CANON のDR-150の愛用者なのだが、書棚の本を自炊しまくっている小生としては消耗品の分離パッドが高価で参ってしまう。常に予備を家に在庫しておくのも無駄な気がする。 使ってしまった分離パッドを見ると、表面が微妙に擦れている程度。微妙な差だと思うのだが、たったこれだけの違いで、紙がまったくスムースに流れなくなるから不思議だ。これをなんとか再生できないか?と思ってやってみたら、これが存外にうまくいった。 この手の製品は読み込む紙の性質の傾向によって評価が大きく分かれるんだろうと思う。私はマンガとかはまったくスキャンしないたちで、主にIT関連の古い書籍と日経○○の雑誌をスキャンしている。 決して手前みそではないけど、比較のために買った新品より再生品の方がこころなし静かになった気がする。 用意するもの ハサミ 細幅(5mm)の両面テープ 作業時間とコスト 時間は1分くらい 両面テープ(総長40m)の値段348円のうち、約1cmを使用なので、約0.087円 作業はカンタンで、分離パッドの真ん中に両面テープをこんな感じで貼る。はくり紙は剥がさないでそのままにすること。 これで再生!紙質によってはダメかも。まあお金かからないのでダメモトでお試しあれ。

File.isFile、File.isDirectory が思ったとおりに動かない

android 開発で遊んでみる。 File dir = new File("/hoge/hoge" ); assertTrue( dir.isDirectory() ); // ←コケル File file = new File("/hoge/hoge/hoge.jpg" ); assertTrue( file.isFile() ); // ←コケル むむむ。そういうもんなのか。ファイルシステムが違うから? 理由はおいおい調べようっと。

SH-02E の micro SDメモリを増強する

買った電話には、2GのmicroSDカードがささっていたけれど、これはあくまで試供品らしい。別に試供品でいいような気もするけど、8Gの SanDisk の SDHC が手に入ったのでこれに入れ替えることにする。 なーんにも考えないでとりあえず差し替えたら、SDカードにインストールされていたと思しきアプリが起動しなくなった。写真とかも無い。 そうか、そりゃそうよね、設定はここに書かれてるのもあるよね、ってことで、とりあえず 元の 2G をPCでマウントして吸い出して、8Gの方にコピーを試みる。そんな単純にいくのかしら、という不安が少々。セキュリティ対策かなにかでファイルだけじゃなく特定のセクタとかになんかデータ書いてあったりするんじゃないのかな。と。 とりあえず2Gからの吸い出しは問題なし。でもここではたと手が止まる。PCでマウントすると、どうがんばってもSDカードに書き込むことができない。はて。昔のFDDみたいなプロテクトノッチを動かしても書き込めない、フォーマットできない…で、ググるとたしかにそういう人が居る。 どうしたもんか。試しに 休眠中の IS-01 に突っ込んで、USB経由でドライブにマウントする。 すると…、これだと書き込みができた。とりあえず2Gのカードから吸い出したファイルを、8Gのカードの方にコピー。 Windowsのファイルシステムで見る限り、容量が違うだけで同じファイル構成のカードになった。 コピーできた 8G のカードを SH-02E に挿入。はたして、うまくいくか…ドキドキ。 そしたら拍子抜けするくらいうまくいった。書き込みができない理由が見つけきれてないけど、まあいいか。解決。