/** * Copyright (C) 2013-2014 EaseMob Technologies. All rights reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.kaixin.android.async; import java.io.File; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.net.Uri; import android.os.AsyncTask; import android.view.View; import android.widget.ImageView; import com.easemob.chat.EMChatManager; import com.easemob.chat.EMMessage; import com.easemob.chat.EMMessage.ChatType; import com.easemob.util.ImageUtils; import com.kaixin.android.R; import com.kaixin.android.activity.ShowBigImage; import com.kaixin.android.filter.ImageCache; public class LoadImageTask extends AsyncTask<Object, Void, Bitmap> { private ImageView iv = null; String localFullSizePath = null; String thumbnailPath = null; String remotePath = null; EMMessage message = null; ChatType chatType; Activity activity; @Override protected Bitmap doInBackground(Object... args) { thumbnailPath = (String)args[0]; localFullSizePath = (String)args[1]; remotePath = (String)args[2]; chatType = (ChatType) args[3]; iv = (ImageView)args[4]; // if(args[2] != null) { activity = (Activity) args[5]; // } message = (EMMessage) args[6]; File file = new File(thumbnailPath); if(file.exists()) return ImageUtils.decodeScaleImage(thumbnailPath, 120, 120); else return ImageUtils.decodeScaleImage(localFullSizePath, 120, 120); } protected void onPostExecute(Bitmap image) { if (image != null) { iv.setImageBitmap(image); ImageCache.getInstance().put(thumbnailPath, image); iv.setClickable(true); iv.setTag(thumbnailPath); iv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(thumbnailPath != null){ Intent intent = new Intent(activity, ShowBigImage.class); File file = new File(localFullSizePath); if(file.exists()) { Uri uri = Uri.fromFile(file); intent.putExtra("uri", uri); } else { //The local full size pic does not exist yet. ShowBigImage needs to download it from the server first intent.putExtra("remotepath", remotePath); } if (message.getChatType() != ChatType.Chat) { // delete the image from server after download } if(message != null && message.direct == EMMessage.Direct.RECEIVE && !message.isAcked){ message.isAcked = true; try { //看了大图后发个已读回执给对方 EMChatManager.getInstance().ackMessageRead(message.getFrom(), message.getMsgId()); } catch (Exception e) { e.printStackTrace(); } } activity.startActivity(intent); } } }); } else { iv.setImageResource(R.drawable.default_image); } } @Override protected void onPreExecute() { super.onPreExecute(); } }