课程project复习 - 云计算

  我们这次project实现的是图片中的文字识别:首先客户端上传一张图片给云服务器,然后服务器进行OCR文字识别,再将识别的结果返回给客户端。下面就从云端部分和Android部分分析:
从云端分析:

从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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值