课程project复习 - 云计算
2016-03-22 17:59
274 查看
我们这次project实现的是图片中的文字识别:首先客户端上传一张图片给云服务器,然后服务器进行OCR文字识别,再将识别的结果返回给客户端。下面就从云端部分和Android部分分析:
从云端分析:
从Android活动来分析代码
一、网络连接(ConnectToCloud.java)
这个类主要用来连接云端,发送指令,然后接收返回的结果,有可能是json格式的数据,也有可能是图片。还有一个功能是bitmap格式图片的处理:如果接收从云端返回的图片,就写入本地,也可以从本地读取图片,返回bitmap。
1 初始化连接
2 获取Json格式数据
3 获取Bitmap格式图片
4 从输入流中读取图片,并写入本地
5 从本地读取图片,并转化为bitmap格式
二、登录(LoginActivity.java)
这里主要实现的功能是记住密码,通过sharedPreferences实现。需要注意的地方是,同一个应用中,通过getSharedPreferences得到的数据库其实是一样的,不用担心在不同的活动中获取的数据库不同的问题。
另外在刚打开应用的时候,如果本地保存了用户的头像,还应该加载它,代码如下:
三、主活动(MainActivity.java)
从云端分析:
从Android活动来分析代码
一、网络连接(ConnectToCloud.java)
这个类主要用来连接云端,发送指令,然后接收返回的结果,有可能是json格式的数据,也有可能是图片。还有一个功能是bitmap格式图片的处理:如果接收从云端返回的图片,就写入本地,也可以从本地读取图片,返回bitmap。
1 初始化连接
public void connect(final String url) { try { connection = (HttpURLConnection) ((new URL(url.toString()).openConnection())); connection.setDoInput(true); connection.setDoOutput(true); //post请求用于提交数据给服务器,每条数据以键值对形式存在,数据与数据之间用&分开 connection.setRequestMethod("POST"); //connection.setConnectTimeout(8000); //connection.setReadTimeout(8000); } catch (Exception e) { e.printStackTrace(); } }
2 获取Json格式数据
public String getJson (final String json){ try{ DataOutputStream out = new DataOutputStream(connection.getOutputStream()); out.writeBytes(json); out.flush(); out.close(); InputStream in = connection.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(in)); StringBuilder response = new StringBuilder(); String line; while ((line = reader.readLine()) != null) { response.append(line); } return response.toString(); }catch (Exception e) { e.printStackTrace(); } finally { if (connection != null) { connection.disconnect(); } } return ""; }
3 获取Bitmap格式图片
public Bitmap getImage(String string){ try{ DataOutputStream out = new DataOutputStream(connection.getOutputStream()); out.write(string.getBytes()); Bitmap bitmap = BitmapFactory.decodeStream(connection.getInputStream()); return bitmap; }catch (Exception e){ e.printStackTrace(); } return Bitmap.createBitmap(null); }
4 从输入流中读取图片,并写入本地
public void readAsFile(InputStream inSream, File file) throws Exception { FileOutputStream outStream = new FileOutputStream(file); byte[] buffer = new byte[1024]; int len = -1; while ((len = inSream.read(buffer)) != -1) { outStream.write(buffer, 0, len); } outStream.close(); inSream.close(); Log.e(TAG, "头像写入本地成功!"); }
5 从本地读取图片,并转化为bitmap格式
public Bitmap getBitmap(String jpgName) { try { String url = Environment.getExternalStorageDirectory() + "/"+jpgName+".jpg"; FileInputStream fis = new FileInputStream(url); return BitmapFactory.decodeStream(fis); } catch (Exception e) { Log.e(TAG, "获取图片Bitmap失败!"); return null; } }
二、登录(LoginActivity.java)
这里主要实现的功能是记住密码,通过sharedPreferences实现。需要注意的地方是,同一个应用中,通过getSharedPreferences得到的数据库其实是一样的,不用担心在不同的活动中获取的数据库不同的问题。
另外在刚打开应用的时候,如果本地保存了用户的头像,还应该加载它,代码如下:
private void setHead() { sharedPreferences = getSharedPreferences("user", MODE_PRIVATE); boolean isChecked = sharedPreferences.getBoolean("isChecked", false); if (isChecked) { try { File file = new File(Environment.getExternalStorageDirectory(), "head.jpg"); if (file.exists()) { FileInputStream fis = new FileInputStream(file); Bitmap bitmap = BitmapFactory.decodeStream(fis); usrPortrait.setImageBitmap(bitmap); } } catch (Exception e) {} } }
三、主活动(MainActivity.java)
相关文章推荐
- 微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案
- 微软云平台媒体服务实践系列 2- 使用动态封装为iOS, Android , Windows 等多平台提供视频点播(VoD)方案
- 认知商业第一波来了,IBM营销云落地中国
- 云计算概念总结
- 云计算的三种服务模式:IaaS,PaaS和SaaS
- VIEWGOOD(远古)流媒体视频云计算推动教育资源均衡化
- 云计算笔记二 云计算系统OpenStack
- 创建新浪云计算平台应用
- 与倪院士商榷:联盟商店不是云计算平台
- 十分钟了解分布式计算:GraphLab
- 十分钟了解分布式计算:GraphX
- 运营商云计算发展战略探讨
- 阿里飞天云平台架构简介
- 什么是云计算---买过“电”吗?买“云资源”也是这么回事。
- 什么是云计算---买过“电”吗?买“云资源”也是这么回事。
- 跟我一起云计算(6)——openAPI
- 百度云平台使用说明
- 弯道超车:容器技术究竟为云计算带来了什么?
- 增强现实-机器人-人工智能-云计算
- 云计算之路-阿里云上:愚人节被阿里云OCS愚