• 検索結果がありません。

Android: タッチ式音楽ゲーム 情報物理研究室岩井悠樹

N/A
N/A
Protected

Academic year: 2021

シェア "Android: タッチ式音楽ゲーム 情報物理研究室岩井悠樹"

Copied!
30
0
0

読み込み中.... (全文を見る)

全文

(1)

Android:タッチ式音楽ゲーム

情報物理研究室

岩井 悠樹

(2)

目次

1. はじめに

2. 開発環境構築

2.1. Java Development Kit(JDK)6.0

2.2. Eclipse 3.5(統合開発環境)

2.3. Android Software Development Kit(SDK)

2.4 Android Development Tool(ADT)

2.5.環境設定

3. 技術要素

3.1. Dalvik仮想マシン

3.2. Androidのアーキテクチャ

3.3. Androidアプリケーションの構成

4. アプリケーション開発

5. おわりに

6. 参考文献

7. プログラムソース

(3)

1 はじめに

本研究では,Android(アンドロイド)を用いてタッチ式音楽ゲームのアプリケーションを開発した. 私が Android 端末でアプリケーション開発を始めた理由は,元々携帯電話のアプリが好きでよくやっ ていた.その過程で面白いアプリケーションの構想を思いつくことがよくあり,携帯電話のアプリケ ーション開発に大変興味があったためである. 図1. 日本国内スマートフォン・各世代内浸透率 初めは携帯電話のアプリケーションを開発する予定だったが,図1の日本国内のスマートフォン各世 代内浸透率のグラフのように所有者の拡大著しく2011年6月の時点では全体の31.2%,9月の時点では 41.3%の人がスマートフォンを所持しており,今後も普及してゆくことが予想され,タッチ機能や音 声認識機能,位置情報識別機能など,携帯電話よりもより優れた機能を持っているスマートフォンの アプリケーションを作ろうと考えた. そしてスマートフォンの中でも開発キットの充実や,利用者が世界中の個人・企業の開発者が開発し たアプリケーションを入手することができる AndroidMarket など,開発環境とアプリ公開環境が共に 充実している Android に魅力を感じ,Android アプリケーションを作ることにした.

(4)

2 開発環境構築

図2. 開発環境構成図

Android アプリケーションの開発は,プログラミング言語として JAVA を利用する.開発ツールとし ては以下を利用した.

2.1 Java Development Kit(JDK)6.0

Java Development Kit(JDK)とはJavaアプリケーションを開発する上で必要となる開発キッ トであり,Android SDK及びEclipseの動作にJDKが必要になる. JDKには以下のものが含まれている. ・開発ツール bin サブディレクトリに格納されており,JavaTMプログラミング言語で記述されたプログラムの開発, 実行,デバッグ,およびドキュメント作成を支援するツールとユーティリティーである.

・Runtime Environment

jre サブディレクトリに格納されおり,JDK で使用される Java Runtime Environment (JRETM) 実行

環境の実装である. JRE には,JavaTM 仮想マシン,クラスライブラリ,および JavaTM プログラミン

グ言語で記述されたプログラムの実行をサポートするその他のファイルが含まれている.

・追加ライブラリ

lib サブディレクトリに格納されている.開発ツールに必要な追加のクラスライブラリとサポート ファイルである. ・デモアプレットとデモアプリケーション demo サブディレクトリに格納されており,JavaTM プラットフォーム用のプログラミング例で,ソー

スコードが含まれている. Swing やその他の JavaTM Foundation Classes,および JavaTM Platform

(5)

・サンプルコード

sample サブディレクトリに格納されている. 特定の Java API のプログラミングのソースコード 付きサンプルである.

・C ヘッダーファイル

include サブディレクトリに格納されている. Java Native Interface,JVMTM Tool Interface,お

よびその他の JavaTM Platform の機能を使用するネイティブコードプログラミングをサポートするヘ

ッダーファイルである. ・ソースコード

Src.zip に格納されている. Java コア API を構成するすべてのクラスに対する JavaTMプログラミ

