ktsspprojectのToBadGoのどちらかというと技術ブログ -2ページ目

ktsspprojectのToBadGoのどちらかというと技術ブログ

うれしいこと、悲しいこと、たのしいこと、すばらしいこと
日々起こったことと

Androidの開発メモとしていろいろ書いていこうと思います。
簡単にこんな自分にもわかるよに簡単な言葉で書きます。

Androidでサウンドが流れるアプリ

サウンドの実装


サウンドにはSoundPoolとMediaPlayerがあります。
それぞれの使い勝手としては

SoundPool
・比較的再生時間が短い音声ファイル
・ゲームのSEや効果音など
・ボタンクリックやエフェクトに合わせたSEや効果音など

MediaPlayer
・比較的再生時間が長い音声ファイル
・オーディオプレイヤーなどのアプリケーション
・ゲームなどのBGM
・URL指定によるストリーミング再生


今回はSoundPoolを使用しました。
音声ファイルは、Androidアプリを作っているにもかかわらず、
iPhoneのボイスメモで録音しメールで投げたものを使用しちゃいました。
おそらく何でもいいのですが、対応ファイルを挙げると
・3GPP(.3PP)
・MPEG-4(.mpまたは.m4a)
・MP3(.mp3)
・Ogg(.ogg)
・WAVE(.wav)
・MIDI(.midなど)
です。

準備としては先ほどiPhoneで録音しメールで投げたものをres/rawディレクトリ
にぶち込みます。
そうしたらメインのアクティビティで次のようにします。やっていることは自作
のSoundクラスを作って
第一引数に音声ファイルを格納した配列の番号と第二引数に再生時の速度を指定
しdoplay()というメソッドを呼び出したいます。
//////////////////////////////////////////
Sound sound;
private Float speed;
private int soundCount;

sound = new Sound(this);
speed = 2.0F;
soundCount = 0;
sound.doplay(soundCount, speed);

//////////////////////////////////////////


では、Soundクラスはどういったものなのかというと、

//////////////////////////////////////////
package jp.co.kts;

import android.content.Context;
import android.media.AudioManager;
import android.media.SoundPool;

public class Sound {

// プールする音源の最大数
private static final int MAX_SOUNDS_COUNT = 5;

// サウンドプールの定義
SoundPool soundPool;
// サウンド格納配列
int[] sounds = new int[MAX_SOUNDS_COUNT];

public Sound(Context context) {
// インスタンス生成
// 第一引数 プールする音源の最大数
// 第二引数 ストリームのタイプ通jy等はSTREAM_MUSICでOK
// 第三引数 サンプリングレートのクオリティ(デフォルトは0)
soundPool = new SoundPool(MAX_SOUNDS_COUNT, AudioManager.STREAM_MUSIC,0);

// 音声ファイルのロード
// 第一引数 コンテキスト
// 第二引数 リソースID
// 第三引数 プライオリティ(今は何も効果がないが将来の互換性のために1にする。)
sounds[0] = soundPool.load(context, R.raw.onsei1, 1);
sounds[1] = soundPool.load(context, R.raw.onsei2, 1);
sounds[2] = soundPool.load(context,R.raw.onsei3,1);
sounds[3]= soundPool.load(context,R.raw.onsei4,1);

}

public void doplay(int soundCount,Float speed) {

// 再生します
// 第一引数 サウンドID(ロードメソッドの戻り値を使う。)
// 第二引数 左スピーカのボリューム(0.0から1.0の間)
// 第三引数 →スピーカのボリューム(0.0から1.0の間)
// 第四引数 プライオリティ(0は優先度が低い?とりあえず0にしておく)
// 第五引数 ループ回数(0ならループなし、-1なら無限ループ)
// 第六引数 再生速度(0.5から2.0の値で0.5なら半分のスピード2.0は倍速)
soundPool.play(sounds[soundCount], 1.0F, 1.0F, 0, 0, speed);

}

}


//////////////////////////////////////////
こんな感じです。やっていることはコンストラクタでSoundPoolを作り、配列に
音声ファイルを格納しています。
doPlay()でsoundPool.play()を呼び出してあげています。


やっていることは単純で簡単。
以上でできるはずなので皆さんぜひやってみてください。
GW最終日+1

巷は昨日でGW終了!

しかし、私は今日有休を取りました。
1日2日の中二日で休みを取る人は大勢いる。
それもまたいいでしょう。

しかーし、今日休みを取る事で何となく得な気分がしています。
人が働いているときに休みなんて最高だぜ。

今、DVD見ながら金麦呑んでまーす。

$ktsspprojectのToBadGoのどちらかというと技術ブログ

ふーサイコー

夏休みもこんな感じで取ろうかな。

何となく、賢い休みの取り方でした。
疲れた肩、首に

こんなもんかってしまいました。
齢23歳 

$ktsspprojectのToBadGoのどちらかというと技術ブログ


まさかこんな物にお世話になるとは・・・
100均でかった、マッサージグッツ

チョー気持ちー!

次の日とても楽です。
是非皆さんも。