Android Wear上的直接互联网连接?

时间:2014-07-08 08:32:34

标签: android wear-os

我尝试构建一个应用程序,显示来自互联网的一些图片。

我使用了一个功能,它在我的手机上运行得很好(Galaxy S3 - Android 4.3),但在手表上我得到java.io.EOFException例外。

代码(在手机上工作):

private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
    ImageView bmImage;

    public DownloadImageTask(ImageView bmImage) {
        this.bmImage = bmImage;
    }

    protected Bitmap doInBackground(String... urls) {
        String urldisplay = urls[0];
        Bitmap mIcon11 = null;
        try {
            InputStream in = new java.net.URL(urldisplay).openStream();
            mIcon11 = BitmapFactory.decodeStream(in);
        } catch (Exception e) {
            //Log.e("Error", e.getMessage());
            e.printStackTrace();
        }
        return mIcon11;
    }

    protected void onPostExecute(Bitmap result) {
        bmImage.setImageBitmap(result);
    }
}

其他函数抛出org.apache.http.NoHttpResponseException 手表配对和在线,因为我可以使用语音命令和搜索网络等。

所以问题:我可以直接从Android Wear访问网络,还是需要在手机上处理所有这些任务?或者我的设置有问题吗?

4 个答案:

答案 0 :(得分:9)

Android Wear设备无法直接访问互联网。如果您想访问网络,则应使用随播应用进行访问。您可以使用Data Layer API在可穿戴设备和掌上电脑之间来回传输数据。数据层API内置了对transferring assets的支持(主要是图像,但基本上你可以传输任何其他二进制数据)。

编辑:从Android Wear 2.0开始,可以使用常规网络API直接访问互联网。有关详细信息,请参阅Android Wear 2.0 Developer Preview documentation。 Android Wear 2.0尚未发布,请参阅Developer Preview Program Overview了解时间表。

答案 1 :(得分:2)

即使Android 5.1.1支持Wi-Fi功能。

您应该坚持使用Data Layer API,不能直接从watch发送http请求。从手机中获取互联网数据,然后将其传输到使用数据层API进行观看。

您可以看到此Does Android Wear support directly access the Internet?

此文件Always-on and Wi-Fi with the latest Android Wear update

答案 2 :(得分:1)

我有一个非常类似的问题。我的应用程序使用中间件(ZeroC Ice)连接到互联网,因此我无法使用MessageApi或类似的东西。我的佩戴应用程序能够连接到互联网而未连接到我的手机。

我的问题是,当手机连接到我的Wear设备时,WiFi会关闭(为了节省电池)。一个简单的解决方案是禁用此功能:在您的服装上转到Developer Options并禁用Automatic Wi-Fi toggle。这样可以更快地耗尽电池,但每次都会连接到Internet。

致谢:https://arcoresearchgroup.wordpress.com/2016/04/18/wear-keep-internet-even-when-connected/#more-1349

答案 3 :(得分:0)

您可以使用MessageApi。我按照this详细示例进行了操作,效果非常好。