iアプリ(機能の拡張)
2008 年 11 月 16 日 – 7:57 PMiアプリ(EclipseでHelloWorld作成)でiアプリのサンプルを作成しました。前回は文字列の表示だけだったので、あまり面白いアプリとは呼べません。そこで今回はもう少しアプリらしいものを作るための拡張を行います。拡張する内容は以下の通りです。
- イベント処理(ボタンの入力に対する処理)
- タイマー(アニメーション)
- 画像表示
- 音楽再生
これだけできるようになると、少しはアプリと呼べるものができるようになります。それでは拡張を行っていきます。
イベント処理
まずはボタンの入力に対する処理を追加します。 ボタンのイベントに対する処理はprocessEventというメソッドで実現します。
ここでのポイントは
- processEvent内で十字ボタンイベントによる描画座標(x, y)の更新
- getWidth(), getHeight()による描画サイズの取得
- clearRect()による描画エリアのクリア
- repaint()による文字列の再描画
となります。描画のクリアをするためにあらかじめ画面のサイズを取得し、画面を一度クリアします。その後、文字列の描画位置を更新し再描画することで文字の描画位置の更新します。
タイマー(アニメーション)
先ほどのイベント処理だとボタンを一回押した時のイベントしか取得できず、何度もボタンを押しなおす必要があります。ボタンを押しっぱなしにした状態で描画位置を変更させるためにはタイマー機能を利用します。タイマー機能は、一定時間毎のイベントを処理することでアニメーションやゲームのスクロールなど色々と応用することもできます。
タイマー機能を実現するには、ShortTimerというクラスを使用します。このクラスは一定時間毎にタイマーイベントを発生させます。
ここでのポイントは
- タイマーを定義するためのstart()メソッドの追加
- メインクラス”HelloWorld”からのstart()メソッドの呼び出し
- processEvent()内でのタイマー処理の追加
となります。タイマーから発生されたイベントをprocessEventで受け取り一定時間毎の処理を定義しておくことでアニメーションなどの機能を実現できます。今回はHelloWorldの文字列の描画位置を一定時間毎に移動させることで文字列が動いているようにしています。
画像表示
続いて画像の描画を行います。画像の描画には、MediaImage、Imageという2つのクラスを使用します。また、表示するImage(gifファイル)をあらかじめresフォルダに保存しておく必要があります。
ここでのポイントは
- MediaImage.getImage()による画像の読み込み
- MediaImageのuse()による画像の使用宣言
- drawImage()による画像の表示
- 読み込み時のtrycatchによるエラー処理
- 終了時の解放処理
となります。gifファイルはプロジェクトにあるresファルダ内に保存しておくようにしてください(ここにおいて置かないとimageを参照した時点でプログラムが落ちます)。
画像の表示の際に、画像を画面中央に表示するため画像サイズを取得するようにしています。また、KEY_SOFT_2ボタンを押したときに終了するようイベントを追加しました。
音楽再生
音楽の再生も画像表示の処理とほとんど同様の手順で実現できます。音楽の再生にはMediaSound、AudioPresenterという2つのクラスを使用します。音楽の再生にはmldと呼ばれるドコモ専用の音楽ファイルを使用します。このファイルもあらかじめresフォルダに保存しておく必要があります。
ここでのポイントは
- MediaManager.getSound()による音楽データの読み込み
- mediaSoundのuse()による音楽データの使用宣言
- AudioPresenter.getAudioPresenter()によるAudioPresenterの取得
- AudioPresenterのsetSound()による使用宣言
- AudioPresenterのplay()による音楽再生
となります。また、画像と同様エラー処理も実施します。音楽はstart()時点で自動的に演奏されるようにしています。また数字の1を押した際に再生し直すようにイベントを追加しました。
アプリの公開
アプリを作成したら実際に公開してみます。プロジェクトのbinフォルダの下にjarファイル、jamファイル、htmlファイルができているのでこの3つのファイルをサーバーにUPします。UPしたhtmlファイルを携帯から見に行けば作成したiアプリのウンロードが可能です。
今まで行った拡張をまとめたものをアプリとして作成しました。以下のQRコードを見に行くとiアプリをダウンロードできます。また作成したプロジェクトのzipも置いてあります(F706iにて動作確認)。

画像、音楽は以下のサイトからお借りしました(もし問題がある際は削除しますのでご連絡ください)。
以上でiアプリの拡張が完了しました。iアプリの作成も一通りやってみるとそれほど難しくないですね。ただ、本格的なアプリの作成を考えるとデータサイズやプログラムの制約が多く、また機種依存の処理なども考慮しなくてはならないので面倒ではあります。
しかも、auやソフトバンクのアプリとは全く互換性がないので(泣)、全キャリア対応を考えると頭の痛いことになります。今のところ、個人的な趣味アプリを作成する程度しかできませんね。
今後、googleのAndroidなど開発環境が普及していくことで互換性の問題も変わっていくかもしれません。そうなれば個人による携帯アプリの開発も普及していくかもしれません。
<参考>