SyntaxHighlighter

2012/01/18

ImageViewを画面サイズに合わせて拡大させる



「ImageViewにdrawableを指定してfill_parentをしても、元の画像サイズが小さいと画面の両端まで拡大して表示してくれない!」ということはありませんか?

画像がスクリーンサイズギリギリに拡大されない問題にあたりましたので、対処法を調べてみました。これはそのメモです。

まずは現象の確認です。レイアウトXMLを次のように書いた場合で、

横方向にfill_parentを指定しているのですが、もし画像サイズが画面サイズよりも小さい場合、
と、このようにスクリーンサイズの横幅に応じてfill_parentしてくれていません。scaleTypeをfitXYに変更すると、横幅はいっぱいに広がりますが、縦横比を保持しながら縦幅を拡大してくれないため、横に間延びした画像になります。

これだと、
  • デバイスを縦横回転した場合
  • タブレットなどの高解像度デバイスでの実行を考慮した場合
などに、予期せぬレイアウト表示になる恐れがあります。

Androidにはdip指定で画面サイズを考慮した画像ファイルを用意してある程度差分をカバーすることができますが、どのくらい大きな解像度をもつ端末が今後出てくるかわかりません。

ひとつの解としては、とても大きな画像を用意して、実在するすべての端末で縮小表示をすることです。ただしこの場合は消費メモリやリソースサイズが大きくなることでしょう。

そこで今回は、ある程度の大きさの画像を用意しておくものの、予期せぬ高解像度デバイスの場合は拡大表示する術を考えてみました。

まずおそらく原因はImageViewがAndroidのスクリーンサイズを(当初)知ることができないことが原因かと思います。ImageViewは繰り返しチェックをしながらそのサイズを決めているらしく、その結果現在のような結果に陥っています。従って、スクリーンサイズを取得できるようになってから、改めてサイズを指定してあげれば正しくリサイズすることができそうです。

スクリーンサイズは、一旦描画した後に、ViewGroup#onSizeChanged()にて知ることができます。

はじめに、下記のクラスを用意してroot viewとして用いることで、スクリーンサイズを取得します。

onSizeChanged()にてスクリーンサイズを取得したら、元の画像をmatrixで拡大(縮小)します。matrixにより変換しているため、レイアウトxmlファイル中の


に変更します。

次に、ActivityのonCreate()にてHorizontallyExpandingImagesViewを設定します。
このようにすると、ActivityのonPause()の後に一旦描画が行われ、スクリーンサイズが確定したのち、HorizontallyExpandingImagesViewのonSizeChanged()にてImageViewの拡縮が行われます。

下記がその結果です。縦幅が拡大され、縦横比を維持しながらImageViewのサイズが画面サイズにフィットしているところがわかると思います。
分かりやすくするために、極度に小さい画像を用いたのでボケボケになっています。dipの設定で複数のdrawableを用意することで、極端な画像のクオリティの劣化は回避することができるでしょう。

2012/01/15

自作パソコンの廃棄


2003年の資源有効利用促進法改訂によってパソコンの廃棄が有償となっています。その正しい捨て方は、粗大ごみとして捨てるのではなく、メーカーもしくは一般社団法人パソコン3R推進協会というところに廃棄を依頼することになります。

今回捨てようと思っていたのは5年以上前にビルドした自作PCでしたので、一般社団法人パソコン3R推進協会に依頼することになります。ところが、この協会に依頼するとすると、回収再資源化料金として最低4,200円かかります。発送料も含まれているようなのですが、、、若干高いですね。もともと鉄くずや金などを精製できる埋蔵資源ですので、改修費用としては若干高いように思います。

そこで以前見聞きしていた資源回収業者「パソコンファーム」さんの場合をチェックしてみると、、、なんと回収費用はタダ!ただし送料は負担する必要があります。となれば、その送料がパソコン3R推進協会の改修費用を下回れば利用するに値するし、またパソコン3R推進協会がどこかで無駄な費用を出費していることになります。

というわけで、早速送ることを試みました。まずはパソコンファームさんに電話してみたところ、土曜日の夜にも関わらず応対して下さいました。ホームページにあるダンボールを発送してもらおうとしたところ、ダンボールはなんでも良いとのこと。また、一度DVDドライブなどを外してしまっていたのですが、その状態でも構わないとのこと。

