1

Google Glass と Android 携帯電話を、コンピューターで実行している NodeJs サーバーに接続して、Android 携帯電話から Google Glass にメッセージを送信できるようにしようとしています。

このために、Im は koush の AndroidAsync ライブラリを使用しています。これは私の Android フォンでうまく機能し、このライブラリを使用して NodeJS サーバーに電話を接続するのにまったく問題はありません。

ただし、同じコードが Google Glass では機能しないようです。私のNodeJSサーバーの接続イベントハンドラーがトリガーされるため、Google Glassは接続しますが、Google GlassでConnectCallback関数をトリガーしていないようです。

Google Glassアプリで使用しているコードは次のとおりです。

SocketIOClient.connect(AsyncHttpClient.getDefaultInstance(), "http://192.168.1.229:5000", new ConnectCallback() {
    @Override
    public void onConnectCompleted(Exception ex, SocketIOClient client) {
        Log.i("SOCKET", "CONNECTION COMPLETED");
        if (ex != null) {
            ex.printStackTrace();
            return;
        }

        client.setStringCallback(new StringCallback() {
            @Override
            public void onString(String string, Acknowledge acknowledge) {
                Log.d("SOCKET", string);
            }
        });

        client.setJSONCallback(new JSONCallback() {
            @Override
            public void onJSON(JSONObject jsonObject, Acknowledge acknowledge) {
                Log.d("SOCKET", jsonObject.toString());
            }
        });

        client.on("event", new EventCallback() {
            @Override
            public void onEvent(JSONArray jsonArray, Acknowledge acknowledge) {
                Log.i("DATA: ", jsonArray.toString());
                Gson gson = new Gson();
            }
        });
        mClient = client;
    }
});

}

ご覧のとおり、「onConnectCompleted」関数で「CONNECTION COMPLETED」をログに記録しようとしていますが、起動することはなく、何もログに記録されません。

Androidフォンで同じコードが機能し、Androidフォンでこのコードを実行すると「接続完了」がログに記録されるため、これはかなり奇妙です。最も奇妙なことは、Glass が接続されたときに on connection イベントがサーバー上でトリガーされるため、ノード サーバーが実際に Google Glass を取得することです。

それで、私のGoogle Glassが明らかにNodeJSサーバーに接続しているのに、接続時にイベントをトリガーしていない理由を誰かが見つけてくれますか. (ConnectCallback 関数をトリガーしない場合、「CONNECTION COMPLETED」はログに記録されません)?

前もって感謝します、

ブラム

4

1 に答える 1

1

ここで同じ問題に直面していて、Glass は Wifi ネットワークに接続されていることを示していましたが、実際には接続されていないことに気付きました。試しadb shell netcfgてみたところ、驚いたことに、wlan0インターフェイスには IP が割り当てられていませんでした。もう一度wifiネットワークに再接続したところ、すべて正常に機能し始めました。

ただし、奇妙なことに、何らかのエラーがログに記録されることを期待していました (別のSocket.IO クライアントを使用していたにもかかわらず)。期限切れにならなかったタイムアウト (接続/ソケット タイムアウト) であると考えられるため、接続を試みていて、ログ エントリを確認するのに間に合いませんでした。これらのライブラリには、デフォルトで比較的高い接続タイムアウトが設定されていると思います。そのため、数秒経過するまでエラーは表示されません。

于 2015-01-02T21:09:26.547 に答える