在iPhone和Google Glass之间传输数据

时间:2014-03-31 18:45:25

标签: ios bluetooth google-glass

我希望将手机连接到我的Google Glass,并在两者之间传输数据(照片,文字等)。

我正在考虑使用蓝牙LTE但据我所知,Glass不支持它,因为它只运行Android 4.0.3(或类似版本)。

我知道你可以通过myGlass应用程序连接手机和玻璃,所以很清楚,我想做的事情是可能的。但是,我想知道是否有人可以指出我正确的方向开始?具体来说,如果不是iOS上的CoreBluetooth,我应该看哪些技术?还有其他人这样做过吗?

另外,如果最好使用Bonjour,甚至在我的iPhone上创建热点并以这种方式连接,那么你可以指出的任何教程都会很棒。

提前致谢。

2 个答案:

答案 0 :(得分:3)

我正在为Apress编写一本Google Glass开发书,刚刚完成了网络和蓝牙这一章,并提供了一些工作示例,让Glass与iPhone进行数据传输通信。你现在的Glass(API级别15)并不支持蓝牙低功耗(BLE)。我已经实现了三种方法来实现Glass和iOS之间的数据传输:

  1. 让Glass通过经典蓝牙或插槽与Android设备(例如支持BLE的Android 4.3或更高版本的Nexus 7)通话,而Nexus 7充当BLE中心,可与iOS作为BLE外设进行对话。请注意,您不应该使用BLE发送大量数据,例如照片。

  2. 让Glass通过套接字直接与iOS通信 - 您可以使用作为服务器运行的C套接字代码和Glass Java套接字客户端,反之亦然。这需要您的Glass和iOS设备使用相同的Wifi,但可以传输大量数据。

  3. 使用基于服务器的解决方案 - 将数据从Glass上传到服务器,让iOS通过Apple推送通知获取。我使用这种方法在WhatsApp和WeChat上与朋友分享Glass上的照片,这两个应用程序都在iOS上运行。

  4. 用作套接字服务器的示例iOS代码:

    - (void) runSocketServer {
        int listenfd = 0;
        __block int connfd = 0;
        struct sockaddr_in serv_addr;
    
        __block char sendBuff[1025];
    
        listenfd = socket(AF_INET, SOCK_STREAM, 0);
        memset(&serv_addr, '0', sizeof(serv_addr));
        memset(sendBuff, '0', sizeof(sendBuff));
    
        serv_addr.sin_family = AF_INET;
        serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
        serv_addr.sin_port = htons(6682);
    
        bind(listenfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr));    
        listen(listenfd, 10);
    
        dispatch_async(dispatch_get_global_queue(0, 0), ^{        
            connfd = accept(listenfd, (struct sockaddr*)NULL, NULL);
            int count = 1;
            while (count++ < 120) {
                char rate[100];
                sprintf(rate, "%i\n", bpm);            
                write(connfd, rate, strlen(rate));            
                sleep(1);
            }
    
            close(connfd);
        });
    }
    

    作为套接字客户端的示例Glass代码:

    public void run()
    {
        String serverName = "192.168.1.11"; 
        int port = 6682;
        try
        {
            socket = new Socket(serverName, port);
            BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            do {
                result = input.readLine();
                runOnUiThread(new Runnable() {
                    public void run() {
                        mTvInfo.setText(result);
                    }
                });                 
            } while (result != null);
    
            });                  
        }
        catch(Exception e) {
            try { socket.close(); }
            catch (Exception e2) {};
            e.printStackTrace();
        }
    }
    

答案 1 :(得分:0)

您是否尝试过设置Google备份?您可以立即从玻璃上获取图片并在手机上查看(反之亦然)。

否则,目前市场上还没有办法,但这里有几个想法:

  1. 您可以将其作为应用提示提交给其中一个:
  2. http://glass-apps.org/google/glass-app-ideas https://plus.google.com/communities/107405100380970813362/stream/b18a5f3c-e170-40a8-991f-823f018e75af

    1. 或者您可以自己构建它。 GDK非常强大。您无法向Google提交gdk应用,但这对个人用途非常有用。这家伙开始研究它,他的github在这里: https://github.com/NathanielWaggoner/GoogleGlassBlutooth