use of com.easemob.chat.FileMessageBody in project wechat by motianhuo.
the class MessageAdapter method handleVoiceMessage.
/**
* 语音消息
*
* @param message
* @param holder
* @param position
* @param convertView
*/
private void handleVoiceMessage(final EMMessage message, final ViewHolder holder, final int position, View convertView) {
VoiceMessageBody voiceBody = (VoiceMessageBody) message.getBody();
holder.tv.setText(voiceBody.getLength() + "\"");
holder.iv.setOnClickListener(new VoicePlayClickListener(message, holder.iv, holder.iv_read_status, this, activity, username));
holder.iv.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
activity.startActivityForResult((new Intent(activity, ContextMenu.class)).putExtra("position", position).putExtra("type", EMMessage.Type.VOICE.ordinal()), ChatActivity.REQUEST_CODE_CONTEXT_MENU);
return true;
}
});
if (((ChatActivity) activity).playMsgId != null && ((ChatActivity) activity).playMsgId.equals(message.getMsgId()) && VoicePlayClickListener.isPlaying) {
AnimationDrawable voiceAnimation;
if (message.direct == EMMessage.Direct.RECEIVE) {
holder.iv.setImageResource(R.anim.voice_from_icon);
} else {
holder.iv.setImageResource(R.anim.voice_to_icon);
}
voiceAnimation = (AnimationDrawable) holder.iv.getDrawable();
voiceAnimation.start();
} else {
if (message.direct == EMMessage.Direct.RECEIVE) {
holder.iv.setImageResource(R.drawable.chatfrom_voice_playing);
} else {
holder.iv.setImageResource(R.drawable.chatto_voice_playing);
}
}
if (message.direct == EMMessage.Direct.RECEIVE) {
if (message.isListened()) {
// 隐藏语音未听标志
holder.iv_read_status.setVisibility(View.INVISIBLE);
} else {
holder.iv_read_status.setVisibility(View.VISIBLE);
}
System.err.println("it is receive msg");
if (message.status == EMMessage.Status.INPROGRESS) {
holder.pb.setVisibility(View.VISIBLE);
System.err.println("!!!! back receive");
((FileMessageBody) message.getBody()).setDownloadCallback(new EMCallBack() {
@Override
public void onSuccess() {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
holder.pb.setVisibility(View.INVISIBLE);
notifyDataSetChanged();
}
});
}
@Override
public void onProgress(int progress, String status) {
}
@Override
public void onError(int code, String message) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
holder.pb.setVisibility(View.INVISIBLE);
}
});
}
});
} else {
holder.pb.setVisibility(View.INVISIBLE);
}
return;
}
// until here, deal with send voice msg
switch(message.status) {
case SUCCESS:
holder.pb.setVisibility(View.GONE);
holder.staus_iv.setVisibility(View.GONE);
break;
case FAIL:
holder.pb.setVisibility(View.GONE);
holder.staus_iv.setVisibility(View.VISIBLE);
break;
case INPROGRESS:
holder.pb.setVisibility(View.VISIBLE);
holder.staus_iv.setVisibility(View.GONE);
break;
default:
sendMsgInBackground(message, holder);
}
}
use of com.easemob.chat.FileMessageBody in project wechat by motianhuo.
the class MessageAdapter method showDownloadImageProgress.
/*
* chat sdk will automatic download thumbnail image for the image message we
* need to register callback show the download progress
*/
private void showDownloadImageProgress(final EMMessage message, final ViewHolder holder) {
System.err.println("!!! show download image progress");
// final ImageMessageBody msgbody = (ImageMessageBody)
// message.getBody();
final FileMessageBody msgbody = (FileMessageBody) message.getBody();
if (holder.pb != null)
holder.pb.setVisibility(View.VISIBLE);
if (holder.tv != null)
holder.tv.setVisibility(View.VISIBLE);
msgbody.setDownloadCallback(new EMCallBack() {
@Override
public void onSuccess() {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
// message.setBackReceive(false);
if (message.getType() == EMMessage.Type.IMAGE) {
holder.pb.setVisibility(View.GONE);
holder.tv.setVisibility(View.GONE);
}
notifyDataSetChanged();
}
});
}
@Override
public void onError(int code, String message) {
}
@Override
public void onProgress(final int progress, String status) {
if (message.getType() == EMMessage.Type.IMAGE) {
activity.runOnUiThread(new Runnable() {
@Override
public void run() {
holder.tv.setText(progress + "%");
}
});
}
}
});
}
use of com.easemob.chat.FileMessageBody in project wechat by motianhuo.
the class ShowNormalFileActivity method onCreate.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_file);
progressBar = (ProgressBar) findViewById(R.id.progressBar);
final FileMessageBody messageBody = getIntent().getParcelableExtra("msgbody");
file = new File(messageBody.getLocalUrl());
// set head map
final Map<String, String> maps = new HashMap<String, String>();
if (!TextUtils.isEmpty(messageBody.getSecret())) {
maps.put("share-secret", messageBody.getSecret());
}
// 下载文件
new Thread(new Runnable() {
public void run() {
HttpFileManager fileManager = new HttpFileManager(ShowNormalFileActivity.this, EMChatConfig.getInstance().getStorageUrl());
fileManager.downloadFile(messageBody.getRemoteUrl(), messageBody.getLocalUrl(), maps, new CloudOperationCallback() {
@Override
public void onSuccess(String result) {
runOnUiThread(new Runnable() {
public void run() {
FileUtils.openFile(file, ShowNormalFileActivity.this);
finish();
}
});
}
@Override
public void onProgress(final int progress) {
runOnUiThread(new Runnable() {
public void run() {
progressBar.setProgress(progress);
}
});
}
@Override
public void onError(final String msg) {
runOnUiThread(new Runnable() {
public void run() {
if (file != null && file.exists() && file.isFile())
file.delete();
String str4 = getResources().getString(R.string.Failed_to_download_file);
Toast.makeText(ShowNormalFileActivity.this, str4 + msg, Toast.LENGTH_SHORT).show();
finish();
}
});
}
});
}
}).start();
}
Aggregations