package com.lqm.home.activity;
import android.Manifest;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.SystemClock;
import android.support.v4.view.ViewPager;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.Toolbar;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.Chronometer;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import com.lqm.home.R;
import com.lqm.home.adapter.FuncPagerAdapter;
import com.lqm.home.adapter.SessionAdapter;
import com.lqm.home.factory.ThreadPoolFactory;
import com.lqm.home.fragment.BaseFragment;
import com.lqm.home.fragment.Func1Fragment;
import com.lqm.home.model.Contact;
import com.lqm.home.nimsdk.NimHistorySDK;
import com.lqm.home.nimsdk.NimMessageSDK;
import com.lqm.home.nimsdk.NimTeamSDK;
import com.lqm.home.nimsdk.custom.StickerAttachment;
import com.lqm.home.nimsdk.helper.SendImageHelper;
import com.lqm.home.utils.T;
import com.lqm.home.utilslqr.KeyBoardUtils;
import com.lqm.home.utilslqr.LogUtils;
import com.lqm.home.utilslqr.UIUtils;
import com.lqm.home.widget.DotView;
import com.lqm.home.widget.LQRRecordProgress;
import com.lqr.emoji.EmotionKeyboard;
import com.lqr.emoji.EmotionLayout;
import com.lqr.emoji.IEmotionSelectedListener;
import com.lqr.recyclerview.LQRRecyclerView;
import com.lqr.videorecordview.LQRVideoRecordView;
import com.lzy.imagepicker.ImagePicker;
import com.lzy.imagepicker.bean.ImageItem;
import com.lzy.imagepicker.ui.ImagePreviewActivity;
import com.netease.nimlib.sdk.Observer;
import com.netease.nimlib.sdk.RequestCallback;
import com.netease.nimlib.sdk.RequestCallbackWrapper;
import com.netease.nimlib.sdk.ResponseCode;
import com.netease.nimlib.sdk.media.record.AudioRecorder;
import com.netease.nimlib.sdk.media.record.IAudioRecordCallback;
import com.netease.nimlib.sdk.media.record.RecordType;
import com.netease.nimlib.sdk.msg.MessageBuilder;
import com.netease.nimlib.sdk.msg.constant.SessionTypeEnum;
import com.netease.nimlib.sdk.msg.model.AttachmentProgress;
import com.netease.nimlib.sdk.msg.model.IMMessage;
import com.netease.nimlib.sdk.msg.model.QueryDirectionEnum;
import com.netease.nimlib.sdk.team.model.Team;
import com.netease.nimlib.sdk.team.model.TeamMember;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
import butterknife.OnClick;
import butterknife.OnTouch;
import cn.bingoogolapple.refreshlayout.BGANormalRefreshViewHolder;
import cn.bingoogolapple.refreshlayout.BGARefreshLayout;
import cn.bingoogolapple.refreshlayout.BGARefreshViewHolder;
import kr.co.namee.permissiongen.PermissionFail;
import kr.co.namee.permissiongen.PermissionGen;
import kr.co.namee.permissiongen.PermissionSuccess;
/**
* @创建者 CSDN_LQR
* @描述 聊天界面
* <p>
* 界面加载时将从本地获取历史消息,下拉加载 时优先从本地获取,从服务器拉取历史消息次之
*/
public class SessionActivity extends BaseActivity implements
BGARefreshLayout.BGARefreshLayoutDelegate,
IAudioRecordCallback, LQRVideoRecordView.OnRecordStausChangeListener {
public static final int IMAGE_PICKER = 100;
public static final String SESSION_ACCOUNT = "account";
public static final String SESSION_TYPE = "type";
//当前会话信息
public String mSessionId;//单聊的联系人的id,群聊是群id
private Contact mContact;
private Team mTeam;
public SessionTypeEnum mSessionType = SessionTypeEnum.P2P;
//消息列表及监听
private Observer<IMMessage> mMsgStatusObserver;
private Observer<List<IMMessage>> mIncomingMessageObserver;
private Observer<AttachmentProgress> mAttachmentProgressObserver;
private List<IMMessage> mMessages = new ArrayList<>();
private SessionAdapter mAdapter;
private Runnable mCvMessageScrollToBottomTask = new Runnable() {
@Override
public void run() {
mCvMessage.moveToPosition(mMessages.size() - 1);
}
};
//获取历史消息
private IMMessage mAnchor;
private QueryDirectionEnum mDirection = QueryDirectionEnum.QUERY_OLD;//查询以前的消息
private static final int LOAD_MESSAGE_COUNT = 20;
private boolean mFirstLoad = true;
private boolean mRemote = false;
//底部控件
private FuncPagerAdapter mBottomFucAdapter;
private List<BaseFragment> mFragments;
private EmotionKeyboard mEmotionKeyboard;
//录音
private AudioRecorder mAudioRecorderHelper;
private boolean mStartRecord;
private boolean mCanclled;
private boolean mTouched;
@Bind(R.id.toolbar)
Toolbar mToolbar;
@Bind(R.id.refreshLayout)
BGARefreshLayout mRefreshLayout;
@Bind(R.id.cvMessage)
LQRRecyclerView mCvMessage;
@Bind(R.id.llButtomFunc)
LinearLayout mLlButtomFunc;
@Bind(R.id.ivAudio)
ImageView mIvAudio;
@Bind(R.id.etContent)
EditText mEtContent;
@Bind(R.id.btnAudio)
Button mBtnAudio;
@Bind(R.id.ivEmo)
ImageView mIvEmo;
@Bind(R.id.ivAdd)
ImageView mIvAdd;
@Bind(R.id.btnSend)
Button mBtnSend;
@Bind(R.id.flBottom)
FrameLayout mFlBottom;
@Bind(R.id.emotionLayout)
EmotionLayout mEmotionLayout;
@Bind(R.id.vpFunc)
ViewPager mVpFunc;
@Bind(R.id.dv)
DotView mDv;
@Bind(R.id.flPlayAudio)
FrameLayout mFlPlayAudio;
@Bind(R.id.cTimer)
Chronometer mCTimer;
@Bind(R.id.tvTimerTip)
TextView mTvTimerTip;
@Bind(R.id.llPlayVideo)
LinearLayout mLlPlayVideo;
@Bind(R.id.vrvVideo)
LQRVideoRecordView mVrvVideo;
@Bind(R.id.tvTipOne)
TextView mTvTipOne;
@Bind(R.id.tvTipTwo)
TextView mTvTipTwo;
@Bind(R.id.rp)
LQRRecordProgress mRp;
@Bind(R.id.btnVideo)
Button mBtnVideo;
private Observer<TeamMember> memberRemoveObserver;
private Observer<List<TeamMember>> memberUpdateObserver;
@OnTouch(R.id.cvMessage)
public boolean cvTouch() {
if (mEtContent.hasFocus()) {
closeKeyBoardAndLoseFocus();
return true;
} else if (mFlBottom.getVisibility() == View.VISIBLE) {
mFlBottom.setVisibility(View.GONE);
closeKeyBoardAndLoseFocus();
return true;
}
return false;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
initView();
initData();
initListener();
}
@OnClick({R.id.ivAudio, R.id.btnSend})
public void click(View view) {
switch (view.getId()) {
case R.id.ivAudio:
toggleAudioButtonVisibility();
break;
case R.id.btnSend:
sendTextMsg();
break;
}
}
public void init() {
Intent intent = getIntent();
SessionTypeEnum sessionType = (SessionTypeEnum) intent.getSerializableExtra(SESSION_TYPE);
if (sessionType != null) {
mSessionType = sessionType;
}
mSessionId = intent.getStringExtra(SESSION_ACCOUNT);
registerAllObserver();
requestPermission();
}
public void initView() {
setContentView(R.layout.activity_session);
没有合适的资源?快使用搜索试试~ 我知道了~
Android 社交App+java web后台整套源代码
共734个文件
java:254个
xml:206个
png:149个
3星 · 超过75%的资源 需积分: 50 370 下载量 113 浏览量
2018-03-07
21:31:56
上传
评论 61
收藏 41.83MB ZIP 举报
温馨提示
Android studio 项目 和 MyEclipse 项目 ,整套完整的源代码(包括数据库结构文件),可以直接跑通,非常适合个人学习。
资源推荐
资源详情
资源评论
收起资源包目录
Android 社交App+java web后台整套源代码 (734个子文件)
SMSSDK-2.1.3.aar 125KB
home.apk 10.14MB
gradlew.bat 2KB
.classpath 2KB
org.eclipse.wst.common.component 565B
org.eclipse.wst.jsdt.ui.superType.container 49B
.gitignore 127B
.gitignore 26B
.gitignore 8B
build.gradle 6KB
build.gradle 606B
settings.gradle 16B
gradlew 5KB
index.html 806B
baidumapapi_map_v4_3_1.jar 1.62MB
aspectjweaver-1.6.11.jar 1.61MB
ehcache-core-2.6.5.jar 1.28MB
jackson-databind-2.5.0.jar 1.08MB
spring-context-4.3.1.RELEASE.jar 1.08MB
spring-core-4.3.1.RELEASE.jar 1.06MB
spring-webmvc-4.3.1.RELEASE.jar 892KB
spring-web-4.3.1.RELEASE.jar 792KB
jackson-mapper-asl-1.9.13.jar 762KB
spring-beans-4.3.1.RELEASE.jar 737KB
joda-time-2.5-sources.jar 731KB
httpclient-4.4.0.jar 702KB
mybatis-3.2.7.jar 696KB
javassist-3.17.1-GA.jar 695KB
mysql-connector-java-5.1.7-bin.jar 693KB
log4j-core-2.0-rc1.jar 686KB
spring-test-4.3.1.RELEASE.jar 578KB
joda-time-2.5.jar 574KB
commons-collections-3.2.1.jar 562KB
Xg_sdk_v3.1_20170417_0946.jar 483KB
log4j-1.2.17.jar 478KB
hibernate-validator-4.3.0.Final.jar 465KB
spring-orm-4.3.1.RELEASE.jar 464KB
spring-jdbc-4.3.1.RELEASE.jar 416KB
jstl-1.2.jar 405KB
spring-messaging-4.3.1.RELEASE.jar 372KB
spring-aop-4.3.1.RELEASE.jar 371KB
httpcore-4.4.0.jar 314KB
spring-jms-4.3.1.RELEASE.jar 282KB
cglib-2.2.2.jar 280KB
spring-tx-4.3.1.RELEASE.jar 261KB
spring-expression-4.3.1.RELEASE.jar 258KB
commons-lang-2.4.jar 256KB
locSDK_6.13.jar 248KB
junit-4.9.jar 243KB
jackson-core-asl-1.9.13.jar 227KB
jackson-core-2.5.0.jar 224KB
servlet-api.jar 193KB
MobTools-2016.1201.1839.jar 187KB
pinyin4j-2.5.0.jar 184KB
commons-beanutils-1.7.0.jar 184KB
spring-context-support-4.3.1.RELEASE.jar 183KB
commons-io-2.4.jar 181KB
spring-webmvc-portlet-4.3.1.RELEASE.jar 173KB
json-lib-2.2.3-jdk13.jar 145KB
commons-dbcp-1.2.2.jar 119KB
log4j-api-2.0-rc1.jar 113KB
baidumapapi_base_v4_3_1.jar 107KB
jsp-api.jar 86KB
ezmorph-1.0.6.jar 84KB
spring-oxm-4.3.1.RELEASE.jar 83KB
MobCommons-2016.1201.1839.jar 63KB
commons-pool-1.3.jar 61KB
commons-logging-1.1.1.jar 59KB
jboss-logging-3.1.0.CR2.jar 59KB
commons-fileupload-1.2.2.jar 58KB
spring-aspects-4.3.1.RELEASE.jar 57KB
mid-core-sdk-3.7.2.jar 56KB
gradle-wrapper.jar 52KB
mybatis-spring-1.2.2.jar 48KB
validation-api-1.0.0.GA.jar 46KB
asm-3.3.1.jar 43KB
baidumapapi_util_v4_3_1.jar 40KB
jackson-annotations-2.5.0.jar 39KB
wup-1.0.0.E-SNAPSHOT.jar 26KB
httpmime-4.2.0.jar 26KB
slf4j-api-1.7.5.jar 25KB
spring-instrument-tomcat-4.3.1.RELEASE.jar 10KB
mybatis-ehcache-1.0.2.jar 10KB
slf4j-log4j12-1.7.5.jar 9KB
spring-instrument-4.3.1.RELEASE.jar 7KB
aopalliance-1.0.jar 4KB
jg_filter_sdk_1.1.jar 3KB
SessionActivity.java 43KB
UserExample.java 42KB
SessionAdapter.java 31KB
NimTeamSDK.java 30KB
PostExample.java 29KB
VillageExample.java 28KB
NewExample.java 26KB
CommentExample.java 25KB
TeamCheatInfoActivity.java 25KB
TalkNode.java 20KB
PostDetailActivity.java 19KB
UpdateinfoExample.java 19KB
FeedbackExample.java 19KB
共 734 条
- 1
- 2
- 3
- 4
- 5
- 6
- 8
OS_X
- 粉丝: 5
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页