Strategies

Nearby Connections supports different Strategies for advertising and discovery.
The best
Strategy
to use depends on the use case.

P2P_CLUSTER

P2P_CLUSTER is a peer-to-peer strategy that supports an M-to-N, or
cluster-shaped, connection topology. In other words, this enables connecting
amorphous clusters of devices within radio range (~100m), where each device can
both initiate outgoing connections to M other devices and accept incoming
connections from N other devices.

This is the default strategy, equivalent to calling the deprecated Connections
API methods with no Strategy parameter.

This strategy is more flexible in its topology constraints than P2P_STAR,
but results in lower bandwidth connections. It is good for use cases with
smaller payloads that require a more mesh-like experience, such as multiplayer
gaming.

Permissions

In order to use this Strategy, the app must have the following permissions
declared:

BLUETOOTH

BLUETOOTH_ADMIN

ACCESS_WIFI_STATE

CHANGE_WIFI_STATE

Additionally, on devices running Marshmallow (and onwards), Location must be
turned on, and the following additional permission is required:

ACCESS_COARSE_LOCATION

P2P_STAR

P2P_STAR is a peer-to-peer strategy that supports a 1-to-N, or star-shaped,
connection topology. In other words, this enables connecting devices within
radio range (~100m) in a star shape, where each device can, at any given time,
play the role of either a hub (where it can accept incoming connections from N
other devices), or a spoke (where it can initiate an outgoing connection to a
single hub), but not both.

This strategy lends itself best to situations where there is one device
advertising, and N devices which discover the advertiser, though you may still
advertise and discover simultaneously if required.

This strategy is more strict in its topology constraints than P2P_CLUSTER, but
results in higher bandwidth connections. It is good for high-bandwidth use cases
such as sharing a video to a group of friends.

Permissions

In order to use this Strategy, the app must have the following permissions
declared:

BLUETOOTH

BLUETOOTH_ADMIN

ACCESS_WIFI_STATE

CHANGE_WIFI_STATE

Additionally, on devices running Marshmallow (and onwards), Location must be
turned on, and the following additional permission is required: