1. Mitglieder surfen ohne Werbung auf Android-Hilfe.de! ✔ Jetzt kostenlos Mitglied in unserer Community werden.
  1. Evolutio, 03.04.2018 #1
    Evolutio

    Evolutio Threadstarter Android-Experte

    Hallo Leute,

    ich versuche jetzt seit ein paar Stunden Daten von meiner Android Wear-App an die dazugehörige Android-App zu senden. Allerdings kommt bei der Android App nichts an.

    Android Phone App:
    AndroidManifest.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="sh.evolutio.car">
    
        <uses-feature
            android:name="android.software.leanback"
            android:required="true" />
    
        <application
            android:allowBackup="false"
            android:icon="@mipmap/ic_launcher"
            android:label="@string/app_name"
            android:roundIcon="@mipmap/ic_launcher_round"
            android:supportsRtl="true"
            android:theme="@style/AppTheme">
    
            <service android:name=".services.ListenerService" >
                <intent-filter>
                    <action android:name="com.google.android.gms.wearable.MESSAGE_RECEIVED" />
                    <action android:name="com.google.android.gms.wearable.DATA_CHANGED" />
                    <!-- <data android:scheme="wear" android:host="*" android:pathPrefix="/updatecar" /> -->
                </intent-filter>
            </service>
    
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name"
                android:theme="@style/AppTheme.NoActionBar">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
    
                    <category android:name="android.intent.category.LAUNCHER" />
                    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    
    </manifest>
    mein ListenerService.java
    Code:
    package sh.evolutio.car.services;
    
    import android.content.Intent;
    import android.util.Log;
    
    import com.google.android.gms.wearable.MessageEvent;
    import com.google.android.gms.wearable.WearableListenerService;
    
    public class ListenerService extends WearableListenerService {
      private static final String TAG = "ListenerService";
      private static final String MESSAGE_PATH = "/updatecar";
    
      @Override
      public void onCreate() {
          Log.d(TAG, "ListenerService created");
      }
    
      @Override
      public void onMessageReceived(MessageEvent messageEvent) {
          Log.d(TAG, "onMessageReceived");
    
          if (messageEvent.getPath().equals(MESSAGE_PATH)) {
              Log.d(TAG, "good message");
          } else {
              Log.d(TAG, "bad message");
          }
      }
    }
    der dazugehörige Code aus meiner MainActivity:
    Code:
    @Override
    protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
    
      startService(new Intent(MainActivity.this, ListenerService.class));
    }
    
    Nachdem starten der App erscheint in der Logcat für das Handy folgende Meldung:
    Code:
    26131-26131/sh.evolutio.car D/ListenerService: ListenerService created
    Also scheint der ListenerService zu laufen.

    Jetzt zu der Android Wear App:
    AndroidManifest.xml:
    Code:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="sh.evolutio.carwear">
    
      <uses-feature android:name="android.hardware.type.watch" />
    
      <uses-permission android:name="android.permission.WAKE_LOCK" />
    
      <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@android:style/Theme.DeviceDefault">
        <uses-library
          android:name="com.google.android.wearable"
          android:required="true" />
        <meta-data
          android:name="com.google.android.wearable.standalone"
          android:value="false" />
    
        <activity
          android:name=".MainActivity"
          android:label="@string/app_name">
          <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
          </intent-filter>
        </activity>
      </application>
    </manifest>
    Hier die MainActivity:
    Code:
    package sh.evolutio.carwear;
    
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    import android.support.wearable.activity.WearableActivity;
    import android.util.Log;
    import android.view.View;
    
    import com.google.android.gms.common.ConnectionResult;
    import com.google.android.gms.common.api.GoogleApiClient;
    import com.google.android.gms.common.api.ResultCallback;
    import com.google.android.gms.tasks.OnFailureListener;
    import com.google.android.gms.tasks.OnSuccessListener;
    import com.google.android.gms.tasks.Task;
    import com.google.android.gms.wearable.MessageApi;
    import com.google.android.gms.wearable.Node;
    import com.google.android.gms.wearable.NodeApi;
    import com.google.android.gms.wearable.Wearable;
    
    public class MainActivity extends WearableActivity implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
      private static String TAG = "MainActivity";
      private static final String MESSAGE_PATH = "/updatecar";
    
      Node mNode; // the connected device to send the message to
      GoogleApiClient mGoogleApiClient;
      private boolean mResolvingError = false;
    
      @Override
      protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        //Connect the GoogleApiClient
        mGoogleApiClient = new GoogleApiClient.Builder(this)
                .addApi(Wearable.API)
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .build();
    
        sendMessage("test");
    
        // Enables Always-on
        setAmbientEnabled();
      }
    
      @Override
      protected void onStart() {
        super.onStart();
        if (!mResolvingError) {
          mGoogleApiClient.connect();
        }
      }
    
      /**
        * Resolve the node = the connected device to send the message to
        */
      private void resolveNode() {
        Log.d(TAG, "resolveNode");
    
        Wearable.NodeApi.getConnectedNodes(mGoogleApiClient)
          .setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
            @Override
            public void onResult(NodeApi.GetConnectedNodesResult nodes) {
              for (Node node : nodes.getNodes()) {
                Log.d(TAG, "resolvedNode: " + node);
                mNode = node;
              }
            }
          });
      }
    
      @Override
      public void onConnected(Bundle bundle) {
        resolveNode();
      }
    
      @Override
      public void onConnectionSuspended(int i) {}
    
      @Override
      public void onConnectionFailed(ConnectionResult connectionResult) {
        Log.d(TAG, "connectionResult: " + connectionResult);
      }
    
      /**
        * Send message to mobile handheld
        */
      private void sendMessage(String Key) {
        if (mNode != null && mGoogleApiClient!= null && mGoogleApiClient.isConnected()) {
          final String messageKey = Key;
    
          Log.d(TAG, "isConnected: " + mGoogleApiClient.isConnected());
          Log.d(TAG, "connected to: " + mNode.getId());
    
          Task<Integer> sendTask = Wearable.getMessageClient(MainActivity.this).sendMessage(mNode.getId(), MESSAGE_PATH, messageKey.getBytes());
          sendTask.addOnSuccessListener(new OnSuccessListener<Integer>() {
            @Override
            public void onSuccess(Integer integer) {
              Log.d(TAG, "onSuccess: " + integer);
            }
          });
    
          sendTask.addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
              Log.d(TAG, "onFailure: " + e.getMessage());
            }
          });
    
          Wearable.MessageApi.sendMessage(mGoogleApiClient, mNode.getId(), MESSAGE_PATH, messageKey.getBytes()).setResultCallback(
            new ResultCallback<MessageApi.SendMessageResult>() {
              @Override
              public void onResult(@NonNull MessageApi.SendMessageResult sendMessageResult) {
                if (sendMessageResult.getStatus().isSuccess()) {
                  Log.v(TAG, "Message: { " + messageKey + " } sent to: " + mNode.getDisplayName());
                } else {
                  // Log an error
                  Log.v(TAG, "ERROR: failed to send Message");
                }
              }
            }
          );
        }
      }
    }
    Und wenn ich dann die Android Wear App starte, steht in der Logcat zu meiner Uhr folgendes:
    Code:
    sh.evolutio.carwear D/MainActivity: isConnected: true
    sh.evolutio.carwear D/MainActivity: connected to: 778d0d53
    sh.evolutio.carwear V/MainActivity: Message: { test } sent to: HUAWEI Mate 10 Pro
    sh.evolutio.carwear D/MainActivity: onSuccess: 17282
    So, damit wurde also der String "test" erfolgreich an mein Handy geschickt, allerdings kommt da nichts an..

    Irgendwo hatte ich gelesen, dass die Packagenames der AndroidManifests gleich sein müssen?
    Muss ich also in beiden AndroidManifests
    Code:
    package="sh.evolutio.car"
    nehmen?

    Gruß,
    Evolutio
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
Neigungssensor ansprechen und wert ausgeben in App Android App Entwicklung Sonntag um 16:26 Uhr
MIT AppInventor App erstellen um PDFs zu öffnen, problem Android App Entwicklung 10.10.2018
Kosten/ Aufwand für ne Android App für Vereinsaufgaben? Android App Entwicklung 08.10.2018
Welches Tut/Buch/... für meine App-Idee? Android App Entwicklung 01.10.2018
Google Play: mind. Android 8.0 (API level 26) - Eclipse Android App Entwicklung 30.09.2018
2 Probleme mit Android Studio Android App Entwicklung 24.09.2018
App startet nicht - Wie, die Ursache finden? Android App Entwicklung 18.09.2018
Wert beim Start der App aus SharedPreferences auslesen Android App Entwicklung 10.09.2018
Datenschutzerklärung bei eigener App (ohne Erhebung von Daten) Android App Entwicklung 30.08.2018
alle 100 ms Daten über Bluetooth senden Android App Entwicklung 15.08.2018
Du betrachtest das Thema "Daten von Android Wear zur Handy-App senden geht nicht" im Forum "Android App Entwicklung",
  1. Android-Hilfe.de verwendet Cookies um Inhalte zu personalisieren und dir den bestmöglichen Service zu gewährleisten. Wenn du auf der Seite weitersurfst stimmst du der Cookie-Nutzung zu.  Ich stimme zu.