diff --git a/core/api/current.txt b/core/api/current.txt index 9fd9ba293f417..ee4844938b786 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -21584,6 +21584,7 @@ package android.media { public class MediaActionSound { ctor public MediaActionSound(); method public void load(int); + method public static boolean mustPlayShutterSound(); method public void play(int); method public void release(); field public static final int FOCUS_COMPLETE = 1; // 0x1 diff --git a/media/java/android/media/MediaActionSound.java b/media/java/android/media/MediaActionSound.java index dcd4dce5f3eb2..ec56d614f2b5e 100644 --- a/media/java/android/media/MediaActionSound.java +++ b/media/java/android/media/MediaActionSound.java @@ -16,8 +16,11 @@ package android.media; -import android.media.AudioManager; +import android.content.Context; import android.media.SoundPool; +import android.os.IBinder; +import android.os.RemoteException; +import android.os.ServiceManager; import android.util.Log; /** @@ -104,6 +107,26 @@ public class MediaActionSound { private static final int STATE_LOADING_PLAY_REQUESTED = 2; private static final int STATE_LOADED = 3; + /** + *

Returns true if the application must play the shutter sound in accordance + * to certain regional restrictions.

+ * + *

If this method returns true, applications are strongly recommended to use + * MediaActionSound.play(SHUTTER_CLICK) or START_VIDEO_RECORDING whenever it captures + * images or video to storage or sends them over the network.

+ */ + public static boolean mustPlayShutterSound() { + boolean result = false; + IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE); + IAudioService audioService = IAudioService.Stub.asInterface(b); + try { + result = audioService.isCameraSoundForced(); + } catch (RemoteException e) { + Log.e(TAG, "audio service is unavailable for queries, defaulting to false"); + } + return result; + } + private class SoundState { public final int name; public int id;