毎週月曜日、火曜日は、「Windows 100%」にて『Androidプログラミング講座』として連載していた時の記事を公開します。
「Windows 100% 2月号」に寄稿した第2回目の原稿を公開します。
本日の更新では、残っていた「猫ピアノ」実装のロジック部分の開発について紹介します。
アニメーションのロジック実装はそれほど難しいものではありませんので、実装方法について是非この機会にみにつけて下さい。
それでは続きからどうぞ!
Sequence:03 ピアノのロジックを作成しよう
———————————————————-
●起動時の初期化処理を定義しよう
アニメーションの定義が終わったら、次はいよいよ本体のロジックを作成していきましょう。まずは、組み込むパッケージから定義しましょう。
(A)が、パッケージの定義部分です。このうち、(B)はアニメーションを実行するためのもの、(C)がMP3ファイルを再生させるためのパッケージとなります。
*組み込むパッケージ*
今回もクラスの先頭で、メディアプレイヤーの宣言を行っています。
綺麗なメロディを流すために、ここでは配列を利用して5つのメディアプレイヤーを宣言しています。
*メディアプレイヤーの宣言*
アプリケーション起動時に最初に呼び出されるメソッド「onCreate()」の中では、下図にあるように、3つの定義を行っています。
(A)は終了ボタンのイベントが拾えるように定義しています。(B)は、画面上に定義したアイコンをタッチしたとき、処理が行われるように、各アイコンに対してイベントリスナーを設定しています。
そして、(C)でアイコンをクリックした時に鳴るMP3ファイルをメディアプレイヤーで再生するオブジェクトとして作成しています。
オブジェクトの作成には、「MediaPlayer.create()」というメソッドを利用しています。
第一引数に「NekoPianoActivity」クラスのContextとして”this”を指定し、第二引数には再生させるMP3ファイルのリソースを指定しています。
*onCreate()での初期化処理*
●アニメーションとオーディオの再生処理を作ろう
今回の肝となるのが、アイコンが押された時の処理です。アイコンが押された時の処理は、「onClick()」のメソッドでイベントを取得し、実行します。
下図をご確認ください。
*ボタンが押された時の処理*
(A)の部分でアニメーションとオーディオ再生に必要な変数を宣言しています。
(B)(C)(D)の部分が、アイコンがクリックされた時に行われる処理になります。(B)は、クリックされたアイコンを識別し、対象のアイコンに応じてSequence:02で作成したアニメーションのリソースを指定し、再生するMP3のリソースを指定しています。
アニメーションのリソース指定には「AnimationUtils.loadAnimation()」というメソッドを使用し、第一引数に”this”、第二引数に再生するリソースを読み込んでいます。ここでは、例えばドの場合、”R.anim.move001″を読み込んでいます。
(C)では(B)で読み込まれたリソースを元に、「startAnimation()」で指定したアイコンのアニメーションを開始します。
最後に、(D)の部分でMP3のオーディオ再生を行います。まずはオーディオ再生の準備として、現在対象のオブジェクトでオーディオ再生が行われていないかを、「isPlaying()」で確認します。
現在再生中(true)であった場合は、まず「pause()」でオーディオ再生を一時停止状態にし、「seekTo()」で現在の再生位置を先頭に戻しています。「seekTo()」の引数が”0″なのは、先頭から0ミリ秒経過したところを先頭とするための指定、つまり、先頭を指定しているのです。
準備ができたら、「start()」を呼び出し、オーディオ再生を開始します。
*オーディオ再生の概要*
●後処理を忘れないようにしよう
最後にひとつ、MediaPlayerクラスを利用した場合には忘れてはいけないことがあります。
それは、アプリケーション終了時の、MP3ファイルから作成したオーディオオブジェクトの解放処理です。
終了処理として、図:3-3-001にあるように「onDestroy()」を定義し、(A)にあるようにメディアプレイヤーの終了処理を追加する必要があります。
(A)ではfor文を使用してメディアプレイヤーのオブジェクト個数分、ループを回しています。(ここでは5つのオブジェクトを登録しているので、5回ループする)その中では、(B)の「stop()」でメディアプレイヤーを停止し、(C)の「「release()」でオブジェクトの解放を行っています。
これで、「猫ピアノ」の完成です。難しかったでしょうか?次回はもっと面白いことに挑戦していきましょう。
*オーディオのオブジェクトの解放処理*
※本アプリのAndroid Market公開後、非常に稀ですが、オブジェクト解放の不正エラーを2度ほど受け取っています。今後、その原因が分かり次第、更新させていただきたいと思います。
これで、第2回も終了となりました。明日からは第3回の内容を公開していきます。
androidアプリ開発初心者のものです。
こちらの記事、大変参考になりました。
ありがとうございました。
Uさん。
コメントありがとうございます。合わせて、返信が遅くなりスミマセン!
もう少し参考になる記事をどんどん書いていこうと思いますので、宜しくお願い致します。