Performans yapmak için ses uygulamasında VolumeShaper kullanabilirsiniz
Kararma, kararma, çapraz geçiş, alçalma ve diğer kısa otomatik ses düzeyi
oluşturabilirsiniz. VolumeShaper sınıfı, Android 8.0 (API düzeyi 26) sürümünde kullanılabilir.
oluşturabilirsiniz.
Şu örneğin bir örneğinde createVolumeShaper() işlevini çağırarak bir VolumeShaper oluşturursunuz:
AudioTrack veya MediaPlayer. İlgili içeriği oluşturmak için kullanılan
VolumeShaper yalnızca AudioTrack veya MediaPlayer tarafından üretilen seste çalışır
harekete geçti.
VolumeShaper.Yapılandırması
VolumeShaper davranışı şu şekilde tanımlanır:
VolumeShaper.Configuration. Yapılandırma,
*ses eğrisi, interpolator türü ve süre.*
Hacim eğrisi
Hacim eğrisi, zaman içinde genlik değişimini temsil eder. Bir çiftle tanımlanır
bir dizi kontrol noktasını tanımlayan x[] ve y[] kayan dizileri. Her biri (x, y)
çifti sırasıyla zamanı ve hacmi temsil eder. Dizilerin uzunluğu eşit olmalıdır
ve en az 2, en fazla 16 değer içermelidir. (Maksimum eğri uzunluğu
getMaximumCurvePoints() içinde tanımlanır.)
Zaman koordinatları, [0,0, 1,0] aralığı üzerinden verilir. İlk kez punto 0,0, son değer 1,0 ve saatler tekdüze olmalıdır. artıyor.
Hacim koordinatları, aralık üzerindeki doğrusal ölçekte belirtilir [0,0, 1,0] olarak değiştirildi.
İnterpolatör türü
Hacim eğrisi her zaman belirtilen kontrol noktalarından geçer. Değerler
kontrol noktaları arasındaki kontrol noktalarına göre bir eğriyle türetilir
belirleyicidir. Kullanılabilir
VolumeShaper interpolator türü:
- VolumeShaper.Yapılandırma.INTERPOLATOR_TYPE_STEP
- VolumeShaper.Yapılandırma.INTERPOLATOR_TYPE_LINEAR
- VolumeShaper.Yapılandırma.INTERPOLATOR_TYPE_CUBIC
- VolumeShaper.Yapılandırma.INTERPOLATOR_TYPE_CUBIC_MONOTONIC
Süre
[0,0, 1,0] aralığında belirtilen zaman koordinatları milisaniye cinsinden belirttiğiniz süre. Bu, toplamda şekillendirici çalışırken ve eğriyi çembere uygularken hacim eğrisinin zamanı ses çıkışını kullanın.
VolumeShaper Kullanma
Yapılandırma oluşturma
Bir VolumeShaper derlemeden önce VolumeShaper.Configuration örneği oluşturmanız gerekir. Bunu bir
VolumeShaper.Configuration.Builder():
Kotlin
val config: VolumeShaper.Configuration = VolumeShaper.Configuration.Builder() .setDuration(3000) .setCurve(floatArrayOf(0f, 1f), floatArrayOf(0f, 1f)) .setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR) .build()
Java
VolumeShaper.Configuration config = new VolumeShaper.Configuration.Builder() .setDuration(3000) .setCurve(new float[] {0.f, 1.f}, new float[] {0.f, 1.f}) .setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR) .build();
With no arguments the VolumeShaper.Configuration.Builder constructor returns a
builder that creates a configuration with default settings:
INTERPOLATOR_TYPE_CUBIC, a one second duration, and no curve. You must add a
curve to the builder before calling build().
The framework provides constants for configurations with pre-built curves, each with one second duration:
VolumeShaper.Configuration.LINEAR_RAMPVolumeShaper.Configuration.CUBIC_RAMPVolumeShaper.Configuration.SINE_RAMPVolumeShaper.Configuration.SCURVE_RAMP
Creating a VolumeShaper
To create a VolumeShaper, call createVolumeShaper() on an instance of the
appropriate class, passing in a VolumeShaper.Configuration:
Kotlin
volumeShaper = myMediaPlayer.createVolumeShaper(config) volumeShaper = myAudioTrack.createVolumeShaper(config)
Java
volumeShaper = myMediaPlayer.createVolumeShaper(config); volumeShaper = myAudioTrack.createVolumeShaper(config);
A single track or media player can have many shapers attached to it, and you can
control each shaper separately. The outputs of all the shapers on a track or
player are multiplied together. A VolumeShaper cannot be shared between
AudioTracks or MediaPlayers, but you can use the same configuration in calls
to createVolumeShaper to build identical shapers on multiple AudioTracks or
MediaPlayers.
When you create the shaper, its first control point (at t = 0) is applied to the
audio stream. If the initial volume is not 1.0 and your app is playing material
at create time, your audio might have an abrupt change in volume. Best practice
is to start playing audio from silence and use a VolumeShaper to implement a
fade-in when playback starts. Create a VolumeShaper that starts at 0 volume
and fades up. For example:
setCurve(new float[] {0.f, 1.f}, new float[] {0.f, 1.f})
Oynatmayı ve şekil oluşturucuyu aynı anda başlatın. Bu, oynatmanın ses sessizden başlar ve ses en üst düzeye çıkarılır. Bunun açıklaması ele alacağız.
VolumeShaper Çalıştırma
İlk kontrol noktasının ses düzeyi, ses yoluna uygulansa da
Şekillendirici oluşturulduğunda, şekillendirici eğri boyunca ilerlemez
siz VolumeShaper.Operation.PLAY ile apply() yöntemini çağırıncaya kadar. Şu tarihten sonra:
şekillendirici oluşturuluyorsa, apply() ilk çağrısında PLAY belirtilmelidir
işlemini başlatacağım. Bu, eğriyi ilkinden başlayıp
son kontrol noktaları:
Kotlin
Shar.apply(VolumeShaper.Operation.PLAY)
Java
Shar.apply(VolumeShaper.Operation.PLAY);
Şekillendirici çalışırken, alternatif apply() çağrılarını belirten bir ileti oluşturabilirsiniz.
REVERSE ve PLAY işlemleri. Bu,
kontrol noktaları anlamına gelir.
Şekillendirici, ses düzeyini sürekli olarak ayarlar ve tüm kontrol noktalarından geçer. kullanım süresi dolana kadar bekleyin. Bu, şekil şekli sonuncuya ulaştığında gerçekleşir (PLAY için işlemi) veya ilk (GERİ ALMA işlemi için) denetim noktasını seçin.
Şekillendiricinin süresi dolduğunda, ses düzeyi son ayarda kalır. Bu değer,
kontrol noktası
olabilir. VolumeShaper.getVolume() numaralı telefonu arayabilirsiniz:
mevcut ses düzeyini istediğiniz zaman değiştirebilirsiniz.
Şekillendiricinin süresi dolduktan sonra, eğriyi çalıştırmak için başka bir apply() çağrısı yayınlayabilirsiniz
yönde görüyorum. Örneğin, şekillendiricinin süresi çalışırken
PLAY, sonraki apply() REVERSE olmalıdır. PLAY şu süre geçtikten sonra PLAY aranacak:
süresi dolduktan sonra veya REVERSE süresi dolduktan sonra REVERSE ürününün herhangi bir etkisi olmaz.
PLAY ve REVERSE işlemlerini değiştirmeniz gerekir. Burada hiçbir şekilde
öncekinden son kontrol noktalarına kadar eğimli olup daha sonra
ilk denetim noktasıdır. Sonraki adımda açıklanan replace() yöntemini kullanabilirsiniz
bölümünde, eğriyi kendisinin bir kopyasıyla değiştirin. Bu, şekillendiriciyi sıfırlar.
PLAY işleminin yeniden başlatılması gerekiyor.
Eğriyi değiştirme
VolumeShaper eğrisini değiştirmek için replace() yöntemini kullanın. Bu yöntem
bir yapılandırma, işlem ve birleştirme parametresidir. Örneğin,
replace() yöntemini istediğiniz zaman değiştirebilirsiniz: Şekillendirici çalışırken veya süresi dolduktan sonra:
Kotlin
val newConfig = VolumeShaper.Configuration.Builder()
.setDuration(1000)
.setCurve(floatArrayOf(0f; 0,5f); floatArrayOf(0f; 1f))
.setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR)
.build()
val Join = doğru
Shar.replace(newConfig, VolumeShaper.Operation.PLAY, birleştirme)
Java
VolumeShaper.Configuration newConfig =
yeni VolumeShaper.Configuration.Builder()
.setDuration(1000)
.setCurve(yeni kayan noktalı[] {0.f, 0.5f}, yeni kayan nokta[] {0.f, 1.f})
.setInterpolatorType(VolumeShaper.Configuration.INTERPOLATOR_TYPE_LINEAR)
.build();
boolejoin = true;
Shar.replace(newConfig, VolumeShaper.Operation.PLAY, join);
Şekillendirici çalışırken replace() işlevini çağırdığınızda,
ve şu anki değerinde kalır. Ardından şekillendirici, yeni yapıya başlamaya çalışır.
eğrisini oluşturabilirsiniz. Yani, işlem bağımsız değişkeni
Şekillendiricinin çağrıdan sonra çalışıp çalışmayacağını kontrol eder. Şunu belirtmek için PLAY değerini belirtin:
yeni eğriyi hemen başlatın, şekillendiriciyi duraklatılmış durumda bırakmak için REVERSE değerini belirtin
yeni eğrideki ilk kontrol noktasının hacmi. Şekillendiriciyi oluşturmaya başlayabilirsiniz
daha sonra apply(VolumeShaper.Operation.PLAY) ile devam edin.
join = false ile replace() çağrısı yaptığınızda, şekillendiricinin eğrisinin başlangıç noktası:
ilk kontrol noktası tarafından belirtilen seviye. Bu durum,
verilerin kesilmesine
ses düzeyinde kontrol edin. join = true üzerinden replace() numaralı telefonu arayarak bu durumdan kaçınabilirsiniz.
Bu, yeni eğrinin ilk kontrol noktasını
kontrol noktalarının hacmini
olarak ölçeklendirir.
Yeni eğrinin göreceli şeklini korumak için son kontrol noktası (son kontrol noktası
değiştirilebilir. Ölçeklendirme işlemi,
yeni eğrisi üzerinde çalışıyorum.
VolumeShaper'ı Kaldırma
AudioTrack veya şu durumlarda sistem kapatılır ve atık VolumeShaper toplanır:
MediaPlayer yayınlandı veya artık kullanılmıyor. close() yöntemini çağırabilirsiniz
hemen imha etmeye çalışır. Sistem, şekil oluşturucuyu
ses ardışık düzenine yaklaşık 20 ms. VolumeShaper öğesini kapatırken dikkatli olun
yardımcı olur. Aradığınızda şekillendiricinin sesi 1,0'dan azsa
close(), şekillendiricinin ses ölçeği 1,0 olarak değişir. Bu durum aniden
yardımcı olabilir.