基于android开发的聊天室 ChatRoom 1.0 :(三) 处理用户注册

在本应用当中添加了一个用户注册的功能,用户注册完之后,在服务器端将保存用户的注册的信息,当下一次再进入应用时将自动尝试与服务器的连接,类似于我们常用的聊天工具,具体的注册方式为:填写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();
			}
		}
	}


注册页面效果图:

基于android开发的聊天室 ChatRoom 1.0 :(三) 处理用户注册_第1张图片

 

完整资源代码下载地址:http://download.csdn.net/detail/jiangliloveyou/6457969

你可能感兴趣的:(android,socket,语音,聊天室,表情)