2017-02-21 1 views
1

Je mets à jour mes play-services-à proximité de la version '10 .2.0 ', il change EndpointDiscoveryListener et ConnectionRequestListener de l'interface en classe abstraite, j'étends NearbyClient avec EndpointDiscoveryListener et déclare la classe interne ConnectionRequestListener, maintenant je vois que AppIdentifier est aussi déprécié, Je cherchai beaucoup dans google mais je ne peux pas trouver un nouvel exemple, voici mon code, je changé de github playgameservices:comment implémenter la classe abstraite EndpointDiscoveryListener et ConnectionRequestListener dans de nouveaux play-services-à proximité?

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); 
     } 
    } 

} 

le reste du code est identique à l'exemple. Quelle est la meilleure façon d'implémenter une nouvelle version?
il me montre "Malheureusement, Google Play Services s'est arrêté" quand je veux me connecter en tant que client, Quelle est la nouvelle version deprecation?

Répondre

1

L'approche la plus simple dans le contexte de la classe NearbyClient est d'ajouter deux nouveaux champs à la classe qui implémentent les classes abstraites et d'appeler simplement les onConnectionRequest et onEndpointFound/Lost existants.

La confusion dans 10.2 est introduite lorsque le paramètre id de l'appareil n'est plus exposé. Dans la plupart des cas, c'était une comptabilité sans signification que l'application devait faire, alors maintenant dans 10.2 vous n'avez pas besoin de garder une trace de l'identifiant de l'appareil!

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); 
      } 
     }; 

Je vais essayer l'artiste 8 bits plus tard cette semaine pour le mettre à jour pour fonctionner avec 10.2. En attendant, n'hésitez pas à soumettre une demande de tirage si vous la faites fonctionner en premier :).

+0

Avez-vous exécuté 8bitartist? parce que ça n'a pas marché pour moi. Si vous avez fait s'il vous plaît envoyez-moi le nouveau? ou remplacez-le sur github –

+1

L'exemple a été mis à jour: https://github.com/playgameservices/android-basic-samples Il existe cependant un bogue connu, que Play Services se bloque parfois lors de l'appel de stopDiscovery() ou stopAdvertising(). Ils travaillent sur la réparation et seront dans la prochaine mise à jour du SDK. –

+0

s'il vous plaît laissez-moi savoir si l'erreur corrigée –