如何从Chromecast连接到本地Android服务器?

时间:2015-02-26 21:41:24

标签: javascript android sockets server chromecast

我要做的是在我的Android设备上启动本地服务器,然后从Chromecast连接到Android服务器,以便我可以将图像数据从Android发送到Chromecast。

我到目前为止所做的是在Android上设置一个绑定到127.0.0.1的ServerSocket,然后将一条消息中的localhost信息(端口号)发送到chromecast,告知chromeocket已准备好接受连接并指示Chromecast连接到服务器。但我不知道我应该如何连接它。我已经尝试使用WebSockets连接到ServerSocket但我得到了

WebSocket connection to 'ws://localhost:9147/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED

我已经更改了端口号,尝试了“ws”和“wss”,我尝试寻找答案,但我遇到的一切都是“如何将android连接到服务器”或“如何将Android服务器连接到Android客户端“所以如果这是重新发布,我会道歉。

我打算做的是使用Base64图像编码将带有图像数据的String发送到chromecast,然后将图像src设置为。我显然不想使用Cast.CastAPI.sendMessage()。

要清楚,我正在寻找一种使用JavaScript连接到Android服务器的方法。

Android代码运行正常,Chromecast会收到消息但是当它尝试连接时失败。

Android代码:

 Runnable bitmapSender = new Runnable() {
    private ServerSocket serverSocket;
    public static final int SERVERPORT = 9147;


    @Override
    public void run() {
        Socket socket = null;
        try {
            Log.d(TAG, "Socket binding attempt");
            serverSocket = new ServerSocket();
            serverSocket.setReuseAddress(true);
            serverSocket.bind(new InetSocketAddress(SERVERPORT));


            String message = createJsonMessage(MessageType.socket, "wss://localhost:"+ SERVERPORT);

            sendMessage(message);
        } catch (IOException e) {
            e.printStackTrace();
        }


        while (!Thread.currentThread().isInterrupted()) {
            try {
                Log.d(TAG, "Socket thread");
                socket = serverSocket.accept();
                CommunicationThread commThread = new CommunicationThread(socket);
                BitmapExecutorService.execute(commThread);

              }catch(IOException e){
                e.printStackTrace();
            }
        }
    }
};

使用Javascript:

    function connectToSocket(source){
     //Connect to socket

        window.socket = new WebSocket(source);
        socket.onopen = function() {
            socket.send('Hello Android');
        };
        window.socket.onmessage = function(event) {
            console.log('Received a message from the server!', data);
            var jsonObj = JSON.parse(event.data)
            if(jsonObj.type == "image"){
                console.log('Image sent :)');
                var source = 'data:image/png;base64,'.concat(jsonObj.data)
                displayEncodedImage(source);
            }
        };

由于

编辑:更新 我试图通过localhost连接。这不像我想的那样有效。我仍然没有让图像发送工作,但我现在握手了。我需要做的是发送手机的IP地址。我这样做是通过向清单添加ACCESS_WIFI_STATE权限并使用以下代码获取IP地址:

WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
                String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());

0 个答案:

没有答案
相关问题