1

Google android wear Data Layer API で問題が発生しました...

私はすでにそれを使用して、ウェアラブル アクティビティからハンドヘルド アクティビティを呼び出しましたが、問題なく動作しました。しかし今、ウォッチフェイスサービスからハンドヘルドアクティビティを呼び出したい...

Google API クライアントを作成し、wearableApi を追加しました。

     public void onCreate(SurfaceHolder holder) {
        super.onCreate(holder);

        setWatchFaceStyle(new WatchFaceStyle.Builder(MyWatchFace.this)
                .setCardPeekMode(WatchFaceStyle.PEEK_MODE_VARIABLE)
                .setBackgroundVisibility(WatchFaceStyle.BACKGROUND_VISIBILITY_INTERRUPTIVE)
                .setShowSystemUiTime(false)
                .setAcceptsTapEvents(true)
                .build());
        mGoogleApiClient = new GoogleApiClient.Builder(MyWatchFace.this)
                .addApi(Wearable.API)
                .build();
        mGoogleApiClient.connect();

次に、これらのメソッドを使用してデータを送信しました。

    public void startActivity()
    {
        HashSet<String> results = new HashSet<String>();

        Wearable.NodeApi.getConnectedNodes(mGoogleApiClient).setResultCallback(new ResultCallback<NodeApi.GetConnectedNodesResult>() {
            @Override
            public void onResult(NodeApi.GetConnectedNodesResult getConnectedNodesResult) {
                String handheld = getConnectedNodesResult.getNodes().get(0).getId();
                Toast.makeText(MyWatchFace.this, getConnectedNodesResult.getNodes().get(0).getDisplayName()+": "+ handheld, Toast.LENGTH_SHORT).show();
                sendStartActivityMessage(handheld, giveValueXYZ());

            }
        });

private void sendStartActivityMessage(String nodeId, String data) {
        byte[] dataArray = data.getBytes();
        Toast.makeText(MyWatchFace.this, "ActivityPath: "+ START_ACTIVITY_PATH, Toast.LENGTH_SHORT).show();
        Wearable.MessageApi.sendMessage(

                mGoogleApiClient, nodeId, START_ACTIVITY_PATH, dataArray).setResultCallback(
                new ResultCallback<MessageApi.SendMessageResult>() {
                    @Override
                    public void onResult(MessageApi.SendMessageResult sendMessageResult) {
                        if (!sendMessageResult.getStatus().isSuccess()) {
                            Log.e(TAG, "Failed to send message with status code: "
                            + sendMessageResult.getStatus().getStatusCode());
                        }
                    }

                });
    }

モバイル サイトでは、次のコードを使用してメッセージをリッスンしました。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_host_main);
    context = getApplicationContext();

    ...

    //Google Api
    final GoogleApiClient googleApiClient = new GoogleApiClient.Builder(this)
            .addApi(Wearable.API).build();
    googleApiClient.connect();

    Wearable.MessageApi.addListener(googleApiClient, this);

...

public void onMessageReceived(MessageEvent messageEvent) {

    if (messageEvent.getPath().equals(START_ACTIVITY_PATH_WEARDATA)) {
        Log.d(TAG, "getPath: " + messageEvent.getPath() + "|||getData: " + messageEvent.getData());

        someActions();
    }

ウェアラブル アクティビティからメッセージを送信すると、これはすべて問題なく動作しますが、ウォッチフェイス サービスからメッセージを送信すると、onMessageReceived(...) メソッドをトリガーしません...

パッケージ名に問題がある可能性はありますか?
モバイル:com.example.janik.xxx.xxx

ウォッチフェイス: de.WatchSmart.watch_smart_watch_face_service

クライアントは、どの Data Layer API メッセージが自分に宛てられているかをどのように知るのでしょうか?

4

0 に答える 0