package com.fred.fulired.controller;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.drawable.AnimationDrawable;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.net.Uri;
import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.text.style.ForegroundColorSpan;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LinearInterpolator;
import android.webkit.MimeTypeMap;
import android.widget.ImageView;
import android.widget.Toast;
import com.allen.library.observer.CommonObserver;
import com.fred.fulired.activity.red.activity.RedDetailsActivity;
import com.fred.fulired.application.JGApplication;
import com.fred.fulired.constant.CommonInfo;
import com.fred.fulired.nets.login.WechatUserInfoBean;
import com.fred.fulired.nets.red.ReqRedApi;
import com.fred.fulired.nets.red.RobBean;
import com.fred.fulired.nets.red.RobData;
import com.fred.fulired.pickerimage.utils.BitmapDecoder;
import com.fred.fulired.utils.AmountUtil;
import com.fred.fulired.utils.DialogCreator;
import com.fred.fulired.utils.FileHelper;
import com.fred.fulired.utils.FileUtils;
import com.fred.fulired.utils.HandleResponseCode;
import com.fred.fulired.utils.IntentUtil;
import com.fred.fulired.utils.LogUtil;
import com.fred.fulired.utils.RegexUtils;
import com.fred.fulired.utils.SharePreferenceManager;
import com.fred.fulired.utils.SimpleCommonUtils;
import com.fred.fulired.utils.ToastUtil;
import com.fred.fulired.view.dialog.RedEnvelopesDialog;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.squareup.picasso.Picasso;
import java.io.File;
import java.io.FileDescriptor;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Queue;
import cn.jpush.im.android.api.JMessageClient;
import cn.jpush.im.android.api.callback.DownloadCompletionCallback;
import cn.jpush.im.android.api.callback.GetAvatarBitmapCallback;
import cn.jpush.im.android.api.callback.GetUserInfoCallback;
import cn.jpush.im.android.api.callback.ProgressUpdateCallback;
import cn.jpush.im.android.api.content.CustomContent;
import cn.jpush.im.android.api.content.EventNotificationContent;
import cn.jpush.im.android.api.content.FileContent;
import cn.jpush.im.android.api.content.ImageContent;
import cn.jpush.im.android.api.content.LocationContent;
import cn.jpush.im.android.api.content.PromptContent;
import cn.jpush.im.android.api.content.TextContent;
import cn.jpush.im.android.api.content.VoiceContent;
import cn.jpush.im.android.api.enums.ContentType;
import cn.jpush.im.android.api.enums.ConversationType;
import cn.jpush.im.android.api.enums.MessageDirect;
import cn.jpush.im.android.api.model.ChatRoomInfo;
import cn.jpush.im.android.api.model.Conversation;
import cn.jpush.im.android.api.model.GroupInfo;
import cn.jpush.im.android.api.model.Message;
import cn.jpush.im.android.api.model.UserInfo;
import cn.jpush.im.android.api.options.MessageSendingOptions;
import cn.jpush.im.api.BasicCallback;
import com.fred.fulired.R;
import com.fred.fulired.activity.BrowserViewPagerActivity;
import com.fred.fulired.activity.DownLoadActivity;
import com.fred.fulired.activity.FriendInfoActivity;
import com.fred.fulired.activity.GroupNotFriendActivity;
import com.fred.fulired.adapter.ChattingListAdapter;
import com.fred.fulired.adapter.ChattingListAdapter.ViewHolder;
import com.fred.fulired.location.activity.MapPickerActivity;
public class ChatItemController {
private ChattingListAdapter mAdapter;
private Activity mContext;
private Conversation mConv;
private List<Message> mMsgList;
private ChattingListAdapter.ContentLongClickListener mLongClickListener;
private float mDensity;
public Animation mSendingAnim;
private boolean mSetData = false;
private final MediaPlayer mp = new MediaPlayer();
private AnimationDrawable mVoiceAnimation;
private int mPosition = -1;// 和mSetData一起组成判断播放哪条录音的依据
private List<Integer> mIndexList = new ArrayList<Integer>();//语音索引
private FileInputStream mFIS;
private FileDescriptor mFD;
private boolean autoPlay = false;
private int nextPlayPosition = 0;
private boolean mIsEarPhoneOn;
private int mSendMsgId;
private Queue<Message> mMsgQueue = new LinkedList<Message>();
private UserInfo mUserInfo;
private Map<Integer, UserInfo> mUserInfoMap = new HashMap<>();
public Dialog loadingDialog;
private ForegroundColorSpan redSpan;
public ChatItemController(ChattingListAdapter adapter, Activity context, Conversation conv, List<Message> msgList,
float density, ChattingListAdapter.ContentLongClickListener longClickListener) {
this.mAdapter = adapter;
this.mContext = context;
this.mConv = conv;
if (mConv.getType() == ConversationType.single) {
mUserInfo = (UserInfo) mConv.getTargetInfo();
}
this.mMsgList = msgList;
this.mLongClickListener = longClickListener;
this.mDensity = density;
mSendingAnim = AnimationUtils.loadAnimation(mContext, R.anim.jmui_rotate);
LinearInterpolator lin = new LinearInterpolator();
mSendingAnim.setInterpolator(lin);
AudioManager audioManager = (AudioManager) mContext
.getSystemService(Context.AUDIO_SERVICE);
audioManager.setMode(AudioManager.MODE_NORMAL);
if (audioManager.isSpeakerphoneOn()) {
audioManager.setSpeakerphoneOn(true);
} else {
audioManager.setSpeakerphoneOn(false);
}
mp.setAudioStreamType(AudioManager.STREAM_RING);
mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {
@Override
public boolean onError(MediaPlayer mp, int what, int extra) {
return false;
}
});
loadingDialog = DialogCreator.createLoadingDialog(mContext, "正在加载");
redSpan = new ForegroundColorSpan(mContext.getResources().getColor(R.color.golden_red));
}
//名片
public void handleBusinessCard(final Message msg, final ViewHolder holder, int position) {
final TextContent[] textContent = {(TextContent) msg.getContent()};
final String[] mUserName = {textContent[0].getStringExtra("userName")};
final String mAppKey = textContent[0].getStringExtra("appKey");
holder.ll_businessCard.setTag(position);
int key = (mUserName[0] + mAppKey).hashCode();
UserInfo userInfo = mUserInfoMap.get(key);
if (userInfo != null) {
String name = userInfo.getNickname();
//如果没有昵称,名片上面的位置显示用户名
//如果有昵称,上面显示昵称,下面显示用户名
if (TextUtils.isEmpty(name)) {
holder.tv_userName.setText("");
holder.tv_nickUser.setText(mUserName[0]);
} else {
holder.tv_nickUser.setText(name);
holder.tv_userName.setText("富利红号:" + mUserName[0]);
}
if (userInfo.getAvatarFile() != null) {
holder.business_head.setImageBitmap(Bit
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Android即时通讯项目源码 (1611个子文件)
gradlew.bat 2KB
6.gif 524KB
9.gif 349KB
.gitignore 480B
.gitignore 120B
.gitignore 20B
.gitignore 14B
.gitignore 7B
.gitignore 7B
build.gradle 5KB
gradle-mvn-push.gradle 4KB
build.gradle 699B
build.gradle 489B
build.gradle 314B
build.gradle 272B
build.gradle 260B
settings.gradle 96B
gradlew 5KB
BaiduLBS_Android.jar 2.22MB
core-3.2.1.jar 532KB
httpclient-4.2.5.jar 423KB
httpcore-4.2.4.jar 222KB
pinyin4j-2.5.0.jar 184KB
universal-image-loader-1.9.5.jar 158KB
picasso-2.5.2.jar 118KB
gradle-wrapper.jar 52KB
sun.misc.BASE64Decoder.jar 7KB
ChatItemController.java 85KB
ChatActivity.java 75KB
ViewDragHelper.java 61KB
SwipeLayout.java 47KB
SwipeLayoutConv.java 46KB
StickyGridHeadersGridView.java 44KB
ChatDetailController.java 42KB
ChattingListAdapter.java 40KB
StickyListHeadersListView.java 40KB
BrowserViewPagerActivity.java 36KB
SearchContactsActivity.java 34KB
ConversationListAdapter.java 33KB
HanziToPinyin.java 30KB
CropImageView.java 28KB
WheelView.java 26KB
PhotoViewAttacher.java 26KB
DialogCreator.java 25KB
SelectAddressDialog.java 24KB
ProgressWheel.java 23KB
WheelView.java 23KB
RecordVoiceButton.java 23KB
SelectableRoundedImageView.java 22KB
StickyListAdapter.java 22KB
PinYin.java 20KB
SwipeBackLayout.java 20KB
MapPickerActivity.java 20KB
ContactsFragment.java 20KB
BaseZoomableImageView.java 20KB
SystemBarTintManager.java 20KB
MembersInChatActivity.java 19KB
CharacterParser.java 19KB
TipView.java 19KB
SearchMoreFriendsActivity.java 18KB
CameraManager.java 17KB
RichEditText.java 17KB
SimpleCommonUtils.java 16KB
CameraActivity.java 15KB
SearchMoreGroupActivity.java 15KB
FriendRecommendAdapter.java 15KB
ImageGridActivity.java 15KB
ImageUtil.java 15KB
SearchFriendBusinessActivity.java 15KB
PickerAlbumPreviewActivity.java 15KB
FileUtils.java 15KB
PersonalActivity.java 15KB
StickyGridHeadersBaseAdapterWrapper.java 14KB
SendFileController.java 14KB
SearchAtMemberActivity.java 14KB
AllMembersAdapter.java 14KB
GroupRedActivity.java 13KB
WXEntryActivity.java 13KB
SearchGroupActivity.java 13KB
ConversationListFragment.java 13KB
BindPhoneController.java 13KB
XhsEmoticonsKeyBoard.java 13KB
LoginActivity.java 12KB
ChatDetailActivity.java 12KB
JGApplication.java 12KB
BitmapLoader.java 12KB
DropDownListView.java 12KB
SelectCreateGroupTypeActivity.java 12KB
TimeFormat.java 11KB
EasyAlertDialog.java 11KB
FriendSettingActivity.java 11KB
FriendInfoActivity.java 11KB
PickImageActivity.java 11KB
CameraProgressBar.java 10KB
FeedbackActivity.java 10KB
FinishRegisterActivity.java 10KB
Util.java 10KB
ImagePicker.java 10KB
RedEnvelopesDialog.java 10KB
FrameAnimation.java 10KB
共 1611 条
- 1
- 2
- 3
- 4
- 5
- 6
- 17
资源评论
朱剑的博客
- 粉丝: 13
- 资源: 57
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功