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

Android Wear上的直接互联网连接?,android,wear-os,Android,Wear Os,我试图建立一个应用程序,显示一些来自互联网的图片 我使用了一个功能,它在我的手机(Galaxy S3-Android 4.3)上运行得非常好,但是在手表上我得到了一个java.io.EOFException异常 代码(适用于手机): 私有类下载ImageTask扩展异步任务{ 图像视图bmImage; 公共下载ImageTask(ImageView bmImage){ this.bmImage=bmImage; } 受保护位图doInBackground(字符串…URL){ 字符串urldisp

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

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

代码(适用于手机):

私有类下载ImageTask扩展异步任务{
图像视图bmImage;
公共下载ImageTask(ImageView bmImage){
this.bmImage=bmImage;
}
受保护位图doInBackground(字符串…URL){
字符串urldisplay=url[0];
位图mIcon11=null;
试一试{
InputStream in=newjava.net.URL(urldisplay.openStream();
mIcon11=BitmapFactory.decodeStream(in);
}捕获(例外e){
//Log.e(“Error”,e.getMessage());
e、 printStackTrace();
}
返回mIcon11;
}
受保护的void onPostExecute(位图结果){
bmImage.setImageBitmap(结果);
}
}
其他函数抛出一个
org.apache.http.NoHttpResponseException
手表是成对的,在线的,因为我可以使用语音命令和搜索网页等


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

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


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

即使Android 5.1.1支持Wi-Fi功能

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

你可以看到这个


您可以使用此文档。我遵循了详细的示例,效果非常好

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

我的问题是,当手机连接到我的穿戴设备时,WiFi被关闭(为了节省电池)。一个简单的解决方案是禁用此功能:在佩戴时转到
开发者选项
,然后禁用
自动Wi-Fi切换
。这将更快地耗尽电池电量,但您每次都可以连接互联网


信用证:

很遗憾听说他们没有将此功能内置到手机上的Android Wear应用程序中,并无缝地将互联网连接到Wear设备(如谷歌眼镜)。现在,每个人都必须为互联网连接编写自己的代码,并将其放入手机应用程序中。要实现这一点,用户是否需要启动配套应用程序?换言之,如果用户只运行过可穿戴应用程序,那么它可以通过手机访问互联网吗?在某些手表(如Galaxy Gear)上支持新版安卓可穿戴wi-fi的情况下,这一限制是否仍然相关?我想知道我是否可以创建一个可以在手机不在时连接到互联网的应用程序
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);
    }
}