2011年4月30日土曜日

[Power saveing] 夏に備えて節電対策

How to save power in real life

東京電力の原子力発電所が崩壊したため、東日本では電力不足が懸念されています。
特に夏はエアコンの稼働率が上がるため、計画停電は避けられないかもしれません。
さらに放射線が漏出し近隣に住む方々への補償金支払いのため電気料金が値上げされます。
東日本では東日本大震災以前と同じように電気を使った生活はできません。

今日までに実践してきた比較的簡単な節電方法を挙げてみます。

1.パソコンとテレビはノート型PCを使う
ノート型PCはデスクトップ型に比べて省電力に設計されています。
(その代わり同世代のデスクトップ型に比べると遅かったりハードディスクやメモリーが少なく設計されているなどのデメリットもあります)
さらにテレビチューナー機能がついていれば停電中にバッテリー駆動でテレビを見ることができます。
テレビチューナーを内蔵していなくても市販されているUSB接続のテレビチューナーを接続すればテレビを受信できます。
※アンテナブースターを使わないとうまく受信できない世帯は停電中ブースターに電源が供給されないのでご注意ください。
Mtkは揺れを感じたらスマートフォンのワンセグで地震速報を確認してます。

2.シャワートイレは携帯型を使う
携帯型シャワートイレは電池駆動なので、停電中でも使えます。
備え付け型シャワートイレのコンセントを抜いておけば待機電力を節電できます。
ただし携帯型は便座や水を温める機能はないので冬は冷たいです。

3.お湯はガスや石油で沸かす
電気ケトルは早くお湯を沸かせますが消費電力が高いです。
冬の停電中は石油ストーブと湯たんぽで暖をとりました。
冷めた湯たんぽのお湯はお風呂に使って節水します。
夏はガスコンロでお湯を沸かすことにします。

4.バッテリーは24時間タイマーを使って深夜に充電する
ノートパソコンやスマートフォンなどのバッテリーは消費電力の少ない時間帯に充電を済ませるために24時間タイマーを使います。

これだけがんばっても節約できる電力はたかがしれてますが、何もしないよりはましだと思ってます。
今年の夏は計画停電でエアコンも扇風機も使えないのでしょうか?ゼンマイ式扇風機があれば欲しいです。
これからは熱中症対策も必要ですね。

2011年4月27日水曜日

[Application] Wi-Fi sync Screenのトラブルシューティング

Wi-Fi Sync Screenを設定してもAirstationが再起動する(Wi-Fiルーターが誤動作する)場合は、Android端末のWi-Fiのスリープを解除してください。
操作手順は次の通りです。

[設定] → [無線とネットワーク] → [Wi-Fi設定] → [menuボタン]を押す → [詳細設定] → [Wi-Fiのスリープ設定] → [スリープにしない]
※Wi-Fiをスリープに設定するアプリケーションがインストールされている場合は特にご注意ください。

2011年4月23日土曜日

[Android] Activityに時計を表示する(Activityの非同期更新)

How to update Activities asynchronously

AndroidのActivityは別スレッドでの更新処理が禁止されています。
たとえば1秒ごとにActivityに現在時刻を表示するためにThread#runでループするような処理をするとエラーになります。
AsyncTaskクラスのonPreExecuteメソッドやonPostExecuteメソッドで1秒ごとにActivityの更新をするようなループはエラーにはなりませんがActivityが更新されないし、操作を受け付けなくなります。

Activityを非同期で更新するのにはHandlerクラスを使います。
HandlerクラスのActivityを更新するためのメソッドのうち、sendEmptyMessagepostを使ってみます。
sendEmptyMessageメソッドとpostメソッドの違いは引数だけです。ソースを見たところ内部的に同じ処理をしています。

1. handler#sendEmptyMessage
以下は1秒ごとにActivityに現在時刻を表示するHandlerクラスのsendEmptyMessageメソッドを使ったソースです。

マニフェスト(AndroidManifest.xml)
レイアウト(main.xml)
Activityのソース(Main.java)
これで無事に1秒ごとにActivityに現在時刻を表示できました。

sendEmptyMessageDelayedを使うべきところにsendMessageDelayedを使うと"This message is already in use."というエラーが起きるので注意が必要です。
※when=の後の数値は毎回異なるようです。

