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

অ্যান্ড্রয়েডে অ্যাসেটস ফোল্ডার থেকে অডিও ফাইল প্লে করার পদ্ধতি

AssetManager এবং MediaPlayer ব্যবহার করে অডিও প্লেব্যাক

অ্যান্ড্রয়েড অ্যাপের `assets/` ফোল্ডার থেকে অডিও ফাইল প্লে করার জন্য `AssetFileDescriptor` এবং `MediaPlayer` ক্লাস ব্যবহার করা হয়। এটি র সোর্স (`res/raw/`) থেকে আলাদা কারণ এসেট ফাইলগুলো কম্প্রেসড থাকে না।

ধাপ ১: প্রজেক্ট তৈরি করুন

স্ট্যান্ডার্ড অ্যান্ড্রয়েড প্রজেক্ট।

ধাপ ২: এসেটস ফোল্ডার তৈরি করুন

  1. Project view-এ `app` মডিউলে রাইট-ক্লিক
  2. New → Folder → Assets Folder
  3. Finish ক্লিক করুন
  4. `assets/` ফোল্ডারে আপনার অডিও ফাইল (যেমন `audio.mp3`) কপি করুন

ধাপ ৩: লেআউট

res/layout/activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <Button
        android:id="@+id/btnPlayAudio"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Play Audio"
        android:textStyle="italic" />
</RelativeLayout>

ধাপ ৪: অডিও প্লে লজিক

src/MainActivity.java:

import android.content.res.AssetFileDescriptor;
import android.media.MediaPlayer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {
    Button button;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button = findViewById(R.id.btnPlayAudio);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                playAudioFromAssets();
            }
        });
    }
    
    private void playAudioFromAssets() {
        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
            AssetFileDescriptor afd = getAssets().openFd("audio.mp3");
            mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
            mediaPlayer.prepare();
            mediaPlayer.start();
            
            Toast.makeText(this, "Playing audio from Assets directory", Toast.LENGTH_SHORT).show();
            
            // রিসোর্স রিলিজের জন্য completion listener
            mediaPlayer.setOnCompletionListener(mp -> {
                mp.release();
            });
        } catch (IOException e) {
            e.printStackTrace();
            Toast.makeText(this, "Error playing audio: " + e.getMessage(), Toast.LENGTH_SHORT).show();
        }
    }
}

গুরুত্বপূর্ণ টিপস

  • ফাইল নাম: কেস-সেনসিটিভ, এক্সটেনশন সহ (`.mp3`, `.wav`, `.ogg`)
  • AssetFileDescriptor: `getStartOffset()` এবং `getLength()` ব্যবহার করুন বড় ফাইলের জন্য
  • মেমরি ম্যানেজমেন্ট: `mediaPlayer.release()` কল করা জরুরি
  • এসেটস vs Raw: Raw রিসোর্স (`R.raw.audio`) অ্যাক্সেস সহজ, এসেটস ফোল্ডার সাব-ডিরেক্টরি সাপোর্ট করে

সাব-ফোল্ডার ব্যবহার

// assets/sounds/audio.mp3 থাকলে
AssetFileDescriptor afd = getAssets().openFd("sounds/audio.mp3");
অ্যান্ড্রয়েডে অ্যাসেটস ফোল্ডার থেকে অডিও ফাইল প্লে করার পদ্ধতি
  1. অ্যান্ড্রয়েডে প্রোগ্রাম্যাটিক্যালি ফোন নম্বর পাওয়ার পদ্ধতি

  2. অ্যান্ড্রয়েডে এক্টিভিটির থেকে ফ্র্যাগমেন্টে ভেরিয়েবল পাস করার পদ্ধতি

  3. Android-এ SD কার্ডে ফোল্ডার/ফাইলে লিখার অনুমতি সেট করার পদ্ধতি

  4. MP4 ভিডিও ফাইল থেকে শুধু অডিও এক্সট্র্যাক্ট করার পদ্ধতি