1 /* 2 * Copyright (c) 2008-2009, Motorola, Inc. 3 * 4 * All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * - Redistributions of source code must retain the above copyright notice, 10 * this list of conditions and the following disclaimer. 11 * 12 * - Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the documentation 14 * and/or other materials provided with the distribution. 15 * 16 * - Neither the name of the Motorola, Inc. nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 */ 32 33 package com.android.bluetooth.pbap; 34 35 import android.bluetooth.BluetoothAdapter; 36 import android.content.BroadcastReceiver; 37 import android.content.Context; 38 import android.content.Intent; 39 import android.util.Log; 40 41 public class BluetoothPbapReceiver extends BroadcastReceiver { 42 43 private static final String TAG = "BluetoothPbapReceiver"; 44 45 private static final boolean V = BluetoothPbapService.VERBOSE; 46 47 @Override onReceive(Context context, Intent intent)48 public void onReceive(Context context, Intent intent) { 49 if (V) Log.v(TAG, "PbapReceiver onReceive "); 50 51 Intent in = new Intent(); 52 in.putExtras(intent); 53 in.setClass(context, BluetoothPbapService.class); 54 String action = intent.getAction(); 55 in.putExtra("action", action); 56 if (V) Log.v(TAG,"***********action = " + action); 57 58 boolean startService = true; 59 if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) { 60 int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR); 61 in.putExtra(BluetoothAdapter.EXTRA_STATE, state); 62 if (V) Log.v(TAG,"***********state = " + state); 63 if ((state == BluetoothAdapter.STATE_TURNING_ON) 64 || (state == BluetoothAdapter.STATE_OFF)) { 65 //FIX: We turn on PBAP after BluetoothAdapter.STATE_ON, 66 //but we turn off PBAP right after BluetoothAdapter.STATE_TURNING_OFF 67 startService = false; 68 } 69 } else { 70 // Don't forward intent unless device has bluetooth and bluetooth is enabled. 71 BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter(); 72 if (adapter == null || !adapter.isEnabled()) { 73 startService = false; 74 } 75 } 76 if (startService) { 77 if (V) Log.v(TAG,"***********Calling start service!!!! with action = " + in.getAction()); 78 context.startService(in); 79 } 80 } 81 } 82