Automated import from //branches/cupcake/...@142889,142889
diff --git a/camera/libcameraservice/CameraService.cpp b/camera/libcameraservice/CameraService.cpp
index 7e5fdbe..cb8ab58 100644
--- a/camera/libcameraservice/CameraService.cpp
+++ b/camera/libcameraservice/CameraService.cpp
@@ -32,6 +32,8 @@
 #include <media/AudioSystem.h>
 #include "CameraService.h"
 
+#include <cutils/properties.h>
+
 namespace android {
 
 extern "C" {
@@ -157,7 +159,13 @@
 {
     sp<MediaPlayer> mp = new MediaPlayer();
     if (mp->setDataSource(file) == NO_ERROR) {
-        mp->setAudioStreamType(AudioSystem::ALARM);
+        char value[PROPERTY_VALUE_MAX];
+        property_get("ro.camera.sound.forced", value, "0");
+        if (atoi(value)) {
+            mp->setAudioStreamType(AudioSystem::ENFORCED_AUDIBLE);
+        } else {
+            mp->setAudioStreamType(AudioSystem::SYSTEM);            
+        }
         mp->prepare();
     } else {
         mp.clear();
diff --git a/libs/audioflinger/AudioFlinger.cpp b/libs/audioflinger/AudioFlinger.cpp
index 9ba7f90..b9ecdd8 100644
--- a/libs/audioflinger/AudioFlinger.cpp
+++ b/libs/audioflinger/AudioFlinger.cpp
@@ -243,7 +243,8 @@
     // AudioSystem::routedToA2dpOutput(streamType) == false
     return (streamType == AudioSystem::RING ||
             streamType == AudioSystem::ALARM ||
-            streamType == AudioSystem::NOTIFICATION);
+            streamType == AudioSystem::NOTIFICATION ||
+            streamType == AudioSystem::ENFORCED_AUDIBLE);
 }
 
 status_t AudioFlinger::dumpClients(int fd, const Vector<String16>& args)
@@ -645,7 +646,8 @@
         return PERMISSION_DENIED;
     }
 
-    if (uint32_t(stream) >= AudioSystem::NUM_STREAM_TYPES) {
+    if (uint32_t(stream) >= AudioSystem::NUM_STREAM_TYPES ||
+        uint32_t(stream) == AudioSystem::ENFORCED_AUDIBLE) {
         return BAD_VALUE;
     }
 
@@ -680,7 +682,8 @@
         return PERMISSION_DENIED;
     }
 
-    if (uint32_t(stream) >= AudioSystem::NUM_STREAM_TYPES) {
+    if (uint32_t(stream) >= AudioSystem::NUM_STREAM_TYPES ||
+        uint32_t(stream) == AudioSystem::ENFORCED_AUDIBLE) {
         return BAD_VALUE;
     }