2011年12月24日土曜日

[Power saveing] 節電を簡単にする道具

How to save power in real life #2

もうすっかり冬です。夏に比べて冬の方が電力需要が多いため、節電しなければなりません。計画停電のときの苦労は二度としたくないですからね。

Mtkは、楽に節電するためUSB連動タップを使ってます。
USB端子を持つホスト器とタップの電源を連動できます。
たとえば、パソコンの電源に連動してディスプレイの電源をオン/オフする、といった使い方ができます。
節電のみならず、電源操作の手間も減らせて一石二鳥です。

ところで、この夏は発熱する物はすべてコンセントを抜いていたのですが、テレビ用のアンテナブースターだけはむやみに抜くわけにはいきませんでした。
最近のテレビにUSB端子がついているので、テレビの電源に連動して周辺機器(アンテナブースターやオーディオアンプなど)の電源をオン/オフするためにUSB連動タップを使いました。
おかげで、周辺機器の電力消費と発熱を抑えることができました。
アンテナブースターは発熱が多くて不安でしたがこれで解消しました。アンテナブースターはアナログアンプ回路なのでスイッチング電源を使えないみたいです。

関連ネタ 夏に備えて節電対策
それでは皆さんよいお年を!

2011年12月17日土曜日

[Android] x86用Android4.0(ics-x86)はVmwareで使えるか?

Trying to run Android4.0-x86 on Vmware

x86用Android4.0が公開されました。
Android-x86(http://www.android-x86.org/download)が次の4つのプラットフォーム用にAndroid-x86-4.0-devel を公開しました。
・AMD Brazos
・ASUS laptop
・ASUS Eee PC
・Tegatech tegav2 tablet

無理を承知でこれらのディストリビューションをVmwareで起動してみました。
関連ブログ [Android] VmWare PlayerでAndroidをデバッグする
起動する操作は次の通りです。

Vmwareを起動し「新規仮想マシンの作成」をクリック

「インストーラーディスクイメージファイル」をクリックし、ダウンロードしたisoファイルを選択して次へ

仮想マシン名はご自由に。Mtkは「android-x86-4.0」と入力しました。
格納場所はデフォルトのままでも結構です。Mtkは十分な空き容量のあるDドライブを指定しました。

ディスク容量の指定はデフォルトのままで結構です。Mtkは1GBにしました。

完了

ここからは操作方法が変わります。
Vmwareのウィンドウをクリックすると、マウスポインターが消えてVmwareだけ操作できます。
Windowsの操作に戻るにはCtrlキーを押しながらAltキーを押します。
この画面ではカーソルを一番下のInstallationに移動しEnterを押します。

インストールが始まるのですが・・・

検証した結果
android-x86-4.0-devel-amd_brazos.iso
ブートから先に進まず。

android-x86-4.0-asus_laptop-20111209.iso
インストールしようとするとディスクのフォーマットに失敗して先に進まず。
ライブCDではnot asusの警告が出て先に進まず。

android-x86-4.0-eeepc-20111209.iso
ライブCDは起動するものの、ほとんど操作を受け付けず。

android-x86-4.0-eeepc-20111209.iso
ブートから先に進まず。

というわけで、残念な結果となりました。

今のところ、PCで動作するAndroid4.0エミュレーターはAndroid-SDK-r15に含まれる公式のみのようです。
公式エミュレーターはARMをエミュレートしているので再現性は高いのですが、遅くて不安定なのが玉に瑕です。

以上、参考になれば幸いです。

2011年12月10日土曜日

[Android] アプリケーションでデータ通信のオン・オフを設定できない理由

Reasons for failing to switch mobile networks

データ通信をオン・オフするアプリケーションを作ろうとしたら、不可能であることがわかりました。
1.隠しメソッド
データ通信をオン・オフするための機能はTelephonyManagerクラスにあるのですが、隠しメソッド(@hideアノテーション)のためアクセスできません。
隠しメソッドにアクセスするためリフレクションを使うとこんなコードになります。

※ユーザーインターフェースの実装を省略しているのでこのままでは動きません

これにユーザーインターフェースを実装してアプリケーションとして完成させるとエミュレーターで動作することは確認できました。

2.パーミッション
上のソースは実機は動作しません。
動作させるためのパーミッションが2つあります。
android.permission.MODIFY_PHONE_STATE
android.permission.WRITE_SECURE_SETTINGS

このうち、WRITE_SECURE_SETTINGSはアプリケーションがマニフェストに宣言しても実機での動作では許可されてません。
データ通信の他、bluetoothの設定変更もWRITE_SECURE_SETTINGSが必要なようです。

ユーザーの知らないうちに勝手にデータ通信やbluetoothの設定を変えられたら不都合なので、セキュリティーレベルが高くされているのは仕方ないかもしれません。

以上、参考になれば幸いです。

2011年12月3日土曜日

[Android] ライブ壁紙の作り方

How to code live-wallpaper applications
ライブ壁紙のアプリケーションを作ってみました。
対応OSはAndroid2.1以上です。
ライブ壁紙の作り方はさぞかし難しいだろうと思っていたのですが、プログラム的にはSurfaceViewと同じで意外と簡単でした。
以下ソースです。

マニフェスト(AndroidManifest.xml)
リソースファイル(res/xml/wallpaper.xml)
ライブ壁紙のソース(WallpaperSasmple.java)

このライブ壁紙は画面をタップすると徐々に大きくなる円を描き、指を離すと徐々に消えていきます。
円の色は5種類です。
円の数の上限を決めてないのでたくさん表示させることができますが、動作が遅くなるかもしれません。

以上、参考になれば幸いです。