diff options
Diffstat (limited to 'src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java')
-rw-r--r-- | src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java | 229 |
1 files changed, 0 insertions, 229 deletions
diff --git a/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java b/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java deleted file mode 100644 index 6bb2b4a..0000000 --- a/src/com/android/settings/bluetooth/LocalBluetoothDeviceManager.java +++ /dev/null @@ -1,229 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.settings.bluetooth; - -import android.app.AlertDialog; -import android.bluetooth.BluetoothDevice; -import android.util.Log; -import android.widget.Toast; -import android.content.Context; - -import com.android.settings.R; -import com.android.settings.bluetooth.LocalBluetoothManager.Callback; - -import java.util.ArrayList; -import java.util.List; - -/** - * LocalBluetoothDeviceManager manages the set of remote Bluetooth devices. - */ -public class LocalBluetoothDeviceManager { - private static final String TAG = "LocalBluetoothDeviceManager"; - - final LocalBluetoothManager mLocalManager; - final List<Callback> mCallbacks; - - final List<LocalBluetoothDevice> mDevices = new ArrayList<LocalBluetoothDevice>(); - - public LocalBluetoothDeviceManager(LocalBluetoothManager localManager) { - mLocalManager = localManager; - mCallbacks = localManager.getCallbacks(); - readPairedDevices(); - } - - private synchronized boolean readPairedDevices() { - BluetoothDevice manager = mLocalManager.getBluetoothManager(); - String[] bondedAddresses = manager.listBonds(); - if (bondedAddresses == null) return false; - - boolean deviceAdded = false; - for (String address : bondedAddresses) { - LocalBluetoothDevice device = findDevice(address); - if (device == null) { - device = new LocalBluetoothDevice(mLocalManager.getContext(), address); - mDevices.add(device); - dispatchDeviceAdded(device); - deviceAdded = true; - } - } - - return deviceAdded; - } - - public synchronized List<LocalBluetoothDevice> getDevicesCopy() { - return new ArrayList<LocalBluetoothDevice>(mDevices); - } - - void onBluetoothStateChanged(boolean enabled) { - if (enabled) { - readPairedDevices(); - } - } - - public synchronized void onDeviceAppeared(String address, short rssi) { - boolean deviceAdded = false; - - LocalBluetoothDevice device = findDevice(address); - if (device == null) { - device = new LocalBluetoothDevice(mLocalManager.getContext(), address); - mDevices.add(device); - deviceAdded = true; - } - - device.setRssi(rssi); - device.setVisible(true); - - if (deviceAdded) { - dispatchDeviceAdded(device); - } - } - - public synchronized void onDeviceDisappeared(String address) { - LocalBluetoothDevice device = findDevice(address); - if (device == null) return; - - device.setVisible(false); - checkForDeviceRemoval(device); - } - - private void checkForDeviceRemoval(LocalBluetoothDevice device) { - if (device.getBondState() == BluetoothDevice.BOND_NOT_BONDED && - !device.isVisible()) { - // If device isn't paired, remove it altogether - mDevices.remove(device); - dispatchDeviceDeleted(device); - } - } - - public synchronized void onDeviceNameUpdated(String address) { - LocalBluetoothDevice device = findDevice(address); - if (device != null) { - device.refreshName(); - } - } - - public synchronized LocalBluetoothDevice findDevice(String address) { - - for (int i = mDevices.size() - 1; i >= 0; i--) { - LocalBluetoothDevice device = mDevices.get(i); - - if (device.getAddress().equals(address)) { - return device; - } - } - - return null; - } - - /** - * Attempts to get the name of a remote device, otherwise returns the address. - * - * @param address The address. - * @return The name, or if unavailable, the address. - */ - public String getName(String address) { - LocalBluetoothDevice device = findDevice(address); - return device != null ? device.getName() : address; - } - - private void dispatchDeviceAdded(LocalBluetoothDevice device) { - synchronized (mCallbacks) { - for (Callback callback : mCallbacks) { - callback.onDeviceAdded(device); - } - } - - // TODO: divider between prev paired/connected and scanned - } - - private void dispatchDeviceDeleted(LocalBluetoothDevice device) { - synchronized (mCallbacks) { - for (Callback callback : mCallbacks) { - callback.onDeviceDeleted(device); - } - } - } - - public synchronized void onBondingStateChanged(String address, int bondState) { - LocalBluetoothDevice device = findDevice(address); - if (device == null) { - if (!readPairedDevices()) { - Log.e(TAG, "Got bonding state changed for " + address + - ", but we have no record of that device."); - } - return; - } - - device.refresh(); - - if (bondState == BluetoothDevice.BOND_BONDED) { - // Auto-connect after pairing - device.connect(); - } - } - - /** - * Called when there is a bonding error. - * - * @param address The address of the remote device. - * @param reason The reason, one of the error reasons from - * BluetoothDevice.UNBOND_REASON_* - */ - public synchronized void onBondingError(String address, int reason) { - mLocalManager.showError(address, R.string.bluetooth_error_title, - (reason == BluetoothDevice.UNBOND_REASON_AUTH_FAILED) ? - R.string.bluetooth_pairing_pin_error_message : - R.string.bluetooth_pairing_error_message); - } - - public synchronized void onProfileStateChanged(String address) { - LocalBluetoothDevice device = findDevice(address); - if (device == null) return; - - device.refresh(); - } - - public synchronized void onConnectingError(String address) { - LocalBluetoothDevice device = findDevice(address); - if (device == null) return; - - /* - * Go through the device's delegate so we don't spam the user with - * errors connecting to different profiles, and instead make sure the - * user sees a single error for his single 'connect' action. - */ - device.showConnectingError(); - } - - public synchronized void onScanningStateChanged(boolean started) { - if (!started) return; - - // If starting a new scan, clear old visibility - for (int i = mDevices.size() - 1; i >= 0; i--) { - LocalBluetoothDevice device = mDevices.get(i); - device.setVisible(false); - checkForDeviceRemoval(device); - } - } - - public synchronized void onBtClassChanged(String address) { - LocalBluetoothDevice device = findDevice(address); - if (device != null) { - device.refreshBtClass(); - } - } -} |