【问题标题】:Transfer data between iPhone and Google Glass在 iPhone 和 Google Glass 之间传输数据
【发布时间】:2014-03-31 18:45:24
【问题描述】:

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

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

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

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

提前致谢。

【问题讨论】:

标签: ios bluetooth google-glass


【解决方案1】:

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

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

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

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

充当套接字服务器的示例 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();
    }
}

【讨论】:

  • 你碰巧有一些方法2(套接字)的示例代码吗?看起来这很可能是我必须采用的方式。感谢您的帮助。
【解决方案2】:

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

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

  1. 您可以将其作为应用创意提交给以下之一:

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

【讨论】:

  • 我应该提到使用云并不是一个真正的选择 - 它需要是一个 iphone 到玻璃的通信。感谢您的 github 链接,我会检查一下。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2014-01-20
  • 2023-03-19
  • 2014-06-14
  • 1970-01-01
  • 2012-05-11
  • 1970-01-01
相关资源
最近更新 更多