Android プログラミング【 効果音 】~ ボタンで再生 ~

Android 開発 効果音 768

効果音(10秒以内の短い音)を鳴らす動画です。
途中難易度の高いところもありますが、結論「音を鳴らす」だけならコピペでけっこう行けます。

再生の流れ

プロジェクト、カンパニードメイン、パッケージネームを同じにするとコピペエラーが減ります。

Application name TestSound
Company Domain test.com
Package name com.test.testsound

Android 開発 効果音 新規

効果音を素材サイトからダウンロードします。
効果音ラボ

効果音をAndroid Studioに組み込みます。
Android 開発 効果音 効果音の保存2

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.test.testsound.MainActivity">

    <Button
        android:onClick="onA"
        android:text="a"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <Button
        android:onClick="onB"
        android:text="b"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>
package com.test.testsound;

import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.SoundPool;
import android.os.Build;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;

public class MainActivity extends AppCompatActivity {

    // ① 準備(コンポを部屋に置く・コピペOK)
    SoundPool soundPool;    // 効果音を鳴らす本体(コンポ)
    int mp3a;          // 効果音データ(mp3)
    int mp3b;          // 効果音データ(mp3)


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // ② 初期化(電源を入れる・コピペOK)
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
            soundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0);
        } else {
            AudioAttributes attr = new AudioAttributes.Builder()
                    .setUsage(AudioAttributes.USAGE_MEDIA)
                    .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                    .build();
            soundPool = new SoundPool.Builder()
                    .setAudioAttributes(attr)
                    .setMaxStreams(5)
                    .build();
        }

        // ③ 読込処理(CDを入れる)
        mp3a = soundPool.load(this, R.raw.a, 1);
        mp3b = soundPool.load(this, R.raw.b, 1);
    }


    public void onA(View v){
        // ④ 再生処理(再生ボタン)
        soundPool.play(mp3a,1f , 1f, 0, 0, 1f);
    }

    public void onB(View v){
        // ④ 再生処理 (再生ボタン)
        soundPool.play(mp3b,1f , 1f, 0, 0, 1f);
    }
}

soundPool図解