MENU

MENU

カテゴリー

\気になるカテゴリーをクリック!/

やきいも
文系SE
【プロフ】
 ▶ 30代半ば
 ▶ ITエンジニア13年目 | 業務システム
 ▶ 妻と息子の3人で田舎の暮らし

【サイト運営】
このブログは私の体験をもとに以下に関する情報をお届けしています。
 ▶ AI
 ▶ Java
 ▶ Flutterなど
Udemyセール!最大95%オフ!1,200円~4月の最新セール情報をみる

2024Androidアプリ入門:MediaPlayer、seekbar(Bumblebee)

この記事には広告を含む場合があります。

こんにちは! 文系SEの焼き芋です!

アンドロイドアプリ開発で

『音声ファイルの再生方法』

の実装方法が分からない

という悩みを抱えていませんか?

そこで、今回は「簡単なアプリ」を作って基本的な使い方をご紹介します。

やきいも

この記事はこんな人におすすめです!
・Androidアプリ開発をこれから始める方

この記事で解決できる悩み

以下の基本的な使い方が分かります。

  • MediaPlayer
  • seekbar
目次

完成アプリ

作成するアプリの完成イメージは、以下の画面の通りです。

デモアプリ完成イメージ

アプリの仕様について

デモアプリの仕様は以下の通りです。

デモアプリの仕様
  • 「再生」ボタンで音楽再生
  • 「一時停止」ボタンで再生された音楽が停止
  • 「停止」ボタンで音楽が初めに戻って停止
  • 「音量の調整バー」で音のボリュームを調整
  • 「再生位置の調整バー」で再生位置を変更可能

開発環境

android studio バージョン Bumblebee
android studio バージョン Bumblebee

今回の開発環境は以下の通りです。

OSWindows10
メモリ8GB
android studioAndroid Studio Bumblebee (2021.1.1)
JDK1.8.0_172
プログラミング言語Java
開発環境
やきいも

プロジェクト作成方法は、

以下の記事をご参考にして下さい!


プログラミングの手順

それでは、プログラミングを以下の手順1~3を解説していきます!

STEP
音声ファイルを格納
STEP
画面レイアウトの実装(activity_main.xml)
STEP
プログラム処理の実装(MainActivity.java)

音声ファイルを格納

ファイル構成の解説
ファイル構成

動画ファイルを「res>raw」の下に格納します。
今回の例では以下のファイルを格納しました。
「birdsound.mp3」

画面レイアウトの実装(activity_main.xml)

「activity_main.xml」のプログラムソースコードは以下の通りです。

プログラコードを見る!(activity_main.xml)
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


    <TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="12dp"
        android:layout_marginTop="42dp"
        android:layout_marginEnd="301dp"
        android:text="再生位置の調整"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/seekBar1"
        />

    <Button
        android:id="@+id/buttonPlay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="220dp"
        android:text="再生"
        android:onClick="onclickPlay"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/buttonPause"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="270dp"
        android:text="一時停止"
        android:onClick="onclickPause"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"  />
    <Button
        android:id="@+id/buttonStop"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="320dp"
        android:text="停止"
        android:onClick="onclickStop"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"  />

    <SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="400dp"
        android:layout_height="30dp"
        android:layout_marginStart="2dp"
        android:layout_marginTop="46dp"
        android:layout_marginEnd="10dp"
        android:layout_marginBottom="76dp"
        app:layout_constraintBottom_toTopOf="@+id/seekBar2"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/buttonStop" />

    <SeekBar
        android:id="@+id/seekBar2"
        android:layout_width="400dp"
        android:layout_height="30dp"
        android:layout_marginStart="2dp"
        android:layout_marginTop="76dp"
        android:layout_marginEnd="9dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/seekBar1" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="11dp"
        android:layout_marginTop="377dp"
        android:layout_marginEnd="330dp"
        android:text="音量の調整"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <TextView
        android:id="@+id/textView3"
        android:layout_width="347dp"
        android:layout_height="74dp"
        android:layout_marginTop="60dp"
        android:background="#FBD2D2"
        android:gravity="center"
        android:text="焼き芋ミュージック"
        android:textColor="#FF5722"

        android:textSize="34sp"
        android:textStyle="bold"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />


</androidx.constraintlayout.widget.ConstraintLayout>

プログラム処理の実装(MainActivity.java)

「MainActivity.java」のプログラムソースコードは以下の通りです。

プログラコードを見る!(MainActivity.java)
package com.yakiimosan.demoplayaudio;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.SeekBar;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {


    MediaPlayer mplayer;
    AudioManager audioManager;

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

        mplayer = MediaPlayer.create(this,R.raw.birdsound);

        audioManager = (AudioManager)getSystemService(Context.AUDIO_SERVICE);
        int maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
        int curVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);

        SeekBar volumeController = (SeekBar) findViewById(R.id.seekBar1);
        volumeController.setMax(maxVolume);
        volumeController.setProgress(curVolume);

        volumeController.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {


                audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,i,0);

            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

        SeekBar scrubber  = (SeekBar)findViewById(R.id.seekBar2);
        scrubber.setMax(mplayer.getDuration());

        new Timer().scheduleAtFixedRate(new TimerTask() {
            @Override
            public void run() {
                scrubber.setProgress(mplayer.getCurrentPosition());
            }
        },0,100);

        scrubber.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int i, boolean b) {

                mplayer.seekTo(i);
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }
        });

    }

    public void onclickPlay(View view){


        mplayer.start();

    }

    public void onclickPause(View view){

        mplayer.pause();

    }

    public void onclickStop(View view){

        mplayer.pause();

    }




}

まとめ「Androidアプリの基礎(MediaPlayer、seekbar

今回の記事では

アンドロイドアプリ開発で『音声ファイルの再生方法』について解説しました。

ポイント

以下の基本的な使い方

  • MediaPlayer
  • seekbar

「アンドロイドアプリ開発で『音声ファイルの再生方法』
の実装イメージは分かったのではないでしょうか?

やきいも

公式のandroidアプリ開発ユーザーガイドはコチラから参照できます!
開発時のご参考にどうぞ


以上、最後まで読んで頂きありがとうございました!

コメント

コメントする

CAPTCHA


目次