ング言語のソースファイルである.このソースコードは情報提供のみを目的としており,開発者が JavaTM プログラミング言語を理解し活用するのに役立つようになっている. 2011年時点では,JDK7がリリースされているが,まだ問題があり本研究では JDK6を使用した. JDK6はサン・マイクロシステムズ社のサイトからダウンロードする. ダウンロード方法 http://java.sun.com/javase/ja/6/download.html へアクセス 図3.JDK のダウンロード1 図3の赤丸をクリックする.

(6)

図4.JDK のダウンロード2

赤枠の部分で Windows を選択し(環境にあったものを選択),同意にチェックを入れ Continue を クリックしダウンロードする.

(7)

2.2 Android Software Development Kit (SDK)

SDK とは Android アプリケーションを作成するための開発キットである.この Android SDK に含まれ る図3のようなエミュレーターを使用して動作を確認する. ダウンロード方法 http://developer.android.com/sdk/index.html へアクセス 図5.Android SDK のダウンロード 赤枠からダウンロードする.

(8)

2.3 Eclipse3.7(総合開発環境)

オープンソースの統合ソフトウェア開発環境(IDE)の一つである.Java 開発者を中心に急速に普及し ており,ソフトウェア開発の共通プラットフォームの標準になると予想されている. IBM 社が1999年から進めていた開発ツール研究プロジェクトの研究成果をソフトウェアの形にしたも のであり,2001年11月にオープンソース化され,誰でも無償で入手・改変・再配布できるようになっ た. Eclipse は単なる開発ツールではなく,開発ツールの「共通プラットフォーム」と呼ばれる.これは, 機能をプラグインの形であとから自由に追加できるためであり,UML 関連ツールやテストツール,各種 のプログラミング言語などが用意されており,その数は数百種類に及んでいる. 大手ソフトウェアベンダーの中には,自社の開発ツール製品に Eclipse を組み込み,Eclipse に追加 する形で自社独自部分を提供するという形の製品をリリースするところも現れている. ダウンロード方法 http://www.eclipse.org/downloads/へアクセス 図6.Eclipse のダウンロード 図6の赤枠からダウンロードする.

(9)

2.4 Android Development Tool(ADT)

