import typing

import android.bluetooth.le
import android.content
import android.os
import java
import java.chaquopy
import java.io
import java.lang
import java.time
import java.util
import java.util.concurrent

class BluetoothA2dp(BluetoothProfile):
    ACTION_CONNECTION_STATE_CHANGED: typing.ClassVar[str] = ...
    ACTION_PLAYING_STATE_CHANGED: typing.ClassVar[str] = ...
    STATE_NOT_PLAYING: typing.ClassVar[int] = ...
    STATE_PLAYING: typing.ClassVar[int] = ...
    def finalize(self) -> None: ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...
    def getSupportedCodecTypes(self) -> java.util.Collection[BluetoothCodecType]: ...
    def isA2dpPlaying(self, device: BluetoothDevice, /) -> bool: ...

class BluetoothAdapter(java.lang.Object):
    ACTION_CONNECTION_STATE_CHANGED: typing.ClassVar[str] = ...
    ACTION_DISCOVERY_FINISHED: typing.ClassVar[str] = ...
    ACTION_DISCOVERY_STARTED: typing.ClassVar[str] = ...
    ACTION_LOCAL_NAME_CHANGED: typing.ClassVar[str] = ...
    ACTION_REQUEST_DISCOVERABLE: typing.ClassVar[str] = ...
    ACTION_REQUEST_ENABLE: typing.ClassVar[str] = ...
    ACTION_SCAN_MODE_CHANGED: typing.ClassVar[str] = ...
    ACTION_STATE_CHANGED: typing.ClassVar[str] = ...
    ERROR: typing.ClassVar[int] = ...
    EXTRA_CONNECTION_STATE: typing.ClassVar[str] = ...
    EXTRA_DISCOVERABLE_DURATION: typing.ClassVar[str] = ...
    EXTRA_LOCAL_NAME: typing.ClassVar[str] = ...
    EXTRA_PREVIOUS_CONNECTION_STATE: typing.ClassVar[str] = ...
    EXTRA_PREVIOUS_SCAN_MODE: typing.ClassVar[str] = ...
    EXTRA_PREVIOUS_STATE: typing.ClassVar[str] = ...
    EXTRA_SCAN_MODE: typing.ClassVar[str] = ...
    EXTRA_STATE: typing.ClassVar[str] = ...
    SCAN_MODE_CONNECTABLE: typing.ClassVar[int] = ...
    SCAN_MODE_CONNECTABLE_DISCOVERABLE: typing.ClassVar[int] = ...
    SCAN_MODE_NONE: typing.ClassVar[int] = ...
    STATE_CONNECTED: typing.ClassVar[int] = ...
    STATE_CONNECTING: typing.ClassVar[int] = ...
    STATE_DISCONNECTED: typing.ClassVar[int] = ...
    STATE_DISCONNECTING: typing.ClassVar[int] = ...
    STATE_OFF: typing.ClassVar[int] = ...
    STATE_ON: typing.ClassVar[int] = ...
    STATE_TURNING_OFF: typing.ClassVar[int] = ...
    STATE_TURNING_ON: typing.ClassVar[int] = ...
    def cancelDiscovery(self) -> bool: ...
    @staticmethod
    def checkBluetoothAddress(address: str | java.lang.String, /) -> bool: ...
    def closeProfileProxy(self, unusedProfile: int | java.jint | java.lang.Integer, proxy: BluetoothProfile, /) -> None: ...
    def disable(self) -> bool: ...
    def enable(self) -> bool: ...
    def finalize(self) -> None: ...
    def getAddress(self) -> str: ...
    def getBluetoothLeAdvertiser(self) -> android.bluetooth.le.BluetoothLeAdvertiser | None: ...
    def getBluetoothLeScanner(self) -> android.bluetooth.le.BluetoothLeScanner | None: ...
    def getBondedDevices(self) -> java.util.Set[BluetoothDevice]: ...
    @staticmethod
    def getDefaultAdapter() -> BluetoothAdapter | None: ...
    def getDiscoverableTimeout(self) -> java.time.Duration | None: ...
    def getLeMaximumAdvertisingDataLength(self) -> int: ...
    def getMaxConnectedAudioDevices(self) -> int: ...
    def getName(self) -> str | None: ...
    def getProfileConnectionState(self, profile: int | java.jint | java.lang.Integer, /) -> int: ...
    def getProfileProxy(self, context: android.content.Context, listener: BluetoothProfile.ServiceListener, profile: int | java.jint | java.lang.Integer, /) -> bool: ...
    @typing.overload
    def getRemoteDevice(self, address: str | java.lang.String, /) -> BluetoothDevice: ...
    @typing.overload
    def getRemoteDevice(self, address: java.chaquopy.JavaArrayJByte, /) -> BluetoothDevice: ...
    def getRemoteLeDevice(self, address: str | java.lang.String, addressType: int | java.jint | java.lang.Integer, /) -> BluetoothDevice: ...
    def getScanMode(self) -> int: ...
    def getState(self) -> int: ...
    def isDiscovering(self) -> bool: ...
    def isEnabled(self) -> bool: ...
    def isLe2MPhySupported(self) -> bool: ...
    def isLeAudioBroadcastAssistantSupported(self) -> int: ...
    def isLeAudioBroadcastSourceSupported(self) -> int: ...
    def isLeAudioSupported(self) -> int: ...
    def isLeCodedPhySupported(self) -> bool: ...
    def isLeExtendedAdvertisingSupported(self) -> bool: ...
    def isLePeriodicAdvertisingSupported(self) -> bool: ...
    def isMultipleAdvertisementSupported(self) -> bool: ...
    def isOffloadedFilteringSupported(self) -> bool: ...
    def isOffloadedScanBatchingSupported(self) -> bool: ...
    def listenUsingInsecureL2capChannel(self) -> BluetoothServerSocket: ...
    def listenUsingInsecureRfcommWithServiceRecord(self, name: str | java.lang.String, uuid: java.util.UUID, /) -> BluetoothServerSocket: ...
    def listenUsingL2capChannel(self) -> BluetoothServerSocket: ...
    def listenUsingRfcommWithServiceRecord(self, name: str | java.lang.String, uuid: java.util.UUID, /) -> BluetoothServerSocket: ...
    def listenUsingSocketSettings(self, settings: BluetoothSocketSettings, /) -> BluetoothServerSocket: ...
    def setName(self, name: str | java.lang.String, /) -> bool: ...
    def startDiscovery(self) -> bool: ...
    @typing.overload
    def startLeScan(self, callback: BluetoothAdapter.LeScanCallback, /) -> bool: ...
    @typing.overload
    def startLeScan(self, serviceUuids: java.chaquopy.JavaArray[java.util.UUID], callback: BluetoothAdapter.LeScanCallback, /) -> bool: ...
    def stopLeScan(self, callback: BluetoothAdapter.LeScanCallback, /) -> None: ...

    class LeScanCallback(java.lang.Object):
        def onLeScan(self, arg1: BluetoothDevice, arg2: int | java.jint | java.lang.Integer, arg3: java.chaquopy.JavaArrayJByte, /) -> None: ...

