2017-02-21 1 views
1

Ich aktualisiere meine Play-Dienste-in der Nähe auf Version '10 .2.0 ', ändert den EndpointDiscoveryListener und ConnectionRequestListener von der Schnittstelle zur abstrakten Klasse, ich erweitere NexteClient mit EndpointDiscoveryListener und deklariere innere Klasse ConnectionRequestListener, jetzt sehe ich, dass AppIdentifier auch veraltet ist, ich habe viel in google gesucht, aber ich kann kein neues Beispiel finden, hier ist mein Code, den ich von github geändert playgameservices:Wie implementieren abstrakte Klasse EndpointDiscoveryListener und ConnectionRequestListener in neue Play-Dienste-in der Nähe?

public class NearbyClient extends Connections.EndpointDiscoveryListener implements 
     GoogleApiClient.ConnectionCallbacks, 
     GoogleApiClient.OnConnectionFailedListener, 
     Connections.MessageListener { 


    private class OnConnectionRequest extends Connections.ConnectionRequestListener { 

    private NearbyClient mNearbyClient; 

    OnConnectionRequest(NearbyClient nearbyClient) 
    { 
     this.mNearbyClient = nearbyClient; 
    } 

    @Override 
    public void onConnectionRequest(final String remoteEndpointId, final String remoteEndpointName, byte[] payload) { 
     Log.d(TAG, "onConnectionRequest:" + remoteEndpointId + 
       ":" + remoteEndpointName); 

     if (mIsHost) { 
      // The host accepts all connection requests it gets. 
      byte[] myPayload = null; 
      Nearby.Connections.acceptConnectionRequest(mGoogleApiClient, remoteEndpointId, 
        myPayload, mNearbyClient).setResultCallback(new ResultCallback<Status>() { 
       @Override 
       public void onResult(Status status) { 
        Log.d(TAG, "acceptConnectionRequest:" + status + ":" + remoteEndpointId); 
        if (status.isSuccess()) { 
         Toast.makeText(mContext, "Connected to " + remoteEndpointName, 
           Toast.LENGTH_SHORT).show(); 

         // Record connection 
         HeroParticipant participant = new HeroParticipant(remoteEndpointId, remoteEndpointName); 
         mConnectedClients.put(remoteEndpointId, participant); 

         // Notify listener 
         mListener.onConnectedToEndpoint(remoteEndpointId, remoteEndpointName); 
        } else { 
         Toast.makeText(mContext, "Failed to connect to: " + remoteEndpointName, 
           Toast.LENGTH_SHORT).show(); 
        } 
       } 
      }); 
     } else { 
      // Clients should not be advertising and will reject all connection requests. 
      Log.w(TAG, "Connection Request to Non-Host Device - Rejecting"); 
      Nearby.Connections.rejectConnectionRequest(mGoogleApiClient, remoteEndpointId); 
     } 
    } 

} 

der Rest des Codes ist das gleiche wie Beispiel. Was ist der beste Weg, um eine neue Version zu implementieren?
zeigt es mir "Leider Google Play Services hat aufgehört", wenn ich als Client eine Verbindung herstellen möchte, Was ist die veraltete Version?

Antwort

1

Der einfachste Ansatz im Zusammenhang mit der NexteClient-Klasse besteht darin, der Klasse zwei neue Felder hinzuzufügen, die die abstrakten Klassen implementieren und einfach die vorhandenen onConnectionRequest und onEndpointFound/Lost aufrufen.

Die Verwirrung in 10.2 wird eingeführt, wenn der Geräte-ID-Parameter nicht mehr verfügbar ist. In den meisten Fällen war dies eine sinnlose Buchhaltung, die die App ausführen musste. Jetzt müssen Sie in 10.2 nicht mehr die Geräte-ID im Auge behalten!

private Connections.ConnectionRequestListener myConnectionRequestListener = 
     new Connections.ConnectionRequestListener() { 
      @Override 
      public void onConnectionRequest(String remoteEndpointId, String 
        remoteEndpointName, byte[] bytes) { 
       NearbyClient.this.onConnectionRequest(remoteEndpointId, 
         remoteEndpointName, bytes); 
      } 
     }; 
private Connections.EndpointDiscoveryListener myEndpointDiscoveryListener = 
     new Connections.EndpointDiscoveryListener() { 
      @Override 
      public void onEndpointFound(String endpointId, 
             String serviceId, 
             String name) { 
       NearbyClient.this.onEndpointFound(endpointId,serviceId, 
         name); 
      } 

      @Override 
      public void onEndpointLost(String remoteEndpointId) { 
       NearbyClient.this.onEndpointLost(remoteEndpointId); 
      } 
     }; 

Ich werde 8bit Künstler später diese Woche versuchen, es zu aktualisieren, um mit 10.2 zu arbeiten. In der Zwischenzeit, zögern Sie nicht, eine Pull-Anfrage einzureichen, wenn Sie es zuerst funktioniert :).

+0

Haben Sie 8bitartist ausgeführt? weil es bei mir nicht funktioniert hat. Wenn du es getan hast, schick mir bitte die neue? oder ersetzen Sie es auf github –

+1

Das Beispiel wurde aktualisiert: https://github.com/playgameservices/android-basic-samples Es ist ein bekannter Fehler jedoch, dass Play-Dienste manchmal beim Aufruf von stopDiscovery() oder stopAdvertising() abstürzt. Sie arbeiten daran, es zu reparieren und werden im nächsten SDK-Update sein. –

+0

Bitte lassen Sie mich wissen, wenn der Fehler behoben –

Verwandte Themen