Ich habe in der Nähe API zum Erkennen von Beacons in meiner Android App ausprobiert. Befolgen Sie die Anweisungen auf https://developers.google.com/nearby/messages/android/get-started undNachrichten in der Nähe Api erfolgreich abonniert, aber onFound nie gefordert Registrierte Google Beacon
Die Verbindung zu GoogleAPI-Client wird mit einem Klick auf eine App (für explizite Absicht) initiiert und Subskription für Nachrichten in der Nähe wird in der OnConnected Callback aufgerufen.
//Inside onCreate
FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startNearby();
}
});
private void startNearby() {
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addApi(Nearby.MESSAGES_API)
.addConnectionCallbacks(this)
.enableAutoManage(this, this)
.build();
}
@Override
public void onConnected(Bundle bundle) {
if(mGoogleApiClient.isConnected()){
System.out.println("Google_Api_Client: It was connected on (onConnected) function, working as it should.");
}
else{
System.out.println("Google_Api_Client: It was NOT connected on (onConnected) function, It is definetly bugged.");
}
subscribe();
}
private void subscribe() {
mMessageListener = new MessageListener() {
@Override
public void onFound(Message message) {
String messageAsString = new String(message.getContent());
System.out.println("On Found: "+messageAsString);
adapter.add("FOUND: "+messageAsString);
}
@Override
public void onLost(Message message) {
String messageAsString = new String(message.getContent());
System.out.println("On Lost: "+messageAsString);
adapter.add("LOST: "+messageAsString);
}
};
SubscribeOptions options = new SubscribeOptions.Builder()
.setStrategy(Strategy.BLE_ONLY)
.build();
Nearby.Messages.subscribe(mGoogleApiClient, mMessageListener, options).setResultCallback(new ResultCallback<Status>() {
@Override
public void onResult(@NonNull Status status) {
if (status.isSuccess()) {
// Log.i(TAG, "Subscribed successfully.");
System.out.println("DONE. Subscribed successfully." +status);
adapter.add("Subscribing done. "+status);
} else {
System.out.println("ERROR. Could not subscribe, status = " + status);
// logAndShowSnackbar("Could not subscribe, status = " + status);
// mSubscribeSwitch.setChecked(false);
}
}
});
}
Im ResultCallback von Nearby.messages.subscribe Anruf, erhalte ich den Erfolg in dem Antwortstatus objekt-
I/System.out: Google_Api_Client: It was connected on (onConnected) function, working as it should.
I/System.out: DONE. Subscribed successfully.Status{statusCode=SUCCESS, resolution=null}
Für die Baken, ich App Beacon Simulator auf Android Play Store bin mit zu simulieren Eddystone UID Beacon. Ich habe zwei Beacons mit der Beacon Tools App registriert und kann die Beacons in Google Beacon Dashboard anzeigen.
Das Problem ist, dass die OnFound/OnLost Callbacks nie in meiner App aufgerufen werden. Bitte beachten Sie, dass die Beacons durch eine Beacon Simulator App (auf Android) sowie die Google Beacon Tools App (unter dem Register Beacons in der Nähe) erkannt werden können.
Werde wirklich jede Hilfe schätzen, was ich hier falsch machen könnte. Vielen Dank!!