class BluetoothAssignedNumbers(java.lang.Object):
    AAMP_OF_AMERICA: typing.ClassVar[int] = ...
    ACCEL_SEMICONDUCTOR: typing.ClassVar[int] = ...
    ACE_SENSOR: typing.ClassVar[int] = ...
    ADIDAS: typing.ClassVar[int] = ...
    ADVANCED_PANMOBIL_SYSTEMS: typing.ClassVar[int] = ...
    AIROHA_TECHNOLOGY: typing.ClassVar[int] = ...
    ALCATEL: typing.ClassVar[int] = ...
    ALPWISE: typing.ClassVar[int] = ...
    AMICCOM_ELECTRONICS: typing.ClassVar[int] = ...
    APLIX: typing.ClassVar[int] = ...
    APPLE: typing.ClassVar[int] = ...
    APT_LICENSING: typing.ClassVar[int] = ...
    ARCHOS: typing.ClassVar[int] = ...
    ARP_DEVICES: typing.ClassVar[int] = ...
    ATHEROS_COMMUNICATIONS: typing.ClassVar[int] = ...
    ATMEL: typing.ClassVar[int] = ...
    AUSTCO_COMMUNICATION_SYSTEMS: typing.ClassVar[int] = ...
    AUTONET_MOBILE: typing.ClassVar[int] = ...
    AVAGO: typing.ClassVar[int] = ...
    AVM_BERLIN: typing.ClassVar[int] = ...
    A_AND_D_ENGINEERING: typing.ClassVar[int] = ...
    A_AND_R_CAMBRIDGE: typing.ClassVar[int] = ...
    BANDSPEED: typing.ClassVar[int] = ...
    BAND_XI_INTERNATIONAL: typing.ClassVar[int] = ...
    BDE_TECHNOLOGY: typing.ClassVar[int] = ...
    BEATS_ELECTRONICS: typing.ClassVar[int] = ...
    BEAUTIFUL_ENTERPRISE: typing.ClassVar[int] = ...
    BEKEY: typing.ClassVar[int] = ...
    BELKIN_INTERNATIONAL: typing.ClassVar[int] = ...
    BINAURIC: typing.ClassVar[int] = ...
    BIOSENTRONICS: typing.ClassVar[int] = ...
    BLUEGIGA: typing.ClassVar[int] = ...
    BLUERADIOS: typing.ClassVar[int] = ...
    BLUETOOTH_SIG: typing.ClassVar[int] = ...
    BLUETREK_TECHNOLOGIES: typing.ClassVar[int] = ...
    BOSE: typing.ClassVar[int] = ...
    BRIARTEK: typing.ClassVar[int] = ...
    BROADCOM: typing.ClassVar[int] = ...
    CAEN_RFID: typing.ClassVar[int] = ...
    CAMBRIDGE_SILICON_RADIO: typing.ClassVar[int] = ...
    CATC: typing.ClassVar[int] = ...
    CINETIX: typing.ClassVar[int] = ...
    CLARINOX_TECHNOLOGIES: typing.ClassVar[int] = ...
    COLORFY: typing.ClassVar[int] = ...
    COMMIL: typing.ClassVar[int] = ...
    CONEXANT_SYSTEMS: typing.ClassVar[int] = ...
    CONNECTBLUE: typing.ClassVar[int] = ...
    CONTINENTAL_AUTOMOTIVE: typing.ClassVar[int] = ...
    CONWISE_TECHNOLOGY: typing.ClassVar[int] = ...
    CREATIVE_TECHNOLOGY: typing.ClassVar[int] = ...
    C_TECHNOLOGIES: typing.ClassVar[int] = ...
    DANLERS: typing.ClassVar[int] = ...
    DELORME_PUBLISHING_COMPANY: typing.ClassVar[int] = ...
    DEXCOM: typing.ClassVar[int] = ...
    DIALOG_SEMICONDUCTOR: typing.ClassVar[int] = ...
    DIGIANSWER: typing.ClassVar[int] = ...
    ECLIPSE: typing.ClassVar[int] = ...
    ECOTEST: typing.ClassVar[int] = ...
    ELGATO_SYSTEMS: typing.ClassVar[int] = ...
    EM_MICROELECTRONIC_MARIN: typing.ClassVar[int] = ...
    EQUINOX_AG: typing.ClassVar[int] = ...
    ERICSSON_TECHNOLOGY: typing.ClassVar[int] = ...
    EVLUMA: typing.ClassVar[int] = ...
    FREE2MOVE: typing.ClassVar[int] = ...
    FUNAI_ELECTRIC: typing.ClassVar[int] = ...
    GARMIN_INTERNATIONAL: typing.ClassVar[int] = ...
    GCT_SEMICONDUCTOR: typing.ClassVar[int] = ...
    GELO: typing.ClassVar[int] = ...
    GENEQ: typing.ClassVar[int] = ...
    GENERAL_MOTORS: typing.ClassVar[int] = ...
    GENNUM: typing.ClassVar[int] = ...
    GEOFORCE: typing.ClassVar[int] = ...
    GIBSON_GUITARS: typing.ClassVar[int] = ...
    GN_NETCOM: typing.ClassVar[int] = ...
    GN_RESOUND: typing.ClassVar[int] = ...
    GOOGLE: typing.ClassVar[int] = ...
    GREEN_THROTTLE_GAMES: typing.ClassVar[int] = ...
    GROUP_SENSE: typing.ClassVar[int] = ...
    HANLYNN_TECHNOLOGIES: typing.ClassVar[int] = ...
    HARMAN_INTERNATIONAL: typing.ClassVar[int] = ...
    HEWLETT_PACKARD: typing.ClassVar[int] = ...
    HITACHI: typing.ClassVar[int] = ...
    HOSIDEN: typing.ClassVar[int] = ...
    IBM: typing.ClassVar[int] = ...
    INFINEON_TECHNOLOGIES: typing.ClassVar[int] = ...
    INGENIEUR_SYSTEMGRUPPE_ZAHN: typing.ClassVar[int] = ...
    INTEGRATED_SILICON_SOLUTION: typing.ClassVar[int] = ...
    INTEGRATED_SYSTEM_SOLUTION: typing.ClassVar[int] = ...
    INTEL: typing.ClassVar[int] = ...
    INVENTEL: typing.ClassVar[int] = ...
    IPEXTREME: typing.ClassVar[int] = ...
    I_TECH_DYNAMIC_GLOBAL_DISTRIBUTION: typing.ClassVar[int] = ...
    JAWBONE: typing.ClassVar[int] = ...
    JIANGSU_TOPPOWER_AUTOMOTIVE_ELECTRONICS: typing.ClassVar[int] = ...
    JOHNSON_CONTROLS: typing.ClassVar[int] = ...
    J_AND_M: typing.ClassVar[int] = ...
    KAWANTECH: typing.ClassVar[int] = ...
    KC_TECHNOLOGY: typing.ClassVar[int] = ...
    KENSINGTON_COMPUTER_PRODUCTS_GROUP: typing.ClassVar[int] = ...
    LAIRD_TECHNOLOGIES: typing.ClassVar[int] = ...
    LESSWIRE: typing.ClassVar[int] = ...
    LG_ELECTRONICS: typing.ClassVar[int] = ...
    LINAK: typing.ClassVar[int] = ...
    LUCENT: typing.ClassVar[int] = ...
    LUDUS_HELSINKI: typing.ClassVar[int] = ...
    MACRONIX: typing.ClassVar[int] = ...
    MAGNETI_MARELLI: typing.ClassVar[int] = ...
    MANSELLA: typing.ClassVar[int] = ...
    MARVELL: typing.ClassVar[int] = ...
    MATSUSHITA_ELECTRIC: typing.ClassVar[int] = ...
    MC10: typing.ClassVar[int] = ...
    MEDIATEK: typing.ClassVar[int] = ...
    MESO_INTERNATIONAL: typing.ClassVar[int] = ...
    META_WATCH: typing.ClassVar[int] = ...
    MEWTEL_TECHNOLOGY: typing.ClassVar[int] = ...
    MICOMMAND: typing.ClassVar[int] = ...
    MICROCHIP_TECHNOLOGY: typing.ClassVar[int] = ...
    MICROSOFT: typing.ClassVar[int] = ...
    MINDTREE: typing.ClassVar[int] = ...
    MISFIT_WEARABLES: typing.ClassVar[int] = ...
    MITEL_SEMICONDUCTOR: typing.ClassVar[int] = ...
    MITSUBISHI_ELECTRIC: typing.ClassVar[int] = ...
    MOBILIAN_CORPORATION: typing.ClassVar[int] = ...
    MONSTER: typing.ClassVar[int] = ...
    MOTOROLA: typing.ClassVar[int] = ...
    MSTAR_SEMICONDUCTOR: typing.ClassVar[int] = ...
    MUZIK: typing.ClassVar[int] = ...
    NEC: typing.ClassVar[int] = ...
    NEC_LIGHTING: typing.ClassVar[int] = ...
    NEWLOGIC: typing.ClassVar[int] = ...
    NIKE: typing.ClassVar[int] = ...
    NINE_SOLUTIONS: typing.ClassVar[int] = ...
    NOKIA_MOBILE_PHONES: typing.ClassVar[int] = ...
    NORDIC_SEMICONDUCTOR: typing.ClassVar[int] = ...
    NORWOOD_SYSTEMS: typing.ClassVar[int] = ...
    ODM_TECHNOLOGY: typing.ClassVar[int] = ...
    OMEGAWAVE: typing.ClassVar[int] = ...
    ONSET_COMPUTER: typing.ClassVar[int] = ...
    OPEN_INTERFACE: typing.ClassVar[int] = ...
    OTL_DYNAMICS: typing.ClassVar[int] = ...
    PANDA_OCEAN: typing.ClassVar[int] = ...
    PARROT: typing.ClassVar[int] = ...
    PARTHUS_TECHNOLOGIES: typing.ClassVar[int] = ...
    PASSIF_SEMICONDUCTOR: typing.ClassVar[int] = ...
    PETER_SYSTEMTECHNIK: typing.ClassVar[int] = ...
    PHILIPS_SEMICONDUCTORS: typing.ClassVar[int] = ...
    PLANTRONICS: typing.ClassVar[int] = ...
    POLAR_ELECTRO: typing.ClassVar[int] = ...
    POLAR_ELECTRO_EUROPE: typing.ClassVar[int] = ...
    PROCTER_AND_GAMBLE: typing.ClassVar[int] = ...
    QUALCOMM: typing.ClassVar[int] = ...
    QUALCOMM_CONNECTED_EXPERIENCES: typing.ClassVar[int] = ...
    QUALCOMM_INNOVATION_CENTER: typing.ClassVar[int] = ...
    QUALCOMM_LABS: typing.ClassVar[int] = ...
    QUALCOMM_TECHNOLOGIES: typing.ClassVar[int] = ...
    QUINTIC: typing.ClassVar[int] = ...
    QUUPPA: typing.ClassVar[int] = ...
    RALINK_TECHNOLOGY: typing.ClassVar[int] = ...
    RDA_MICROELECTRONICS: typing.ClassVar[int] = ...
    REALTEK_SEMICONDUCTOR: typing.ClassVar[int] = ...
    RED_M: typing.ClassVar[int] = ...
    RENESAS_TECHNOLOGY: typing.ClassVar[int] = ...
    RESEARCH_IN_MOTION: typing.ClassVar[int] = ...
    RF_MICRO_DEVICES: typing.ClassVar[int] = ...
    RIVIERAWAVES: typing.ClassVar[int] = ...
    ROHDE_AND_SCHWARZ: typing.ClassVar[int] = ...
    RTX_TELECOM: typing.ClassVar[int] = ...
    SAMSUNG_ELECTRONICS: typing.ClassVar[int] = ...
    SARIS_CYCLING_GROUP: typing.ClassVar[int] = ...
    SEERS_TECHNOLOGY: typing.ClassVar[int] = ...
    SEIKO_EPSON: typing.ClassVar[int] = ...
    SELFLY: typing.ClassVar[int] = ...
    SEMILINK: typing.ClassVar[int] = ...
    SENNHEISER_COMMUNICATIONS: typing.ClassVar[int] = ...
    SHANGHAI_SUPER_SMART_ELECTRONICS: typing.ClassVar[int] = ...
    SHENZHEN_EXCELSECU_DATA_TECHNOLOGY: typing.ClassVar[int] = ...
    SIGNIA_TECHNOLOGIES: typing.ClassVar[int] = ...
    SILICON_WAVE: typing.ClassVar[int] = ...
    SIRF_TECHNOLOGY: typing.ClassVar[int] = ...
    SOCKET_MOBILE: typing.ClassVar[int] = ...
    SONY_ERICSSON: typing.ClassVar[int] = ...
    SOUND_ID: typing.ClassVar[int] = ...
    SPORTS_TRACKING_TECHNOLOGIES: typing.ClassVar[int] = ...
    SR_MEDIZINELEKTRONIK: typing.ClassVar[int] = ...
    STACCATO_COMMUNICATIONS: typing.ClassVar[int] = ...
    STALMART_TECHNOLOGY: typing.ClassVar[int] = ...
    STARKEY_LABORATORIES: typing.ClassVar[int] = ...
    STOLLMAN_E_PLUS_V: typing.ClassVar[int] = ...
    STONESTREET_ONE: typing.ClassVar[int] = ...
    ST_MICROELECTRONICS: typing.ClassVar[int] = ...
    SUMMIT_DATA_COMMUNICATIONS: typing.ClassVar[int] = ...
    SUUNTO: typing.ClassVar[int] = ...
    SWIRL_NETWORKS: typing.ClassVar[int] = ...
    SYMBOL_TECHNOLOGIES: typing.ClassVar[int] = ...
    SYNOPSYS: typing.ClassVar[int] = ...
    SYSTEMS_AND_CHIPS: typing.ClassVar[int] = ...
    S_POWER_ELECTRONICS: typing.ClassVar[int] = ...
    TAIXINGBANG_TECHNOLOGY: typing.ClassVar[int] = ...
    TENOVIS: typing.ClassVar[int] = ...
    TERAX: typing.ClassVar[int] = ...
    TEXAS_INSTRUMENTS: typing.ClassVar[int] = ...
    THINKOPTICS: typing.ClassVar[int] = ...
    THREECOM: typing.ClassVar[int] = ...
    THREE_DIJOY: typing.ClassVar[int] = ...
    THREE_DSP: typing.ClassVar[int] = ...
    TIMEKEEPING_SYSTEMS: typing.ClassVar[int] = ...
    TIMEX_GROUP_USA: typing.ClassVar[int] = ...
    TOPCORN_POSITIONING_SYSTEMS: typing.ClassVar[int] = ...
    TOSHIBA: typing.ClassVar[int] = ...
    TRANSILICA: typing.ClassVar[int] = ...
    TRELAB: typing.ClassVar[int] = ...
    TTPCOM: typing.ClassVar[int] = ...
    TXTR: typing.ClassVar[int] = ...
    TZERO_TECHNOLOGIES: typing.ClassVar[int] = ...
    UNIVERSAL_ELECTRONICS: typing.ClassVar[int] = ...
    VERTU: typing.ClassVar[int] = ...
    VISTEON: typing.ClassVar[int] = ...
    VIZIO: typing.ClassVar[int] = ...
    VOYETRA_TURTLE_BEACH: typing.ClassVar[int] = ...
    WAVEPLUS_TECHNOLOGY: typing.ClassVar[int] = ...
    WICENTRIC: typing.ClassVar[int] = ...
    WIDCOMM: typing.ClassVar[int] = ...
    WUXI_VIMICRO: typing.ClassVar[int] = ...
    ZEEVO: typing.ClassVar[int] = ...
    ZER01_TV: typing.ClassVar[int] = ...
    ZOMM: typing.ClassVar[int] = ...
    ZSCAN_SOFTWARE: typing.ClassVar[int] = ...

