Search in sources :

Example 1 with FileMessageBody

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);
    }
}
Also used : VoiceMessageBody(com.easemob.chat.VoiceMessageBody) EMCallBack(com.easemob.EMCallBack) AnimationDrawable(android.graphics.drawable.AnimationDrawable) NormalFileMessageBody(com.easemob.chat.NormalFileMessageBody) FileMessageBody(com.easemob.chat.FileMessageBody) Intent(android.content.Intent) ContextMenu(com.juns.wechat.chat.ContextMenu) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) SuppressLint(android.annotation.SuppressLint) OnLongClickListener(android.view.View.OnLongClickListener)

Example 2 with FileMessageBody

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 + "%");
                    }
                });
            }
        }
    });
}
Also used : EMCallBack(com.easemob.EMCallBack) NormalFileMessageBody(com.easemob.chat.NormalFileMessageBody) FileMessageBody(com.easemob.chat.FileMessageBody) SuppressLint(android.annotation.SuppressLint)

Example 3 with FileMessageBody

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();
}
Also used : CloudOperationCallback(com.easemob.cloud.CloudOperationCallback) HashMap(java.util.HashMap) HttpFileManager(com.easemob.cloud.HttpFileManager) FileMessageBody(com.easemob.chat.FileMessageBody) File(java.io.File)

Aggregations

FileMessageBody (com.easemob.chat.FileMessageBody)3 SuppressLint (android.annotation.SuppressLint)2 EMCallBack (com.easemob.EMCallBack)2 NormalFileMessageBody (com.easemob.chat.NormalFileMessageBody)2 Intent (android.content.Intent)1 AnimationDrawable (android.graphics.drawable.AnimationDrawable)1 View (android.view.View)1 OnLongClickListener (android.view.View.OnLongClickListener)1 ImageView (android.widget.ImageView)1 TextView (android.widget.TextView)1 VoiceMessageBody (com.easemob.chat.VoiceMessageBody)1 CloudOperationCallback (com.easemob.cloud.CloudOperationCallback)1 HttpFileManager (com.easemob.cloud.HttpFileManager)1 ContextMenu (com.juns.wechat.chat.ContextMenu)1 File (java.io.File)1 HashMap (java.util.HashMap)1