Loading core/java/android/preference/SeekBarVolumizer.java +31 −16 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,8 @@ import android.util.Log; import android.widget.SeekBar; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.SeekBar.OnSeekBarChangeListener; import com.android.internal.annotations.GuardedBy; /** /** * Turns a {@link SeekBar} into a volume control. * Turns a {@link SeekBar} into a volume control. * @hide * @hide Loading Loading @@ -67,6 +69,10 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private Observer mVolumeObserver; private Observer mVolumeObserver; private int mOriginalStreamVolume; private int mOriginalStreamVolume; private int mLastAudibleStreamVolume; private int mLastAudibleStreamVolume; // When the old handler is destroyed and a new one is created, there could be a situation where // this is accessed at the same time in different handlers. So, access to this field needs to be // synchronized. @GuardedBy("this") private Ringtone mRingtone; private Ringtone mRingtone; private int mLastProgress = -1; private int mLastProgress = -1; private boolean mMuted; private boolean mMuted; Loading Loading @@ -174,11 +180,13 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } private void onInitSample() { private void onInitSample() { synchronized (this) { mRingtone = RingtoneManager.getRingtone(mContext, mDefaultUri); mRingtone = RingtoneManager.getRingtone(mContext, mDefaultUri); if (mRingtone != null) { if (mRingtone != null) { mRingtone.setStreamType(mStreamType); mRingtone.setStreamType(mStreamType); } } } } } private void postStartSample() { private void postStartSample() { if (mHandler == null) return; if (mHandler == null) return; Loading @@ -192,6 +200,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba if (mCallback != null) { if (mCallback != null) { mCallback.onSampleStarting(this); mCallback.onSampleStarting(this); } } synchronized (this) { if (mRingtone != null) { if (mRingtone != null) { try { try { mRingtone.setAudioAttributes(new AudioAttributes.Builder(mRingtone mRingtone.setAudioAttributes(new AudioAttributes.Builder(mRingtone Loading @@ -206,6 +216,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } } } } } } private void postStopSample() { private void postStopSample() { if (mHandler == null) return; if (mHandler == null) return; Loading @@ -216,10 +227,12 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } private void onStopSample() { private void onStopSample() { synchronized (this) { if (mRingtone != null) { if (mRingtone != null) { mRingtone.stop(); mRingtone.stop(); } } } } } public void stop() { public void stop() { if (mHandler == null) return; // already stopped if (mHandler == null) return; // already stopped Loading Loading @@ -274,8 +287,10 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } public boolean isSamplePlaying() { public boolean isSamplePlaying() { synchronized (this) { return mRingtone != null && mRingtone.isPlaying(); return mRingtone != null && mRingtone.isPlaying(); } } } public void startSample() { public void startSample() { postStartSample(); postStartSample(); Loading Loading
core/java/android/preference/SeekBarVolumizer.java +31 −16 Original line number Original line Diff line number Diff line Loading @@ -38,6 +38,8 @@ import android.util.Log; import android.widget.SeekBar; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; import android.widget.SeekBar.OnSeekBarChangeListener; import com.android.internal.annotations.GuardedBy; /** /** * Turns a {@link SeekBar} into a volume control. * Turns a {@link SeekBar} into a volume control. * @hide * @hide Loading Loading @@ -67,6 +69,10 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba private Observer mVolumeObserver; private Observer mVolumeObserver; private int mOriginalStreamVolume; private int mOriginalStreamVolume; private int mLastAudibleStreamVolume; private int mLastAudibleStreamVolume; // When the old handler is destroyed and a new one is created, there could be a situation where // this is accessed at the same time in different handlers. So, access to this field needs to be // synchronized. @GuardedBy("this") private Ringtone mRingtone; private Ringtone mRingtone; private int mLastProgress = -1; private int mLastProgress = -1; private boolean mMuted; private boolean mMuted; Loading Loading @@ -174,11 +180,13 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } private void onInitSample() { private void onInitSample() { synchronized (this) { mRingtone = RingtoneManager.getRingtone(mContext, mDefaultUri); mRingtone = RingtoneManager.getRingtone(mContext, mDefaultUri); if (mRingtone != null) { if (mRingtone != null) { mRingtone.setStreamType(mStreamType); mRingtone.setStreamType(mStreamType); } } } } } private void postStartSample() { private void postStartSample() { if (mHandler == null) return; if (mHandler == null) return; Loading @@ -192,6 +200,8 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba if (mCallback != null) { if (mCallback != null) { mCallback.onSampleStarting(this); mCallback.onSampleStarting(this); } } synchronized (this) { if (mRingtone != null) { if (mRingtone != null) { try { try { mRingtone.setAudioAttributes(new AudioAttributes.Builder(mRingtone mRingtone.setAudioAttributes(new AudioAttributes.Builder(mRingtone Loading @@ -206,6 +216,7 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } } } } } } private void postStopSample() { private void postStopSample() { if (mHandler == null) return; if (mHandler == null) return; Loading @@ -216,10 +227,12 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } private void onStopSample() { private void onStopSample() { synchronized (this) { if (mRingtone != null) { if (mRingtone != null) { mRingtone.stop(); mRingtone.stop(); } } } } } public void stop() { public void stop() { if (mHandler == null) return; // already stopped if (mHandler == null) return; // already stopped Loading Loading @@ -274,8 +287,10 @@ public class SeekBarVolumizer implements OnSeekBarChangeListener, Handler.Callba } } public boolean isSamplePlaying() { public boolean isSamplePlaying() { synchronized (this) { return mRingtone != null && mRingtone.isPlaying(); return mRingtone != null && mRingtone.isPlaying(); } } } public void startSample() { public void startSample() { postStartSample(); postStartSample(); Loading