我尝试构建一个应用程序,显示来自互联网的一些图片。
我使用了一个功能,它在我的手机上运行得很好(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访问网络,还是需要在手机上处理所有这些任务?或者我的设置有问题吗?
答案 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?
答案 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详细示例进行了操作,效果非常好。