2011年11月26日土曜日

[Android] マルチタッチアプリケーションの作り方

How to code multi touch applications

LYNX3D SH-03Cでマルチタッチに反応するアプリケーションを作ってみました。Android2.1以上に対応します。
指でタッチした場所に円を表示します。5本の指まで反応します。
以下サンプルです。

アクティビティー(Main.java)
マニフェスト(AndroidManifest.xml)
それぞれの円は指の動きを追いかけます。
このアプリを作った時点では、マルチタッチは公式には3本指までしかサポートしていないようで4本以上の指を認識するには隠しパラメータを読み取る必要がありました。(onTouchEventイベントの 0x305 とか 0x036 とか)
実際にタッチしている指の数とAPIの値が一致しないので円が一つ多く表示されることがあります。

MotionEventクラスにはdeprecated(非推奨)にされた定数とメソッドがあるのでご注意ください。
詳細は http://developer.android.com/intl/ja/reference/packages.html をご覧ください。

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

2011年11月19日土曜日

[Application] Wi-Fi sync Screen v1.03公開

Androidアプリケーション Wi-Fi sync Screen v1.03 を公開しました。
"Wi-Fi sync Screen"はWi-Fiスリープを解除した端末のバッテリーを長持ちさせるアプリケーションです。
Android端末をWi-Fi接続すると再起動してしまうAirStationなどをお使いの方におすすめです。
詳細はこちら

v1.03での変更点
安定性向上

ダウンロードはこちら
※ダウンロード前にエンドユーザーライセンス契約(EULA)を必ずお読みください。
https://market.android.com/details?id=jp.fujiu.AndroidApp.WifiSyncScreen Android Market

◆トラブルシューティング◆
Wi-Fi Sync Screenを設定してもAirstationが再起動する(Wi-Fiルーターが誤動作する)場合は、Android端末のWi-Fiのスリープを解除してください。

Recovered from crash の表示について
Android1.6では画面を開いたとき "Recovered from crash"と表示されることがあります。
リソース不足により動作できなくなったWi-Fi sync Screenを回復したことを意味します。
このメッセージが表示される場合は次の対策を推奨します。
・OSを可能な限り最新版にバージョンアップする
・使用していない常駐アプリケーションを停止する
この機能はv1.03で追加されました。

[Android] 新旧のAndroidで動作するServiceの作り方

How to able to run service applications on all OS versions

ServiceクラスのonStartメソッドはdeprecated(非推奨)に指定され、Android2.1以降では使うべきではないメソッドになってしまいました。
実際にAndroid2.1以降ではonStartメソッドが呼ばれないことがあります。
代替メソッドとしてonStartCommandメソッドが用意されましたが、Android1.6にはonStartCommandメソッドがありません。

1.6以降のどのAndroidでも同じように動作するサービスアプリケーションを作るには、onStartメソッドとonStartCommandメソッドの両方を実装します。
1.6以降のAndroidに対応させるので、プロジェクトのBuild TargetはAndroid1.6(API Level 4)とします。
以下はサンプルです。

サービスクラス(MyService.java)


Activity(Main.java)


マニフェスト(AndroidManifest.xml)


このプロジェクトを実行するとActivity(真っ黒の画面)が表示されている間だけMyServiceクラスが起動します。
実行するとAndroid1.6ではonStartメソッドが、Android2.1以降ではOnStartCommandメソッドが呼ばれます。

Build TargetにAndroid1.6をしていたい場合は、onStartCommandメソッドはオーバーライドせずに(@overrideアノテーションを書かずに)コーディングします。
Eclipseを使う場合、[ソース]-[メソッドのオーバーライド] メニューを開いてもonStartCommandメソッドは選べません。メソッド名や引数を間違えないようにAndroidリファレンスからコピーします。

onStartCommandメソッドを使う上で特に注意することがあります。
サービスはOSによってrestartされることがあるのですが、restartされたときに呼ばれるonStartCommandメソッドの引数 intent は null です。
(return START_STICKY; と指定した場合)
Android1.6とAndroid2.xとでは、restartされたときの引数の内容が異なります。

また、Android1.6では「No more background processes」によりrestartされてもonStartメソッドが実行されないことがあります。
Android1.6のサポートが難しくなってきました。

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

2011年11月15日火曜日

[Application] お天気ロイド v1.10公開

