2017-07-18 19 views
0

アンドロイド携帯端末からウェアラブルにメッセージを送信しようとしていますが、WearableListenerServiceのonMessageReceivedメソッドが呼び出されることはありません。私は、電話からのメッセージが正常に送信され、正しいノードに送信されたことを確認しました。そのため、ウェアラブルアプリの受信側に問題があるようです。ここでは、ウェアラブル、プロジェクトのリスナークラスのための私のコードは次のとおりです。Android:メッセージAPIメッセージを受信できません

public class MessageListener extends WearableListenerService implements GoogleApiClient.ConnectionCallbacks { 
@Override 
public void onMessageReceived(MessageEvent messageEvent) { 
    if (messageEvent.getPath().equals("/message_path")) { 
     final String message = new String(messageEvent.getData()); 

     // Broadcast message to wearable activity for display 
     Intent messageIntent = new Intent(); 
     messageIntent.setAction(Intent.ACTION_SEND); 
     messageIntent.putExtra("message", message); 
     LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent); 
    } 
    else { 
     super.onMessageReceived(messageEvent); 
    } 
} 

@Override 
public void onPeerConnected(Node peer) { 
    Log.v("myTag", "Peer connected: " + peer.getDisplayName()); 
} 

@Override 
public void onConnected(Bundle bundle) { 
    Wearable.MessageApi.addListener(MainActivityWear.client, this); 
} 

@Override 
public void onConnectionSuspended(int i) {} 
} 

ブレークポイントを設定することで、私はonMessageReceived方法もonConnected方法どちらも呼ばれていたことがわかりました。ここで

はMainActivityはウェアラブルプロジェクトのためにある:

public class MainActivityWear extends Activity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener { 

private TextView mTextView; 
private MessageReceiver messageReceiver; 
public static GoogleApiClient client; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main_wear); 
    final WatchViewStub stub = (WatchViewStub) findViewById(R.id.watch_view_stub); 
    stub.setOnLayoutInflatedListener(new WatchViewStub.OnLayoutInflatedListener() { 
     @Override 
     public void onLayoutInflated(WatchViewStub stub) { 
      mTextView = (TextView) stub.findViewById(R.id.text); 
     } 
    }); 
    client = new GoogleApiClient.Builder(this) 
      .addApi(Wearable.API) 
      .addConnectionCallbacks(this) 
      .addOnConnectionFailedListener(this) 
      .build(); 

    // Register the local broadcast receiver 
    IntentFilter messageFilter = new IntentFilter(Intent.ACTION_SEND); 
    messageReceiver = new MessageReceiver(); 
    LocalBroadcastManager.getInstance(this).registerReceiver(messageReceiver, messageFilter); 
} 
// Connect to the data layer when the Activity starts 
@Override 
protected void onStart() { 
    super.onStart(); 
    client.connect(); 
} 

@Override 
public void onStop() { 
    super.onStop(); 
    unregisterReceiver(messageReceiver); 
} 

@Override 
public void onConnected(@Nullable Bundle bundle) {} 

@Override 
public void onConnectionSuspended(int i) {} 

@Override 
public void onConnectionFailed(@NonNull ConnectionResult connectionResult) {} 


public class MessageReceiver extends BroadcastReceiver { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     String message = intent.getStringExtra("message"); 
     // Display message in UI 
     mTextView.setText(message); 
    } 
} 
} 

MessageReceiverが入れ子になったクラスです。 すべてが正しくコンパイルされますが、メッセージは受信されません。前もって感謝します!

答えて

0

アプリケーションとデバイス内のGoogleServicesAPIのバージョンを確認してください。彼らは同じでなければなりません。

あなたのウェアと携帯端末のバージョンがアプリと同じかどうかを確認してください。そうでない場合は、最も古いものを使用します。

PS onPeerConnectedonConnectionSuspendedを使用しないでください。それらのメソッドは推奨されず、起動されません。

+0

ありがとうございます、@Vyacheslav、私は確認し、バージョンは同じです。 onPeerConnectedとonConnectionSuspendedを含まないようにコードを修正しましたが、まだ受信していません。 –

関連する問題