/** * Returns the current audio capabilities for the device. * * @param context A context for obtaining the current audio capabilities. * @return The current audio capabilities for the device. */ @SuppressWarnings("InlinedApi") public static AudioCapabilities getCapabilities(Context context) { return getCapabilities( context.registerReceiver(null, new IntentFilter(AudioManager.ACTION_HDMI_AUDIO_PLUG))); }
/** * Registers the receiver, meaning it will notify the listener when audio capability changes * occur. The current audio capabilities will be returned. It is important to call * {@link #unregister} when the receiver is no longer required. * * @return The current audio capabilities for the device. */ @SuppressWarnings("InlinedApi") public AudioCapabilities register() { Intent stickyIntent = null; if (receiver != null) { IntentFilter intentFilter = new IntentFilter(AudioManager.ACTION_HDMI_AUDIO_PLUG); if (handler != null) { stickyIntent = context.registerReceiver( receiver, intentFilter, /* broadcastPermission= */ null, handler); } else { stickyIntent = context.registerReceiver(receiver, intentFilter); } } audioCapabilities = AudioCapabilities.getCapabilities(stickyIntent); return audioCapabilities; }
@Override public void onReceive(Context context, Intent intent) { if (!isInitialStickyBroadcast()) { AudioCapabilities newAudioCapabilities = AudioCapabilities.getCapabilities(intent); if (!newAudioCapabilities.equals(audioCapabilities)) { audioCapabilities = newAudioCapabilities; listener.onAudioCapabilitiesChanged(newAudioCapabilities); } } }
eventHandler, eventListener, AudioCapabilities.getCapabilities(context), audioProcessors));
@NonNull protected List<Renderer> buildAudioRenderers() { List<Renderer> renderers = new ArrayList<>(); renderers.add(new MediaCodecAudioRenderer(context, MediaCodecSelector.DEFAULT, drmSessionManager, true, handler, audioRendererEventListener, AudioCapabilities.getCapabilities(context))); // Adds any registered classes List<String> classNames = ExoMedia.Data.registeredRendererClasses.get(ExoMedia.RendererType.AUDIO); if (classNames != null) { for (String className: classNames) { try { Class<?> clazz = Class.forName(className); Constructor<?> constructor = clazz.getConstructor(Handler.class, AudioRendererEventListener.class); Renderer renderer = (Renderer) constructor.newInstance(handler, audioRendererEventListener); renderers.add(renderer); } catch (Exception e) { // Purposefully left blank } } } return renderers; }
eventHandler, eventListener, AudioCapabilities.getCapabilities(context), audioProcessors );
ArrayList<Renderer> out) { AudioCapabilities audioCapabilities = AudioCapabilities.getCapabilities(context); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);