Benim app ses klipleri oynatmak için SoundPool kullanıyorum. Her şey yolunda ama klip oynatmanın ne zaman biteceğini bilmem gerek. Ben MediaPlayer örneği kullanarak her klibin süresini alarak benim onu uygulamada izlemek andaAndroid'de ses dosyası süresinin en iyi yolu nedir?
. Bu iyi çalışıyor ama sadece dosya almak için her dosyayı iki kez yüklemek için savurgan görünüyor. Kabaca kendim (AssetFileDescriptor temin edilebilir) dosyasının uzunluğunu bilerek süresini hesaplamak olabilir ama yine de örnek hızını ve kanal sayısını bilmek gerekir istiyorum.
ben bu sorunun iki olası çözümleri bakın:
- bir klip oynatılması bittiğinde (SoundClip ile mümkün görünmemektedir) bulmaktan.
- Bir ses dosyasının sadece başlığını yüklemek ve (ideal, örnek sayısı tam süre almak ve) Bana kanalların örnek oranı/numarayı verebilir bir sınıf olması.
Herhangi bir öneriniz var mı?
sayesinde Max
kod Şu anda kullanarak (çalışıyor ama amaç için oldukça ağırdır) ediyorum:
Yan notString[] fileNames = ...
MediaPlayer mp = new MediaPlayer();
for (String fileName : fileNames) {
AssetFileDescriptor d = context.getAssets().openFd(fileName);
mp.reset();
mp.setDataSource(d.getFileDescriptor(), d.getStartOffset(), d.getLength());
mp.prepare();
int duration = mp.getDuration();
// ...
}
, bu soru zaten olmuştur asked ama yanıtları yok.
bir 'onCompletitionListener' kabul var saniyeler içinde dahili depolama ses dosyası süresini alınır? https://developer.android.com/reference/android/media/MediaPlayer.OnCompletionListener.html#onCompletion%28android.media.MediaPlayer%29 – sschrass
@SatelliteSD basitçe hiçbir cihazına (denilen olsun asla) çalışmıyor Sahibim. Bazı işletim sistemi sürümleri/bazı cihazlarda çağrılsa bile güvenilmez ve bu nedenle işe yaramaz. – Gilead
"setOnCompletitionListner" ifadesinin '.start()' den sonra çağrıldığını gördün mü? – sschrass