class BluetoothClass(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothClass]] = ...
    PROFILE_A2DP: typing.ClassVar[int] = ...
    PROFILE_HEADSET: typing.ClassVar[int] = ...
    PROFILE_HID: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def doesClassMatch(self, profile: int | java.jint | java.lang.Integer, /) -> bool: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getDeviceClass(self) -> int: ...
    def getMajorDeviceClass(self) -> int: ...
    def hasService(self, service: int | java.jint | java.lang.Integer, /) -> bool: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Service(java.lang.Object):
        AUDIO: typing.ClassVar[int] = ...
        CAPTURE: typing.ClassVar[int] = ...
        INFORMATION: typing.ClassVar[int] = ...
        LE_AUDIO: typing.ClassVar[int] = ...
        LIMITED_DISCOVERABILITY: typing.ClassVar[int] = ...
        NETWORKING: typing.ClassVar[int] = ...
        OBJECT_TRANSFER: typing.ClassVar[int] = ...
        POSITIONING: typing.ClassVar[int] = ...
        RENDER: typing.ClassVar[int] = ...
        TELEPHONY: typing.ClassVar[int] = ...
        def __init__(self) -> None: ...

    class Device(java.lang.Object):
        AUDIO_VIDEO_CAMCORDER: typing.ClassVar[int] = ...
        AUDIO_VIDEO_CAR_AUDIO: typing.ClassVar[int] = ...
        AUDIO_VIDEO_HANDSFREE: typing.ClassVar[int] = ...
        AUDIO_VIDEO_HEADPHONES: typing.ClassVar[int] = ...
        AUDIO_VIDEO_HIFI_AUDIO: typing.ClassVar[int] = ...
        AUDIO_VIDEO_LOUDSPEAKER: typing.ClassVar[int] = ...
        AUDIO_VIDEO_MICROPHONE: typing.ClassVar[int] = ...
        AUDIO_VIDEO_PORTABLE_AUDIO: typing.ClassVar[int] = ...
        AUDIO_VIDEO_SET_TOP_BOX: typing.ClassVar[int] = ...
        AUDIO_VIDEO_UNCATEGORIZED: typing.ClassVar[int] = ...
        AUDIO_VIDEO_VCR: typing.ClassVar[int] = ...
        AUDIO_VIDEO_VIDEO_CAMERA: typing.ClassVar[int] = ...
        AUDIO_VIDEO_VIDEO_CONFERENCING: typing.ClassVar[int] = ...
        AUDIO_VIDEO_VIDEO_DISPLAY_AND_LOUDSPEAKER: typing.ClassVar[int] = ...
        AUDIO_VIDEO_VIDEO_GAMING_TOY: typing.ClassVar[int] = ...
        AUDIO_VIDEO_VIDEO_MONITOR: typing.ClassVar[int] = ...
        AUDIO_VIDEO_WEARABLE_HEADSET: typing.ClassVar[int] = ...
        COMPUTER_DESKTOP: typing.ClassVar[int] = ...
        COMPUTER_HANDHELD_PC_PDA: typing.ClassVar[int] = ...
        COMPUTER_LAPTOP: typing.ClassVar[int] = ...
        COMPUTER_PALM_SIZE_PC_PDA: typing.ClassVar[int] = ...
        COMPUTER_SERVER: typing.ClassVar[int] = ...
        COMPUTER_UNCATEGORIZED: typing.ClassVar[int] = ...
        COMPUTER_WEARABLE: typing.ClassVar[int] = ...
        HEALTH_BLOOD_PRESSURE: typing.ClassVar[int] = ...
        HEALTH_DATA_DISPLAY: typing.ClassVar[int] = ...
        HEALTH_GLUCOSE: typing.ClassVar[int] = ...
        HEALTH_PULSE_OXIMETER: typing.ClassVar[int] = ...
        HEALTH_PULSE_RATE: typing.ClassVar[int] = ...
        HEALTH_THERMOMETER: typing.ClassVar[int] = ...
        HEALTH_UNCATEGORIZED: typing.ClassVar[int] = ...
        HEALTH_WEIGHING: typing.ClassVar[int] = ...
        PERIPHERAL_KEYBOARD: typing.ClassVar[int] = ...
        PERIPHERAL_KEYBOARD_POINTING: typing.ClassVar[int] = ...
        PERIPHERAL_NON_KEYBOARD_NON_POINTING: typing.ClassVar[int] = ...
        PERIPHERAL_POINTING: typing.ClassVar[int] = ...
        PHONE_CELLULAR: typing.ClassVar[int] = ...
        PHONE_CORDLESS: typing.ClassVar[int] = ...
        PHONE_ISDN: typing.ClassVar[int] = ...
        PHONE_MODEM_OR_GATEWAY: typing.ClassVar[int] = ...
        PHONE_SMART: typing.ClassVar[int] = ...
        PHONE_UNCATEGORIZED: typing.ClassVar[int] = ...
        TOY_CONTROLLER: typing.ClassVar[int] = ...
        TOY_DOLL_ACTION_FIGURE: typing.ClassVar[int] = ...
        TOY_GAME: typing.ClassVar[int] = ...
        TOY_ROBOT: typing.ClassVar[int] = ...
        TOY_UNCATEGORIZED: typing.ClassVar[int] = ...
        TOY_VEHICLE: typing.ClassVar[int] = ...
        WEARABLE_GLASSES: typing.ClassVar[int] = ...
        WEARABLE_HELMET: typing.ClassVar[int] = ...
        WEARABLE_JACKET: typing.ClassVar[int] = ...
        WEARABLE_PAGER: typing.ClassVar[int] = ...
        WEARABLE_UNCATEGORIZED: typing.ClassVar[int] = ...
        WEARABLE_WRIST_WATCH: typing.ClassVar[int] = ...
        def __init__(self) -> None: ...

        class Major(java.lang.Object):
            AUDIO_VIDEO: typing.ClassVar[int] = ...
            COMPUTER: typing.ClassVar[int] = ...
            HEALTH: typing.ClassVar[int] = ...
            IMAGING: typing.ClassVar[int] = ...
            MISC: typing.ClassVar[int] = ...
            NETWORKING: typing.ClassVar[int] = ...
            PERIPHERAL: typing.ClassVar[int] = ...
            PHONE: typing.ClassVar[int] = ...
            TOY: typing.ClassVar[int] = ...
            UNCATEGORIZED: typing.ClassVar[int] = ...
            WEARABLE: typing.ClassVar[int] = ...
            def __init__(self) -> None: ...

