OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.media; | 5 package org.chromium.media; |
6 | 6 |
7 import android.annotation.TargetApi; | 7 import android.annotation.TargetApi; |
8 import android.bluetooth.BluetoothAdapter; | 8 import android.bluetooth.BluetoothAdapter; |
9 import android.bluetooth.BluetoothManager; | 9 import android.bluetooth.BluetoothManager; |
10 import android.content.BroadcastReceiver; | 10 import android.content.BroadcastReceiver; |
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
157 // Return this value when getProperty(PROPERTY_OUTPUT_FRAMES_PER_BUFFER) | 157 // Return this value when getProperty(PROPERTY_OUTPUT_FRAMES_PER_BUFFER) |
158 // fails. | 158 // fails. |
159 private static final int DEFAULT_FRAME_PER_BUFFER = 256; | 159 private static final int DEFAULT_FRAME_PER_BUFFER = 256; |
160 | 160 |
161 private final AudioManager mAudioManager; | 161 private final AudioManager mAudioManager; |
162 private final Context mContext; | 162 private final Context mContext; |
163 private final long mNativeAudioManagerAndroid; | 163 private final long mNativeAudioManagerAndroid; |
164 | 164 |
165 // Enabled during initialization if MODIFY_AUDIO_SETTINGS permission is | 165 // Enabled during initialization if MODIFY_AUDIO_SETTINGS permission is |
166 // granted. Required to shift system-wide audio settings. | 166 // granted. Required to shift system-wide audio settings. |
167 private boolean mHasModifyAudioSettingsPermission = false; | 167 private boolean mHasModifyAudioSettingsPermission; |
168 | 168 |
169 // Enabled during initialization if BLUETOOTH permission is granted. | 169 // Enabled during initialization if BLUETOOTH permission is granted. |
170 private boolean mHasBluetoothPermission = false; | 170 private boolean mHasBluetoothPermission; |
171 | 171 |
172 // Stores the audio states related to Bluetooth SCO audio, where some | 172 // Stores the audio states related to Bluetooth SCO audio, where some |
173 // states are needed to keep track of intermediate states while the SCO | 173 // states are needed to keep track of intermediate states while the SCO |
174 // channel is enabled or disabled (switching state can take a few seconds). | 174 // channel is enabled or disabled (switching state can take a few seconds). |
175 private int mBluetoothScoState = STATE_BLUETOOTH_SCO_INVALID; | 175 private int mBluetoothScoState = STATE_BLUETOOTH_SCO_INVALID; |
176 | 176 |
177 private boolean mIsInitialized = false; | 177 private boolean mIsInitialized; |
178 private boolean mSavedIsSpeakerphoneOn; | 178 private boolean mSavedIsSpeakerphoneOn; |
179 private boolean mSavedIsMicrophoneMute; | 179 private boolean mSavedIsMicrophoneMute; |
180 | 180 |
181 // Id of the requested audio device. Can only be modified by | 181 // Id of the requested audio device. Can only be modified by |
182 // call to setDevice(). | 182 // call to setDevice(). |
183 private int mRequestedAudioDevice = DEVICE_INVALID; | 183 private int mRequestedAudioDevice = DEVICE_INVALID; |
184 | 184 |
185 // This class should be created, initialized and closed on the audio thread | 185 // This class should be created, initialized and closed on the audio thread |
186 // in the audio manager. We use |mNonThreadSafe| to ensure that this is | 186 // in the audio manager. We use |mNonThreadSafe| to ensure that this is |
187 // the case. Only active when |DEBUG| is set to true. | 187 // the case. Only active when |DEBUG| is set to true. |
188 private final NonThreadSafe mNonThreadSafe = new NonThreadSafe(); | 188 private final NonThreadSafe mNonThreadSafe = new NonThreadSafe(); |
189 | 189 |
190 // Lock to protect |mAudioDevices| and |mRequestedAudioDevice| which can | 190 // Lock to protect |mAudioDevices| and |mRequestedAudioDevice| which can |
191 // be accessed from the main thread and the audio manager thread. | 191 // be accessed from the main thread and the audio manager thread. |
192 private final Object mLock = new Object(); | 192 private final Object mLock = new Object(); |
193 | 193 |
194 // Contains a list of currently available audio devices. | 194 // Contains a list of currently available audio devices. |
195 private boolean[] mAudioDevices = new boolean[DEVICE_COUNT]; | 195 private boolean[] mAudioDevices = new boolean[DEVICE_COUNT]; |
196 | 196 |
197 private final ContentResolver mContentResolver; | 197 private final ContentResolver mContentResolver; |
198 private ContentObserver mSettingsObserver = null; | 198 private ContentObserver mSettingsObserver; |
199 private HandlerThread mSettingsObserverThread = null; | 199 private HandlerThread mSettingsObserverThread; |
200 private int mCurrentVolume; | 200 private int mCurrentVolume; |
201 | 201 |
202 // Broadcast receiver for wired headset intent broadcasts. | 202 // Broadcast receiver for wired headset intent broadcasts. |
203 private BroadcastReceiver mWiredHeadsetReceiver; | 203 private BroadcastReceiver mWiredHeadsetReceiver; |
204 | 204 |
205 // Broadcast receiver for Bluetooth headset intent broadcasts. | 205 // Broadcast receiver for Bluetooth headset intent broadcasts. |
206 // Utilized to detect changes in Bluetooth headset availability. | 206 // Utilized to detect changes in Bluetooth headset availability. |
207 private BroadcastReceiver mBluetoothHeadsetReceiver; | 207 private BroadcastReceiver mBluetoothHeadsetReceiver; |
208 | 208 |
209 // Broadcast receiver for Bluetooth SCO broadcasts. | 209 // Broadcast receiver for Bluetooth SCO broadcasts. |
(...skipping 1037 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1247 } | 1247 } |
1248 | 1248 |
1249 /** Unregister receiver for broadcasted ACTION_USB_DEVICE_ATTACHED/DETACHED
intent. */ | 1249 /** Unregister receiver for broadcasted ACTION_USB_DEVICE_ATTACHED/DETACHED
intent. */ |
1250 private void unregisterForUsbAudioIntentBroadcast() { | 1250 private void unregisterForUsbAudioIntentBroadcast() { |
1251 mContext.unregisterReceiver(mUsbAudioReceiver); | 1251 mContext.unregisterReceiver(mUsbAudioReceiver); |
1252 mUsbAudioReceiver = null; | 1252 mUsbAudioReceiver = null; |
1253 } | 1253 } |
1254 | 1254 |
1255 private native void nativeSetMute(long nativeAudioManagerAndroid, boolean mu
ted); | 1255 private native void nativeSetMute(long nativeAudioManagerAndroid, boolean mu
ted); |
1256 } | 1256 } |
OLD | NEW |