Kullanıcılar, ses uygulamasının ses düzeyini kontrol edebilmeyi bekler. Standart davranış ses kontrollerini (ekrandaki düğmeler veya düğmeler kontrol edin. kulaklık gibi çevre biriminin bağlantısı kullanımdayken kesilir.
Ses kontrollerini kullanma
Kullanıcı bir oyunda veya müzik uygulamasında ses seviyesi tuşuna bastığında ses düzeyi müzik olmasa bile, oynatıcı şarkılar arasında duraklatılmış olsa bile o anki oyun konumu.
Android müzik çalmak, alarmlar çalmak, bildirimler, gelen arama zil sesi, sistem sesleri, çağrı ses düzeyi ve DTMF oluşturmak için kullanabilirsiniz. Bu sayede kullanıcılar, her akışın ses düzeyini bağımsız olarak kontrol edebilir.
Varsayılan olarak, ses denetimine basıldığında etkin sesin düzeyi değiştirilir akış şeklinde gösterilir. Uygulamanız şu anda hiçbir şey oynatmıyorsa ses seviyesi tuşlarına basın müziğin ses düzeyini (veya Android 9'dan önce zil sesini) ayarlar.
Uygulamanız çalar saat değilse sesi kullanımla birlikte çalmalısınız
AudioAttributes.USAGE_MEDIA
Ses denetimlerinin
doğru akışı sağlamak için
setVolumeControlStream()
.
Alabileceğiniz özelliklerle eşleşen akış türünü iletme
AudioAttributes.getVolumeControlStream
.
Kotlin
setVolumeControlStream(AudioManager.STREAM_MUSIC)
Java
setVolumeControlStream(AudioManager.STREAM_MUSIC);
Uygulamanızın yaşam döngüsünde bu çağrıyı genellikle onResume()
üzerinden yapın
öğesinin yöntemini veya parçasını seçmeniz gerekir. Bu,
ses düzeyi, hedef etkinlik veya parça olduğunda STREAM_MUSIC
işlemini kontrol eder
görünür.
Akış hacmini programatik olarak kontrol etme
Nadir durumlarda, ses akışının ses düzeyini programatik olarak ayarlayabilirsiniz. Örneğin,
Örneğin, uygulamanız mevcut bir kullanıcı arayüzünün yerini aldığında. Bu önerilmez çünkü
Android AudioManager
, aynı türdeki tüm ses akışlarını bir araya getirir.
Bu yöntemler, akışı kullanan her uygulamanın ses düzeyini değiştirir. Şunlardan kaçının:
şekilde tanımlar:
adjustStreamVolume()
adjustSuggestedStreamVolume()
adjustVolume()
setStreamVolume() setStreamVolume()
setStreamSolo()
setStreamMute()
Sabit hacimli cihazlarla çalışma
Bazı cihazlarda (ör. Chromebook'lar) ses kontrolleri bulunur, ancak uygulamaların AudioManager
kullanmasına izin verilmez.
yöntemleri kullanabilirsiniz. Bunlara
Sabit hacimli cihazlar. Böylece, projenizin
Uygulama, isVolumeFixed()
aranarak sabit hacimli bir cihazda çalışıyor.
Ses uygulaması, dengeyi koruma becerisi sağlamalıdır.
aynı akışta oynatabilecek diğer uygulamalarla
eşleşebilir.
Sabit ses seviyesi cihazlarda uygulama, kendi ses kontrollerini
uygun setVolume()
yöntemini kullanın:
Oyuncu | Yöntem |
---|---|
Ses Parçası | AudioTrack.setVolume() |
Medya Oynatıcı | MediaPlayer.setVolume() |
ExoPlayer | Alttaki Ses Parçası'nın ses düzeyini ayarlayan SimpleExoPlayer.setVolume() özelliğini kullanın. |
Gürültüyü önleyin
Konukların sesi dinlemek için kullandığı çeşitli alternatifler var. kullanıyor. Çoğu cihazda yerleşik hoparlör, kulaklık jakı ve mikrofonlu kulaklıkların çoğunda Bluetooth bağlantısı ve A2DP sesi.
Mikrofonlu kulaklık çıkarıldığında veya Bluetooth cihazın bağlantısı kaldırıldığında ses akışı yerleşik hoparlöre otomatik olarak yeniden yönlendirilir. Yüksek sesle müzik dinliyorsanız bu gürültülü bir sürpriz olabilir.
Kullanıcılar genellikle ekranda oynatma özelliğine sahip müzik çalar içeren uygulamaları bekler oynatmayı duraklatır. Şunu yapmayan oyunlar gibi diğer uygulamalar: oynatmaya devam etmesi gerekir. Kullanıcı ses düzeyini kontrol edebilirsiniz.
Ses çıkışı tekrar yerleşik hoparlöre geçtiğinde sistem bir ACTION_AUDIO_BECOMING_NOISY
yayınlar
isteyebilirsiniz. BroadcastReceiver
oluşturmanız gerekir
bu amacı dinler. Alıcınız şu şekilde görünmelidir:
Kotlin
private class BecomingNoisyReceiver : BroadcastReceiver() { override fun onReceive(context: Context, intent: Intent) { if (intent.action == AudioManager.ACTION_AUDIO_BECOMING_NOISY) { // Pause the playback } } }
Java
private class BecomingNoisyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) { // Pause the playback } } }
Oynatmaya başladığınızda alıcıyı kaydedin ve durdurduğunuzda kaydını silin.
Uygulamanızı bu kılavuzda açıklandığı gibi tasarlarsanız bu çağrılar
onPlay()
ve onStop()
medya oturumu geri çağırmalarında.
Kotlin
private val intentFilter = IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY) private val myNoisyAudioStreamReceiver = BecomingNoisyReceiver() private val callback = object : MediaSessionCompat.Callback() { override fun onPlay() { registerReceiver(myNoisyAudioStreamReceiver, intentFilter) } override fun onStop() { unregisterReceiver(myNoisyAudioStreamReceiver) } }
Java
private IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY); private BecomingNoisyReceiver myNoisyAudioStreamReceiver = new BecomingNoisyReceiver(); MediaSessionCompat.Callback callback = new MediaSessionCompat.Callback() { @Override public void onPlay() { registerReceiver(myNoisyAudioStreamReceiver, intentFilter); } @Override public void onStop() { unregisterReceiver(myNoisyAudioStreamReceiver); } }