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;34public class AudioPlayer {5private MediaPlayer mediaPlayer;67public void playAudio(String filePath) {8try {9if (mediaPlayer!= null) {10mediaPlayer.release();11}12mediaPlayer = new MediaPlayer();13mediaPlayer.setDataSource(filePath);14mediaPlayer.prepare();15mediaPlayer.start();1617} catch (IOException e) {18e.printStackTrace();19System.out.println("Hata: Dosya bulunamadı veya erişilemiyor");20}21}2223public 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.
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});56mediaPlayer.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.
0 yorum