在本应用当中添加了一个用户注册的功能,用户注册完之后,在服务器端将保存用户的注册的信息,当下一次再进入应用时将自动尝试与服务器的连接,类似于我们常用的聊天工具,具体的注册方式为:填写ip地址、端口号、输入用户名、选择头像,单击注册按钮即可完成注册,前提是服务器必须要开启啦。
上传头像时提供了本地相册上传和摄像头上传两种方式,同时对图像进行了裁剪,以适合头像的大小。
/** * 裁剪图片方法实现 * * @param data */ private void startPhotoZoom(Uri uri) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); // 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪 intent.putExtra("crop", "true"); // aspectX aspectY 是宽高的比例 intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); // outputX outputY 是裁剪图片宽高 intent.putExtra("outputX", 100); intent.putExtra("outputY", 100); intent.putExtra("outputFormat", Bitmap.CompressFormat.PNG.toString()); intent.putExtra("noFaceDetection", true); intent.putExtra("return-data", true); startActivityForResult(intent, REQUE_CODE_CROP); }
客户端通过开启线程建立socket连接完成注册功能,在这里完成注册后关闭该socket,已经不需要了。注册完成后将在服务器端模拟数据库用xml文件保存用户的注册信息。
/** * 注册用户 * @param cropBitmap * @param ip * @param port * @param name * @throws IOException * @throws Exception */ public void registerUser(Context context, Bitmap cropBitmap, String ip, String port, String name) throws IOException { UserService userService = new UserService(context); ByteArrayOutputStream byteoutput = new ByteArrayOutputStream(); cropBitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteoutput); byte datas[] = byteoutput.toByteArray(); DataOutputStream output = null; DataInputStream input = null; Socket socket = null; long rowId = 0; try { User user = new User(ip, port, name, cropBitmap, 1); SocketAddress socAddress = new InetSocketAddress(InetAddress.getByName(ip), Integer.parseInt(port)); socket = new Socket(); socket.connect(socAddress, 3000); output = new DataOutputStream(socket.getOutputStream()); input = new DataInputStream(socket.getInputStream()); String flagLine = ContentFlag.REGOSTER_FLAG + name; output.writeUTF(flagLine); output.write(datas); //读取服务器分配给用户的唯一标识 rowId = Long.valueOf(input.readUTF()); user.setId(rowId); userService.insertUser(user); } catch (IOException e) { throw new IOException("fail connect to the server"); } finally { try { if(byteoutput!= null) byteoutput.close(); if (output != null) output.close(); if (input != null) input.close(); if (socket != null) socket.close(); if (cropBitmap != null) cropBitmap.recycle(); } catch (IOException e) { e.printStackTrace(); } } }
注册页面效果图:
完整资源代码下载地址:http://download.csdn.net/detail/jiangliloveyou/6457969