项目下载地址:https://github.com/townkoim/Andorid_Goty_Im_
说明:项目为一个商业项目、有在各大市场上线.里面包含了,第三方登录,分享,推送、即时IM聊天功能
android加入即时聊天的功能.
在创建成功之后..看一下应用,应用概况这一栏目,会显示你注册之后的APPKEY等相关信息,在IM用户选项,会显示,你已经注册过的IM的用户
<uses-permission android:name ="android.permission.INTERNET" /> <uses-permission android:name= "android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name ="android.permission.RECORD_AUDIO" /> <uses-permission android:name= "android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name ="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name= "android.permission.CHANGE_NETWORK_STATE" /> <uses-permission android:name ="android.permission.READ_PHONE_STATE" /> <uses-permission android:name ="android.permission.READ_CONTACTS" />
//使用您在亲加管理平台申请到的appkey初始化API,appkey如果为空会返回参数错误。 //context为android上下文环境 //下文提到的gotyeApi即为GotyeAPI,后续不再赘述。 GotyeAPI gotyeApi = GotyeAPI. getInstance(); gotyeApi.init(MainActivity. this, "28683ef9-6295-4939-895f-96fbffa81c25" );注意:在application当中,应该将gotyApi设一个get方法或者用static修饰、以便全局都可以调用,如果需要开启语音识别功能,要添加这段代码-- apiist.initIflySpeechRecognition();
gotyeApi.addListener( delegate); //因为在注册的时候没有假如密码的参数,所以这里登录的时候密码必须为Null,不能为空字符串,如需要密码,在之前注册的接口的用户名后面加上&&userpwd=密码 gotyeApi.login( "13798477145", null); GotyeDelegate delegate = new GotyeDelegate(){ public void onLogin( int code, com.gotye.api.GotyeUser user) { }; };
创建图片消息:
String imagePath = “/mnt/sdcard /icon.jpg”; ///< 设定原始图片路径,目前仅支持jpg
GotyeMessage message = GotyeMessage.createImageMessage(receiver, imagePath);
自定义数据消息 API支持发送用户自定义数据:
byte[] userdata = “1234567890”.getBytes(); ///< 自定义数据内容不能超过4KB
GotyeMessage message = GotyeMessage.createUserDataMessage(receiver,userdata,len);
或者发送指定路径文件里的数据内容:
String path = “/mnt/sdcard /userdata.txt”; ///<文件内容不能超过4KB
GotyeMessage message = GotyeMessage.createUserDataMessage(receiver,path);
开始录音:在调用开始录音的时候,会触发GotyeDelegate类的onStartTalk(int code, boolean isrealtime, int targetType, GotyeChatTarget target)的回调方法,在这里我们记下当前的时间
gotyeApi.startTalk(user,WhineMode.Default,maxDuration); ///< 单聊api,user为聊天对象,WhineMode为语音变声参数,maxDuration为时长(单位ms)
gotyeApi.startTalk(group,WhineMode.Default,maxDuration); ///< 群聊语音消息
gotyeApi.startTalk(room,WhineMode.Default,realtime,maxDuration);
///<realtime如果为true,则开始实时语音,聊天室所有用户会收到onRealPlayStart的回调
gotyeApi.stopTalk();
gotyeApi.sendMessage(message);///< 不调用发送消息方法消息是不会发送给对方的。但是该条语音消息会保存在本地。
下载消息:
gotyeApi.downloadMediaInMessage(message)///< 只有图片消息和语音消息需要下载
注意: 新收到的消息如果是图片或语音类型,图片和语音文件并不随消息一起到达接收方,需要手动调用该方法下载。
回调到GotyeDelegate 中的onDownloadMessage
void onDownloadMediaInMessage(int code, GotyeMessage message);
回调原型: void onDownloadMediaInMessage(int code, GotyeMessage message); /// <下载的消息,下载好的媒体文件在message.media.path或pathEx中