отправка данных с wear на телефон

#android #android-studio #android-wear-data-api #android-wear-2.0

Вопрос:

Я добавляю новый модуль (wear) в свой проект, затем я использовал код моего предыдущего проекта для отправки данных с wear на телефон.

Я делаю этот класс в основном режиме

Отправить сообщение

 static class SendMessage extends Thread {
    String path;
    String message;
    Context context;


    SendMessage(String p, String m, Context c) {
        path = p;
        message = m;
        context = c;
    }

    public void run() {


        Task<List<Node>> nodeListTask = Wearable.getNodeClient(context).getConnectedNodes();

        try {


            List<Node> nodes = Tasks.await(nodeListTask);
            for (Node node : nodes) {

                Task<Integer> sendMessageTask = Wearable.getMessageClient(context).sendMessage(node.getId(), path, message.getBytes());

                try {

                    Integer result = Tasks.await(sendMessageTask);

                } catch (ExecutionException | InterruptedException exception) {

                }

            }

        } catch (ExecutionException | InterruptedException exception) {

        }
    }
}
 

и я использовал этот код для отправки данных, и я вызывал его много раз
, но onMessageReceived метод никогда не вызывается.

 new SendMessage("/my_path", "hi" ,getApplicationContext()).start();
 

В приложении для моего телефона

Я сделал новую услугу под названием MessageService .

Служба сообщений

 public class MessageService extends WearableListenerService {

    @Override
    public void onMessageReceived(MessageEvent messageEvent) {


        if (messageEvent.getPath().equals("/my_path")) {

            final String message = new String(messageEvent.getData());

            Intent messageIntent = new Intent();
            messageIntent.setAction(Intent.ACTION_SEND);
            messageIntent.putExtra("message", message);

            LocalBroadcastManager.getInstance(this).sendBroadcast(messageIntent);

        } else {
            super.onMessageReceived(messageEvent);
        }
    }

}
 

MainActivity

 public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    //Register to receive local broadcasts, which we'll be creating in the next step//
    IntentFilter messageFilter = new IntentFilter(Intent.ACTION_SEND);
    Receiver messageReceiver = new Receiver();
    LocalBroadcastManager.getInstance(this).registerReceiver(messageReceiver, messageFilter);

}

//Define a nested class that extends BroadcastReceiver//

public class Receiver extends BroadcastReceiver {
    @Override

    public void onReceive(Context context, Intent intent) {

        String message = intent.getStringExtra("message");
        Log.v("message",message);

    }
}
 

App manifest

     <service
        android:name=".MessageService"
        android:enabled="true"
        android:exported="true" >
        <intent-filter>
            <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
            <data android:scheme="wear" android:host="*" android:pathPrefix="/my_path" />
        </intent-filter>
    </service>