早速スーパーに行ってダンボールを確保し、梱包し、コンビニから送って見ました。5インチベイx3のミニタワーケースの送料は、サイズ120で1,270円(千葉県→埼玉県)でした。

すなわち、パソコン3R推進協会の最低回収費用4,200円と比較して2,930円の差額。この差を、果たしてどのように考えるべきか。。。

2012/01/10

環境に優しい(?!) プリンタインクの補充



年賀状作成などにプリンタのインクが切れる年末年始。ちょうど自分のプリンタもインクが切れ変えていたので、プリンタのインク詰め替えキットを試してみました。

試したのはエレコム製の詰め替えキット各社プリンタ対応品が揃えられておりキヤノンのプリンタは黒インクが別カートリッジなので黒インクだけもあります。一度の購入で3〜4回の補充が可能とのことですので、インクカートリッジを買い替えるよりもコストがかからないのはもちろん、カートリッジが使い捨てならば環境にも優しいです。

今回は黒インクとカラーインクの両方を補充してみることにしました。購入したキットの中身はこんな感じです。
キットには、
  • 手袋
  • 穴あけキット
  • 注入用スポイト
  • インク
  • 手順書
が揃っており、汚れ防止用新聞紙を用意するだけで準備万端です。

入れ替え作業自体は非常に簡単で、手順書に従って行えば簡単でした。カートリッジの取り外し方法はプリンタの取り扱い説明書を参照する必要があるので、ウェブなどで確認をしておきましょう。最初はカートリッジに穴をあけたりする必要があるので、15〜30分あれば可能かと思われます。よってここでは詳細な方法は割愛しますが、ポイントは下記の通り:
  • 取り外したカートリッジからはみ出ているインクを、カートリッジのチップや配線に触れないように、そっと拭きとる
    • → これによって、汚れる可能性がほぼゼロになるはずです。
  • インクは満タンまで入れない。注入時にインクが穴から溢れでてきたら吸いとりながら、スポイトを抜く
    • → 密閉シールを貼るので染み出ることはないと思いますが、印刷時には激しく揺れるので、いっぱいにしないほうがいいでしょう。

詰め替え後、ヘッドクリーニングと試し刷りを行い完了です。自分のプリンタMP-490は黒重視なのでカラーは変わらずそこそこでしたが、黒はきっちりと濃くプリントされていました。

手順書には4回ほどの詰め替えを限度として新品カートリッジに変える旨が記載されていたので、この詰め替えインクを使い終わったら(3年後くらい?!)新しいインクカートリッジにすることにしましょう。

2012/01/09

So-net モバイル 3G SIMカードをNexus oneで試す


So-netモバイル3Gを導入すると月額2,700円程度で3Gの速度を使える!ということは、ほぼ同額でb-mobileの300kbps制限がなくなるということですよね。
早速導入してみました。

申し込みはSo-netのページから。郵送でSIMカードが送られてきます。


てっきりb-mobileと同じ白いFOMAカードかと思っていたら、赤いSIMカードに変わっていました。Wikipediaによると、Xi対応の第4世代のドコモUIMカード DN04とのこと。

このカードはXi対応ですが、Xi対応ではないFOMA端末でも使えることが言われていますね。自分のn1も同様に使えることでしょう。(もしかしてXi対応端末だとLTEスピードなのか?!)