Androidアプリケーション お天気ロイド v1.10 を公開しました。
お天気ロイドは最新のWeather Hacks(気象データ配信サービス)をホーム画面に表示してくれるアプリケーションです。

v1.10での変更点
安定性向上

ダウンロードはこちら
※ダウンロード前にエンドユーザーライセンス契約を必ずお読みください。
https://market.android.com/details?id=com.arimasu.mtk.AndroidApp.OtenkiWidget Android Market

操作方法
Android Walker様にて動画付きの操作方法が公開されました。

2011年11月13日日曜日

[Application] お天気ロイド v1.09公開

Androidアプリケーション お天気ロイド v1.09 を公開しました。
お天気ロイドは最新のWeather Hacks(気象データ配信サービス)をホーム画面に表示してくれるアプリケーションです。

v1.09での変更点
Android2.xでの安定性向上

ダウンロードはこちら
※ダウンロード前にエンドユーザーライセンス契約を必ずお読みください。
https://market.android.com/details?id=com.arimasu.mtk.AndroidApp.OtenkiWidget Android Market

操作方法
Android Walker様にて動画付きの操作方法が公開されました。

2011年11月12日土曜日

[Android] OSをバージョンアップするとアプリが動かなくなる理由

The reason for being unable to run applications on recent OS

古いOSで動いていたアプリケーションが新しいOSで動かなくなる理由を調べてみました。
最近になってAndroidリファレンスを見たら、過去によく使われたメソッドや定数がdeprecated(非推奨)にされていました。

たとえばServiceクラスのonStartは現在deprecatedにされ、API Level 5(Android2.0)以降に実装されたonStartCommandが追加されています。

1.6以前
2.0以降
onStart
動作する
非推奨
onStartCommand
実装されてない
動作する
Android1.6にも対応させるにはonStartを使いたいところです。
ところがAndroid2.2ではonStartメソッドが呼ばれないことがあるのです。
この挙動の違いが古いOSで動いていたアプリケーションが新しいOSで動かなくなる理由の一つです。

Serviceクラスの他、Intent・Context・Activity・SQLiteDatabase・MotionEventのように頻繁に使うクラスもdeprecatedが散見されます。
deprecatedのメソッドや定数を使ったアプリはOSのバージョンごとに動作が異なる可能性があります。
市販の書籍を参考にしている開発者は要注意です。書籍で紹介されている方法がdeprecatedの可能性があります。

VisualBasic5.0で作られたフリーウェアがWindows7で動いてる姿を見るとOSは互換性を維持することが当たり前に思えるのですが、Androidは違います。
度の端末でも動作するアプリケーションを作るには、アプリをメンテナンスし続ける必要がありそうです。

次回は1.6と2.xに両対応のアプリケーションのサンプルを公開する予定です。→公開しました

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

2011年11月4日金曜日

[Application] お天気ロイド v1.08公開

Androidアプリケーション お天気ロイド v1.08 を公開しました。
お天気ロイドは最新のWeather Hacks(気象データ配信サービス)をホーム画面に表示してくれるアプリケーションです。

v1.08での変更点
Android2.xでの安定性向上

ダウンロードはこちら
※ダウンロード前にエンドユーザーライセンス契約を必ずお読みください。
https://market.android.com/details?id=com.arimasu.mtk.AndroidApp.OtenkiWidget Android Market

操作方法
Android Walker様にて動画付きの操作方法が公開されました。

2011年11月3日木曜日

[Application] Wi-Fi sync Screen v1.02公開

Androidアプリケーション Wi-Fi sync Screen v1.02 を公開しました。
"Wi-Fi sync Screen"はWi-Fiスリープを解除した端末のバッテリーを長持ちさせるアプリケーションです。
Android端末をWi-Fi接続すると再起動してしまうAirStationなどをお使いの方におすすめです。
詳細はこちら

v1.02での変更点
Android2.xでの安定性向上

ダウンロードはこちら
※ダウンロード前にエンドユーザーライセンス契約(EULA)を必ずお読みください。
https://market.android.com/details?id=jp.fujiu.AndroidApp.WifiSyncScreen Android Market

◆トラブルシューティング◆
Wi-Fi Sync Screenを設定してもAirstationが再起動する(Wi-Fiルーターが誤動作する)場合は、Android端末のWi-Fiのスリープを解除してください。