Android MediaPlayer Ses Çalınmıyor: Hata Ayıklama ve Çözüm

Android'de MediaPlayer kullanırken ses çıkmaması genellikle izin eksikliği, yanlış dosya yolu veya state yönetimi hatalarından kaynaklanır. Sorunun kaynağını bulmak için adım adım kontrol etmek gerekir.

İlk olarak AndroidManifest.xml dosyasında gerekli izinleri ekle:

1<uses-permission android:name="android.permission.RECORD_AUDIO" />
2<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
3<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Android 6.0 ve üzeri sürümlerde runtime izinleri de istemen gerekir. Şimdi MediaPlayer'ı doğru şekilde yapılandır:

1import android.media.MediaPlayer;
2import java.io.IOException;
3
4public class AudioPlayer {
5private MediaPlayer mediaPlayer;
6
7public void playAudio(String filePath) {
8try {
9if (mediaPlayer!= null) {
10mediaPlayer.release();
11}
12mediaPlayer = new MediaPlayer();
13mediaPlayer.setDataSource(filePath);
14mediaPlayer.prepare();
15mediaPlayer.start();
16
17} catch (IOException e) {
18e.printStackTrace();
19System.out.println("Hata: Dosya bulunamadı veya erişilemiyor");
20}
21}
22
23public void stopAudio() {
24if (mediaPlayer!= null && mediaPlayer.isPlaying()) {
25mediaPlayer.stop();
26mediaPlayer.release();
27mediaPlayer = null;
28}
29}
30}

Koddaki önemli noktalar: `prepare()` çağrısı ses dosyasını hazırlar, `start()` oynatmayı başlatır. Dosya yolu mutlak olmalı ve dosyanın gerçekten var olması gerekir.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Ses seviyesi sıfıra ayarlanmış olabilir. Bunu kontrol et:

1AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
2audioManager.setStreamVolume(AudioManager.STREAM_MUSIC,
3audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) / 2, 0);

Hata ayıklama için listener ekle:

1mediaPlayer.setOnErrorListener((mp, what, extra) -> {
2System.out.println("MediaPlayer Hatası - what: " + what + ", extra: " + extra);
3return true;
4});
5
6mediaPlayer.setOnCompletionListener(mp -> {
7System.out.println("Ses oynatması tamamlandı");
8});

Sık yapılan hatalar: Dosya yolu yanlış yazılması (örn. dosya adı büyük-küçük harf duyarlı), `prepare()` çağrılmadan `start()` yapılması, ve kaynakların `release()` ile serbest bırakılmaması. Emülatörde test ederken ses cihazının etkin olduğundan emin ol.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz