Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d1e2789b authored by Miao Chou's avatar Miao Chou Committed by Android Git Automerger
Browse files

am 141a9022: am 658bf2fa: Add BluetoothService to reduce resuming time after reboot

* commit '141a9022':
  Add BluetoothService to reduce resuming time after reboot
parents c3988e0a 141a9022
Loading
Loading
Loading
Loading
+27 −22
Original line number Original line Diff line number Diff line
@@ -60,6 +60,7 @@ import java.io.IOException;
import java.io.PrintWriter;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.HashMap;
import java.util.Map;
import java.util.Map;

class BluetoothManagerService extends IBluetoothManager.Stub {
class BluetoothManagerService extends IBluetoothManager.Stub {
    private static final String TAG = "BluetoothManagerService";
    private static final String TAG = "BluetoothManagerService";
    private static final boolean DBG = false;
    private static final boolean DBG = false;
@@ -234,25 +235,6 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
                        sendEnableMsg(mQuietEnableExternal);
                        sendEnableMsg(mQuietEnableExternal);
                    }
                    }
                }
                }
            } else if (Intent.ACTION_USER_SWITCHED.equals(action)) {
                if (DBG) Log.d(TAG, "Bluetooth user switched");
                mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_USER_SWITCHED,
                       intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0), 0));
            } else if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
                if (DBG) Log.d(TAG, "Bluetooth boot completed");
                synchronized(mReceiver) {
                    if (mEnableExternal && isBluetoothPersistedStateOnBluetooth()) {
                        //Enable
                        if (DBG) Log.d(TAG, "Auto-enabling Bluetooth.");
                        sendEnableMsg(mQuietEnableExternal);
                    }
                    if (!isNameAndAddressSet()) {
                        // Sync the Bluetooth name and address from the
                        // Bluetooth Adapter
                        if (DBG) Log.d(TAG, "Retrieving Bluetooth Adapter name and address...");
                        getNameAndAddress();
                    }
                }
            }
            }
        }
        }
    };
    };
@@ -277,9 +259,7 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
        registerForBleScanModeChange();
        registerForBleScanModeChange();
        mCallbacks = new RemoteCallbackList<IBluetoothManagerCallback>();
        mCallbacks = new RemoteCallbackList<IBluetoothManagerCallback>();
        mStateChangeCallbacks = new RemoteCallbackList<IBluetoothStateChangeCallback>();
        mStateChangeCallbacks = new RemoteCallbackList<IBluetoothStateChangeCallback>();
        IntentFilter filter = new IntentFilter(Intent.ACTION_BOOT_COMPLETED);
        IntentFilter filter = new IntentFilter(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
        filter.addAction(BluetoothAdapter.ACTION_LOCAL_NAME_CHANGED);
        filter.addAction(Intent.ACTION_USER_SWITCHED);
        registerForAirplaneMode(filter);
        registerForAirplaneMode(filter);
        filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
        mContext.registerReceiver(mReceiver, filter);
        mContext.registerReceiver(mReceiver, filter);
@@ -789,6 +769,31 @@ class BluetoothManagerService extends IBluetoothManager.Stub {
        }
        }
    }
    }


    /**
     * Send enable message and set adapter name and address. Called when the boot phase becomes
     * PHASE_SYSTEM_SERVICES_READY.
     */
    public void handleOnBootPhase() {
        if (DBG) Log.d(TAG, "Bluetooth boot completed");
        if (mEnableExternal && isBluetoothPersistedStateOnBluetooth()) {
            if (DBG) Log.d(TAG, "Auto-enabling Bluetooth.");
            sendEnableMsg(mQuietEnableExternal);
        }
        if (!isNameAndAddressSet()) {
            // Sync the Bluetooth name and address from the Bluetooth Adapter
            if (DBG) Log.d(TAG, "Retrieving Bluetooth Adapter name and address...");
            getNameAndAddress();
        }
    }

    /**
     * Called when switching to a different foreground user.
     */
    public void handleOnSwitchUser(int userHandle) {
        if (DBG) Log.d(TAG, "Bluetooth user switched");
        mHandler.sendMessage(mHandler.obtainMessage(MESSAGE_USER_SWITCHED, userHandle, 0));
    }

    /**
    /**
     * This class manages the clients connected to a given ProfileService
     * This class manages the clients connected to a given ProfileService
     * and maintains the connection with that service.
     * and maintains the connection with that service.
+51 −0
Original line number Original line Diff line number Diff line
/*
 * Copyright (C) 2015 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.server;

import android.bluetooth.BluetoothAdapter;
import android.content.Context;
import android.util.Log;

class BluetoothService extends SystemService {
    private static final String TAG = "BluetoothService";
    private BluetoothManagerService mBluetoothManagerService;

    public BluetoothService(Context context) {
        super(context);
        mBluetoothManagerService = new BluetoothManagerService(context);
    }

    @Override
    public void onStart() {
        Log.d(TAG, "onStart: publishing BluetoothManagerService");
        publishBinderService(BluetoothAdapter.BLUETOOTH_MANAGER_SERVICE, mBluetoothManagerService);
    }

    @Override
    public void onBootPhase(int phase) {
        if (phase == SystemService.PHASE_SYSTEM_SERVICES_READY) {
            Log.d(TAG, "onBootPhase: PHASE_SYSTEM_SERVICES_READY");
            mBluetoothManagerService.handleOnBootPhase();
        }
    }

    @Override
    public void onSwitchUser(int userHandle) {
        Log.d(TAG, "onSwitchUser: switching to user " + userHandle);
        mBluetoothManagerService.handleOnSwitchUser(userHandle);
    }
}
+2 −5
Original line number Original line Diff line number Diff line
@@ -21,7 +21,6 @@ import android.app.ActivityThread;
import android.app.IAlarmManager;
import android.app.IAlarmManager;
import android.app.INotificationManager;
import android.app.INotificationManager;
import android.app.usage.UsageStatsManagerInternal;
import android.app.usage.UsageStatsManagerInternal;
import android.bluetooth.BluetoothAdapter;
import android.content.ComponentName;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Context;
@@ -401,7 +400,6 @@ public final class SystemServer {
        NetworkScoreService networkScore = null;
        NetworkScoreService networkScore = null;
        NsdService serviceDiscovery= null;
        NsdService serviceDiscovery= null;
        WindowManagerService wm = null;
        WindowManagerService wm = null;
        BluetoothManagerService bluetooth = null;
        UsbService usb = null;
        UsbService usb = null;
        SerialService serial = null;
        SerialService serial = null;
        NetworkTimeUpdateService networkTimeUpdater = null;
        NetworkTimeUpdateService networkTimeUpdater = null;
@@ -508,9 +506,8 @@ public final class SystemServer {
            } else if (disableBluetooth) {
            } else if (disableBluetooth) {
                Slog.i(TAG, "Bluetooth Service disabled by config");
                Slog.i(TAG, "Bluetooth Service disabled by config");
            } else {
            } else {
                Slog.i(TAG, "Bluetooth Manager Service");
                Slog.i(TAG, "Bluetooth Service");
                bluetooth = new BluetoothManagerService(context);
                mSystemServiceManager.startService(BluetoothService.class);
                ServiceManager.addService(BluetoothAdapter.BLUETOOTH_MANAGER_SERVICE, bluetooth);
            }
            }
        } catch (RuntimeException e) {
        } catch (RuntimeException e) {
            Slog.e("System", "******************************************");
            Slog.e("System", "******************************************");