ADT とは Eclipse に Android アプリケーションの開発機能を追加するための必須プラグインであり, 上記の SDK を使用可能にするものである. ADT 導入方法 「Eclipse 起動」→「ヘルプ」→「新規ソフトウェアのインストール」 図7.ADT 導入方法1 「作業対象」に次の URL を入力し,追加ボタンをクリックする. [URL:https://dl-ssl.google.com/android/eclipse/] ※Android Developers では https で作成しているが,http でも可能である.

(10)

図8.ADT 導入方法2 任意の名前を入力し,OK ボタンをクリックする.

(11)

検索された項目にチェックをつけ,次へボタンをクリックする. ↓ インストールする項目を確認し,次へボタンをクリックする. ↓ 使用条件を読み同意する場合は「使用条件の条項に同意します」を選択する. ↓ 完了ボタンをクリックすると,インストールが開始され再起動が促されるので,再起動を行う. これで Android 開発プラグインの導入は完了である.

2.5 環境設定

Eclipse に AndroidSDK のパスを設定

「ウィンドウ」→「設定」→「Android」

図10.AndroidSDK へのパス設定

(12)

「SDK ロケーション」に Android の SDK のパスを設定し,OK ボタンをクリックする. Java の設定 Eclipse の Java の設定を確認する. 「ウィンドウ」→「設定」→「Java」→「インストール済みの JRE」 JDK 6になっていなければ,追加ボタンをクリックする. 図11.Java の設定 JRE のホーム・ディレクトリーに JDK 6のパスを入力し,OK ボタンをクリックする.

(13)

図12.Java の設定2 JDK 6にチェックをつけ,OK ボタンをクリックする. ※「ファイル」→「新規」で Android が表示されるようにする 「ウィンドウ」→「パースペクティブのカスタマイズ」 「Android」にチェックをつけ,OK ボタンをクリックする 以上で Android 開発環境構築が完了となる.

(14)

3 技術要素

3.1 Android アプリケーションの構成 Android アプリケーションは,以下の4つの要素の1個以上の組み合わせで構成される. ・アクティビティ ユーザインターフェースの提供やイベント処理など,ユーザとアプリケーション間のやり取りを仲介 するオブジェクトである.本研究ではこのアクティビティのみを利用している. 図5. アクティビティーのフローチャート ・ブロードキャストレシーバ 他のアプリケーションや Android のシステムからのメッセージを受信し,各種処理をおこなうオブジェクトである. ・サービス 画面表示とは独立してバックグラウンドで処理を行うオブジェクトである. ・コンテンツプロバイダ データベースのデータを他のアプリケーションに提供するオブジェクトである.

(15)

3.2 Dalvik(ダルビック)仮想マシン

図6. Dalvik マシンの構成 Java の実行環境には携帯端末向けの JavaME がある.

JavaME は NTT ドコモのiアプリケーションやソフトバンクの S!アプリケーションなど携帯アプリケ ーションの Java に利用されている,一方 Android は独自の仮想マシンである Dalvik 仮想マシンを利 用する.

Dalvik 仮想マシンは,低メモリ環境に対して最適化されており,OS によるプロセス間の分離,メモ リ管理,スレッドのサポートを用いて,複数の仮想マシンインスタンスが同時に動作できるように設 計されている.

Android では,ソースコードを Dalvik バイトコードと呼ばれる中間言語に変換し,実行時に Dalvik 仮想マシンによって,ベースとなる Linux で実行可能な形式に変換して実行するという方法をとって いる.

Dalvik VM は最小メモリのために最適化された Dalvik 実行ファイル(.dex)を実行する.

Dalvik VM はベースレジスタであり,Java 言語コンパイラでコンパイルされ,dx ツールによって.dex フォーマットに変換されたクラスを実行する.

(16)

3.3 Android のアーキテクチャ(基本構造)

Android のアーキテクチャは図1のように多くのコンポーネントにより構成されている.コンポーネ ントには大きく以下の5つレイヤーに分類される. 図7. Android のアーキテクチャ ・アプリケーション・ソフトウェア Android スマートフォン には,メールクライアント,SMS プログラム,カレンダー,地図,ブラウ ザ,連絡先などのコアアプリケーションのセットが付属している.アプリケーションはすべて Java プ ログラミング言語で作成されている. ・アプリケーションフレームワーク 開発者フレームワーク API にフルアクセスが可能である.アプリケーションアーキテクチャは,コン ポーネントの再利用を簡素化するように設計されている. ・ライブラリ 様々なコンポーネントで C/C++ライブラリが利用されているため,Android には C/C++ライブラリが 含まれている.これらの機能は Android のアプリケーションフレームワークを通して,開発者に提供 されている. ・ランタイム Android には Java 言語のコアライブラリの大部分の機能を提供するコアライブラリが含まれている. 全ての Android アプリケーションは独自のプロセスとして動き,このプロセスは Dalvik 仮想マシン の独自のインスタンスとなっている.Dalvik は複数の仮想マシンを効果的に動作できるように書かれ

(17)

ている. ・Linux カーネル Android はセキュリティー,メモリ管理,プロセス管理,ネットワークスタック,そしてドライバー モデルなどのコアシステムサービスを Linux のバージョン2.6に依存している.カーネルは,ハード ウェアとソフトウェアスタック間の抽象レイヤーの役目も務めている.

4 アプリケーション開発

本研究で開発する Android アプリケーションはタッチ式音楽ゲームである. 次々に出てくるボタンをシューティングゲーム感覚でタッチしていき,ボタンをタッチするたびに音 が鳴り,それを繰り返すことによって1つのメロディーになる. 初めは何の曲かわからないであろうがタッチが成功していくにつれ,何かを思い出した時のような感 覚になることができる.そんなアプリケーションがあれば面白いだろうと考えタッチ式音楽ゲームの 開発に取り組んだ. 機能は下記の通りである. ・ボタンには「ド」などの曲に対応した0.1秒の1音階 wave ファイルが付属されておりタッチするこ とでボタンは消滅し音が鳴る ・ボタンの出現位置,大きさはランダムである ・ボタンは曲にあわせて次々に出現し,0.5秒タッチされないと消える ・右上に点数が表示されタッチが成功するにつれ増えていく 点数の計算は現時点の点数に100+タッチが連続で成功した数を加算していく Android で音響データを再生する方法は大きく2つあり,自分で周波数を設定し再生する方法とリソ ースファイルから再生する方法がある. 本研究ではリソースファイルから再生する方法を使用した. Android の再生プログラムには MediaPlayer を利用し,比較的簡単に組み込むことができる. まずリソースファイルである res/raw フォルダを作成しそこへ1音階 wave ファイルを付属する. android.media パッケージを import し, 図8.再生処理 図8のように記述することで再生プログラムができる タッチイベント処理には,絵をタッチしたら音が鳴る,ということも可能だが本研ユーザーがクリ ックすることによって何らかのアクションを行うトリガーとなるコンポーネントタイプのビュ ーである Button を利用した.

(18)

「setOnClickListener」メソッドを使って対象となるボタンがイベントを受け取れるように 設定する.この時「setOnClickListener」の引数には「OnClickListener」インターフェース を実装したクラスのオブジェクトを指定するが,自分自身のクラスで「 OnClickListener」イ ンターフェースを実装しているので「this」を指定した. Android アプリケーションのレイアウトは基本的には図9のように xml で記述の Layout マネージャ ーを利用するのが一般的だが,本アプリケーションではボタンをランダムな位置に配置したいので, 乱数を発生させその乱数を絶対座標として記述する必要がある.そのため今回は Java で記述した. 通常 Java でレイアウトを記述する際には横または縦から順に配置する LinerLayout やテーブル形式 で配置する TableLayout などを使うのが一般的だが,座標指定することができず,今回は絶対座標指 定をするためのレイアウトとして AbsoluteLayout を使用した. 記述方法は図10の党利である. 図9. LineraLayout を使って記述 図10. AbsoluteLayout を使って記述 Android の場合,デバイスごとに大きさが違うので絶対位置で指定することは推奨されておらず AbsoluteLayout は二重線で消されて表示される.

(19)

5 おわりに 図11. 実行画面 今回は自分のスケジューリングの失敗で,図11のようなランダムな位置にランダムな大きさで音が鳴るボタンが 表示される,というところまでしか完成していない. 本研究を通して一番強く感じたことは余裕のあるスケジューリングと完成させる意志の必要性に気づくことが出 来たことである.しかし本研究を通して Java や Android アプリケーションについてより理解できたと思う.この研 究はこれで終わりにせず今後も完成させられるように開発に励みたいと思う. 6 参考文献 [1]布留川 栄一 「Android プログラミングバイブル」 ソシム(2011) [2]中西 葵 「Android SDK 逆引きハンドブック」 シーアンドアール研究所(2011) [3]安生 真 「初歩からわかる Android 最新プログラミング」 インプレスジャパン(2011) [4]publicvoidstaticmain:/http://magpad.jugem.jp/ [5]TeckFerm:/http://www.techfirm.co.jp/lab/android/outline.html/

(20)

7.プログラムソース package iwai.jp; import java.util.Random; import android.app.Activity; import android.graphics.Color; import android.media.MediaPlayer; import android.os.Bundle; import android.view.Window; import android.widget.AbsoluteLayout; import android.widget.Button; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.view.MotionEvent; import java.io.IOException; import android.media.MediaPlayer.OnCompletionListener; import android.view.View.OnClickListener; import android.view.View; //アブソリュートレイアウト @SuppressWarnings("deprecation")

public class LayActivity extends Activity implements OnClickListener, OnCompletionListener{

//アプリの初期化

private MediaPlayer mp0 = null;

private MediaPlayer mp1 = null;

private MediaPlayer mp2 = null;

private MediaPlayer mp3 = null;

private MediaPlayer mp4 = null;

private MediaPlayer mp5 = null;

private MediaPlayer mp6 = null;

private MediaPlayer mp7 = null;

private MediaPlayer mp8 = null;

private MediaPlayer mp9 = null;

private MediaPlayer mp10 = null;

private MediaPlayer mp11 = null;

private MediaPlayer mp12 = null;

private MediaPlayer mp13 = null;

private MediaPlayer mp14 = null;

private View v;

private Button button0;

private Button button1;

private Button button2;

private Button button3;

private Button button4;

private Button button5;

private Button button6;

private Button button7;

private Button button8;

private Button button9;

private Button button10;

private Button button11;

(21)

private Button button13;

private Button button14;

//ボタンの大きさ、位置を決定する乱数を発生

Random rand = new Random();

int dl = rand.nextInt(100);

Random rand1 = new Random();

int dw = rand.nextInt(100);

Random rand2 = new Random();

int dt = rand.nextInt(400);

Random rand3 = new Random();

int dy = rand.nextInt(700);

Random rand4 = new Random();

int rl = rand.nextInt(100);

Random rand5 = new Random();

int rw = rand.nextInt(100);

Random rand6 = new Random();

int rt = rand.nextInt(400);

Random rand7 = new Random();

int ry = rand.nextInt(700);

Random rand8 = new Random();

int ml = rand.nextInt(100);

Random rand9 = new Random();

int mw = rand.nextInt(100);

Random rand10 = new Random();

int mt = rand.nextInt(400);

Random rand11 = new Random();

int my = rand.nextInt(700);

Random rand12 = new Random();

int fl = rand.nextInt(100);

Random rand13 = new Random();

int fw = rand.nextInt(100);

Random rand14 = new Random();

int ft = rand.nextInt(400);

Random rand15 = new Random();

int fy = rand.nextInt(700);

Random rand16 = new Random();

int sl = rand.nextInt(100);

Random rand17 = new Random();

int sw = rand.nextInt(100);

Random rand18 = new Random();

int st = rand.nextInt(400);

Random rand19 = new Random();

int sy = rand.nextInt(700);

Random rand20 = new Random();

int ll = rand.nextInt(100);

Random rand21 = new Random();

int lw = rand.nextInt(100);

Random rand22 = new Random();

int lt = rand.nextInt(400);

Random rand23 = new Random();

int ly = rand.nextInt(700);

(22)

int cl = rand.nextInt(100);

Random rand25 = new Random();

int cw = rand.nextInt(100);

Random rand26 = new Random();

int ct = rand.nextInt(400);

Random rand27 = new Random();

int cy = rand.nextInt(700);

Random rand28 = new Random();

int d1l = rand.nextInt(100);

Random rand29 = new Random();

int d1w = rand.nextInt(100);

Random rand30 = new Random();

int d1t = rand.nextInt(400);

Random rand131 = new Random();

int d1y = rand.nextInt(700);

Random rand32 = new Random();

int r1l = rand.nextInt(100);

Random rand33 = new Random();

int r1w = rand.nextInt(100);

Random ran34 = new Random();

int r1t = rand.nextInt(400);

Random rand35 = new Random();

int r1y = rand.nextInt(700);

Random rand36 = new Random();

int m1l = rand.nextInt(100);

Random rand37 = new Random();

int m1w = rand.nextInt(100);

Random rand38 = new Random();

int m1t = rand.nextInt(400);

Random rand39 = new Random();

int m1y = rand.nextInt(700);

Random rand40 = new Random();

int f1l = rand.nextInt(100);

Random rand41 = new Random();

int f1w = rand.nextInt(100);

Random rand42 = new Random();

int f1t = rand.nextInt(400);

Random rand143 = new Random();

int f1y = rand.nextInt(700);

Random rand44 = new Random();

int s1l = rand.nextInt(100);

Random rand45 = new Random();

int s1w = rand.nextInt(100);

Random rand46 = new Random();

int s1t = rand.nextInt(400);

Random rand47 = new Random();

int s1y = rand.nextInt(700);

Random rand48 = new Random();

int l1l = rand.nextInt(100);

Random rand49 = new Random();

int l1w = rand.nextInt(100);

Random rand50 = new Random();

int l1t = rand.nextInt(400);

(23)

int l1y = rand.nextInt(700);

Random rand52 = new Random();

int c1l = rand.nextInt(100);

Random rand53 = new Random();

int c1w = rand.nextInt(100);

Random rand54 = new Random();

int c1t = rand.nextInt(400);

Random rand55 = new Random();

int c1y = rand.nextInt(700);

@Override

public void onCreate(Bundle bundle) { super.onCreate(bundle);

requestWindowFeature(Window.FEATURE_NO_TITLE);

//レイアウトの生成

AbsoluteLayout layout=new AbsoluteLayout(this);

layout.setBackgroundColor(Color.WHITE);

setContentView(layout);

//ボタン0の生成

Button button0=new Button(this); button0.setText("ド"); button0.setLayoutParams(new AbsoluteLayout.LayoutParams(dl+50 ,dw+50 , dt,dy)); layout.addView(button0); button0.setOnClickListener(this); //ボタン1の生成

Button button1=new Button(this); button1.setText("レ"); button1.setLayoutParams(new AbsoluteLayout.LayoutParams(rl+50 ,rw+50 , rt,ry)); layout.addView(button1); button1.setOnClickListener(this); //ボタン2の生成

Button button2=new Button(this); button2.setText("ミ"); button2.setLayoutParams(new AbsoluteLayout.LayoutParams(ml+50 ,mw+50 , mt,my)); layout.addView(button2); button2.setOnClickListener(this); //ボタン3の生成

Button button3=new Button(this); button3.setText("フ"); button3.setLayoutParams(new AbsoluteLayout.LayoutParams(fl+50 ,fw+50 , ft,fy)); layout.addView(button3); button3.setOnClickListener(this); //ボタン4の生成

(24)

button4.setText("ソ"); button4.setLayoutParams(new AbsoluteLayout.LayoutParams(sl+50 ,sw+50 , st,sy)); layout.addView(button4); button4.setOnClickListener(this); //ボタン5の生成

Button button5=new Button(this); button0.setText("ラ"); button0.setLayoutParams(new AbsoluteLayout.LayoutParams(dl+50 ,dw+50 , dt,dy)); layout.addView(button0); button0.setOnClickListener(this); //ボタン6の生成

Button button6=new Button(this); button1.setText("シ"); button1.setLayoutParams(new AbsoluteLayout.LayoutParams(rl+50 ,rw+50 , rt,ry)); layout.addView(button1); button1.setOnClickListener(this); //ボタン7の生成

Button button7=new Button(this); button2.setText("ド+1"); button2.setLayoutParams(new AbsoluteLayout.LayoutParams(ml+50 ,mw+50 , mt,my)); layout.addView(button2); button2.setOnClickListener(this); //ボタン8の生成

Button button8=new Button(this); button3.setText("レ+1"); button3.setLayoutParams(new AbsoluteLayout.LayoutParams(fl+50 ,fw+50 , ft,fy)); layout.addView(button3); button3.setOnClickListener(this); //ボタン9の生成

Button button9=new Button(this); button4.setText("ミ+1"); button4.setLayoutParams(new AbsoluteLayout.LayoutParams(sl+50 ,sw+50 , st,sy)); layout.addView(button4); button4.setOnClickListener(this); //ボタン10の生成

Button butto10=new Button(this); button0.setText("ファ+1"); button0.setLayoutParams(new AbsoluteLayout.LayoutParams(dl+50 ,dw+50 , dt,dy)); layout.addView(button0); button0.setOnClickListener(this); //ボタン11の生成

Button button11=new Button(this); button1.setText("ソ+1");

(25)

button1.setLayoutParams(new AbsoluteLayout.LayoutParams(rl+50 ,rw+50 , rt,ry)); layout.addView(button1); button1.setOnClickListener(this); //ボタン12の生成

Button button12=new Button(this); button2.setText("ラ+1"); button2.setLayoutParams(new AbsoluteLayout.LayoutParams(ml+50 ,mw+50 , mt,my)); layout.addView(button2); button2.setOnClickListener(this); //ボタン13の生成

Button button13=new Button(this); button3.setText("シ+1"); button3.setLayoutParams(new AbsoluteLayout.LayoutParams(fl+50 ,fw+50 , ft,fy)); layout.addView(button3); button3.setOnClickListener(this); //ボタン14の生成

Button button14=new Button(this); button4.setText("ド+1"); button4.setLayoutParams(new AbsoluteLayout.LayoutParams(sl+50 ,sw+50 , st,sy)); layout.addView(button4); button4.setOnClickListener(this); }

public void onStart() { //再生処理

super.onStart(); if(v == button0){ mp0 = MediaPlayer.create(this, R.raw.a4);//ファイルは res/raw/music.mp3 try { mp0.prepare(); } catch (Exception e) { e.printStackTrace(); } mp0.setOnCompletionListener(this); }

else if(v == button1){

mp1 = MediaPlayer.create(this, R.raw.b4);//ファイルは res/raw/music.mp3 try { mp1.prepare(); } catch (Exception e) { e.printStackTrace(); } mp1.setOnCompletionListener(this); }

else if(v == button2){

mp2 = MediaPlayer.create(this, R.raw.c4);//ファイルは

res/raw/music.mp3

(26)

mp2.prepare(); } catch (Exception e) { e.printStackTrace(); } mp2.setOnCompletionListener(this); }

else if(v == button3){

mp3 = MediaPlayer.create(this, R.raw.d4);//ファイルは res/raw/music.mp3 try { mp3.prepare(); } catch (Exception e) { e.printStackTrace(); } mp3.setOnCompletionListener(this); }

else if(v == button4){

mp4 = MediaPlayer.create(this, R.raw.e4);//ファイルは res/raw/music.mp3 try { mp4.prepare(); } catch (Exception e) { e.printStackTrace(); } mp4.setOnCompletionListener(this); }

else if(v == button5){

mp5 = MediaPlayer.create(this, R.raw.f4);//ファイルは res/raw/music.mp3 try { mp5.prepare(); } catch (Exception e) { e.printStackTrace(); } mp5.setOnCompletionListener(this); }

else if(v == button6){

mp6 = MediaPlayer.create(this, R.raw.g4);//ファイルは res/raw/music.mp3 try { mp6.prepare(); } catch (Exception e) { e.printStackTrace(); } mp6.setOnCompletionListener(this); }

else if(v == button7){

mp7 = MediaPlayer.create(this, R.raw.a5);//ファイルは res/raw/music.mp3 try { mp7.prepare(); } catch (Exception e) { e.printStackTrace(); } mp7.setOnCompletionListener(this); }

else if(v == button8){

mp8 = MediaPlayer.create(this, R.raw.b5);//ファイルは

(27)

try { mp8.prepare(); } catch (Exception e) { e.printStackTrace(); } mp8.setOnCompletionListener(this); }

else if(v == button9){

mp9 = MediaPlayer.create(this, R.raw.c5);//ファイルは res/raw/music.mp3 try { mp9.prepare(); } catch (Exception e) { e.printStackTrace(); } mp9.setOnCompletionListener(this); }

else if(v == button10){

mp10 = MediaPlayer.create(this, R.raw.d5);//ファイルは res/raw/music.mp3 try { mp10.prepare(); } catch (Exception e) { e.printStackTrace(); } mp10.setOnCompletionListener(this); }

else if(v == button11){

mp11 = MediaPlayer.create(this, R.raw.e5);//ファイルは res/raw/music.mp3 try { mp11.prepare(); } catch (Exception e) { e.printStackTrace(); } mp11.setOnCompletionListener(this); }

else if(v == button12){

mp12 = MediaPlayer.create(this, R.raw.f5);//ファイルは res/raw/music.mp3 try { mp12.prepare(); } catch (Exception e) { e.printStackTrace(); } mp12.setOnCompletionListener(this); }

else if(v == button13){

mp13 = MediaPlayer.create(this, R.raw.g5);//ファイルは res/raw/music.mp3 try { mp13.prepare(); } catch (Exception e) { e.printStackTrace(); } mp13.setOnCompletionListener(this); }

else if(v == button14){

(28)

res/raw/music.mp3 try { mp14.prepare(); } catch (Exception e) { e.printStackTrace(); } mp14.setOnCompletionListener(this); } }

public void onClick(View arg0) { //タッチイベント処理

if(arg0 == button0){ if (mp0.isPlaying()) { mp0.pause(); } else { mp0.seekTo(0); mp0.start(); } }

else if(arg0 == button1){

if (mp1.isPlaying()) { mp1.pause(); } else { mp1.seekTo(0); mp1.start(); } }

else if(arg0 == button2){

if (mp2.isPlaying()) { mp2.pause(); } else { mp2.seekTo(0); mp2.start(); } }

else if(arg0 == button3){

if (mp3.isPlaying()) { mp3.pause(); } else { mp3.seekTo(0); mp3.start(); } }

else if(arg0 == button4){

if (mp4.isPlaying()) { mp4.pause(); } else { mp4.seekTo(0); mp4.start(); } }

else if(arg0 == button5){

if (mp5.isPlaying()) { mp5.pause(); } else { mp5.seekTo(0); mp5.start(); }

(29)

}

else if(arg0 == button6){

if (mp6.isPlaying()) { mp6.pause(); } else { mp6.seekTo(0); mp6.start(); } }

else if(arg0 == button7){

if (mp7.isPlaying()) { mp7.pause(); } else { mp7.seekTo(0); mp7.start(); } }

else if(arg0 == button8){

if (mp8.isPlaying()) { mp8.pause(); } else { mp8.seekTo(0); mp8.start(); } }

else if(arg0 == button9){

if (mp9.isPlaying()) { mp9.pause(); } else { mp9.seekTo(0); mp9.start(); } }

else if(arg0 == button10){

if (mp10.isPlaying()) { mp10.pause(); } else { mp10.seekTo(0); mp10.start(); } }

else if(arg0 == button11){

if (mp11.isPlaying()) { mp11.pause(); } else { mp11.seekTo(0); mp11.start(); } }

else if(arg0 == button12){

if (mp12.isPlaying()) { mp12.pause(); } else { mp12.seekTo(0); mp12.start(); } }

else if(arg0 == button13){

(30)

mp13.pause(); } else { mp13.seekTo(0); mp13.start(); } }

else if(arg0 == button14){

if (mp14.isPlaying()) { mp14.pause(); } else { mp14.seekTo(0); mp14.start(); } } } @Override

public void onCompletion(MediaPlayer mp) {

// TODO 自動生成されたメソッド・スタブ

}

参照

関連したドキュメント

機械物理研究室では,光などの自然現象を 活用した高速・知的情報処理の創成を目指 した研究に取り組んでいます。応用物理学 会の「光

方法 理論的妥当性および先行研究の結果に基づいて,日常生活動作を構成する7動作領域より

 この論文の構成は次のようになっている。第2章では銅酸化物超伝導体に対する今までの研

これらの協働型のモビリティサービスの事例に関して は大井 1)

C =>/ 法において式 %3;( のように閾値を設定し て原音付加を行ない,雑音抑圧音声を聞いてみたところ あまり音質の改善がなかった.図 ;

       緒  爾来「レ線キモグラフィー」による心臓の基礎的研

節の構造を取ると主張している。 ( 14b )は T-ing 構文、 ( 14e )は TP 構文である が、 T-en 構文の例はあがっていない。 ( 14a

本研究は,地震時の構造物被害と良い対応のある震害指標を,構造物の疲労破壊の