summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/SoundPlayer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/SoundPlayer.java')
-rw-r--r--src/com/android/camera/SoundPlayer.java122
1 files changed, 0 insertions, 122 deletions
diff --git a/src/com/android/camera/SoundPlayer.java b/src/com/android/camera/SoundPlayer.java
deleted file mode 100644
index a3acb44..0000000
--- a/src/com/android/camera/SoundPlayer.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (C) 2011 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.camera;
-
-import android.content.res.AssetFileDescriptor;
-import android.media.AudioManager;
-import android.media.MediaPlayer;
-import android.util.Log;
-
-import java.io.IOException;
-
-/**
- * Plays an AssetFileDescriptor, but does all the hard work on another thread so
- * that any slowness with preparing or loading doesn't block the calling thread.
- */
-public class SoundPlayer implements Runnable {
- private static final String TAG = "SoundPlayer";
- private Thread mThread;
- private MediaPlayer mPlayer;
- private int mPlayCount = 0;
- private boolean mExit;
- private AssetFileDescriptor mAfd;
- private int mAudioStreamType;
-
- @Override
- public void run() {
- while(true) {
- try {
- if (mPlayer == null) {
- MediaPlayer player = new MediaPlayer();
- player.setAudioStreamType(mAudioStreamType);
- player.setDataSource(mAfd.getFileDescriptor(), mAfd.getStartOffset(),
- mAfd.getLength());
- player.setLooping(false);
- player.prepare();
- mPlayer = player;
- mAfd.close();
- mAfd = null;
- }
- synchronized (this) {
- while(true) {
- if (mExit) {
- return;
- } else if (mPlayCount <= 0) {
- wait();
- } else {
- mPlayCount--;
- break;
- }
- }
- }
- mPlayer.start();
- } catch (Exception e) {
- Log.e(TAG, "Error playing sound", e);
- }
- }
- }
-
- public SoundPlayer(AssetFileDescriptor afd) {
- mAfd = afd;
- mAudioStreamType = AudioManager.STREAM_MUSIC;
- }
-
- public SoundPlayer(AssetFileDescriptor afd, boolean enforceAudible) {
- mAfd = afd;
- if (enforceAudible) {
- mAudioStreamType = 7; // AudioManager.STREAM_SYSTEM_ENFORCED; currently hidden API.
- } else {
- mAudioStreamType = AudioManager.STREAM_MUSIC;
- }
- }
-
- public void play() {
- if (mThread == null) {
- mThread = new Thread(this);
- mThread.start();
- }
- synchronized (this) {
- mPlayCount++;
- notifyAll();
- }
- }
-
- public void release() {
- if (mThread != null) {
- synchronized (this) {
- mExit = true;
- notifyAll();
- }
- try {
- mThread.join();
- } catch (InterruptedException e) {
- }
- mThread = null;
- }
- if (mAfd != null) {
- try {
- mAfd.close();
- } catch(IOException e) {
- }
- mAfd = null;
- }
- if (mPlayer != null) {
- mPlayer.release();
- mPlayer = null;
- }
- }
-}