181 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			6.1 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| /*
 | |
|  * Copyright (C) 2010-2011 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 android.bluetooth;
 | |
| 
 | |
| import android.os.ParcelUuid;
 | |
| 
 | |
| import java.util.Arrays;
 | |
| import java.util.HashSet;
 | |
| 
 | |
| /**
 | |
| * Static helper methods and constants to decode the ParcelUuid of remote devices.
 | |
| *  @hide
 | |
| */
 | |
| public final class BluetoothUuid {
 | |
| 
 | |
|     /* See Bluetooth Assigned Numbers document - SDP section, to get the values of UUIDs
 | |
|      * for the various services.
 | |
|      *
 | |
|      * The following 128 bit values are calculated as:
 | |
|      *  uuid * 2^96 + BASE_UUID
 | |
|      */
 | |
|     public static final ParcelUuid AudioSink =
 | |
|             ParcelUuid.fromString("0000110B-0000-1000-8000-00805F9B34FB");
 | |
|     public static final ParcelUuid AudioSource =
 | |
|             ParcelUuid.fromString("0000110A-0000-1000-8000-00805F9B34FB");
 | |
|     public static final ParcelUuid AdvAudioDist =
 | |
|             ParcelUuid.fromString("0000110D-0000-1000-8000-00805F9B34FB");
 | |
|     public static final ParcelUuid HSP =
 | |
|             ParcelUuid.fromString("00001108-0000-1000-8000-00805F9B34FB");
 | |
|     public static final ParcelUuid Handsfree =
 | |
|             ParcelUuid.fromString("0000111E-0000-1000-8000-00805F9B34FB");
 | |
|     public static final ParcelUuid AvrcpController =
 | |
|             ParcelUuid.fromString("0000110E-0000-1000-8000-00805F9B34FB");
 | |
|     public static final ParcelUuid AvrcpTarget =
 | |
|             ParcelUuid.fromString("0000110C-0000-1000-8000-00805F9B34FB");
 | |
|     public static final ParcelUuid ObexObjectPush =
 | |
|             ParcelUuid.fromString("00001105-0000-1000-8000-00805f9b34fb");
 | |
|     public static final ParcelUuid DirectPrinting =
 | |
|             ParcelUuid.fromString("00001118-0000-1000-8000-00805f9b34fb");
 | |
|     public static final ParcelUuid ReferencePrinting =
 | |
|             ParcelUuid.fromString("00001119-0000-1000-8000-00805f9b34fb");
 | |
|     public static final ParcelUuid PrintingStatus =
 | |
|             ParcelUuid.fromString("00001123-0000-1000-8000-00805f9b34fb");
 | |
|     public static final ParcelUuid MessageAccessServer =
 | |
|             ParcelUuid.fromString("00001132-0000-1000-8000-00805f9b34fb");
 | |
|     public static final ParcelUuid MessageNotificationServer =
 | |
|             ParcelUuid.fromString("00001133-0000-1000-8000-00805f9b34fb");
 | |
| 
 | |
|     public static final ParcelUuid[] RESERVED_UUIDS = {
 | |
|         AudioSink, AudioSource, AdvAudioDist, HSP, Handsfree, AvrcpController, AvrcpTarget,
 | |
|         ObexObjectPush, MessageAccessServer, MessageNotificationServer,
 | |
|         DirectPrinting, ReferencePrinting, PrintingStatus };
 | |
| 
 | |
|     public static boolean isAudioSource(ParcelUuid uuid) {
 | |
|         return uuid.equals(AudioSource);
 | |
|     }
 | |
| 
 | |
|     public static boolean isAudioSink(ParcelUuid uuid) {
 | |
|         return uuid.equals(AudioSink);
 | |
|     }
 | |
| 
 | |
|     public static boolean isAdvAudioDist(ParcelUuid uuid) {
 | |
|         return uuid.equals(AdvAudioDist);
 | |
|     }
 | |
| 
 | |
|     public static boolean isHandsfree(ParcelUuid uuid) {
 | |
|         return uuid.equals(Handsfree);
 | |
|     }
 | |
| 
 | |
|     public static boolean isHeadset(ParcelUuid uuid) {
 | |
|         return uuid.equals(HSP);
 | |
|     }
 | |
| 
 | |
|     public static boolean isAvrcpController(ParcelUuid uuid) {
 | |
|         return uuid.equals(AvrcpController);
 | |
|     }
 | |
| 
 | |
|     public static boolean isAvrcpTarget(ParcelUuid uuid) {
 | |
|         return uuid.equals(AvrcpTarget);
 | |
|     }
 | |
| 
 | |
|     public static boolean isMessageAccessServer(ParcelUuid uuid) {
 | |
|         return uuid.equals(MessageAccessServer);
 | |
|     }
 | |
| 
 | |
|     public static boolean isMessageNotificationServer(ParcelUuid uuid) {
 | |
|         return uuid.equals(MessageNotificationServer);
 | |
|     }
 | |
| 
 | |
|     public static boolean isPrintingStatus(ParcelUuid uuid) {
 | |
|         return uuid.equals(PrintingStatus);
 | |
|     }
 | |
| 
 | |
|     public static boolean isDirectPrinting(ParcelUuid uuid) {
 | |
|         return uuid.equals(DirectPrinting);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Returns true if ParcelUuid is present in uuidArray
 | |
|      *
 | |
|      * @param uuidArray - Array of ParcelUuids
 | |
|      * @param uuid
 | |
|      */
 | |
|     public static boolean isUuidPresent(ParcelUuid[] uuidArray, ParcelUuid uuid) {
 | |
|         if ((uuidArray == null || uuidArray.length == 0) && uuid == null)
 | |
|             return true;
 | |
| 
 | |
|         if (uuidArray == null)
 | |
|             return false;
 | |
| 
 | |
|         for (ParcelUuid element: uuidArray) {
 | |
|             if (element.equals(uuid)) return true;
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Returns true if there any common ParcelUuids in uuidA and uuidB.
 | |
|      *
 | |
|      * @param uuidA - List of ParcelUuids
 | |
|      * @param uuidB - List of ParcelUuids
 | |
|      *
 | |
|      */
 | |
|     public static boolean containsAnyUuid(ParcelUuid[] uuidA, ParcelUuid[] uuidB) {
 | |
|         if (uuidA == null && uuidB == null) return true;
 | |
| 
 | |
|         if (uuidA == null) {
 | |
|             return uuidB.length == 0 ? true : false;
 | |
|         }
 | |
| 
 | |
|         if (uuidB == null) {
 | |
|             return uuidA.length == 0 ? true : false;
 | |
|         }
 | |
| 
 | |
|         HashSet<ParcelUuid> uuidSet = new HashSet<ParcelUuid> (Arrays.asList(uuidA));
 | |
|         for (ParcelUuid uuid: uuidB) {
 | |
|             if (uuidSet.contains(uuid)) return true;
 | |
|         }
 | |
|         return false;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Returns true if all the ParcelUuids in ParcelUuidB are present in
 | |
|      * ParcelUuidA
 | |
|      *
 | |
|      * @param uuidA - Array of ParcelUuidsA
 | |
|      * @param uuidB - Array of ParcelUuidsB
 | |
|      *
 | |
|      */
 | |
|     public static boolean containsAllUuids(ParcelUuid[] uuidA, ParcelUuid[] uuidB) {
 | |
|         if (uuidA == null && uuidB == null) return true;
 | |
| 
 | |
|         if (uuidA == null) {
 | |
|             return uuidB.length == 0 ? true : false;
 | |
|         }
 | |
| 
 | |
|         if (uuidB == null) return true;
 | |
| 
 | |
|         HashSet<ParcelUuid> uuidSet = new HashSet<ParcelUuid> (Arrays.asList(uuidA));
 | |
|         for (ParcelUuid uuid: uuidB) {
 | |
|             if (!uuidSet.contains(uuid)) return false;
 | |
|         }
 | |
|         return true;
 | |
|     }
 | |
| 
 | |
| }
 | 
