Initial checkin of AOSP Messaging app.
b/23110861 Change-Id: I11db999bd10656801e618f78ab2b2ef74136fff1
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
/*
|
||||
* Copyright (C) 2015 The Android Open Source Project
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.android.messaging.util;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.res.AssetFileDescriptor;
|
||||
import android.media.AudioManager;
|
||||
import android.media.MediaPlayer;
|
||||
|
||||
/**
|
||||
* Default implementation of MediaUtil
|
||||
*/
|
||||
public class MediaUtilImpl extends MediaUtil {
|
||||
|
||||
@Override
|
||||
public void playSound(final Context context, final int resId,
|
||||
final OnCompletionListener completionListener) {
|
||||
// We want to play at the media volume and not the ringer volume, but we do want to
|
||||
// avoid playing sound when the ringer/notifications are silenced. This is used for
|
||||
// in app sounds that are not critical and should not impact running silent but also
|
||||
// shouldn't play at full ring volume if you want to hear your ringer but don't want
|
||||
// to be annoyed with in-app volume.
|
||||
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
|
||||
try {
|
||||
final MediaPlayer mediaPlayer = new MediaPlayer();
|
||||
mediaPlayer.setAudioStreamType(AudioManager.STREAM_NOTIFICATION);
|
||||
final AssetFileDescriptor afd = context.getResources().openRawResourceFd(resId);
|
||||
mediaPlayer.setDataSource(
|
||||
afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
|
||||
afd.close();
|
||||
mediaPlayer.prepare();
|
||||
mediaPlayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
|
||||
@Override
|
||||
public void onCompletion(final MediaPlayer mp) {
|
||||
if (completionListener != null) {
|
||||
completionListener.onCompletion();
|
||||
}
|
||||
mp.stop();
|
||||
mp.release();
|
||||
}
|
||||
});
|
||||
mediaPlayer.seekTo(0);
|
||||
mediaPlayer.start();
|
||||
return;
|
||||
} catch (final Exception e) {
|
||||
LogUtil.w("MediaUtilImpl", "Error playing sound id: " + resId, e);
|
||||
}
|
||||
if (completionListener != null) {
|
||||
// Call the completion handler to not block functionality if audio play fails
|
||||
completionListener.onCompletion();
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user