Skip to content

Instantly share code, notes, and snippets.

@chayanforyou
Created December 25, 2021 04:32
Show Gist options
  • Save chayanforyou/ccd4c3f83a3941daeb90b4bdcbf6a489 to your computer and use it in GitHub Desktop.
Save chayanforyou/ccd4c3f83a3941daeb90b4bdcbf6a489 to your computer and use it in GitHub Desktop.
Simplified example of Android MediaPlayer
package me.chayan.mediaplayerdemo;

import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.content.res.Resources;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
import android.media.MediaPlayer;
import android.net.Uri;
import android.util.Log;

import java.io.FileInputStream;
import java.io.IOException;

public class AudioPlayer {

    static final String TAG = AudioPlayer.class.getSimpleName();

    private final Context mContext;

    private MediaPlayer mPlayer;

    public AudioPlayer(Context context) {
        this.mContext = context.getApplicationContext();
    }

    public void playRingtone() {
        AudioManager audioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
        AssetFileDescriptor afd = mContext.getResources().openRawResourceFd(R.raw.phone_loud);

        // Honour silent mode
        if (audioManager.getRingerMode() == AudioManager.RINGER_MODE_NORMAL) {
            mPlayer = new MediaPlayer();
            mPlayer.setAudioStreamType(AudioManager.STREAM_RING);
            try {
                mPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
                mPlayer.prepare();
            } catch (IOException ex) {
                Log.e(TAG, "create failed:", ex);
                mPlayer = null;
                return;
            }
            mPlayer.setLooping(true);
            mPlayer.start();
        }
    }

    public void stopRingtone() {
        if (mPlayer != null) {
            mPlayer.stop();
            mPlayer.release();
            mPlayer = null;
        }
    }
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment