OSDN Git Service

Fix use of deprecated SoundPool API in Camera2 SoundPlayer
authorJean-Michel Trivi <jmtrivi@google.com>
Thu, 28 Feb 2019 20:35:21 +0000 (12:35 -0800)
committerJean-Michel Trivi <jmtrivi@google.com>
Thu, 28 Feb 2019 20:35:21 +0000 (12:35 -0800)
Don't use stream types for operations other than volume control

Bug: 122901916
Test: verify logcat doesn't show warnings, see bug
Change-Id: Id5b4f3b3c56c61a2f00172a470410e0670ce81b4

src/com/android/camera/SoundPlayer.java

index ff3f37f..6e76eb5 100644 (file)
@@ -17,6 +17,7 @@
 package com.android.camera;
 
 import android.content.Context;
+import android.media.AudioAttributes;
 import android.media.AudioManager;
 import android.media.SoundPool;
 import android.util.SparseIntArray;
@@ -39,8 +40,14 @@ public class SoundPlayer {
      */
     public SoundPlayer(Context appContext) {
         mAppContext = appContext;
-        final int audioType = getAudioTypeForSoundPool();
-        mSoundPool = new SoundPool(1 /* max streams */, audioType, 0 /* quality */);
+        mSoundPool = new SoundPool.Builder()
+                .setMaxStreams(1)
+                .setAudioAttributes(new AudioAttributes.Builder()
+                        .setUsage(AudioAttributes.USAGE_ASSISTANCE_SONIFICATION)
+                        .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
+                        .setFlags(AudioAttributes.FLAG_AUDIBILITY_ENFORCED)
+                        .build())
+                .build();
     }
 
     /**
@@ -86,10 +93,4 @@ public class SoundPlayer {
     public boolean isReleased() {
         return mIsReleased;
     }
-
-    private static int getAudioTypeForSoundPool() {
-        // STREAM_SYSTEM_ENFORCED is hidden API.
-        return ApiHelper.getIntFieldIfExists(AudioManager.class,
-                "STREAM_SYSTEM_ENFORCED", null, AudioManager.STREAM_RING);
-    }
 }