কম্পিউটার টিউটোরিয়াল

অ্যান্ড্রয়েড অ্যাপে ব্যাকগ্রাউন্ড মিউজিক প্লে করা

Service ব্যবহার করে ব্যাকগ্রাউন্ড মিউজিক প্লেব্যাক

এই টিউটোরিয়ালটি দেখাবে কীভাবে একটি Service-এ MediaPlayer ব্যবহার করে অ্যাপ বন্ধ থাকলেও বা ব্যাকগ্রাউন্ডে যাওয়ায়ও মিউজিক বাজাতে হয়।

পদক্ষেপ ১: প্রজেক্ট তৈরি করুন

Android Studio-তে নতুন প্রজেক্ট শুরু করুন।

পদক্ষেপ ২: লেআউট XML (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:id="@+id/btnPlay"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="PlayBackgroundSound"
        android:text="Run Background Sound" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="Playing Music in Background"
        android:textSize="16sp"
        android:textStyle="bold" />

</LinearLayout>

পদক্ষেপ ৩: MainActivity.java

import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;

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(this, BackgroundSoundService.class);
        startService(intent);
    }
}

পদক্ষেপ ৪: Raw রিসোর্স ফোল্ডার

res/raw ফোল্ডার তৈরি করুন (New → Android Resource Directory → raw) এবং সেখানে আপনার অডিও ফাইল রাখুন (যেমন: `sound.mp3` বা `audio.mp3`)。

পদক্ষেপ ৫: 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 {
    private 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); // লুপিং সক্ষম
        mediaPlayer.setVolume(1.0f, 1.0f); // 0.0f to 1.0f
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
            mediaPlayer.start();
            Toast.makeText(this, "Playing music in background", Toast.LENGTH_SHORT).show();
        }
        return START_STICKY; // সিস্টেম কিল করলে রিস্টার্ট
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mediaPlayer != null) {
            mediaPlayer.stop();
            mediaPlayer.release();
            mediaPlayer = null;
        }
    }
}

পদক্ষেপ ৬: AndroidManifest.xml - সার্ভিস ডিক্লেয়ার

<application ...>
    <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>

গুরুত্বপূর্ণ উন্নতি ও সেরা অনুশীলন

  • Foreground Service (API 26+): অ্যান্ড্রয়েড ৮+ তে ব্যাকগ্রাউন্ড সার্ভিস সীমাবদ্ধ। ফোরগ্রাউন্ড সার্ভিসে নোটিফিকেশন দেখাতে হয়।
  • MediaSessionCompat: মিডিয়া কন্ট্রোল (হেডসেট বাটন, লক স্ক্রিন) সাপোর্টের জন্য।
  • ExoPlayer: MediaPlayer-এর বদলে ExoPlayer ব্যবহার করুন (DASH, HLS, স্মুথ স্ট্রিমিং সাপোর্ট)।
  • Audio Focus: AudioManager.requestAudioFocus() ব্যবহার করুন অন্যান্য অ্যাপের সাথে সমন্বয়ের জন্য।
  • Wake Lock: ডিভাইস স্লিপ হলে মিউজিক বন্ধ না হয় তা নিশ্চিত করুন (PARTIAL_WAKE_LOCK)।

ফোরগ্রাউন্ড সার্ভিস উদাহরণ (API 26+)

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    createNotificationChannel();
    Notification notification = new NotificationCompat.Builder(this, CHANNEL_ID)
        .setContentTitle("Music Playing")
        .setContentText("Song name")
        .setSmallIcon(R.drawable.ic_music)
        .build();
    
    startForeground(1, notification);
    mediaPlayer.start();
    return START_STICKY;
}
  1. অ্যান্ড্রয়েডে ব্যাকগ্রাউন্ড সার্ভিস সবসময় চালানোর পদ্ধতি

  2. Android-এ বুট টাইমে সার্ভিস শুরু করার পদ্ধতি

  3. অ্যান্ড্রয়েড ডিভাইসে যেকোনো অ্যাপে ব্যাকগ্রাউন্ড মিউজিক যোগ করার পদ্ধতি

  4. অ্যান্ড্রয়েডে YouTube ভিডিও ব্যাকগ্রাউন্ডে প্লে করার পদ্ধতি