public boolean requestAudioFocus(OnAudioFocusChangeListener focusChangeListener, int streamType, int audioFocusGain) { int r; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { r = mAudioManager.requestAudioFocus( new AudioFocusRequest.Builder(audioFocusGain) .setAudioAttributes( new AudioAttributes.Builder() .setLegacyStreamType(streamType) .build()) .setOnAudioFocusChangeListener(focusChangeListener) .build()); } else { //noinspection deprecation r = mAudioManager.requestAudioFocus(focusChangeListener, streamType, audioFocusGain); } return r == AudioManager.AUDIOFOCUS_REQUEST_GRANTED; }
protected void loadSounds() { if (null != soundPool) { return; } this.setVolumeControlStream(AudioManager.STREAM_MUSIC); AudioAttributes audioAttributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); soundPool = new SoundPool.Builder() .setMaxStreams(clickers.length + 1) .setAudioAttributes(audioAttributes) .build(); for (int i = 0; i < clickers.length; ++i) { clickers[i].clickSound = soundPool.load(this, clickers[i].soundId, 1); } failSound = soundPool.load(this, R.raw.fail, 1); successSound = soundPool.load(this, R.raw.success, 1); }
@Rpc(description = "Play an audio file stored at a specified file path in external storage.") public void mediaPlayAudioFile(String mediaFilePath) throws IOException { mediaReset(); if (Build.VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) { mPlayer.setAudioAttributes( new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .setUsage(AudioAttributes.USAGE_MEDIA) .build()); } else { mPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); } mPlayer.setDataSource(mediaFilePath); mPlayer.prepare(); // Synchronous call blocks until the player is ready for playback. mPlayer.start(); }
private void maybePlaySound() { if (mSoundEnabled && (!mPowerManager.isInteractive() || !mSoundWhenScreenOffOnly)) { try { final Ringtone sfx = RingtoneManager.getRingtone(mContext, Uri.parse(mSoundUri)); if (sfx != null) { AudioAttributes attrs = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_NOTIFICATION) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); sfx.setAudioAttributes(attrs); sfx.play(); } } catch (Throwable t) { XposedBridge.log(t); } } }
@Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_shoot, null); findview(v); mUIHandler = new Handler(new InnerCallBack()); //初始化拍照的声音 ringtone = RingtoneManager.getRingtone(getActivity(), Uri.parse ("file:///system/media/audio/ui/camera_click.ogg")); AudioAttributes.Builder attr = new AudioAttributes.Builder(); attr.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION); ringtone.setAudioAttributes(attr.build()); //初始化相机布局 mTextureView.setSurfaceTextureListener(mSurfacetextlistener); mTextureView.setOnTouchListener(textTureOntuchListener); return v; }
private void initNotificationManager() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { final Stopwatch watch = Stopwatch.createStarted(); final NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); final NotificationChannel received = new NotificationChannel(Constants.NOTIFICATION_CHANNEL_ID_RECEIVED, getString(R.string.notification_channel_received_name), NotificationManager.IMPORTANCE_DEFAULT); received.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.coins_received), new AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .setLegacyStreamType(AudioManager.STREAM_NOTIFICATION) .setUsage(AudioAttributes.USAGE_NOTIFICATION_EVENT).build()); nm.createNotificationChannel(received); final NotificationChannel ongoing = new NotificationChannel(Constants.NOTIFICATION_CHANNEL_ID_ONGOING, getString(R.string.notification_channel_ongoing_name), NotificationManager.IMPORTANCE_LOW); nm.createNotificationChannel(ongoing); final NotificationChannel important = new NotificationChannel(Constants.NOTIFICATION_CHANNEL_ID_IMPORTANT, getString(R.string.notification_channel_important_name), NotificationManager.IMPORTANCE_HIGH); nm.createNotificationChannel(important); log.info("created notification channels, took {}", watch); } }
/** * Instantiates an {@link android.media.AudioTrack} to be used with tunneling video playback. */ @TargetApi(21) private static android.media.AudioTrack createHwAvSyncAudioTrackV21(int sampleRate, int channelConfig, int encoding, int bufferSize, int sessionId) { AudioAttributes attributesBuilder = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MOVIE) .setFlags(AudioAttributes.FLAG_HW_AV_SYNC) .build(); AudioFormat format = new AudioFormat.Builder() .setChannelMask(channelConfig) .setEncoding(encoding) .setSampleRate(sampleRate) .build(); return new android.media.AudioTrack(attributesBuilder, format, bufferSize, MODE_STREAM, sessionId); }
private void requestAudioFocus() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { AudioAttributes playbackAttributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION) .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .build(); AudioFocusRequest focusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT) .setAudioAttributes(playbackAttributes) .setAcceptsDelayedFocusGain(true) .setOnAudioFocusChangeListener( new AudioManager.OnAudioFocusChangeListener() { @Override public void onAudioFocusChange(int i) { } }) .build(); audioManager.requestAudioFocus(focusRequest); } else { audioManager.requestAudioFocus(null, AudioManager.STREAM_VOICE_CALL, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); } }
@RequiresApi(api = Build.VERSION_CODES.O) void createNotificationChannel(Context context) { NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); CharSequence name = MobiComKitConstants.PUSH_NOTIFICATION_NAME; ; int importance = NotificationManager.IMPORTANCE_HIGH; if (mNotificationManager.getNotificationChannel(MobiComKitConstants.AL_PUSH_NOTIFICATION) == null) { NotificationChannel mChannel = new NotificationChannel(MobiComKitConstants.AL_PUSH_NOTIFICATION, name, importance); mChannel.enableLights(true); mChannel.setLightColor(Color.GREEN); if (ApplozicClient.getInstance(context).isUnreadCountBadgeEnabled()) { mChannel.setShowBadge(true); } else { mChannel.setShowBadge(false); } if (ApplozicClient.getInstance(context).getVibrationOnNotification()) { mChannel.enableVibration(true); mChannel.setVibrationPattern(new long[]{100, 200, 300, 400, 500, 400, 300, 200, 400}); } AudioAttributes audioAttributes = new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE).build(); mChannel.setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION), audioAttributes); mNotificationManager.createNotificationChannel(mChannel); } }
private void calibrationNotificationCreate(String title, String content, Intent intent, int notificationId) { NotificationCompat.Builder mBuilder = notificationBuilder(title, content, intent, NotificationChannels.CALIBRATION_CHANNEL); mBuilder.setVisibility(Pref.getBooleanDefaultFalse("public_notifications") ? Notification.VISIBILITY_PUBLIC : Notification.VISIBILITY_PRIVATE); mBuilder.setVibrate(vibratePattern); mBuilder.setLights(0xff00ff00, 300, 1000); if(calibration_override_silent) { mBuilder.setSound(Uri.parse(calibration_notification_sound), AudioAttributes.USAGE_ALARM); } else { mBuilder.setSound(Uri.parse(calibration_notification_sound)); } NotificationManager mNotifyMgr = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); //mNotifyMgr.cancel(notificationId); mNotifyMgr.notify(notificationId, XdripNotificationCompat.build(mBuilder)); }
public AndroidAudioPlayer(final AudioConfig audioConfig) { AudioAttributes audioAttributes = new AudioAttributes.Builder() .setLegacyStreamType(AudioManager.STREAM_MUSIC) .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(); AudioFormat audioFormat = new AudioFormat.Builder() .setChannelMask(audioConfig.getOutputChannel()) .setEncoding(audioConfig.getOutputFormat()) .setSampleRate(audioConfig.getSampleRate()) .build(); audioTrack = new AudioTrack(audioAttributes, audioFormat, audioConfig.getOutputBufferSize(), AudioTrack.MODE_STATIC, AudioManager.AUDIO_SESSION_ID_GENERATE); outputByteCount = audioConfig.getOutputFormatByteCount(); }
AudioTrack getAudioTrack(long bufferSize) { AudioFormat audioFormat = getAudioFormat(AudioFormat.CHANNEL_OUT_MONO); AudioAttributes attributes = new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .setUsage(AudioAttributes.USAGE_MEDIA) .build(); AudioTrack track = new AudioTrack.Builder() .setAudioFormat(audioFormat) .setBufferSizeInBytes((int) bufferSize) .setAudioAttributes(attributes) .setTransferMode(AudioTrack.MODE_STREAM) .build(); PresetReverb reverb = getReverb(); track.attachAuxEffect(reverb.getId()); track.setAuxEffectSendLevel(1.0f); return track; }
private void createAlarmChannel(String uri) { Log.e("KCA-A", "recv: " + uri); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { String soundKind = getStringPreferences(getApplicationContext(), PREF_KCA_NOTI_SOUND_KIND); boolean isVibrate = soundKind.equals(getString(R.string.sound_kind_value_mixed)) || soundKind.equals(getString(R.string.sound_kind_value_vibrate)); notificationManager.deleteNotificationChannel(ALARM_CHANNEL_ID); while (!alarmChannelList.isEmpty()) { notificationManager.deleteNotificationChannel(alarmChannelList.poll()); } AudioAttributes.Builder attrs = new AudioAttributes.Builder(); attrs.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION); attrs.setUsage(AudioAttributes.USAGE_NOTIFICATION); String channel_name = createAlarmId(uri, isVibrate); alarmChannelList.add(channel_name); NotificationChannel channel = new NotificationChannel(alarmChannelList.peek(), getStringWithLocale(R.string.notification_appinfo_title), NotificationManager.IMPORTANCE_HIGH); channel.setSound(Uri.parse(uri), attrs.build()); channel.enableVibration(isVibrate); channel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE); notificationManager.createNotificationChannel(channel); } }
@RequiresApi(api = 26) private static NotificationChannel addNotificationAttributes(final NotificationChannel notificationChannel) { final int notificationColor = ContextCompat.getColor(BaseApplication.get(), R.color.colorPrimary); final Uri notificationSound = Uri.parse("android.resource://" + BaseApplication.get().getPackageName() + "/" + R.raw.notification); notificationChannel.enableLights(true); notificationChannel.setLightColor(notificationColor); notificationChannel.enableVibration(true); notificationChannel.setSound(notificationSound, new AudioAttributes.Builder() .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .setFlags(AudioAttributes.USAGE_NOTIFICATION) .build() ); return notificationChannel; }
@SuppressWarnings("deprecation") @TargetApi(Build.VERSION_CODES.LOLLIPOP) private SoundPool buildSoundPool() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { AudioAttributes audioAttributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); return new SoundPool.Builder() .setMaxStreams(MAX_STREAMS) .setAudioAttributes(audioAttributes) .build(); } return new SoundPool(MAX_STREAMS, AudioManager.STREAM_MUSIC, 0); }
public void vibrate() { if (!mIsVibrating) { // Start immediately // Vibrate for 200 milliseconds // Sleep for 500 milliseconds long[] vibrationPattern = {0, 200, 500}; // Start to vibrate which repeats indefinitely if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP) { mVibrator.vibrate(vibrationPattern, 0, new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_ALARM).build()); } else { mVibrator.vibrate(vibrationPattern, 0); } mIsVibrating = true; } }
/** * Create notification channels required for displayal of notifications on >=API O */ @RequiresApi(api = Build.VERSION_CODES.O) public static void createNotificationChannels(Context context) { NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); String channelId = ApplicationConstants.MEDIA_NOTIFICATION_CHANNEL_ID; CharSequence userVisibleChannelName = context.getString(R.string.media_notification_channel_name); String userVisibleDescription = context.getString(R.string.media_notification_channel_description); int notificationImportance = NotificationManager.IMPORTANCE_DEFAULT; AudioAttributes audioAttributes = new AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_MUSIC).build(); NotificationChannel mediaNotificationChannel = new NotificationChannel(channelId, userVisibleChannelName, notificationImportance); mediaNotificationChannel.setDescription(userVisibleDescription); mediaNotificationChannel.enableVibration(false); mediaNotificationChannel.enableLights(false); mediaNotificationChannel.setSound(Uri.EMPTY, audioAttributes); mNotificationManager.createNotificationChannel(mediaNotificationChannel); }
@Override protected void onStart() { super.onStart(); Uri ringtoneUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); ringtone = RingtoneManager.getRingtone(getApplicationContext(), ringtoneUri); if (ringtone == null) { ringtoneUri = RingtoneManager.getValidRingtoneUri(getApplicationContext()); if (ringtoneUri == null) { Log.e("FindMyPhone", "Could not find a ringtone to play!"); return; } ringtone = RingtoneManager.getRingtone(getApplicationContext(), ringtoneUri); } if (android.os.Build.VERSION.SDK_INT >= 21) { AudioAttributes.Builder b = new AudioAttributes.Builder(); b.setUsage(AudioAttributes.USAGE_ALARM); ringtone.setAudioAttributes(b.build()); } else { ringtone.setStreamType(AudioManager.STREAM_ALARM); } ringtone.play(); }
private void useContext(Context c) { // The media player can fail for lots of reasons. Try to setup a backup // sound for use when the media player fails. fallbackSound = RingtoneManager.getRingtone(c, AlarmUtil.getDefaultAlarmUri()); if (fallbackSound == null) { Uri superFallback = RingtoneManager.getValidRingtoneUri(c); fallbackSound = RingtoneManager.getRingtone(c, superFallback); } // Make the fallback sound use the alarm stream as well. if (fallbackSound != null) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { fallbackSound.setStreamType(AudioManager.STREAM_ALARM); } else { fallbackSound.setAudioAttributes(new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_ALARM) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build()); } } // Instantiate a vibrator. That's fun to say. vibrator = (Vibrator) c.getSystemService(Context.VIBRATOR_SERVICE); }
public static void CreateChannel(String identifier, String name, String description, int importance, String soundName, int enableLights, int lightColor, int enableVibration, long[] vibrationPattern, String bundle) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) return; channels.add(identifier); NotificationManager nm = (NotificationManager) UnityPlayer.currentActivity.getSystemService(Context.NOTIFICATION_SERVICE); NotificationChannel channel = new NotificationChannel(identifier, name, importance); channel.setDescription(description); if (soundName != null) { Resources res = UnityPlayer.currentActivity.getResources(); int id = res.getIdentifier("raw/" + soundName, null, UnityPlayer.currentActivity.getPackageName()); AudioAttributes audioAttributes = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_NOTIFICATION).setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION).build(); channel.setSound(Uri.parse("android.resource://" + bundle + "/" + id), audioAttributes); } channel.enableLights(enableLights == 1); channel.setLightColor(lightColor); channel.enableVibration(enableVibration == 1); if (vibrationPattern == null) vibrationPattern = new long[] { 1000L, 1000L }; channel.setVibrationPattern(vibrationPattern); nm.createNotificationChannel(channel); }
private void preparePlayer(File audioFile, boolean frontSpeaker) throws IOException { if (mPlayer == null) { mPlayer = new MediaPlayer(); mPlayer.setOnCompletionListener(this); mPlayer.setOnErrorListener(this); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mPlayer.setAudioAttributes(new AudioAttributes.Builder() .setContentType(frontSpeaker ? AudioAttributes.CONTENT_TYPE_SPEECH : AudioAttributes.CONTENT_TYPE_MUSIC) .setUsage(frontSpeaker ? AudioAttributes.USAGE_VOICE_COMMUNICATION : AudioAttributes.USAGE_MEDIA) .build()); } else { mPlayer.setAudioStreamType(frontSpeaker ? AudioManager.STREAM_VOICE_CALL : AudioManager.STREAM_MUSIC); } mPlayer.setDataSource(audioFile.getAbsolutePath()); mPlayer.prepare(); }
/** Updates the recorded sample. Overwrites any previous recording in this sample. */ private void loadNewSample(byte[] bytes) { this.bytes = bytes; this.audioTrack = new AudioTrack( new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(), new AudioFormat.Builder() .setChannelMask(AudioFormat.CHANNEL_OUT_MONO) .setEncoding(AudioFormat.ENCODING_PCM_16BIT) .setSampleRate(Utils.SAMPLE_RATE_HZ) .build(), bytes.length, AudioTrack.MODE_STATIC, AudioManager.AUDIO_SESSION_ID_GENERATE); // Write the audio bytes to the audioTrack to play back. audioTrack.write(bytes, 0, bytes.length); }
@Override public void onCreate() { super.onCreate(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { SoundPool.Builder builder = new SoundPool.Builder(); AudioAttributes.Builder attributes = new AudioAttributes.Builder(); attributes.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .setLegacyStreamType(AudioManager.STREAM_MUSIC) .setUsage(AudioAttributes.USAGE_ASSISTANCE_ACCESSIBILITY); builder.setAudioAttributes(attributes.build()) .setMaxStreams(MAX_STREAMS); mSoundPool = builder.build(); } else { mSoundPool = new SoundPool(5, AudioManager.STREAM_MUSIC, 0); } mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); mLruCache = new LruCache<String, String[]>(Characters.MONOGRAPHS.length); registerReceiver(mBroadcastReceiver, new IntentFilter(PronounceService.PLAY_PRONOUNCE_NAME)); }
private void onInitSample() { mRingtone = RingtoneManager.getRingtone(getContext(), Settings.System.DEFAULT_RINGTONE_URI); if (mRingtone != null) { mRingtone.setStreamType(AudioManager.STREAM_RING); mRingtone.setAudioAttributes( new AudioAttributes.Builder(mRingtone.getAudioAttributes()) .setFlags(AudioAttributes.FLAG_BYPASS_INTERRUPTION_POLICY | AudioAttributes.FLAG_BYPASS_MUTE) .build()); } }
/** * SoundPool creator with the new constructor available since API 21 */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void createNewSoundPool() { Log.d(this.getClass().getSimpleName(), "New soundpool constructor"); AudioAttributes attr = new AudioAttributes.Builder().setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION).build(); soundPool = new SoundPool.Builder().setMaxStreams(1).setAudioAttributes(attr).build(); correctSound = soundPool.load(this, R.raw.correct_sound, 1); wrongSound = soundPool.load(this, R.raw.wrong_sound, 1); }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private void setUpSoundPoolLollipop(){ soundPool = new SoundPool.Builder() .setAudioAttributes(new AudioAttributes.Builder().setContentType(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION).build()) .setMaxStreams(MAX_STREAMS) .build(); }
/** * Creates a new sound pool. */ @TargetApi(Build.VERSION_CODES.LOLLIPOP) private void createNewSoundPool(){ AudioAttributes attributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(); soundPool = new SoundPool.Builder() .setAudioAttributes(attributes) .setMaxStreams(MAX_STREAMS) .build(); startSoundPool(); }
@Override public void onCreate() { super.onCreate(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { NotificationChannel notificationChannel = new NotificationChannel(NOTIFICATION_DEFAULT_CHANNEL_ID, getString(R.string.notification_channel_name), NotificationManagerCompat.IMPORTANCE_DEFAULT); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.createNotificationChannel(notificationChannel); AudioAttributes audioAttributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_MEDIA) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(); audioFocusRequest = new AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN) .setOnAudioFocusChangeListener(audioFocusChangeListener) .setAcceptsDelayedFocusGain(false) .setWillPauseWhenDucked(true) .setAudioAttributes(audioAttributes) .build(); } audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); mediaSession = new MediaSessionCompat(this, "PlayerService"); mediaSession.setFlags(MediaSessionCompat.FLAG_HANDLES_MEDIA_BUTTONS | MediaSessionCompat.FLAG_HANDLES_TRANSPORT_CONTROLS); mediaSession.setCallback(mediaSessionCallback); Context appContext = getApplicationContext(); Intent activityIntent = new Intent(appContext, MainActivity.class); mediaSession.setSessionActivity(PendingIntent.getActivity(appContext, 0, activityIntent, 0)); Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON, null, appContext, MediaButtonReceiver.class); mediaSession.setMediaButtonReceiver(PendingIntent.getBroadcast(appContext, 0, mediaButtonIntent, 0)); exoPlayer = ExoPlayerFactory.newSimpleInstance(new DefaultRenderersFactory(this), new DefaultTrackSelector(), new DefaultLoadControl()); exoPlayer.addListener(exoPlayerListener); DataSource.Factory httpDataSourceFactory = new OkHttpDataSourceFactory(new OkHttpClient(), Util.getUserAgent(this, getString(R.string.app_name)), null); Cache cache = new SimpleCache(new File(this.getCacheDir().getAbsolutePath() + "/exoplayer"), new LeastRecentlyUsedCacheEvictor(1024 * 1024 * 100)); // 100 Mb max this.dataSourceFactory = new CacheDataSourceFactory(cache, httpDataSourceFactory, CacheDataSource.FLAG_BLOCK_ON_CACHE | CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR); this.extractorsFactory = new DefaultExtractorsFactory(); }
@TargetApi(21) private static AudioTrack createAudioTrackOnLollipopOrHigher( int sampleRateInHz, int channelConfig, int bufferSizeInBytes) { Logging.d(TAG, "createAudioTrackOnLollipopOrHigher"); // TODO(henrika): use setPerformanceMode(int) with PERFORMANCE_MODE_LOW_LATENCY to control // performance when Android O is supported. Add some logging in the mean time. final int nativeOutputSampleRate = AudioTrack.getNativeOutputSampleRate(AudioManager.STREAM_VOICE_CALL); Logging.d(TAG, "nativeOutputSampleRate: " + nativeOutputSampleRate); if (sampleRateInHz != nativeOutputSampleRate) { Logging.w(TAG, "Unable to use fast mode since requested sample rate is not native"); } if (usageAttribute != DEFAULT_USAGE) { Logging.w(TAG, "A non default usage attribute is used: " + usageAttribute); } // Create an audio track where the audio usage is for VoIP and the content type is speech. return new AudioTrack( new AudioAttributes.Builder() .setUsage(usageAttribute) .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .build(), new AudioFormat.Builder() .setEncoding(AudioFormat.ENCODING_PCM_16BIT) .setSampleRate(sampleRateInHz) .setChannelMask(channelConfig) .build(), bufferSizeInBytes, AudioTrack.MODE_STREAM, AudioManager.AUDIO_SESSION_ID_GENERATE); }
private void initSoundPool() { SoundPool.Builder spb = new SoundPool.Builder(); spb.setMaxStreams(10); AudioAttributes.Builder attrBuilder = new AudioAttributes.Builder(); attrBuilder.setLegacyStreamType(AudioManager.STREAM_MUSIC); spb.setAudioAttributes(attrBuilder.build()); soundPool = spb.build(); }
private static int toLegacyStreamType(AudioAttributes aa) { if ((aa.getFlags() & 1) == 1) { return 7; } if ((aa.getFlags() & 4) == 4) { return 6; } switch (aa.getUsage()) { case 1: case 11: case 12: case 14: return 3; case 2: return 0; case 3: return 8; case 4: return 4; case 5: case 7: case 8: case 9: case 10: return 5; case 6: return 2; case 13: return 1; default: return 3; } }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private SoundPool createSoundPoolLollipop() { final AudioAttributes audioAttributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(); return new SoundPool.Builder() .setAudioAttributes(audioAttributes) .setMaxStreams(4) .build(); }
/** * Set the standard audio attributes for the Text to Speech stream */ private void setAttributes() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { setAudioAttributes(new AudioAttributes.Builder().setContentType(AudioAttributes.CONTENT_TYPE_SPEECH) .setUsage(AudioAttributes.USAGE_MEDIA) .setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED) .setLegacyStreamType(AudioManager.STREAM_MUSIC).build()); } }
@TargetApi(Build.VERSION_CODES.LOLLIPOP) private static void createNewSoundPool() { AudioAttributes attributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) .build(); soundPool = new SoundPool.Builder() .setAudioAttributes(attributes) .build(); }
private void createSoundPool() { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { mSoundPool = new SoundPool(MAX_STREAMS, AudioManager.STREAM_MUSIC, 0); } else { AudioAttributes audioAttributes = new AudioAttributes.Builder() .setUsage(AudioAttributes.USAGE_GAME) .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC) .build(); mSoundPool = new SoundPool.Builder() .setAudioAttributes(audioAttributes) .setMaxStreams(MAX_STREAMS) .build(); } }