Few changes regarding how we store the received images in chat
This commit is contained in:
parent
94176f48ed
commit
cc864fe244
2 changed files with 54 additions and 56 deletions
|
@ -18,8 +18,36 @@ along with this program; if not, write to the Free Software
|
||||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream;
|
||||||
|
import java.io.ByteArrayOutputStream;
|
||||||
|
import java.io.DataOutputStream;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.http.util.ByteArrayBuffer;
|
||||||
|
import org.linphone.compatibility.Compatibility;
|
||||||
|
import org.linphone.core.LinphoneAddress;
|
||||||
|
import org.linphone.core.LinphoneChatMessage;
|
||||||
|
import org.linphone.core.LinphoneChatMessage.StateListener;
|
||||||
|
import org.linphone.core.LinphoneChatRoom;
|
||||||
|
import org.linphone.core.LinphoneCore;
|
||||||
|
import org.linphone.core.LinphoneCoreListenerBase;
|
||||||
|
import org.linphone.mediastream.Log;
|
||||||
|
import org.linphone.ui.AvatarWithShadow;
|
||||||
|
import org.linphone.ui.BubbleChat;
|
||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.content.ContentResolver;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.content.res.Configuration;
|
import android.content.res.Configuration;
|
||||||
|
@ -43,10 +71,10 @@ import android.text.TextWatcher;
|
||||||
import android.view.ContextMenu;
|
import android.view.ContextMenu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
import android.view.View.OnClickListener;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.view.ViewTreeObserver;
|
import android.view.ViewTreeObserver;
|
||||||
import android.view.WindowManager;
|
import android.view.WindowManager;
|
||||||
import android.view.View.OnClickListener;
|
|
||||||
import android.widget.BaseAdapter;
|
import android.widget.BaseAdapter;
|
||||||
import android.widget.EditText;
|
import android.widget.EditText;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
|
@ -57,34 +85,6 @@ import android.widget.RelativeLayout;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
import org.apache.http.util.ByteArrayBuffer;
|
|
||||||
import org.linphone.compatibility.Compatibility;
|
|
||||||
import org.linphone.core.LinphoneAddress;
|
|
||||||
import org.linphone.core.LinphoneChatMessage;
|
|
||||||
import org.linphone.core.LinphoneChatRoom;
|
|
||||||
import org.linphone.core.LinphoneCore;
|
|
||||||
import org.linphone.core.LinphoneCoreListenerBase;
|
|
||||||
import org.linphone.mediastream.Log;
|
|
||||||
import org.linphone.ui.AvatarWithShadow;
|
|
||||||
import org.linphone.ui.BubbleChat;
|
|
||||||
|
|
||||||
import java.io.BufferedInputStream;
|
|
||||||
import java.io.ByteArrayOutputStream;
|
|
||||||
import java.io.DataOutputStream;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.net.URLConnection;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.linphone.core.LinphoneChatMessage.StateListener;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Margaux Clerc
|
* @author Margaux Clerc
|
||||||
*/
|
*/
|
||||||
|
@ -433,7 +433,8 @@ public class ChatActivity extends FragmentActivity implements OnClickListener, S
|
||||||
new Thread(new Runnable() {
|
new Thread(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
final Bitmap bm = ChatActivity.instance().downloadImage(url);
|
ChatActivity.instance();
|
||||||
|
final Bitmap bm = ChatActivity.downloadImage(url);
|
||||||
if (bm != null) {
|
if (bm != null) {
|
||||||
String newFileUrl = saveImage(bm, finalId, getMessageForId(finalId));
|
String newFileUrl = saveImage(bm, finalId, getMessageForId(finalId));
|
||||||
bubble.updateUrl(newFileUrl);
|
bubble.updateUrl(newFileUrl);
|
||||||
|
@ -461,10 +462,21 @@ public class ChatActivity extends FragmentActivity implements OnClickListener, S
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} else { // Show
|
} else { // Show
|
||||||
Bitmap bm = BitmapFactory.decodeFile(url);
|
ContentResolver cr = getContentResolver();
|
||||||
((ImageView) v.findViewById(R.id.image)).setImageBitmap(bm);
|
InputStream in;
|
||||||
v.findViewById(R.id.image).setVisibility(View.VISIBLE);
|
Bitmap bm = null;
|
||||||
v.findViewById(R.id.download).setVisibility(View.GONE);
|
try {
|
||||||
|
in = cr.openInputStream(Uri.parse(url));
|
||||||
|
bm = BitmapFactory.decodeStream(in, null, null);
|
||||||
|
} catch (FileNotFoundException e) {
|
||||||
|
Log.e(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bm != null) {
|
||||||
|
((ImageView) v.findViewById(R.id.image)).setImageBitmap(bm);
|
||||||
|
v.findViewById(R.id.image).setVisibility(View.VISIBLE);
|
||||||
|
v.findViewById(R.id.download).setVisibility(View.GONE);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return bubble;
|
return bubble;
|
||||||
}
|
}
|
||||||
|
@ -503,7 +515,6 @@ public class ChatActivity extends FragmentActivity implements OnClickListener, S
|
||||||
// menu.add(0, MENU_PICTURE_REAL, 0, getString(R.string.share_picture_size_real));
|
// menu.add(0, MENU_PICTURE_REAL, 0, getString(R.string.share_picture_size_real));
|
||||||
} else {
|
} else {
|
||||||
menu.add(v.getId(), MENU_DELETE_MESSAGE, 0, getString(R.string.delete));
|
menu.add(v.getId(), MENU_DELETE_MESSAGE, 0, getString(R.string.delete));
|
||||||
ImageView iv = (ImageView) v.findViewById(R.id.image);
|
|
||||||
menu.add(v.getId(), MENU_COPY_TEXT, 0, getString(R.string.copy_text));
|
menu.add(v.getId(), MENU_COPY_TEXT, 0, getString(R.string.copy_text));
|
||||||
|
|
||||||
LinphoneChatMessage msg = getMessageForId(v.getId());
|
LinphoneChatMessage msg = getMessageForId(v.getId());
|
||||||
|
@ -802,22 +813,6 @@ public class ChatActivity extends FragmentActivity implements OnClickListener, S
|
||||||
|
|
||||||
private String saveImage(Bitmap bm, int id, LinphoneChatMessage message) {
|
private String saveImage(Bitmap bm, int id, LinphoneChatMessage message) {
|
||||||
try {
|
try {
|
||||||
String path = Environment.getExternalStorageDirectory().toString();
|
|
||||||
if (!path.endsWith("/"))
|
|
||||||
path += "/";
|
|
||||||
path += "Pictures/";
|
|
||||||
File directory = new File(path);
|
|
||||||
directory.mkdirs();
|
|
||||||
|
|
||||||
String filename = getString(R.string.picture_name_format).replace("%s", String.valueOf(id));
|
|
||||||
File file = new File(path, filename);
|
|
||||||
|
|
||||||
OutputStream fOut = null;
|
|
||||||
fOut = new FileOutputStream(file);
|
|
||||||
|
|
||||||
bm.compress(Bitmap.CompressFormat.JPEG, 100, fOut);
|
|
||||||
fOut.flush();
|
|
||||||
fOut.close();
|
|
||||||
//Update url path in liblinphone database
|
//Update url path in liblinphone database
|
||||||
if (message == null) {
|
if (message == null) {
|
||||||
LinphoneChatMessage[] history = chatRoom.getHistory();
|
LinphoneChatMessage[] history = chatRoom.getHistory();
|
||||||
|
@ -828,11 +823,14 @@ public class ChatActivity extends FragmentActivity implements OnClickListener, S
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
message.setExternalBodyUrl(path + filename);
|
|
||||||
chatRoom.updateUrl(message);
|
|
||||||
|
|
||||||
MediaStore.Images.Media.insertImage(getContentResolver(), file.getAbsolutePath(), file.getName(), file.getName());
|
String filename = getString(R.string.picture_name_format).replace("%s", String.valueOf(id));
|
||||||
return file.getAbsolutePath();
|
String url = MediaStore.Images.Media.insertImage(getContentResolver(), bm, filename, null);
|
||||||
|
if (message != null && url != null) {
|
||||||
|
message.setExternalBodyUrl(url);
|
||||||
|
}
|
||||||
|
chatRoom.updateUrl(message);
|
||||||
|
return url;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,7 +161,7 @@ public class BubbleChat {
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
Intent intent = new Intent(Intent.ACTION_VIEW);
|
Intent intent = new Intent(Intent.ACTION_VIEW);
|
||||||
intent.setDataAndType(Uri.parse("file://" + imageUrl), "image/*");
|
intent.setDataAndType(Uri.parse(imageUrl), "image/*");
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in a new issue