2017-02-21 7 views
1

내 플레이 서비스 근처 버전을 '10 .2.0 '으로 업데이트하면 EndpointDiscoveryListener 및 ConnectionRequestListener가 인터페이스에서 추상 클래스로 변경되고 EndpointDiscoveryListener로 NearbyClient가 확장되고 내부 클래스 ConnectionRequestListener가 선언됩니다. 이제 AppIdentifier 역시 사용되지 않습니다.근처의 새로운 play-services-nearby에서 추상 클래스 EndpointDiscoveryListener 및 ConnectionRequestListener를 구현하는 방법은 무엇입니까?

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

} 

나머지 코드 예와 동일 : 나는 구글에서 많이 검색하지만 새로운 예를 찾을 수없는, 는 여기에 내가 github의 playgameservices 변경 내 코드입니다. 새 버전을 구현하는 가장 좋은 방법은 무엇입니까?
클라이언트로 연결하려고 할 때 "불행히도 Google Play 서비스가 중지되었습니다"라고 표시됩니다. 지원 중단 버전의 새로운 버전이 무엇인가요?

답변

1

NearbyClient 클래스의 컨텍스트에서 가장 쉬운 방법은 추상 클래스를 구현하는 두 개의 새로운 필드를 클래스에 추가하고 기존 onConnectionRequest 및 onEndpointFound/Lost를 호출하는 것입니다.

10.2의 혼란은 장치 ID 매개 변수가 더 이상 노출되지 않을 때 도입됩니다. 대부분의 경우 앱이해야하는 의미없는 부기 였기 때문에 이제는 10.2에서 기기 ID를 추적 할 필요가 없습니다!

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

이번 주말에 8 비트 아티스트를 사용해 10.2에서 작동하도록 업데이트 해 보겠습니다. 뜻있는 시간에 제발 먼저 풀 요청을하면 풀 요청을 제출하십시오 :).

+0

8bitartist를 실행 했습니까? 그것은 저를 위해 작동하지 않았기 때문에. 니가 나에게 새로운 것을 보내 주었다면? 또는 github에서 교체하십시오 –

+1

샘플이 업데이트되었습니다. https://github.com/playgameservices/android-basic-samples 그러나 StopDiscovery() 또는 stopAdvertising()을 호출 할 때 Play 서비스가 충돌하는 알려진 버그가 있습니다. 그들은 그것을 고치기 위해 노력 중이며 다음 SDK 업데이트에있을 것입니다. –

+0

오류가 수정 된 경우 알려주십시오. –