Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidアプリでバックグラウンドミュージックを再生する方法を徹底解説

この記事では、Androidアプリでバックグラウンド(裏側)で音楽を再生する方法を、サンプルコード付きでステップごとに解説します。ServiceクラスとMediaPlayerを組み合わせた、最も基本的なBGM再生の実装パターンをマスターしましょう。

実装の全体像

バックグラウンド再生は、Activityではなく「Service」上でMediaPlayerを動かすことで実現します。UIとは独立して音声を再生できるため、ユーザーが別の操作をしていても音楽が止まらずに流れ続けます。

ステップ1:新規プロジェクトの作成

Android Studioを起動し、「File」→「New Project」から新しいプロジェクトを作成します。必要な項目をすべて入力してプロジェクトをセットアップしてください。

ステップ2:レイアウトファイル(activity_main.xml)の編集

res/layout/activity_main.xml に以下のコードを追加します。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical"
    android:padding="16dp">
    <Button
        android:onClick="PlayBackgroundSound"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Run background Sound"/>
    <TextView
        android:layout_marginTop="20dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:textStyle="bold"
        android:text="Playing Music in Background"/>
</LinearLayout>

このレイアウトは、タップするとバックグラウンド再生を開始するボタンと、状態を表示するテキストだけのシンプルな構成です。

ステップ3:MainActivity.java の実装

src/MainActivity.java に以下のコードを追加します。

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void PlayBackgroundSound(View view) {
        Intent intent = new Intent(MainActivity.this, BackgroundSoundService.class);
        startService(intent);
    }
}

ボタンがクリックされると PlayBackgroundSound() メソッドが呼び出され、Intentを使って BackgroundSoundService を起動します。

ステップ4:音声ファイルの配置

rawリソースフォルダを作成し、バックグラウンドで再生したいオーディオファイル(audio.mp3)をコピー&ペーストで配置します。

ステップ5:BackgroundSoundService.java の作成

新しいJavaクラス「BackgroundSoundService.java」を作成し、以下のコードを記述します。

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;
import android.widget.Toast;
import androidx.annotation.Nullable;
public class BackgroundSoundService extends Service {
    MediaPlayer mediaPlayer;
    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        mediaPlayer = MediaPlayer.create(this, R.raw.sound);
        mediaPlayer.setLooping(true); // Set looping
        mediaPlayer.setVolume(100, 100);
    }
    public int onStartCommand(Intent intent, int flags, int startId) {
        mediaPlayer.start();
        Toast.makeText(getApplicationContext(), "Playing Bohemian Rashpody in the Background", Toast.LENGTH_SHORT).show();
        return startId;
    }
    public void onStart(Intent intent, int startId) {
    }
    @Override
    public void onDestroy() {
        mediaPlayer.stop();
        mediaPlayer.release();
    }
    @Override
    public void onLowMemory() {
    }
}

ポイントは、onCreate() 内でMediaPlayerを生成し、setLooping(true) でループ再生、setVolume() で音量を設定することです。onStartCommand() で再生を開始し、onDestroy() で stop() と release() を呼び出してリソースを確実に解放しましょう。

ステップ6:AndroidManifest.xml への登録

androidManifest.xml に以下のコードを追加します。

<manifest xmlns:android="https://schemas.android.com/apk/res/android"
    package="app.com.sample">
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <service android:name=".BackgroundSoundService" />
    </application>
</manifest>

<service> タグでサービスを宣言することで、システムが BackgroundSoundService を正しく認識できるようになります。この宣言を忘れると、サービス起動時にエラーが発生するので注意してください。

アプリの実行と動作確認

それでは、アプリケーションを実行してみましょう。実機のAndroidスマートフォンをパソコンに接続している前提で進めます。Android Studioでプロジェクトのアクティビティファイルを開き、ツールバーのRun Androidアプリでバックグラウンドミュージックを再生する方法を徹底解説 アイコンをクリックしてください。接続したモバイルデバイスを選択すると、端末に初期画面が表示されます。

Androidアプリでバックグラウンドミュージックを再生する方法を徹底解説

ボタンをタップすれば、トースト通知とともにバックグラウンドで音楽の再生が始まります。アプリを切り替えても音楽が流れ続けることを確認できれば、実装は成功です。

  1. 【Tasker活用術】AndroidのあらゆるアプリにBGM(バックグラウンドミュージック)を設定する方法

    作業中に音楽が流れていると、集中力が高まり、ストレスの多い場面でもリラックスして取り組めるものです。Androidデバイスを使っているなら、お好みのアプリにバックグラウンドミュージック(BGM)を追加できることをご存じでしょうか。この設定を行えば、仕事や作業を進めながら、アプリの背景で好きな音楽を流せるようになります。 再生する曲は完全に自由に選べます。お気に入りの楽曲でも、リラックス効果のあるアンビエント音楽でも構いません。すべて自分次第です。 さらに便利なことに、この設定はホーム画面(ランチャー)にも適用できます。Androidではホーム画面のインターフェース、いわゆるランチャーも一つの

  2. AndroidでYouTubeをバックグラウンド再生する簡単な方法【root化不要】

    スマートフォン向けアプリの中でも、YouTubeは間違いなく最も利用されているアプリのひとつです。お気に入りのチャンネルの動画を視聴したり、音楽を聴いたりするのに欠かせない存在ですね。しかし、「メッセージの返信をしながら動画を見たい」「旅行中に画面をロックしたまま音楽を聴きたい」と思ったことはありませんか?残念ながら、公式のYouTubeアプリではバックグラウンド再生はできません(有料のYouTube Premiumに加入すれば可能ですが)。とはいえ、ご安心ください。実は誰でも簡単にできる解決策があります。しかも、端末をroot化する必要も一切ありません。ここでは、AndroidデバイスでYo