導入はSIMカードを入れ替えるだけ。旧SIMカードとの比較。白と赤が対照的ですね。
APN設定は下記の通り:
APNst.so-net.ne.jp
ユーザ名[So-netのID]
パスワード[So-netのパスワード]
MCC440
MNC10
認証タイプCHAP
APNプロトコルIPv4/IPv6
So-netの会員でないと使えないようです(^^;

接続してみた後の速度結果は下記の通り:
感度レベルはアンテナ二本でしたが、下り1900kbps/上り300kbpsほど出ています。"3G"マークがステータスバーに表示されないので不安でしたが、速度はきちんと出ています。

というわけで300kpbs制限から抜け出すことができましたが、速度制限がないわけではありません注意事項のページにて
  • より多くの方にサービスを快適にご利用いただくため、連続的かつ大量の通信を行っている一部のお客さまに対して通信速度を制限させていただきます。
    • <通信速度制限について>
      • 3日間の合計通信量が、150万パケット(192Mバイト相当)に達した場合、通信速度を制限する場合があります。

Youtubeコンテンツをいくつか見たらアウトですね。気をつけましょう!

2011/12/31

マーチYK12のスピーカー交換

排気量1,500ccで車重1,000kgを切るマーチYK12は非常に軽快でCVTによる無段変速もスムーズで運転が楽しいのですが、そのドライブをより楽しくするために、スピーカーを入れ替えることにしました。

とは言っても所詮は高級車ではないので、スピーカーはそれほど高くなくても可。追加でバッフルボードなどを買う必要がない、KENWOODのRS170を入れてみることにしました。


下記に交換手順を載せます:
ドアパネルを外すファーストステップは、ドアノブの銀色のパーツになります。
ドライバーにビニールテープを巻いて傷がつかないようにし、隙間に差し込みます。
少しこじるとカチとなり、はずれます。上下ともに外します。
見にくいですが、止め穴があります。
次に、ウィンドウスイッチのパネルを外します。ここの外し方は定かではなく、もっとも難しいところです。
隙間に手やパネル外しを突っ込みながら、丁寧に外していきます。
スイッチパネルを外すと、ドアパネルとドアを繋げているビスがパネルの奥に見えますので、それをはずします。そして、スイッチパネルとコネクタを外します。
ドアとドアパネルの間に軍手をした手を挿し込み、そのままドアパネルを引きます。すると、クリップで留められていたパネルが、バキバキ!と外れています。
ドアパネルを外すと、このような感じになります。非常にスッキリと純正スピーカーが収められています。コネクタを外し、純正スピーカーを取り出します。

純正スピーカーと新しいスピーカー。明らかに質が違いますが、純正スピーカーは20Wくらいまでの入力しか対応しておらず、純正ヘッドユニットもそれ以上に出力を上げることはないでしょうから、十分と言えば十分です。

付属のフレームを純正のビスを用いて次のように取り付けます。ドア側の穴の位置とフレームの位置がズレているのがわかると思います。ひとつのビス穴にコードを通すことができます。フレームは削る必要はなく、そのまま使用可能です。
車両側の配線はこのようになっています。インターネットの情報によりますと、フロント左ドア側の配線は
プラス
マイナス
のようです。

フロント右ドア側の配線は
プラス
マイナス
のようです。てっきり赤っぽいのがプラスかと思ってしまいがちですが、ここは注意しなければなりません。
残念ながらこのコネクタと付属のスピーカーはそのままでは繋がりません。スピーカー付属のコードをニッパーで切断し、ドアのスピーカーに接続します。そして切断した方を、フレームのビス穴を通じてドアの内側から外側へ通します。通した線で灰色の線があるほうを車両配線のマイナス側に、線がないほうを車両配線のプラス側にエレクトロタップで接続します。
コードを通して、スピーカーを固定した状態です。これで完成!音を鳴らして無事に聞こえれば、ドアを逆順に組み立てて完了です。取り外した純正スピーカーは、リアドアに付けることが可能です。ドアパネルはより固く取り外すのが大変ですが、コネクタ加工は必要ありません。



スピーカーを交換した効果は、音がクリアになったと思います。また、出力を強くしたときの頭打ち感がなくなりました。

今回リアドアに純正スピーカーを移植して4スピーカー化をしましたが、スピーカー間距離が短いためか、ヘッドユニットによるサラウンド効果は得られていないようなので、そのままサラウンドをOFFにしました。

<<追記>>
今回車両側の配線にエレクトロタップでスピーカーを接続しましたが、極力車両側の配線は傷つけたくないのが正直なところですね。後日カーショップを見ていたら、エーモン製日産車用スピーカーハーネスが売っていることがわかりました。このハーネスがマーチに対応しているかどうかはわからないのですが、これを使うと作業が非常に楽になることも見込まれますので、試してみる価値はあるかもしれません。

Lenovo ThinkCentre M57p BIOSアップデート失敗からの復旧

Lenovo ThinkCentre M57p smallは非常に良いPCなのですが(さすがvProマーク)、この12月に有効になったThinkVantageのアップデートとBIOS更新によって起動しなくなってしまいました。ThinkVantageが新しくなったためか、これまで不可能だったBIOSアップデートが有効に機能し、最後の再起動後にBIOSが起動しなくなったのです。。。

既にLenovoによる製品保証は切れているものの、明らかなるアップデート不良。サポートに電話をしようとしましたが、どの番号もPHSやIP電話からは繋がらず。公衆電話からかけたところ…ThinkPlusなる有料保証サービスに入らなければ相談すら受けられないとの、自動音声の一点張り。そもそもThinkVantageによる自動アップデートで起動しなくなったのであるから、保証期間云々の問題ではなく、行ってみればLenovoが遠隔操作でPCを起動不可能とも言える問題。全く冗談ではない。このままでは、二度とLenovo製品は買わないでしょう。

とは言え、目の前の現実に目を向けなければならないので、ウェブで同様の事象を調査。アップデートによる起動不能はよくあるようで、何も知らなければ、そのままサービス送りでマザーボード交換、費用4万円という話がありました。再び冗談ではない。Lenovoのヘルプサイトを調べると、「BIOSアップデート失敗時の対処法について、マニュアルに誤記がありました」という記事が。どうやらBIOSアップデート失敗はよくあることらしいです…。本当に冗談ではないので、Lenovo製品ではBIOSアップデートはしては行けないと悟りました。

さて、上記の記事に従って無事に復旧できたので、その際のメモを下記に記します。ただしフロッピーディスクを必要とします。M57p smallはフロッピーディスクドライブが装備されていないので、用意する必要があります。USBしかインターフェースがないので、USB接続タイプを探しました。USBフロッピーディスクドライブは徐々に生産がストップされているのか、ヤマダ電器では取り扱いを中止したらしく、ケーズデンキでは5,000円弱もする高額で販売されていました。またブート対応でドライバ不要のサードパーティ製フロッピーディスクドライブを用意したとしても、そもそもBIOSの書き換えに失敗しているのに、マザーボードが正しくUSBフロッピーディスクドライブを認識することができるのか。5,000円弱も支払うのはリスキーでしたので、帰宅してAmazonで安いドライブを探すと、、、中古のIBM純正USBフロッピーディスクドライブが1,500円ほどで売っています。返品も可能でしたのですぐさま購入で、準備OK。

次に、フロッピーで導入する「BIOS フラッシュ・ディスケット」というのを作成せねばなりません。ところが記事にはそのような名前が書いてありますが、一体何者かがよくわかりません。BIOSアップデートのページを検索するとこちらこちらのページが該当し、前者のページにて「If you prefer to create a diskette to update your BIOS, download both 2rjt64a.exe and 2rj264a.exe.」とあるので2rjt64a.exeと2rj264a.exeをダウンロードします。フロッピーに書き込むには二つのフォーマットされたフロッピーを用意し、各ファイルを実行します。Windows 7(64bit)では動作しませんでしたが、XPモードによるXP(32bit)で無事に書き込み可能でした。

二つのフロッピーを用意したものの、今回使ったのは2rjt64a.exeでした。ただし、どうしてそうだったのかわかりませんので、両方用意するのが良いでしょう。

さて、これで準備は完了。ここからが本当の復旧作業です。

  1. 電源コネクタを取り外し、本体を開く
    • 赤丸の位置に、次に変更するディップスイッチがあります。
  2. ディップスイッチを切り替える
    • はじめはこの位置にあるので、
      このように差し替えます。
  3. フロッピーディスクをドライブに挿入し、本体につなげる
  4. 電源コネクタを接続し、電源をつける
  5. 短いビープ音が断続的に鳴りはじめ、リカバリが始まる
    • この間、モニタ出力はなし。ファンが全開で回る。
  6. 5分ほど経ち、長いビープ音ののち、電源が切れる。
  7. 電源コネクタを取り外し、ディップスイッチをもとに戻す。
  8. 本体を閉じ、電源コネクタやその他ケーブルを接続、電源を入れる
  9. "Resume"や"Setup"というメニューが表示されたら"Setup"を選択する。
  10. 一番右のメニューからLoad default settingsを選択し、その後"Save"して"Exit"する。

これでWindowsが起動するようになったはずです。


PC市場はグローバルスタンダード化している昨今ですが、知識がないユーザはトラブルにあった場合、なす術が一切ありません。Lenovoのサポート状況は非常に不親切ですので、NECと連携する際にはサポート改善とソフトウェア品質に努めてほしいものです。