即时消息android应用程序

时间:2014-03-18 18:19:37

标签: java android instant

我不知道这个问题有多具体,但我会承担风险。

目前我正在学习Java和Android,我对如何制作即时消息应用感到好奇。
我想有一个与服务器的连接。但除此之外,我什么都不知道。

我的问题是我自己创建一种技术/编程语言/主题需要知道什么?应用程序具有与whatsapp类似的功能。我认为这是php但我不知道)。

我真的很感激一个广泛的答案,它会向我解释,我会很清楚我要做的事情&学习与学习知道做一个。谢谢!

1 个答案:

答案 0 :(得分:0)

简单的Android即时消息应用程序 很简单,因为它不是最终用户的一种应用程序。

这是一个在Android上运行的简单IM应用程序,应用程序向服务器发出http请求,在php和mysql中实现,进行身份验证,注册以及获取其他朋友的状态和数据,然后它与其他应用程序进行通信其他设备通过socket接口。

特性 用户注册 用户认证 按用户名添加新朋友 批准一位朋友 与列表中的朋友联系(当然) 显示在线和离线用户 运行后台服务,以便在应用程序关闭时获取消息。 收到新消息时使用通知区域。 退出应用程序(杀死后台服务) 如何让它运行 有一个名称为Server的文件夹,将Server文件夹下的所有文件复制到Web服务器目录中的文件夹,例如http://192.168.7.5/android_im/可以访问的android_im(192.168.7.5是计算机的IP地址。运行apache和mysql,使用本地网络IP地址而不是使用localhost或127.0.0.1)打开index.php并输入数据库连接参数,如主机,用户名,密码等。在index.php的顶部写入error_reporting(0)创建mysql数据库中的表

CREATE TABLE  `friends` (
  `Id` int(10) unsigned NOT NULL auto_increment,
  `providerId` int(10) unsigned NOT NULL default '0',
  `requestId` int(10) unsigned NOT NULL default '0',
  `status` binary(1) NOT NULL default '0',
  PRIMARY KEY  (`Id`),
  UNIQUE KEY `Index_3` (`providerId`,`requestId`),
  KEY `Index_2` (`providerId`,`requestId`,`status`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='providerId is the Id of the users who wish to be friend with';

CREATE TABLE  `users` (
  `Id` int(10) unsigned NOT NULL auto_increment,
  `username` varchar(45) NOT NULL default '',
  `password` varchar(32) NOT NULL default '',
  `email` varchar(45) NOT NULL default '',
  `date` datetime NOT NULL default '0000-00-00 00:00:00',
  `status` tinyint(3) unsigned NOT NULL default '0',
  `authenticationTime` datetime NOT NULL default '0000-00-00 00:00:00',
  `userKey` varchar(32) NOT NULL default '',
  `IP` varchar(45) NOT NULL default '',
  `port` int(10) unsigned NOT NULL default '0',
  PRIMARY KEY  (`Id`),
  UNIQUE KEY `Index_2` (`username`),
  KEY `Index_3` (`authenticationTime`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

在socketOperator中设置AUTHENTICATION_SERVER_ADDRESS,它必须是服务器文件夹所在的地址,例如它是http://192.168.7.5/android_im/(不要使用localhost)

然后使用ADT插件在Eclipse中运行您的应用程序。

可以学习如何安装Android SDK和ADT插件

每个应用程序都会打开一个随机端口(超过10000个)进行监听,需要端口转发才能与应用程序进行通信。可以了解应用程序在“用户”表中打开的端口号是什么。

如果要在同一台计算机上运行应用程序,请删除imService中sendmessage函数中//IP=10.0.2.2行的斜杠。然后你需要端口转发。让我举个例子,例如user1登录模拟器-5554,端口号为12345,user2登录模拟器-5556,端口号为54321

然后发出这些命令

adb -s emulator-5554 forward tcp:12345 tcp:12345

adb -s emulator-5556 forward tcp:54321 tcp:54321