class BluetoothCodecConfig(android.os.Parcelable):
    BITS_PER_SAMPLE_16: typing.ClassVar[int] = ...
    BITS_PER_SAMPLE_24: typing.ClassVar[int] = ...
    BITS_PER_SAMPLE_32: typing.ClassVar[int] = ...
    BITS_PER_SAMPLE_NONE: typing.ClassVar[int] = ...
    CHANNEL_MODE_MONO: typing.ClassVar[int] = ...
    CHANNEL_MODE_NONE: typing.ClassVar[int] = ...
    CHANNEL_MODE_STEREO: typing.ClassVar[int] = ...
    CODEC_PRIORITY_DEFAULT: typing.ClassVar[int] = ...
    CODEC_PRIORITY_DISABLED: typing.ClassVar[int] = ...
    CODEC_PRIORITY_HIGHEST: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothCodecConfig]] = ...
    SAMPLE_RATE_176400: typing.ClassVar[int] = ...
    SAMPLE_RATE_192000: typing.ClassVar[int] = ...
    SAMPLE_RATE_44100: typing.ClassVar[int] = ...
    SAMPLE_RATE_48000: typing.ClassVar[int] = ...
    SAMPLE_RATE_88200: typing.ClassVar[int] = ...
    SAMPLE_RATE_96000: typing.ClassVar[int] = ...
    SAMPLE_RATE_NONE: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_AAC: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_APTX: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_APTX_HD: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_INVALID: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_LC3: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_LDAC: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_OPUS: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_SBC: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getBitsPerSample(self) -> int: ...
    def getChannelMode(self) -> int: ...
    def getCodecPriority(self) -> int: ...
    def getCodecSpecific1(self) -> int: ...
    def getCodecSpecific2(self) -> int: ...
    def getCodecSpecific3(self) -> int: ...
    def getCodecSpecific4(self) -> int: ...
    def getCodecType(self) -> int: ...
    def getExtendedCodecType(self) -> BluetoothCodecType | None: ...
    def getSampleRate(self) -> int: ...
    def hashCode(self) -> int: ...
    def isMandatoryCodec(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> BluetoothCodecConfig: ...
        def setBitsPerSample(self, bitsPerSample: int | java.jint | java.lang.Integer, /) -> BluetoothCodecConfig.Builder: ...
        def setChannelMode(self, channelMode: int | java.jint | java.lang.Integer, /) -> BluetoothCodecConfig.Builder: ...
        def setCodecPriority(self, codecPriority: int | java.jint | java.lang.Integer, /) -> BluetoothCodecConfig.Builder: ...
        def setCodecSpecific1(self, codecSpecific1: int | java.jlong | java.lang.Long, /) -> BluetoothCodecConfig.Builder: ...
        def setCodecSpecific2(self, codecSpecific2: int | java.jlong | java.lang.Long, /) -> BluetoothCodecConfig.Builder: ...
        def setCodecSpecific3(self, codecSpecific3: int | java.jlong | java.lang.Long, /) -> BluetoothCodecConfig.Builder: ...
        def setCodecSpecific4(self, codecSpecific4: int | java.jlong | java.lang.Long, /) -> BluetoothCodecConfig.Builder: ...
        def setCodecType(self, codecType: int | java.jint | java.lang.Integer, /) -> BluetoothCodecConfig.Builder: ...
        def setExtendedCodecType(self, codecType: BluetoothCodecType, /) -> BluetoothCodecConfig.Builder: ...
        def setSampleRate(self, sampleRate: int | java.jint | java.lang.Integer, /) -> BluetoothCodecConfig.Builder: ...

class BluetoothCodecStatus(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothCodecStatus]] = ...
    EXTRA_CODEC_STATUS: typing.ClassVar[str] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getCodecConfig(self) -> BluetoothCodecConfig | None: ...
    def getCodecsLocalCapabilities(self) -> java.util.List[BluetoothCodecConfig]: ...
    def getCodecsSelectableCapabilities(self) -> java.util.List[BluetoothCodecConfig]: ...
    def hashCode(self) -> int: ...
    def isCodecConfigSelectable(self, codecConfig: BluetoothCodecConfig, /) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> BluetoothCodecStatus: ...
        def setCodecConfig(self, codecConfig: BluetoothCodecConfig, /) -> BluetoothCodecStatus.Builder: ...
        def setCodecsLocalCapabilities(self, codecsLocalCapabilities: java.util.List[BluetoothCodecConfig], /) -> BluetoothCodecStatus.Builder: ...
        def setCodecsSelectableCapabilities(self, codecsSelectableCapabilities: java.util.List[BluetoothCodecConfig], /) -> BluetoothCodecStatus.Builder: ...

class BluetoothCodecType(android.os.Parcelable):
    CODEC_ID_AAC: typing.ClassVar[int] = ...
    CODEC_ID_APTX: typing.ClassVar[int] = ...
    CODEC_ID_APTX_HD: typing.ClassVar[int] = ...
    CODEC_ID_LDAC: typing.ClassVar[int] = ...
    CODEC_ID_OPUS: typing.ClassVar[int] = ...
    CODEC_ID_SBC: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothCodecType]] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getCodecId(self) -> int: ...
    def getCodecName(self) -> str: ...
    def hashCode(self) -> int: ...
    def isMandatoryCodec(self) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, dest: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothCsipSetCoordinator(BluetoothProfile, java.lang.AutoCloseable):
    ACTION_CSIS_CONNECTION_STATE_CHANGED: typing.ClassVar[str] = ...
    def close(self) -> None: ...
    def finalize(self) -> None: ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...

