Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Android

Android में MediaPlayer से बेसिक ऑडियो प्लेयर कैसे बनाएं?

Android MediaPlayer से म्यूजिक प्लेयर ऐप बनाना

यह उदाहरण दर्शाता है कि MediaPlayer क्लास का उपयोग करके प्ले, पॉज, फॉरवर्ड, बैकवर्ड और सीकबार प्रोग्रेस के साथ एक बेसिक ऑडियो प्लेयर कैसे बनाया जाए।

चरण 1: नया प्रोजेक्ट बनाएं

Android Studio में File → New Project चुनें।

चरण 2: रॉ ऑडियो फ़ाइल जोड़ें

res/raw/ फोल्डर बनाएं (नहीं है तो) और bohemian_rhapsody.mp3 जैसी ऑडियो फ़ाइल रखें।

चरण 3: लेआउट फ़ाइल (res/layout/activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="16dp">

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="30dp"
        android:text="अब चल रहा: "
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/txtSongName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@id/textView"
        android:layout_toEndOf="@id/textView"
        android:textStyle="bold" />

    <SeekBar
        android:id="@+id/seekBar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@id/btnPlay"
        android:layout_marginBottom="16dp"
        android:layout_toStartOf="@id/txtSongTime"
        android:layout_toEndOf="@id/txtStartTime" />

    <TextView
        android:id="@+id/txtStartTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/seekBar"
        android:text="0:00" />

    <TextView
        android:id="@+id/txtSongTime"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@id/seekBar"
        android:layout_alignParentEnd="true"
        android:text="0:00" />

    <LinearLayout
        android:id="@+id/controls"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="44dp"
        android:orientation="horizontal"
        android:gravity="center">

        <ImageButton
            android:id="@+id/btnBackward"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:src="@android:drawable/ic_media_rew"
            android:contentDescription="पीछे"/>

        <ImageButton
            android:id="@+id/btnPlay"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:src="@android:drawable/ic_media_play"
            android:contentDescription="चलाएं"/>

        <ImageButton
            android:id="@+id/btnPause"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:src="@android:drawable/ic_media_pause"
            android:contentDescription="रोकें"/>

        <ImageButton
            android:id="@+id/btnForward"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_margin="8dp"
            android:src="@android:drawable/ic_media_ff"
            android:contentDescription="आगे"/>

    </LinearLayout>

</RelativeLayout>

चरण 4: MainActivity (src/MainActivity.java)

import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import java.util.concurrent.TimeUnit;

public class MainActivity extends AppCompatActivity {

    private ImageButton btnBackward, btnForward, btnPlay, btnPause;
    private MediaPlayer mediaPlayer;
    private TextView txtSongName, txtStartTime, txtSongTime;
    private SeekBar seekBar;
    
    private static final int FORWARD_TIME = 5000;  // 5 सेकंड
    private static final int BACKWARD_TIME = 5000; // 5 सेकंड
    
    private Handler handler = new Handler();
    private boolean isPlaying = false;

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

        initViews();
        setupMediaPlayer();
        setupClickListeners();
    }

    private void initViews() {
        btnBackward = findViewById(R.id.btnBackward);
        btnForward = findViewById(R.id.btnForward);
        btnPlay = findViewById(R.id.btnPlay);
        btnPause = findViewById(R.id.btnPause);
        txtSongName = findViewById(R.id.txtSongName);
        txtStartTime = findViewById(R.id.txtStartTime);
        txtSongTime = findViewById(R.id.txtSongTime);
        seekBar = findViewById(R.id.seekBar);
    }

    private void setupMediaPlayer() {
        txtSongName.setText("Bohemian Rhapsody");
        mediaPlayer = MediaPlayer.create(this, R.raw.bohemian_rhapsody);
        
        seekBar.setMax(mediaPlayer.getDuration());
        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                if (fromUser) {
                    mediaPlayer.seekTo(progress);
                }
            }
            @Override public void onStartTrackingTouch(SeekBar seekBar) {}
            @Override public void onStopTrackingTouch(SeekBar seekBar) {}
        });
        
        updateTotalTime();
    }

    private void setupClickListeners() {
        btnPlay.setOnClickListener(v -> playAudio());
        btnPause.setOnClickListener(v -> pauseAudio());
        btnForward.setOnClickListener(v -> seekForward());
        btnBackward.setOnClickListener(v -> seekBackward());
    }

    private void playAudio() {
        if (mediaPlayer != null && !mediaPlayer.isPlaying()) {
            mediaPlayer.start();
            isPlaying = true;
            updateButtonStates();
            startProgressUpdater();
            Toast.makeText(this, "चल रहा है...", Toast.LENGTH_SHORT).show();
        }
    }

    private void pauseAudio() {
        if (mediaPlayer != null && mediaPlayer.isPlaying()) {
            mediaPlayer.pause();
            isPlaying = false;
            updateButtonStates();
            handler.removeCallbacks(updateProgressRunnable);
            Toast.makeText(this, "रोका गया", Toast.LENGTH_SHORT).show();
        }
    }

    private void seekForward() {
        if (mediaPlayer != null) {
            int newPosition = mediaPlayer.getCurrentPosition() + FORWARD_TIME;
            if (newPosition <= mediaPlayer.getDuration()) {
                mediaPlayer.seekTo(newPosition);
            } else {
                Toast.makeText(this, "अंत तक पहुंच गए", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void seekBackward() {
        if (mediaPlayer != null) {
            int newPosition = mediaPlayer.getCurrentPosition() - BACKWARD_TIME;
            if (newPosition >= 0) {
                mediaPlayer.seekTo(newPosition);
            } else {
                Toast.makeText(this, "शुरुआत पर हैं", Toast.LENGTH_SHORT).show();
            }
        }
    }

    private void updateButtonStates() {
        btnPlay.setEnabled(!isPlaying);
        btnPause.setEnabled(isPlaying);
    }

    private void updateTotalTime() {
        int duration = mediaPlayer.getDuration();
        txtSongTime.setText(formatTime(duration));
    }

    private final Runnable updateProgressRunnable = new Runnable() {
        @Override
        public void run() {
            if (mediaPlayer != null && isPlaying) {
                int currentPosition = mediaPlayer.getCurrentPosition();
                txtStartTime.setText(formatTime(currentPosition));
                seekBar.setProgress(currentPosition);
                handler.postDelayed(this, 100); // हर 100ms अपडेट
            }
        }
    };

    private void startProgressUpdater() {
        handler.post(updateProgressRunnable);
    }

    private String formatTime(int millis) {
        return String.format("%02d:%02d",
            TimeUnit.MILLISECONDS.toMinutes(millis),
            TimeUnit.MILLISECONDS.toSeconds(millis) % 60);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mediaPlayer != null) {
            mediaPlayer.release();
            mediaPlayer = null;
        }
        handler.removeCallbacks(updateProgressRunnable);
    }
}

MediaPlayer लाइफसाइकल स्टेट्स

Android में MediaPlayer से बेसिक ऑडियो प्लेयर कैसे बनाएं?

महत्वपूर्ण नोट्स

  • release(): हमेशा onDestroy() में कॉल करें - मीडिया संसाधन मुक्त करने के लिए
  • seekTo(): एसिंक्रोनस है, तुरंत पोजीशन नहीं बदलता
  • prepareAsync(): बड़ी फ़ाइलों/स्ट्रीमिंग के लिए उपयोग करें
  • WakeLock: बैकग्राउंड प्लेबैक के लिए mediaPlayer.setWakeMode() उपयोग करें

चरण 5: AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<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>
                
                
            </intent-filter>
        </activity>

    </application>
</manifest>

ऐप चलाएं

ऐप लॉन्च करें, प्ले दबाएं, सीकबार ड्रैग करें, फॉरवर्ड/बैकवर्ड बटन्स टेस्ट करें।

Android में MediaPlayer से बेसिक ऑडियो प्लेयर कैसे बनाएं?

Android में MediaPlayer से बेसिक ऑडियो प्लेयर कैसे बनाएं?

Android में MediaPlayer से बेसिक ऑडियो प्लेयर कैसे बनाएं?

Android में MediaPlayer से बेसिक ऑडियो प्लेयर कैसे बनाएं?

  1. एंड्रॉइड ऐप में TextToSpeech कैसे बनाएं? एंड्रॉइड ऐप में TextToSpeech कैसे बनाएं?

    एंड्रॉइड ऐप में टेक्स्ट-टू-स्पीच (TTS) लागू करना यह उदाहरण दिखाता है कि एंड्रॉइड ऐप में TextToSpeech फीचर कैसे जोड़ा जाता है, जिससे ऐप लिखे गए टेक्स्ट को आवाज़ में बदल सके। चरण 1: नया प्रोजेक्ट बनाएं Android Studio खोलें, File → New Project चुनें और आवश्यक विवरण भरकर नया प्रोजेक्ट बनाएं। चरण 2: ले

  1. Android ऐप वल्नरेबिलिटी स्कैनर Android ऐप वल्नरेबिलिटी स्कैनर

    परिचय AndroBugs Framework एक Android वल्नरेबिलिटी विश्लेषण प्रणाली है जो डेवलपर्स या हैकर्स को Android एप्लिकेशन में संभावित सुरक्षा कमजोरियों को खोजने में मदद करती है। हम मोबाइल ऐप्स के माध्यम से अपना व्यक्तिगत डेटा साझा करते हैं; यदि वे सुरक्षित नहीं हैं, तो हम भी सुरक्षित नहीं हैं। आइए Android मो

  1. अपने एंड्रॉइड फोन को हाई-रेस ऑडियो प्लेयर में बदलें अपने एंड्रॉइड फोन को हाई-रेस ऑडियो प्लेयर में बदलें

    दुनिया में दो तरह के लोग हैं: वे जो MP3 और CD के बीच का अंतर सुन सकते हैं और वे जो नहीं सुन सकते। यदि आप पूर्व शिविर में आते हैं, तो आप शायद अपनी म्यूजिक को कम से कम CD क्वालिटी में खरीदना पसंद करते हैं। आप हाई-रिज़ॉल्यूशन म्यूजिक फाइल्स, जिन्हें हाई-रेस के रूप में भी जाना जाता है, के साथ बहुत आगे ज