2. handler#post
次は1秒ごとにActivityに現在時刻を表示するHandlerクラスのpostメソッドを使ったソースです。
sendEmptyMessageメソッドの代わりにpostメソッド、sendEmptyMessageDelayedメソッドの代わりにpostDelayedメソッドを、removeMessagesメソッドの代わりにremoveCallbacksメソッドを使っています。

Activityのソース(Main.java)
マニフェスト(AndroidManifest.xml) と
レイアウト(main.xml) は同じ

postDelayedメソッドやpostメソッドはRunnableインターフェイスを引数に使うので継承次第では便利な使い方ができるかもしれません。


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

2011年4月16日土曜日

[Andriod-NDK] ERROR: You are using a non-Cygwin compatible Make program.

How to solve the problem about Android-NDK

Androidアプリケーションのネイティブコードを開発するためのAndroid NDKを使ってみたらタイトルのようなエラーが出ました。
WindowsにCygwinをインストールし、ndk-buildのあるフォルダーにパスを通しndk-buildを実行した結果です。


GNU Makeのインストールが必要とのことですが、Cygwinのsetup.exeを実行して確認ししてもちゃんとインストールされています。

原因はndk-buildを保存したフォルダー名にスペースを使っていたことでした。
D:\Program Files\android-ndk-r5b というパスがスペースを含んでいるのでエラーになってしまいます。
(よく見るとエラーメッセージにヒントが表示されています)

"/cygdrive/d/Program Files/android-ndk-r5b/ndk-build"
(ダブルクオーテーションで囲む方法)や
/cygdrive/d/Program\ Files/android-ndk-r5b/ndk-build
(スペースの前に\をつける方法)も試しましたが結果はどちらもエラーでした。

スペースを含まないシンボリックリンクを作ってもエラーが起こりました。
ln -s /cygdrive/d/Program\ Files/android-ndk-r5b/ androkd-ndk
~/androkd-ndk/ndk-build


android-ndk-r5bフォルダーをDドライブ直下(D:\android-ndk-r5b)に移動しパスを設定し直したら解決しました。
フルパスにスペースを含んでいなければエラーになりません。
詳しくはndk-buildのソースを参照してください。

Android SDKはD:\Program Files\以下にインストールしてもパスに関するエラーが起こったことがないのでウッカリしてしまいました。

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

2011年4月9日土曜日

[Windows] WindowsUpdateのキャッシュを削除して高速化

How to launch WindowsOS faster

WindowsUpdateのキャッシュを削除すると起動が速くなるとのことなので試してみたら、確かに起動後のディスクアクセスが減りました。
毎回手作業で操作するのは面倒なのでbatファイルを作りました。

WindowsUpdateのキャッシュを削除.bat ※2011.04.26 修正
※2011.07.11 2度目の修正
※2011.07.12 3度目の修正、64bitと62bitでフォルダー構成が違うようなので修正しました

batファイルは拡張子をbatにしたテキストファイルです。ダブルクリックするだけでファイルに書かれた処理内容を実行できます。

タスクスケジューラーなどで定期的に実行する設定をしておくとbatファイルを起動する手間も省けます。
ただし、起動が遅くなってでもキャッシュを残すことには理由があるはずなので、後で不具合が出るかもしれない・・・と思ったのですが、古いPCでキャッシュを削除しても不具合が出ないのでただの削除忘れかもしれません。

※ Windows Vista/7で実行するときの注意
・batファイルの実行は「管理者として実行」する必要があります
・このbatをタスクスケジューラーに登録する際は「最上位の特権で実行する」の設定が必要です

2011年4月2日土曜日

[Android] 端末の充電時間を設定する

How to control the charging time

Android OSは充電中のバッテリーの充電率を設定することはできません。
充電率を90%で止めたくても、今のところアプリケーションで対応できません。
ただし充電の開始と終了のタイミングなら24時間タイマーで設定できます。
これらが24時間タイマーです。

アナログ式
デジタル式

通販の他、家電量販店・ホームセンター・ペットショップなどで販売されています。
使い方は充電を開始したい時間と終了したい時間を24時間タイマーに設定し、充電器とAndroid端末をつなげておくだけです。
アナログ式は停電中にタイマーが進まないのが難点です。
安いものだとすぐに時間が狂ってしまうとの報告があります。

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