class BluetoothDevice(android.os.Parcelable):
    ACTION_ACL_CONNECTED: typing.ClassVar[str] = ...
    ACTION_ACL_DISCONNECTED: typing.ClassVar[str] = ...
    ACTION_ACL_DISCONNECT_REQUESTED: typing.ClassVar[str] = ...
    ACTION_ALIAS_CHANGED: typing.ClassVar[str] = ...
    ACTION_BOND_STATE_CHANGED: typing.ClassVar[str] = ...
    ACTION_CLASS_CHANGED: typing.ClassVar[str] = ...
    ACTION_ENCRYPTION_CHANGE: typing.ClassVar[str] = ...
    ACTION_FOUND: typing.ClassVar[str] = ...
    ACTION_KEY_MISSING: typing.ClassVar[str] = ...
    ACTION_NAME_CHANGED: typing.ClassVar[str] = ...
    ACTION_PAIRING_REQUEST: typing.ClassVar[str] = ...
    ACTION_UUID: typing.ClassVar[str] = ...
    ADDRESS_TYPE_ANONYMOUS: typing.ClassVar[int] = ...
    ADDRESS_TYPE_PUBLIC: typing.ClassVar[int] = ...
    ADDRESS_TYPE_RANDOM: typing.ClassVar[int] = ...
    ADDRESS_TYPE_UNKNOWN: typing.ClassVar[int] = ...
    BOND_BONDED: typing.ClassVar[int] = ...
    BOND_BONDING: typing.ClassVar[int] = ...
    BOND_NONE: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothDevice]] = ...
    DEVICE_TYPE_CLASSIC: typing.ClassVar[int] = ...
    DEVICE_TYPE_DUAL: typing.ClassVar[int] = ...
    DEVICE_TYPE_LE: typing.ClassVar[int] = ...
    DEVICE_TYPE_UNKNOWN: typing.ClassVar[int] = ...
    ENCRYPTION_ALGORITHM_AES: typing.ClassVar[int] = ...
    ENCRYPTION_ALGORITHM_E0: typing.ClassVar[int] = ...
    ENCRYPTION_ALGORITHM_NONE: typing.ClassVar[int] = ...
    ERROR: typing.ClassVar[int] = ...
    EXTRA_BOND_STATE: typing.ClassVar[str] = ...
    EXTRA_CLASS: typing.ClassVar[str] = ...
    EXTRA_DEVICE: typing.ClassVar[str] = ...
    EXTRA_ENCRYPTION_ALGORITHM: typing.ClassVar[str] = ...
    EXTRA_ENCRYPTION_ENABLED: typing.ClassVar[str] = ...
    EXTRA_ENCRYPTION_STATUS: typing.ClassVar[str] = ...
    EXTRA_IS_COORDINATED_SET_MEMBER: typing.ClassVar[str] = ...
    EXTRA_KEY_SIZE: typing.ClassVar[str] = ...
    EXTRA_NAME: typing.ClassVar[str] = ...
    EXTRA_PAIRING_KEY: typing.ClassVar[str] = ...
    EXTRA_PAIRING_VARIANT: typing.ClassVar[str] = ...
    EXTRA_PREVIOUS_BOND_STATE: typing.ClassVar[str] = ...
    EXTRA_RSSI: typing.ClassVar[str] = ...
    EXTRA_TRANSPORT: typing.ClassVar[str] = ...
    EXTRA_UUID: typing.ClassVar[str] = ...
    PAIRING_VARIANT_PASSKEY_CONFIRMATION: typing.ClassVar[int] = ...
    PAIRING_VARIANT_PIN: typing.ClassVar[int] = ...
    PHY_LE_1M: typing.ClassVar[int] = ...
    PHY_LE_1M_MASK: typing.ClassVar[int] = ...
    PHY_LE_2M: typing.ClassVar[int] = ...
    PHY_LE_2M_MASK: typing.ClassVar[int] = ...
    PHY_LE_CODED: typing.ClassVar[int] = ...
    PHY_LE_CODED_MASK: typing.ClassVar[int] = ...
    PHY_OPTION_NO_PREFERRED: typing.ClassVar[int] = ...
    PHY_OPTION_S2: typing.ClassVar[int] = ...
    PHY_OPTION_S8: typing.ClassVar[int] = ...
    TRANSPORT_AUTO: typing.ClassVar[int] = ...
    TRANSPORT_BREDR: typing.ClassVar[int] = ...
    TRANSPORT_LE: typing.ClassVar[int] = ...
    @typing.overload
    def connectGatt(self, context: android.content.Context, autoConnect: bool | java.jboolean | java.lang.Boolean, callback: BluetoothGattCallback, /) -> BluetoothGatt | None: ...
    @typing.overload
    def connectGatt(self, context: android.content.Context, autoConnect: bool | java.jboolean | java.lang.Boolean, callback: BluetoothGattCallback, transport: int | java.jint | java.lang.Integer, /) -> BluetoothGatt | None: ...
    @typing.overload
    def connectGatt(self, context: android.content.Context, autoConnect: bool | java.jboolean | java.lang.Boolean, callback: BluetoothGattCallback, transport: int | java.jint | java.lang.Integer, phy: int | java.jint | java.lang.Integer, /) -> BluetoothGatt | None: ...
    @typing.overload
    def connectGatt(self, context: android.content.Context, autoConnect: bool | java.jboolean | java.lang.Boolean, callback: BluetoothGattCallback, transport: int | java.jint | java.lang.Integer, phy: int | java.jint | java.lang.Integer, handler: android.os.Handler, /) -> BluetoothGatt | None: ...
    def createBond(self) -> bool: ...
    def createInsecureL2capChannel(self, psm: int | java.jint | java.lang.Integer, /) -> BluetoothSocket: ...
    def createInsecureRfcommSocketToServiceRecord(self, uuid: java.util.UUID, /) -> BluetoothSocket: ...
    def createL2capChannel(self, psm: int | java.jint | java.lang.Integer, /) -> BluetoothSocket: ...
    def createRfcommSocketToServiceRecord(self, uuid: java.util.UUID, /) -> BluetoothSocket: ...
    def createUsingSocketSettings(self, settings: BluetoothSocketSettings, /) -> BluetoothSocket: ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def fetchUuidsWithSdp(self) -> bool: ...
    def getAddress(self) -> str: ...
    def getAddressType(self) -> int: ...
    def getAlias(self) -> str | None: ...
    def getBluetoothClass(self) -> BluetoothClass | None: ...
    def getBondState(self) -> int: ...
    def getIdentityAddressWithType(self) -> BluetoothDevice.BluetoothAddress: ...
    def getName(self) -> str | None: ...
    def getType(self) -> int: ...
    def getUuids(self) -> java.chaquopy.JavaArray[android.os.ParcelUuid] | None: ...
    def hashCode(self) -> int: ...
    def setAlias(self, alias: str | java.lang.String, /) -> int: ...
    def setPairingConfirmation(self, confirm: bool | java.jboolean | java.lang.Boolean, /) -> bool: ...
    def setPin(self, pin: java.chaquopy.JavaArrayJByte, /) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class BluetoothAddress(android.os.Parcelable):
        CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothDevice.BluetoothAddress]] = ...
        def __init__(self, address: str | java.lang.String, addressType: int | java.jint | java.lang.Integer, /) -> None: ...
        def describeContents(self) -> int: ...
        def getAddress(self) -> str: ...
        def getAddressType(self) -> int: ...
        def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothGatt(BluetoothProfile):
    CONNECTION_PRIORITY_BALANCED: typing.ClassVar[int] = ...
    CONNECTION_PRIORITY_DCK: typing.ClassVar[int] = ...
    CONNECTION_PRIORITY_HIGH: typing.ClassVar[int] = ...
    CONNECTION_PRIORITY_LOW_POWER: typing.ClassVar[int] = ...
    GATT_CONNECTION_CONGESTED: typing.ClassVar[int] = ...
    GATT_CONNECTION_TIMEOUT: typing.ClassVar[int] = ...
    GATT_FAILURE: typing.ClassVar[int] = ...
    GATT_INSUFFICIENT_AUTHENTICATION: typing.ClassVar[int] = ...
    GATT_INSUFFICIENT_AUTHORIZATION: typing.ClassVar[int] = ...
    GATT_INSUFFICIENT_ENCRYPTION: typing.ClassVar[int] = ...
    GATT_INVALID_ATTRIBUTE_LENGTH: typing.ClassVar[int] = ...
    GATT_INVALID_OFFSET: typing.ClassVar[int] = ...
    GATT_READ_NOT_PERMITTED: typing.ClassVar[int] = ...
    GATT_REQUEST_NOT_SUPPORTED: typing.ClassVar[int] = ...
    GATT_SUCCESS: typing.ClassVar[int] = ...
    GATT_WRITE_NOT_PERMITTED: typing.ClassVar[int] = ...
    @typing.overload
    def abortReliableWrite(self) -> None: ...
    @typing.overload
    def abortReliableWrite(self, mDevice: BluetoothDevice, /) -> None: ...
    def beginReliableWrite(self) -> bool: ...
    def close(self) -> None: ...
    def connect(self) -> bool: ...
    def disconnect(self) -> None: ...
    def discoverServices(self) -> bool: ...
    def executeReliableWrite(self) -> bool: ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevice(self) -> BluetoothDevice: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...
    def getService(self, uuid: java.util.UUID, /) -> BluetoothGattService | None: ...
    def getServices(self) -> java.util.List[BluetoothGattService]: ...
    def readCharacteristic(self, characteristic: BluetoothGattCharacteristic, /) -> bool: ...
    def readDescriptor(self, descriptor: BluetoothGattDescriptor, /) -> bool: ...
    def readPhy(self) -> None: ...
    def readRemoteRssi(self) -> bool: ...
    def requestConnectionPriority(self, connectionPriority: int | java.jint | java.lang.Integer, /) -> bool: ...
    def requestMtu(self, mtu: int | java.jint | java.lang.Integer, /) -> bool: ...
    def setCharacteristicNotification(self, characteristic: BluetoothGattCharacteristic, enable: bool | java.jboolean | java.lang.Boolean, /) -> bool: ...
    def setPreferredPhy(self, txPhy: int | java.jint | java.lang.Integer, rxPhy: int | java.jint | java.lang.Integer, phyOptions: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def writeCharacteristic(self, characteristic: BluetoothGattCharacteristic, /) -> bool: ...
    @typing.overload
    def writeCharacteristic(self, characteristic: BluetoothGattCharacteristic, value: java.chaquopy.JavaArrayJByte, writeType: int | java.jint | java.lang.Integer, /) -> int: ...
    @typing.overload
    def writeDescriptor(self, descriptor: BluetoothGattDescriptor, /) -> bool: ...
    @typing.overload
    def writeDescriptor(self, descriptor: BluetoothGattDescriptor, value: java.chaquopy.JavaArrayJByte, /) -> int: ...

class BluetoothGattCallback(java.lang.Object):
    def __init__(self) -> None: ...
    @typing.overload
    def onCharacteristicChanged(self, gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, /) -> None: ...
    @typing.overload
    def onCharacteristicChanged(self, gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, value: java.chaquopy.JavaArrayJByte, /) -> None: ...
    @typing.overload
    def onCharacteristicRead(self, gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, status: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def onCharacteristicRead(self, gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, value: java.chaquopy.JavaArrayJByte, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onCharacteristicWrite(self, gatt: BluetoothGatt, characteristic: BluetoothGattCharacteristic, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onConnectionStateChange(self, gatt: BluetoothGatt, status: int | java.jint | java.lang.Integer, newState: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def onDescriptorRead(self, gatt: BluetoothGatt, descriptor: BluetoothGattDescriptor, status: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def onDescriptorRead(self, gatt: BluetoothGatt, descriptor: BluetoothGattDescriptor, status: int | java.jint | java.lang.Integer, value: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def onDescriptorWrite(self, gatt: BluetoothGatt, descriptor: BluetoothGattDescriptor, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onMtuChanged(self, gatt: BluetoothGatt, mtu: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onPhyRead(self, gatt: BluetoothGatt, txPhy: int | java.jint | java.lang.Integer, rxPhy: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onPhyUpdate(self, gatt: BluetoothGatt, txPhy: int | java.jint | java.lang.Integer, rxPhy: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onReadRemoteRssi(self, gatt: BluetoothGatt, rssi: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onReliableWriteCompleted(self, gatt: BluetoothGatt, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onServiceChanged(self, gatt: BluetoothGatt, /) -> None: ...
    def onServicesDiscovered(self, gatt: BluetoothGatt, status: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothGattCharacteristic(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothGattCharacteristic]] = ...
    FORMAT_FLOAT: typing.ClassVar[int] = ...
    FORMAT_SFLOAT: typing.ClassVar[int] = ...
    FORMAT_SINT16: typing.ClassVar[int] = ...
    FORMAT_SINT32: typing.ClassVar[int] = ...
    FORMAT_SINT8: typing.ClassVar[int] = ...
    FORMAT_UINT16: typing.ClassVar[int] = ...
    FORMAT_UINT32: typing.ClassVar[int] = ...
    FORMAT_UINT8: typing.ClassVar[int] = ...
    PERMISSION_READ: typing.ClassVar[int] = ...
    PERMISSION_READ_ENCRYPTED: typing.ClassVar[int] = ...
    PERMISSION_READ_ENCRYPTED_MITM: typing.ClassVar[int] = ...
    PERMISSION_WRITE: typing.ClassVar[int] = ...
    PERMISSION_WRITE_ENCRYPTED: typing.ClassVar[int] = ...
    PERMISSION_WRITE_ENCRYPTED_MITM: typing.ClassVar[int] = ...
    PERMISSION_WRITE_SIGNED: typing.ClassVar[int] = ...
    PERMISSION_WRITE_SIGNED_MITM: typing.ClassVar[int] = ...
    PROPERTY_BROADCAST: typing.ClassVar[int] = ...
    PROPERTY_EXTENDED_PROPS: typing.ClassVar[int] = ...
    PROPERTY_INDICATE: typing.ClassVar[int] = ...
    PROPERTY_NOTIFY: typing.ClassVar[int] = ...
    PROPERTY_READ: typing.ClassVar[int] = ...
    PROPERTY_SIGNED_WRITE: typing.ClassVar[int] = ...
    PROPERTY_WRITE: typing.ClassVar[int] = ...
    PROPERTY_WRITE_NO_RESPONSE: typing.ClassVar[int] = ...
    WRITE_TYPE_DEFAULT: typing.ClassVar[int] = ...
    WRITE_TYPE_NO_RESPONSE: typing.ClassVar[int] = ...
    WRITE_TYPE_SIGNED: typing.ClassVar[int] = ...
    mDescriptors: java.util.List[BluetoothGattDescriptor] = ...
    def __init__(self, uuid: java.util.UUID, properties: int | java.jint | java.lang.Integer, permissions: int | java.jint | java.lang.Integer, /) -> None: ...
    def addDescriptor(self, descriptor: BluetoothGattDescriptor, /) -> bool: ...
    def describeContents(self) -> int: ...
    def getDescriptor(self, uuid: java.util.UUID, /) -> BluetoothGattDescriptor | None: ...
    def getDescriptors(self) -> java.util.List[BluetoothGattDescriptor]: ...
    def getFloatValue(self, formatType: int | java.jint | java.lang.Integer, offset: int | java.jint | java.lang.Integer, /) -> float | None: ...
    def getInstanceId(self) -> int: ...
    def getIntValue(self, formatType: int | java.jint | java.lang.Integer, offset: int | java.jint | java.lang.Integer, /) -> int | None: ...
    def getPermissions(self) -> int: ...
    def getProperties(self) -> int: ...
    def getService(self) -> BluetoothGattService: ...
    def getStringValue(self, offset: int | java.jint | java.lang.Integer, /) -> str: ...
    def getUuid(self) -> java.util.UUID: ...
    def getValue(self) -> java.chaquopy.JavaArrayJByte: ...
    def getWriteType(self) -> int: ...
    @typing.overload
    def setValue(self, value: str | java.lang.String, /) -> bool: ...
    @typing.overload
    def setValue(self, value: java.chaquopy.JavaArrayJByte, /) -> bool: ...
    @typing.overload
    def setValue(self, value: int | java.jint | java.lang.Integer, formatType: int | java.jint | java.lang.Integer, offset: int | java.jint | java.lang.Integer, /) -> bool: ...
    @typing.overload
    def setValue(self, mantissa: int | java.jint | java.lang.Integer, exponent: int | java.jint | java.lang.Integer, formatType: int | java.jint | java.lang.Integer, offset: int | java.jint | java.lang.Integer, /) -> bool: ...
    def setWriteType(self, writeType: int | java.jint | java.lang.Integer, /) -> None: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothGattDescriptor(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothGattDescriptor]] = ...
    DISABLE_NOTIFICATION_VALUE: typing.ClassVar[java.chaquopy.JavaArrayJByte] = ...
    ENABLE_INDICATION_VALUE: typing.ClassVar[java.chaquopy.JavaArrayJByte] = ...
    ENABLE_NOTIFICATION_VALUE: typing.ClassVar[java.chaquopy.JavaArrayJByte] = ...
    PERMISSION_READ: typing.ClassVar[int] = ...
    PERMISSION_READ_ENCRYPTED: typing.ClassVar[int] = ...
    PERMISSION_READ_ENCRYPTED_MITM: typing.ClassVar[int] = ...
    PERMISSION_WRITE: typing.ClassVar[int] = ...
    PERMISSION_WRITE_ENCRYPTED: typing.ClassVar[int] = ...
    PERMISSION_WRITE_ENCRYPTED_MITM: typing.ClassVar[int] = ...
    PERMISSION_WRITE_SIGNED: typing.ClassVar[int] = ...
    PERMISSION_WRITE_SIGNED_MITM: typing.ClassVar[int] = ...
    def __init__(self, uuid: java.util.UUID, permissions: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getCharacteristic(self) -> BluetoothGattCharacteristic: ...
    def getPermissions(self) -> int: ...
    def getUuid(self) -> java.util.UUID: ...
    def getValue(self) -> java.chaquopy.JavaArrayJByte: ...
    def setValue(self, value: java.chaquopy.JavaArrayJByte, /) -> bool: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothGattServer(BluetoothProfile):
    def addService(self, service: BluetoothGattService, /) -> bool: ...
    def cancelConnection(self, device: BluetoothDevice, /) -> None: ...
    def clearServices(self) -> None: ...
    def close(self) -> None: ...
    def connect(self, device: BluetoothDevice, autoConnect: bool | java.jboolean | java.lang.Boolean, /) -> bool: ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...
    def getService(self, uuid: java.util.UUID, /) -> BluetoothGattService | None: ...
    def getServices(self) -> java.util.List[BluetoothGattService]: ...
    @typing.overload
    def notifyCharacteristicChanged(self, device: BluetoothDevice, characteristic: BluetoothGattCharacteristic, confirm: bool | java.jboolean | java.lang.Boolean, /) -> bool: ...
    @typing.overload
    def notifyCharacteristicChanged(self, device: BluetoothDevice, characteristic: BluetoothGattCharacteristic, confirm: bool | java.jboolean | java.lang.Boolean, value: java.chaquopy.JavaArrayJByte, /) -> int: ...
    def readPhy(self, device: BluetoothDevice, /) -> None: ...
    def removeService(self, service: BluetoothGattService, /) -> bool: ...
    def sendResponse(self, device: BluetoothDevice, requestId: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, offset: int | java.jint | java.lang.Integer, value: java.chaquopy.JavaArrayJByte, /) -> bool: ...
    def setPreferredPhy(self, device: BluetoothDevice, txPhy: int | java.jint | java.lang.Integer, rxPhy: int | java.jint | java.lang.Integer, phyOptions: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothGattServerCallback(java.lang.Object):
    def __init__(self) -> None: ...
    def onCharacteristicReadRequest(self, device: BluetoothDevice, requestId: int | java.jint | java.lang.Integer, offset: int | java.jint | java.lang.Integer, characteristic: BluetoothGattCharacteristic, /) -> None: ...
    def onCharacteristicWriteRequest(self, device: BluetoothDevice, requestId: int | java.jint | java.lang.Integer, characteristic: BluetoothGattCharacteristic, preparedWrite: bool | java.jboolean | java.lang.Boolean, responseNeeded: bool | java.jboolean | java.lang.Boolean, offset: int | java.jint | java.lang.Integer, value: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def onConnectionStateChange(self, device: BluetoothDevice, status: int | java.jint | java.lang.Integer, newState: int | java.jint | java.lang.Integer, /) -> None: ...
    def onDescriptorReadRequest(self, device: BluetoothDevice, requestId: int | java.jint | java.lang.Integer, offset: int | java.jint | java.lang.Integer, descriptor: BluetoothGattDescriptor, /) -> None: ...
    def onDescriptorWriteRequest(self, device: BluetoothDevice, requestId: int | java.jint | java.lang.Integer, descriptor: BluetoothGattDescriptor, preparedWrite: bool | java.jboolean | java.lang.Boolean, responseNeeded: bool | java.jboolean | java.lang.Boolean, offset: int | java.jint | java.lang.Integer, value: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def onExecuteWrite(self, device: BluetoothDevice, requestId: int | java.jint | java.lang.Integer, execute: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
    def onMtuChanged(self, device: BluetoothDevice, mtu: int | java.jint | java.lang.Integer, /) -> None: ...
    def onNotificationSent(self, device: BluetoothDevice, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onPhyRead(self, device: BluetoothDevice, txPhy: int | java.jint | java.lang.Integer, rxPhy: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onPhyUpdate(self, device: BluetoothDevice, txPhy: int | java.jint | java.lang.Integer, rxPhy: int | java.jint | java.lang.Integer, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onServiceAdded(self, status: int | java.jint | java.lang.Integer, service: BluetoothGattService, /) -> None: ...

class BluetoothGattService(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothGattService]] = ...
    SERVICE_TYPE_PRIMARY: typing.ClassVar[int] = ...
    SERVICE_TYPE_SECONDARY: typing.ClassVar[int] = ...
    mCharacteristics: java.util.List[BluetoothGattCharacteristic] = ...
    mIncludedServices: java.util.List[BluetoothGattService] = ...
    def __init__(self, uuid: java.util.UUID, serviceType: int | java.jint | java.lang.Integer, /) -> None: ...
    def addCharacteristic(self, characteristic: BluetoothGattCharacteristic, /) -> bool: ...
    def addService(self, service: BluetoothGattService, /) -> bool: ...
    def describeContents(self) -> int: ...
    def getCharacteristic(self, uuid: java.util.UUID, /) -> BluetoothGattCharacteristic | None: ...
    def getCharacteristics(self) -> java.util.List[BluetoothGattCharacteristic]: ...
    def getIncludedServices(self) -> java.util.List[BluetoothGattService]: ...
    def getInstanceId(self) -> int: ...
    def getType(self) -> int: ...
    def getUuid(self) -> java.util.UUID: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothHeadset(BluetoothProfile):
    ACTION_AUDIO_STATE_CHANGED: typing.ClassVar[str] = ...
    ACTION_CONNECTION_STATE_CHANGED: typing.ClassVar[str] = ...
    ACTION_VENDOR_SPECIFIC_HEADSET_EVENT: typing.ClassVar[str] = ...
    AT_CMD_TYPE_ACTION: typing.ClassVar[int] = ...
    AT_CMD_TYPE_BASIC: typing.ClassVar[int] = ...
    AT_CMD_TYPE_READ: typing.ClassVar[int] = ...
    AT_CMD_TYPE_SET: typing.ClassVar[int] = ...
    AT_CMD_TYPE_TEST: typing.ClassVar[int] = ...
    EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_ARGS: typing.ClassVar[str] = ...
    EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD: typing.ClassVar[str] = ...
    EXTRA_VENDOR_SPECIFIC_HEADSET_EVENT_CMD_TYPE: typing.ClassVar[str] = ...
    STATE_AUDIO_CONNECTED: typing.ClassVar[int] = ...
    STATE_AUDIO_CONNECTING: typing.ClassVar[int] = ...
    STATE_AUDIO_DISCONNECTED: typing.ClassVar[int] = ...
    VENDOR_RESULT_CODE_COMMAND_ANDROID: typing.ClassVar[str] = ...
    VENDOR_SPECIFIC_HEADSET_EVENT_COMPANY_ID_CATEGORY: typing.ClassVar[str] = ...
    def finalize(self) -> None: ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...
    def isAudioConnected(self, device: BluetoothDevice, /) -> bool: ...
    def isNoiseReductionSupported(self, device: BluetoothDevice, /) -> bool: ...
    def isVoiceRecognitionSupported(self, device: BluetoothDevice, /) -> bool: ...
    def sendVendorSpecificResultCode(self, device: BluetoothDevice, command: str | java.lang.String, arg: str | java.lang.String, /) -> bool: ...
    def startVoiceRecognition(self, device: BluetoothDevice, /) -> bool: ...
    def stopVoiceRecognition(self, device: BluetoothDevice, /) -> bool: ...

class BluetoothHealth(BluetoothProfile):
    APP_CONFIG_REGISTRATION_FAILURE: typing.ClassVar[int] = ...
    APP_CONFIG_REGISTRATION_SUCCESS: typing.ClassVar[int] = ...
    APP_CONFIG_UNREGISTRATION_FAILURE: typing.ClassVar[int] = ...
    APP_CONFIG_UNREGISTRATION_SUCCESS: typing.ClassVar[int] = ...
    CHANNEL_TYPE_RELIABLE: typing.ClassVar[int] = ...
    CHANNEL_TYPE_STREAMING: typing.ClassVar[int] = ...
    SINK_ROLE: typing.ClassVar[int] = ...
    SOURCE_ROLE: typing.ClassVar[int] = ...
    STATE_CHANNEL_CONNECTED: typing.ClassVar[int] = ...
    STATE_CHANNEL_CONNECTING: typing.ClassVar[int] = ...
    STATE_CHANNEL_DISCONNECTED: typing.ClassVar[int] = ...
    STATE_CHANNEL_DISCONNECTING: typing.ClassVar[int] = ...
    def connectChannelToSource(self, device: BluetoothDevice, config: BluetoothHealthAppConfiguration, /) -> bool: ...
    def disconnectChannel(self, device: BluetoothDevice, config: BluetoothHealthAppConfiguration, channelId: int | java.jint | java.lang.Integer, /) -> bool: ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...
    def getMainChannelFd(self, device: BluetoothDevice, config: BluetoothHealthAppConfiguration, /) -> android.os.ParcelFileDescriptor | None: ...
    def registerSinkAppConfiguration(self, name: str | java.lang.String, dataType: int | java.jint | java.lang.Integer, callback: BluetoothHealthCallback, /) -> bool: ...
    def unregisterAppConfiguration(self, config: BluetoothHealthAppConfiguration, /) -> bool: ...

class BluetoothHealthAppConfiguration(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothHealthAppConfiguration]] = ...
    def describeContents(self) -> int: ...
    def getDataType(self) -> int: ...
    def getName(self) -> str: ...
    def getRole(self) -> int: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothHealthCallback(java.lang.Object):
    def __init__(self) -> None: ...
    def onHealthAppConfigurationStatusChange(self, config: BluetoothHealthAppConfiguration, status: int | java.jint | java.lang.Integer, /) -> None: ...
    def onHealthChannelStateChange(self, config: BluetoothHealthAppConfiguration, device: BluetoothDevice, prevState: int | java.jint | java.lang.Integer, newState: int | java.jint | java.lang.Integer, fd: android.os.ParcelFileDescriptor, channelId: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothHearingAid(BluetoothProfile):
    ACTION_CONNECTION_STATE_CHANGED: typing.ClassVar[str] = ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...

class BluetoothHidDevice(BluetoothProfile):
    ACTION_CONNECTION_STATE_CHANGED: typing.ClassVar[str] = ...
    ERROR_RSP_INVALID_PARAM: typing.ClassVar[int] = ...
    ERROR_RSP_INVALID_RPT_ID: typing.ClassVar[int] = ...
    ERROR_RSP_NOT_READY: typing.ClassVar[int] = ...
    ERROR_RSP_SUCCESS: typing.ClassVar[int] = ...
    ERROR_RSP_UNKNOWN: typing.ClassVar[int] = ...
    ERROR_RSP_UNSUPPORTED_REQ: typing.ClassVar[int] = ...
    PROTOCOL_BOOT_MODE: typing.ClassVar[int] = ...
    PROTOCOL_REPORT_MODE: typing.ClassVar[int] = ...
    REPORT_TYPE_FEATURE: typing.ClassVar[int] = ...
    REPORT_TYPE_INPUT: typing.ClassVar[int] = ...
    REPORT_TYPE_OUTPUT: typing.ClassVar[int] = ...
    SUBCLASS1_COMBO: typing.ClassVar[int] = ...
    SUBCLASS1_KEYBOARD: typing.ClassVar[int] = ...
    SUBCLASS1_MOUSE: typing.ClassVar[int] = ...
    SUBCLASS1_NONE: typing.ClassVar[int] = ...
    SUBCLASS2_CARD_READER: typing.ClassVar[int] = ...
    SUBCLASS2_DIGITIZER_TABLET: typing.ClassVar[int] = ...
    SUBCLASS2_GAMEPAD: typing.ClassVar[int] = ...
    SUBCLASS2_JOYSTICK: typing.ClassVar[int] = ...
    SUBCLASS2_REMOTE_CONTROL: typing.ClassVar[int] = ...
    SUBCLASS2_SENSING_DEVICE: typing.ClassVar[int] = ...
    SUBCLASS2_UNCATEGORIZED: typing.ClassVar[int] = ...
    def connect(self, device: BluetoothDevice, /) -> bool: ...
    def disconnect(self, device: BluetoothDevice, /) -> bool: ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...
    def registerApp(self, sdp: BluetoothHidDeviceAppSdpSettings, inQos: BluetoothHidDeviceAppQosSettings, outQos: BluetoothHidDeviceAppQosSettings, executor: java.util.concurrent.Executor, callback: BluetoothHidDevice.Callback, /) -> bool: ...
    def replyReport(self, device: BluetoothDevice, type: int | java.jbyte | java.lang.Byte, id: int | java.jbyte | java.lang.Byte, data: java.chaquopy.JavaArrayJByte, /) -> bool: ...
    def reportError(self, device: BluetoothDevice, error: int | java.jbyte | java.lang.Byte, /) -> bool: ...
    def sendReport(self, device: BluetoothDevice, id: int | java.jint | java.lang.Integer, data: java.chaquopy.JavaArrayJByte, /) -> bool: ...
    def unregisterApp(self) -> bool: ...

    class Callback(java.lang.Object):
        def __init__(self) -> None: ...
        def onAppStatusChanged(self, pluggedDevice: BluetoothDevice, registered: bool | java.jboolean | java.lang.Boolean, /) -> None: ...
        def onConnectionStateChanged(self, device: BluetoothDevice, state: int | java.jint | java.lang.Integer, /) -> None: ...
        def onGetReport(self, device: BluetoothDevice, type: int | java.jbyte | java.lang.Byte, id: int | java.jbyte | java.lang.Byte, bufferSize: int | java.jint | java.lang.Integer, /) -> None: ...
        def onInterruptData(self, device: BluetoothDevice, reportId: int | java.jbyte | java.lang.Byte, data: java.chaquopy.JavaArrayJByte, /) -> None: ...
        def onSetProtocol(self, device: BluetoothDevice, protocol: int | java.jbyte | java.lang.Byte, /) -> None: ...
        def onSetReport(self, device: BluetoothDevice, type: int | java.jbyte | java.lang.Byte, id: int | java.jbyte | java.lang.Byte, data: java.chaquopy.JavaArrayJByte, /) -> None: ...
        def onVirtualCableUnplug(self, device: BluetoothDevice, /) -> None: ...

class BluetoothHidDeviceAppQosSettings(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothHidDeviceAppQosSettings]] = ...
    MAX: typing.ClassVar[int] = ...
    SERVICE_BEST_EFFORT: typing.ClassVar[int] = ...
    SERVICE_GUARANTEED: typing.ClassVar[int] = ...
    SERVICE_NO_TRAFFIC: typing.ClassVar[int] = ...
    def __init__(self, serviceType: int | java.jint | java.lang.Integer, tokenRate: int | java.jint | java.lang.Integer, tokenBucketSize: int | java.jint | java.lang.Integer, peakBandwidth: int | java.jint | java.lang.Integer, latency: int | java.jint | java.lang.Integer, delayVariation: int | java.jint | java.lang.Integer, /) -> None: ...
    def describeContents(self) -> int: ...
    def getDelayVariation(self) -> int: ...
    def getLatency(self) -> int: ...
    def getPeakBandwidth(self) -> int: ...
    def getServiceType(self) -> int: ...
    def getTokenBucketSize(self) -> int: ...
    def getTokenRate(self) -> int: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothHidDeviceAppSdpSettings(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothHidDeviceAppSdpSettings]] = ...
    def __init__(self, name: str | java.lang.String, description: str | java.lang.String, provider: str | java.lang.String, subclass: int | java.jbyte | java.lang.Byte, descriptors: java.chaquopy.JavaArrayJByte, /) -> None: ...
    def describeContents(self) -> int: ...
    def getDescription(self) -> str: ...
    def getDescriptors(self) -> java.chaquopy.JavaArrayJByte: ...
    def getName(self) -> str: ...
    def getProvider(self) -> str: ...
    def getSubclass(self) -> int: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothLeAudio(BluetoothProfile, java.lang.AutoCloseable):
    ACTION_LE_AUDIO_CONNECTION_STATE_CHANGED: typing.ClassVar[str] = ...
    GROUP_ID_INVALID: typing.ClassVar[int] = ...
    def close(self) -> None: ...
    def finalize(self) -> None: ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectedGroupLeadDevice(self, groupId: int | java.jint | java.lang.Integer, /) -> BluetoothDevice | None: ...
    def getConnectionState(self, device: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...
    def getGroupId(self, device: BluetoothDevice, /) -> int: ...

class BluetoothLeAudioCodecConfig(android.os.Parcelable):
    BITS_PER_SAMPLE_16: typing.ClassVar[int] = ...
    BITS_PER_SAMPLE_24: typing.ClassVar[int] = ...
    BITS_PER_SAMPLE_32: typing.ClassVar[int] = ...
    BITS_PER_SAMPLE_NONE: typing.ClassVar[int] = ...
    CHANNEL_COUNT_1: typing.ClassVar[int] = ...
    CHANNEL_COUNT_2: typing.ClassVar[int] = ...
    CHANNEL_COUNT_NONE: typing.ClassVar[int] = ...
    CODEC_PRIORITY_DEFAULT: typing.ClassVar[int] = ...
    CODEC_PRIORITY_DISABLED: typing.ClassVar[int] = ...
    CODEC_PRIORITY_HIGHEST: typing.ClassVar[int] = ...
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothLeAudioCodecConfig]] = ...
    FRAME_DURATION_10000: typing.ClassVar[int] = ...
    FRAME_DURATION_7500: typing.ClassVar[int] = ...
    FRAME_DURATION_NONE: typing.ClassVar[int] = ...
    SAMPLE_RATE_11025: typing.ClassVar[int] = ...
    SAMPLE_RATE_16000: typing.ClassVar[int] = ...
    SAMPLE_RATE_176400: typing.ClassVar[int] = ...
    SAMPLE_RATE_192000: typing.ClassVar[int] = ...
    SAMPLE_RATE_22050: typing.ClassVar[int] = ...
    SAMPLE_RATE_24000: typing.ClassVar[int] = ...
    SAMPLE_RATE_32000: typing.ClassVar[int] = ...
    SAMPLE_RATE_384000: typing.ClassVar[int] = ...
    SAMPLE_RATE_44100: typing.ClassVar[int] = ...
    SAMPLE_RATE_48000: typing.ClassVar[int] = ...
    SAMPLE_RATE_8000: typing.ClassVar[int] = ...
    SAMPLE_RATE_88200: typing.ClassVar[int] = ...
    SAMPLE_RATE_96000: typing.ClassVar[int] = ...
    SAMPLE_RATE_NONE: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_INVALID: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_LC3: typing.ClassVar[int] = ...
    SOURCE_CODEC_TYPE_OPUS: typing.ClassVar[int] = ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getBitsPerSample(self) -> int: ...
    def getChannelCount(self) -> int: ...
    def getCodecName(self) -> str: ...
    def getCodecPriority(self) -> int: ...
    def getCodecType(self) -> int: ...
    def getFrameDuration(self) -> int: ...
    def getMaxOctetsPerFrame(self) -> int: ...
    def getMinOctetsPerFrame(self) -> int: ...
    def getOctetsPerFrame(self) -> int: ...
    def getSampleRate(self) -> int: ...
    def hashCode(self) -> int: ...
    def toString(self) -> str: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

    class Builder(java.lang.Object):
        @typing.overload
        def __init__(self) -> None: ...
        @typing.overload
        def __init__(self, config: BluetoothLeAudioCodecConfig, /) -> None: ...
        def build(self) -> BluetoothLeAudioCodecConfig: ...
        def setBitsPerSample(self, bitsPerSample: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...
        def setChannelCount(self, channelCount: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...
        def setCodecPriority(self, codecPriority: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...
        def setCodecType(self, codecType: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...
        def setFrameDuration(self, frameDuration: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...
        def setMaxOctetsPerFrame(self, maxOctetsPerFrame: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...
        def setMinOctetsPerFrame(self, minOctetsPerFrame: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...
        def setOctetsPerFrame(self, octetsPerFrame: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...
        def setSampleRate(self, sampleRate: int | java.jint | java.lang.Integer, /) -> BluetoothLeAudioCodecConfig.Builder: ...

class BluetoothLeAudioCodecStatus(android.os.Parcelable):
    CREATOR: typing.ClassVar[android.os.Parcelable.Creator[BluetoothLeAudioCodecStatus]] = ...
    EXTRA_LE_AUDIO_CODEC_STATUS: typing.ClassVar[str] = ...
    def __init__(self, inputCodecConfig: BluetoothLeAudioCodecConfig, outputCodecConfig: BluetoothLeAudioCodecConfig, inputCodecsLocalCapabilities: java.util.List[BluetoothLeAudioCodecConfig], outputCodecsLocalCapabilities: java.util.List[BluetoothLeAudioCodecConfig], inputCodecsSelectableCapabilities: java.util.List[BluetoothLeAudioCodecConfig], outputCodecsSelectableCapabilities: java.util.List[BluetoothLeAudioCodecConfig], /) -> None: ...
    def describeContents(self) -> int: ...
    def equals(self, o: java.lang.Object | int | bool | float | str, /) -> bool: ...
    def getInputCodecConfig(self) -> BluetoothLeAudioCodecConfig | None: ...
    def getInputCodecLocalCapabilities(self) -> java.util.List[BluetoothLeAudioCodecConfig]: ...
    def getInputCodecSelectableCapabilities(self) -> java.util.List[BluetoothLeAudioCodecConfig]: ...
    def getOutputCodecConfig(self) -> BluetoothLeAudioCodecConfig | None: ...
    def getOutputCodecLocalCapabilities(self) -> java.util.List[BluetoothLeAudioCodecConfig]: ...
    def getOutputCodecSelectableCapabilities(self) -> java.util.List[BluetoothLeAudioCodecConfig]: ...
    def hashCode(self) -> int: ...
    def isInputCodecConfigSelectable(self, codecConfig: BluetoothLeAudioCodecConfig, /) -> bool: ...
    def isOutputCodecConfigSelectable(self, codecConfig: BluetoothLeAudioCodecConfig, /) -> bool: ...
    def toString(self) -> str: ...
    def writeToParcel(self, out: android.os.Parcel, flags: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothManager(java.lang.Object):
    def getAdapter(self) -> BluetoothAdapter: ...
    def getConnectedDevices(self, profile: int | java.jint | java.lang.Integer, /) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, device: BluetoothDevice, profile: int | java.jint | java.lang.Integer, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, profile: int | java.jint | java.lang.Integer, states: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...
    def openGattServer(self, context: android.content.Context, callback: BluetoothGattServerCallback, /) -> BluetoothGattServer: ...

class BluetoothProfile(java.lang.Object):
    A2DP: typing.ClassVar[int] = ...
    CSIP_SET_COORDINATOR: typing.ClassVar[int] = ...
    EXTRA_PREVIOUS_STATE: typing.ClassVar[str] = ...
    EXTRA_STATE: typing.ClassVar[str] = ...
    GATT: typing.ClassVar[int] = ...
    GATT_SERVER: typing.ClassVar[int] = ...
    HAP_CLIENT: typing.ClassVar[int] = ...
    HEADSET: typing.ClassVar[int] = ...
    HEALTH: typing.ClassVar[int] = ...
    HEARING_AID: typing.ClassVar[int] = ...
    HID_DEVICE: typing.ClassVar[int] = ...
    LE_AUDIO: typing.ClassVar[int] = ...
    SAP: typing.ClassVar[int] = ...
    STATE_CONNECTED: typing.ClassVar[int] = ...
    STATE_CONNECTING: typing.ClassVar[int] = ...
    STATE_DISCONNECTED: typing.ClassVar[int] = ...
    STATE_DISCONNECTING: typing.ClassVar[int] = ...
    def getConnectedDevices(self) -> java.util.List[BluetoothDevice]: ...
    def getConnectionState(self, arg1: BluetoothDevice, /) -> int: ...
    def getDevicesMatchingConnectionStates(self, arg1: java.chaquopy.JavaArrayJInt, /) -> java.util.List[BluetoothDevice]: ...

    class ServiceListener(java.lang.Object):
        def onServiceConnected(self, arg1: int | java.jint | java.lang.Integer, arg2: BluetoothProfile, /) -> None: ...
        def onServiceDisconnected(self, arg1: int | java.jint | java.lang.Integer, /) -> None: ...

class BluetoothServerSocket(java.io.Closeable):
    @typing.overload
    def accept(self) -> BluetoothSocket: ...
    @typing.overload
    def accept(self, timeout: int | java.jint | java.lang.Integer, /) -> BluetoothSocket: ...
    def close(self) -> None: ...
    def getPsm(self) -> int: ...
    def toString(self) -> str: ...

class BluetoothSocket(java.io.Closeable):
    TYPE_L2CAP: typing.ClassVar[int] = ...
    TYPE_LE: typing.ClassVar[int] = ...
    TYPE_RFCOMM: typing.ClassVar[int] = ...
    TYPE_SCO: typing.ClassVar[int] = ...
    def close(self) -> None: ...
    def connect(self) -> None: ...
    def finalize(self) -> None: ...
    def getConnectionType(self) -> int: ...
    def getInputStream(self) -> java.io.InputStream: ...
    def getMaxReceivePacketSize(self) -> int: ...
    def getMaxTransmitPacketSize(self) -> int: ...
    def getOutputStream(self) -> java.io.OutputStream: ...
    def getRemoteDevice(self) -> BluetoothDevice: ...
    def isConnected(self) -> bool: ...
    def toString(self) -> str: ...

class BluetoothSocketException(java.io.IOException):
    BLUETOOTH_OFF_FAILURE: typing.ClassVar[int] = ...
    L2CAP_ACL_FAILURE: typing.ClassVar[int] = ...
    L2CAP_CLIENT_SECURITY_FAILURE: typing.ClassVar[int] = ...
    L2CAP_INSUFFICIENT_AUTHENTICATION: typing.ClassVar[int] = ...
    L2CAP_INSUFFICIENT_AUTHORIZATION: typing.ClassVar[int] = ...
    L2CAP_INSUFFICIENT_ENCRYPTION: typing.ClassVar[int] = ...
    L2CAP_INSUFFICIENT_ENCRYPT_KEY_SIZE: typing.ClassVar[int] = ...
    L2CAP_INVALID_PARAMETERS: typing.ClassVar[int] = ...
    L2CAP_INVALID_SOURCE_CID: typing.ClassVar[int] = ...
    L2CAP_NO_PSM_AVAILABLE: typing.ClassVar[int] = ...
    L2CAP_NO_RESOURCES: typing.ClassVar[int] = ...
    L2CAP_SOURCE_CID_ALREADY_ALLOCATED: typing.ClassVar[int] = ...
    L2CAP_TIMEOUT: typing.ClassVar[int] = ...
    L2CAP_UNACCEPTABLE_PARAMETERS: typing.ClassVar[int] = ...
    L2CAP_UNKNOWN: typing.ClassVar[int] = ...
    NULL_DEVICE: typing.ClassVar[int] = ...
    RPC_FAILURE: typing.ClassVar[int] = ...
    SOCKET_CLOSED: typing.ClassVar[int] = ...
    SOCKET_CONNECTION_FAILURE: typing.ClassVar[int] = ...
    SOCKET_MANAGER_FAILURE: typing.ClassVar[int] = ...
    UNIX_FILE_SOCKET_CREATION_FAILURE: typing.ClassVar[int] = ...
    UNSPECIFIED: typing.ClassVar[int] = ...
    @typing.overload
    def __init__(self, code: int | java.jint | java.lang.Integer, /) -> None: ...
    @typing.overload
    def __init__(self, code: int | java.jint | java.lang.Integer, msg: str | java.lang.String, /) -> None: ...
    def getErrorCode(self) -> int: ...

class BluetoothSocketSettings(java.lang.Object):
    def getL2capPsm(self) -> int: ...
    def getRfcommServiceName(self) -> str: ...
    def getRfcommUuid(self) -> java.util.UUID: ...
    def getSocketType(self) -> int: ...
    def isAuthenticationRequired(self) -> bool: ...
    def isEncryptionRequired(self) -> bool: ...
    def toString(self) -> str: ...

    class Builder(java.lang.Object):
        def __init__(self) -> None: ...
        def build(self) -> BluetoothSocketSettings: ...
        def setAuthenticationRequired(self, authenticationRequired: bool | java.jboolean | java.lang.Boolean, /) -> BluetoothSocketSettings.Builder: ...
        def setEncryptionRequired(self, encryptionRequired: bool | java.jboolean | java.lang.Boolean, /) -> BluetoothSocketSettings.Builder: ...
        def setL2capPsm(self, l2capPsm: int | java.jint | java.lang.Integer, /) -> BluetoothSocketSettings.Builder: ...
        def setRfcommServiceName(self, rfcommServiceName: str | java.lang.String, /) -> BluetoothSocketSettings.Builder: ...
        def setRfcommUuid(self, rfcommUuid: java.util.UUID, /) -> BluetoothSocketSettings.Builder: ...
        def setSocketType(self, socketType: int | java.jint | java.lang.Integer, /) -> BluetoothSocketSettings.Builder: ...

class BluetoothStatusCodes(java.lang.Object):
    ERROR_BLUETOOTH_NOT_ALLOWED: typing.ClassVar[int] = ...
    ERROR_BLUETOOTH_NOT_ENABLED: typing.ClassVar[int] = ...
    ERROR_DEVICE_NOT_BONDED: typing.ClassVar[int] = ...
    ERROR_GATT_WRITE_NOT_ALLOWED: typing.ClassVar[int] = ...
    ERROR_GATT_WRITE_REQUEST_BUSY: typing.ClassVar[int] = ...
    ERROR_MISSING_BLUETOOTH_CONNECT_PERMISSION: typing.ClassVar[int] = ...
    ERROR_PROFILE_SERVICE_NOT_BOUND: typing.ClassVar[int] = ...
    ERROR_UNKNOWN: typing.ClassVar[int] = ...
    FEATURE_NOT_CONFIGURED: typing.ClassVar[int] = ...
    FEATURE_NOT_SUPPORTED: typing.ClassVar[int] = ...
    FEATURE_SUPPORTED: typing.ClassVar[int] = ...
    SUCCESS: typing.ClassVar[int] = ...
