mirror of
https://github.com/hackku21/nearby_connections.git
synced 2024-10-27 19:14:01 +00:00
Can now Establish connection
This commit is contained in:
parent
6234775c1b
commit
a5a4221188
@ -96,14 +96,14 @@ public class NearbyConnectionsPlugin implements MethodCallHandler {
|
|||||||
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void aVoid) {
|
public void onSuccess(Void aVoid) {
|
||||||
|
Log.d("NearbyCon java", "startAdvertising");
|
||||||
result.success(true);
|
result.success(true);
|
||||||
|
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.addOnFailureListener(new OnFailureListener() {
|
.addOnFailureListener(new OnFailureListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(@NonNull Exception e) {
|
public void onFailure(@NonNull Exception e) {
|
||||||
result.success(false);
|
result.error("Failure", e.getMessage(), null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
@ -120,13 +120,14 @@ public class NearbyConnectionsPlugin implements MethodCallHandler {
|
|||||||
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
||||||
@Override
|
@Override
|
||||||
public void onSuccess(Void aVoid) {
|
public void onSuccess(Void aVoid) {
|
||||||
|
Log.d("NearbyCon java", "startDiscovery");
|
||||||
result.success(true);
|
result.success(true);
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.addOnFailureListener(new OnFailureListener() {
|
.addOnFailureListener(new OnFailureListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(@NonNull Exception e) {
|
public void onFailure(@NonNull Exception e) {
|
||||||
result.success(false);
|
result.error("Failure", e.getMessage(), null);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
@ -1,37 +1,10 @@
|
|||||||
package com.pkmnapps.nearby_connections_example;
|
package com.pkmnapps.nearby_connections_example;
|
||||||
|
|
||||||
import android.Manifest;
|
|
||||||
import android.app.Activity;
|
|
||||||
import android.content.pm.PackageManager;
|
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
|
||||||
import android.support.v4.app.ActivityCompat;
|
|
||||||
import android.support.v4.content.ContextCompat;
|
|
||||||
import android.util.Log;
|
|
||||||
|
|
||||||
import com.google.android.gms.nearby.Nearby;
|
|
||||||
import com.google.android.gms.nearby.connection.AdvertisingOptions;
|
|
||||||
import com.google.android.gms.nearby.connection.ConnectionInfo;
|
|
||||||
import com.google.android.gms.nearby.connection.ConnectionLifecycleCallback;
|
|
||||||
import com.google.android.gms.nearby.connection.ConnectionResolution;
|
|
||||||
import com.google.android.gms.nearby.connection.ConnectionsStatusCodes;
|
|
||||||
import com.google.android.gms.nearby.connection.DiscoveredEndpointInfo;
|
|
||||||
import com.google.android.gms.nearby.connection.DiscoveryOptions;
|
|
||||||
import com.google.android.gms.nearby.connection.EndpointDiscoveryCallback;
|
|
||||||
import com.google.android.gms.nearby.connection.Payload;
|
|
||||||
import com.google.android.gms.nearby.connection.PayloadCallback;
|
|
||||||
import com.google.android.gms.nearby.connection.PayloadTransferUpdate;
|
|
||||||
import com.google.android.gms.nearby.connection.Strategy;
|
|
||||||
import com.google.android.gms.tasks.OnFailureListener;
|
|
||||||
import com.google.android.gms.tasks.OnSuccessListener;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import io.flutter.app.FlutterActivity;
|
import io.flutter.app.FlutterActivity;
|
||||||
import io.flutter.plugin.common.MethodCall;
|
|
||||||
import io.flutter.plugin.common.MethodChannel;
|
|
||||||
import io.flutter.plugin.common.PluginRegistry;
|
|
||||||
import io.flutter.plugins.GeneratedPluginRegistrant;
|
import io.flutter.plugins.GeneratedPluginRegistrant;
|
||||||
|
|
||||||
public class MainActivity extends FlutterActivity {
|
public class MainActivity extends FlutterActivity {
|
||||||
@ -39,323 +12,5 @@ public class MainActivity extends FlutterActivity {
|
|||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
GeneratedPluginRegistrant.registerWith(this);
|
GeneratedPluginRegistrant.registerWith(this);
|
||||||
// NearbyConnectionsPlugin.registerWith(this);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class NearbyConnectionsPlugin implements MethodChannel.MethodCallHandler {
|
|
||||||
private Activity activity;
|
|
||||||
private static final String SERVICE_ID = "com.pkmnapps.nearby_connections";
|
|
||||||
private static MethodChannel channel;
|
|
||||||
|
|
||||||
private NearbyConnectionsPlugin(Activity activity) {
|
|
||||||
this.activity = activity;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
public static void registerWith(FlutterActivity activity) {
|
|
||||||
channel = new MethodChannel(activity.getFlutterView(), "nearby_connections");
|
|
||||||
channel.setMethodCallHandler(new NearbyConnectionsPlugin(activity));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onMethodCall(MethodCall call, final MethodChannel.Result result) {
|
|
||||||
|
|
||||||
switch (call.method) {
|
|
||||||
case "checkPermissions":
|
|
||||||
if (ContextCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION)
|
|
||||||
!= PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_COARSE_LOCATION)
|
|
||||||
!= PackageManager.PERMISSION_GRANTED) {
|
|
||||||
result.success(false);
|
|
||||||
} else {
|
|
||||||
result.success(true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case "askPermissions":
|
|
||||||
ActivityCompat.requestPermissions(activity,
|
|
||||||
new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
|
|
||||||
0);
|
|
||||||
result.success(null);
|
|
||||||
break;
|
|
||||||
case "stopAdvertising":
|
|
||||||
Nearby.getConnectionsClient(activity).stopAdvertising();
|
|
||||||
result.success(null);
|
|
||||||
break;
|
|
||||||
case "stopDiscovery":
|
|
||||||
Log.d("NearbyCon java", "stop discovery");
|
|
||||||
Nearby.getConnectionsClient(activity).stopDiscovery();
|
|
||||||
result.success(null);
|
|
||||||
break;
|
|
||||||
case "startAdvertising": {
|
|
||||||
String userNickName = (String) call.argument("userNickName");
|
|
||||||
int strategy = (int) call.argument("strategy");
|
|
||||||
|
|
||||||
assert userNickName != null;
|
|
||||||
AdvertisingOptions advertisingOptions = new AdvertisingOptions.Builder()
|
|
||||||
.setStrategy(getStrategy(strategy)).build();
|
|
||||||
|
|
||||||
Nearby.getConnectionsClient(activity)
|
|
||||||
.startAdvertising(
|
|
||||||
userNickName, SERVICE_ID, advertConnectionLifecycleCallback, advertisingOptions)
|
|
||||||
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onSuccess(Void aVoid) {
|
|
||||||
result.success(true);
|
|
||||||
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.addOnFailureListener(new OnFailureListener() {
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Exception e) {
|
|
||||||
result.success(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "startDiscovery": {
|
|
||||||
String userNickName = (String) call.argument("userNickName");
|
|
||||||
int strategy = (int) call.argument("strategy");
|
|
||||||
|
|
||||||
assert userNickName != null;
|
|
||||||
DiscoveryOptions discoveryOptions =
|
|
||||||
new DiscoveryOptions.Builder().setStrategy(getStrategy(strategy)).build();
|
|
||||||
Nearby.getConnectionsClient(activity)
|
|
||||||
.startDiscovery(SERVICE_ID, endpointDiscoveryCallback, discoveryOptions)
|
|
||||||
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onSuccess(Void aVoid) {
|
|
||||||
result.success(true);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.addOnFailureListener(new OnFailureListener() {
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Exception e) {
|
|
||||||
result.success(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "stopAllEndpoints":
|
|
||||||
Log.d("NearbyCon java", "stopAllEndpoints");
|
|
||||||
Nearby.getConnectionsClient(activity).stopAllEndpoints();
|
|
||||||
result.success(null);
|
|
||||||
break;
|
|
||||||
case "disconnectFromEndpoint": {
|
|
||||||
Log.d("NearbyCon java", "disconnectFromEndpoint");
|
|
||||||
String endpointId = call.argument("endpointId");
|
|
||||||
assert endpointId != null;
|
|
||||||
Nearby.getConnectionsClient(activity).disconnectFromEndpoint(endpointId);
|
|
||||||
result.success(null);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "requestConnection": {
|
|
||||||
Log.d("NearbyCon java", "requestConnection");
|
|
||||||
String userNickName = (String) call.argument("userNickName");
|
|
||||||
String endpointId = (String) call.argument("endpointId");
|
|
||||||
|
|
||||||
assert userNickName != null;
|
|
||||||
assert endpointId != null;
|
|
||||||
Nearby.getConnectionsClient(activity)
|
|
||||||
.requestConnection(userNickName, endpointId, discoverConnectionLifecycleCallback)
|
|
||||||
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onSuccess(Void aVoid) {
|
|
||||||
result.success(true);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.addOnFailureListener(new OnFailureListener() {
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Exception e) {
|
|
||||||
result.error("Failure", e.getMessage(), null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "acceptConnection": {
|
|
||||||
String endpointId = (String) call.argument("endpointId");
|
|
||||||
|
|
||||||
assert endpointId != null;
|
|
||||||
Nearby.getConnectionsClient(activity)
|
|
||||||
.acceptConnection(endpointId, payloadCallback)
|
|
||||||
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onSuccess(Void aVoid) {
|
|
||||||
result.success(true);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.addOnFailureListener(new OnFailureListener() {
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Exception e) {
|
|
||||||
result.error("Failure", e.getMessage(), null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "rejectConnection": {
|
|
||||||
String endpointId = (String) call.argument("endpointId");
|
|
||||||
|
|
||||||
assert endpointId != null;
|
|
||||||
Nearby.getConnectionsClient(activity)
|
|
||||||
.rejectConnection(endpointId)
|
|
||||||
.addOnSuccessListener(new OnSuccessListener<Void>() {
|
|
||||||
@Override
|
|
||||||
public void onSuccess(Void aVoid) {
|
|
||||||
result.success(true);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.addOnFailureListener(new OnFailureListener() {
|
|
||||||
@Override
|
|
||||||
public void onFailure(@NonNull Exception e) {
|
|
||||||
result.error("Failure", e.getMessage(), null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "sendPayload": {
|
|
||||||
//Nearby.getConnectionsClient(activity).sendPayload()
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
result.notImplemented();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private final ConnectionLifecycleCallback advertConnectionLifecycleCallback = new ConnectionLifecycleCallback() {
|
|
||||||
@Override
|
|
||||||
public void onConnectionInitiated(@NonNull String endpointId, @NonNull ConnectionInfo connectionInfo) {
|
|
||||||
Log.d("NearbyCon java", "ad.onConnectionInitiated");
|
|
||||||
Map<String, Object> args = new HashMap<>();
|
|
||||||
args.put("endpointId", endpointId);
|
|
||||||
args.put("endpointName", connectionInfo.getEndpointName());
|
|
||||||
args.put("authenticationToken", connectionInfo.getAuthenticationToken());
|
|
||||||
args.put("isIncomingConnection", connectionInfo.isIncomingConnection());
|
|
||||||
channel.invokeMethod("ad.onConnectionInitiated", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onConnectionResult(@NonNull String endpointId, @NonNull ConnectionResolution connectionResolution) {
|
|
||||||
Log.d("NearbyCon java", "ad.onConnectionResult");
|
|
||||||
Map<String, Object> args = new HashMap<>();
|
|
||||||
args.put("endpointId", endpointId);
|
|
||||||
int statusCode = -1;
|
|
||||||
switch (connectionResolution.getStatus().getStatusCode()) {
|
|
||||||
case ConnectionsStatusCodes.STATUS_OK:
|
|
||||||
statusCode = 0;
|
|
||||||
// We're connected! Can now start sending and receiving data.
|
|
||||||
break;
|
|
||||||
case ConnectionsStatusCodes.STATUS_CONNECTION_REJECTED:
|
|
||||||
statusCode = 1;
|
|
||||||
// The connection was rejected by one or both sides.
|
|
||||||
break;
|
|
||||||
case ConnectionsStatusCodes.STATUS_ERROR:
|
|
||||||
statusCode = 2;
|
|
||||||
// The connection broke before it was able to be accepted.
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Unknown status code
|
|
||||||
}
|
|
||||||
args.put("statusCode", statusCode);
|
|
||||||
channel.invokeMethod("ad.onConnectionResult", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisconnected(@NonNull String endpointId) {
|
|
||||||
Log.d("NearbyCon java", "ad.onDisconnected");
|
|
||||||
Map<String, Object> args = new HashMap<>();
|
|
||||||
args.put("endpointId", endpointId);
|
|
||||||
channel.invokeMethod("ad.onDisconnected", args);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private final ConnectionLifecycleCallback discoverConnectionLifecycleCallback = new ConnectionLifecycleCallback() {
|
|
||||||
@Override
|
|
||||||
public void onConnectionInitiated(@NonNull String endpointId, @NonNull ConnectionInfo connectionInfo) {
|
|
||||||
Log.d("NearbyCon java", "dis.onConnectionInitiated");
|
|
||||||
Map<String, Object> args = new HashMap<>();
|
|
||||||
args.put("endpointId", endpointId);
|
|
||||||
args.put("endpointName", connectionInfo.getEndpointName());
|
|
||||||
args.put("authenticationToken", connectionInfo.getAuthenticationToken());
|
|
||||||
args.put("isIncomingConnection", connectionInfo.isIncomingConnection());
|
|
||||||
channel.invokeMethod("dis.onConnectionInitiated", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onConnectionResult(@NonNull String endpointId, @NonNull ConnectionResolution connectionResolution) {
|
|
||||||
Log.d("NearbyCon java", "dis.onConnectionResult");
|
|
||||||
Map<String, Object> args = new HashMap<>();
|
|
||||||
args.put("endpointId", endpointId);
|
|
||||||
int statusCode = -1;
|
|
||||||
switch (connectionResolution.getStatus().getStatusCode()) {
|
|
||||||
case ConnectionsStatusCodes.STATUS_OK:
|
|
||||||
statusCode = 0;
|
|
||||||
// We're connected! Can now start sending and receiving data.
|
|
||||||
break;
|
|
||||||
case ConnectionsStatusCodes.STATUS_CONNECTION_REJECTED:
|
|
||||||
statusCode = 1;
|
|
||||||
// The connection was rejected by one or both sides.
|
|
||||||
break;
|
|
||||||
case ConnectionsStatusCodes.STATUS_ERROR:
|
|
||||||
statusCode = 2;
|
|
||||||
// The connection broke before it was able to be accepted.
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
// Unknown status code
|
|
||||||
}
|
|
||||||
args.put("statusCode", statusCode);
|
|
||||||
channel.invokeMethod("dis.onConnectionResult", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onDisconnected(@NonNull String endpointId) {
|
|
||||||
Log.d("NearbyCon java", "dis.onDisconnected");
|
|
||||||
Map<String, Object> args = new HashMap<>();
|
|
||||||
args.put("endpointId", endpointId);
|
|
||||||
channel.invokeMethod("dis.onDisconnected", args);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private final PayloadCallback payloadCallback = new PayloadCallback() {
|
|
||||||
@Override
|
|
||||||
public void onPayloadReceived(@NonNull String s, @NonNull Payload payload) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPayloadTransferUpdate(@NonNull String s, @NonNull PayloadTransferUpdate payloadTransferUpdate) {
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private final EndpointDiscoveryCallback endpointDiscoveryCallback = new EndpointDiscoveryCallback() {
|
|
||||||
@Override
|
|
||||||
public void onEndpointFound(@NonNull String endpointId, @NonNull DiscoveredEndpointInfo discoveredEndpointInfo) {
|
|
||||||
Log.d("NearbyCon java", "onEndpointFound");
|
|
||||||
Map<String, Object> args = new HashMap<>();
|
|
||||||
args.put("endpointId", endpointId);
|
|
||||||
args.put("endpointName", discoveredEndpointInfo.getEndpointName());
|
|
||||||
args.put("serviceId", discoveredEndpointInfo.getServiceId());
|
|
||||||
channel.invokeMethod("dis.onEndpointFound", args);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onEndpointLost(@NonNull String endpointId) {
|
|
||||||
Log.d("NearbyCon java", "onEndpointLost");
|
|
||||||
Map<String, Object> args = new HashMap<>();
|
|
||||||
args.put("endpointId", endpointId);
|
|
||||||
channel.invokeMethod("dis.onEndpointLost", args);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
private Strategy getStrategy(int strategy) {
|
|
||||||
switch (strategy) {
|
|
||||||
case 0:
|
|
||||||
return Strategy.P2P_CLUSTER;
|
|
||||||
case 1:
|
|
||||||
return Strategy.P2P_STAR;
|
|
||||||
case 2:
|
|
||||||
return Strategy.P2P_POINT_TO_POINT;
|
|
||||||
default:
|
|
||||||
return Strategy.P2P_CLUSTER;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -125,6 +125,7 @@ class _MyBodyState extends State<Body> {
|
|||||||
userName,
|
userName,
|
||||||
strategy,
|
strategy,
|
||||||
onEndpointFound: (id, name, serviceId) {
|
onEndpointFound: (id, name, serviceId) {
|
||||||
|
print("in callback");
|
||||||
showModalBottomSheet(
|
showModalBottomSheet(
|
||||||
context: context,
|
context: context,
|
||||||
builder: (builder) {
|
builder: (builder) {
|
||||||
|
@ -28,7 +28,8 @@ class Nearby {
|
|||||||
|
|
||||||
Nearby._() {
|
Nearby._() {
|
||||||
_channel.setMethodCallHandler((handler) {
|
_channel.setMethodCallHandler((handler) {
|
||||||
Map<String, dynamic> args = handler.arguments;
|
Map<dynamic, dynamic> args = handler.arguments;
|
||||||
|
|
||||||
print("=====================");
|
print("=====================");
|
||||||
print(handler.method);
|
print(handler.method);
|
||||||
args.forEach((s, d) {
|
args.forEach((s, d) {
|
||||||
@ -89,10 +90,10 @@ class Nearby {
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
case "dis.onEndpointFound":
|
case "dis.onEndpointFound":
|
||||||
|
print("in switch");
|
||||||
String endpointId = args['endpointId'];
|
String endpointId = args['endpointId'];
|
||||||
String endpointName = args['endpointName'];
|
String endpointName = args['endpointName'];
|
||||||
String serviceId = args['serviceId'];
|
String serviceId = args['serviceId'];
|
||||||
|
|
||||||
_onEndpointFound?.call(endpointId, endpointName, serviceId);
|
_onEndpointFound?.call(endpointId, endpointName, serviceId);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@ -158,6 +159,8 @@ class Nearby {
|
|||||||
@required OnEndpointLost onEndpointLost,
|
@required OnEndpointLost onEndpointLost,
|
||||||
}) async {
|
}) async {
|
||||||
assert(userNickName != null && strategy != null);
|
assert(userNickName != null && strategy != null);
|
||||||
|
this._onEndpointFound = onEndpointFound;
|
||||||
|
this._onEndpointLost = onEndpointLost;
|
||||||
|
|
||||||
return await _channel.invokeMethod('startDiscovery', <String, dynamic>{
|
return await _channel.invokeMethod('startDiscovery', <String, dynamic>{
|
||||||
'userNickName': userNickName,
|
'userNickName': userNickName,
|
||||||
|
Loading…
Reference in New Issue
Block a user