140103訓練

投稿者: | 2014年1月3日

新年一発目の訓練!
三が日だけどバンバンコード書くぜ!
っていうか年末年始家でほとんどPCに向かってたZE!!

では早速新年初訓練アプリ。

サブ画面で入力させたテキストをメイン画面に表示するアプリ

一発目なのでまるっとメイン&サブのコード載せちゃう。

メイン

サブ

メインで最初に表示されている文字列の時はその文字列がヒントになるように条件分岐。一度でも入力したら相互に文字列を引き継ぐ。

音を出す

音声ファイルはwav,ogg推奨(一部端末ではmp3に不具合があるらしい)
resにrawフォルダを作ってそこに鳴らせたい音を格納する。

レイアウト

soundtest
ボタンを押すと音が出る、シークバーで音量調節が出来る仕様。

コード

SoundPool

オーディオリソースを管理、再生するクラス。
一つのインスタンスで複数の音声を再生できる。
再生時間の短い効果音などに向いている。
BGM等の長い音を流すならMediaPlayerクラスを使うといいらしい。
コンストラクタは下記の通り。

public SoundPool(int maxStreams, int streamType, int srcQuality)
  • 第一引数:ロードするファイルの最大数(maxStreams)
  • 第二引数:ストリームのタイプ(streamType)
    通常はSTREAM_MUSIC(音楽再生用ストリーム)を利用する。
    その他にSTREAM_ALARM,STREAM_DTMF,STREAM_NOTIFICATION,STREAM_RING,STREAM_SYSTEM,STREAM_VOICE_CALLがある。
  • 第三引数:サンプリングレートのクオリティ(リファレンスによると現在は効果が無いとのことなのでデフォルト値として0を使用するよう勧告されている)

setOnLoadCompleteListener

public void setOnLoadCompleteListener(OnLoadCompleteListener listener)

ロード完了通知を受け取る為のリスナー。
抽象メソッドonLoadCompleteはロード完了時に呼び出される。
今回はToastを呼び出している。onLoadCompleteの引数が気になる方はコチラで。

load

public int load(Context context, int resId, int priority)

音楽ファイルをロードするメソッド。

  • 第一引数:context
  • 第二引数:リソースID(リファレンスにも書いてあるが拡張子が削除されることに注意する example.wavの場合はR.raw.example)
  • 第三引数:音の優先順位。現在は効果が無いが将来の互換性のために1を指定しておくようにリファレンスに書いてある。

再生時に戻り値を指定する為、sound_idに代入している。
今回は1ファイルだけしかロードしていないので1。

play

public final int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)

音楽を再生するメソッド。

  • 第一引数:loadによって返された戻り値
  • 第二引数:左の音量(範囲:0.0~1.0)
  • 第三引数:右の音量(範囲は左に同じ)
  • 第四引数:優先度(0が最も高い)
  • 第五引数:ループ(0はループしない、1は無限ループ)
  • 第六引数:再生速度(範囲:0.5~2.0,1.0が等倍)

release

SoundPoolを解放するメソッド。
SoundPoolオブジェクトに使用されているメモリとネイティブリソースを全て解放する。
ライフサイクル的にOnPauseで行うのが好ましいらしい。

いちいち突っ込んで調べるのって労力いるね・・・・
今後は詳細はしょるかも・・・・


コメント

Loading Facebook Comments ...

コメントを残す

No Trackbacks.