[FileSharing] update extensionCheck + display image
This commit is contained in:
parent
c5e90cf9df
commit
c13dcd0768
2 changed files with 86 additions and 81 deletions
|
@ -1127,8 +1127,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
if(fileSharedUri != null){
|
if(fileSharedUri != null){
|
||||||
//save SipUri into bundle
|
//save SipUri into bundle
|
||||||
onSaveInstanceState(getArguments());
|
onSaveInstanceState(getArguments());
|
||||||
String extension = LinphoneUtils.getExtensionFromFileName(fileSharedUri);
|
if(LinphoneUtils.isExtensionImage(fileSharedUri)) {
|
||||||
if(extension != null && extension.matches(".*(.png|.jpg|.jpeg|.bmp|.gif).*")) {
|
|
||||||
sendImageMessage(fileSharedUri, 0);
|
sendImageMessage(fileSharedUri, 0);
|
||||||
}else {
|
}else {
|
||||||
sendFileSharingMessage(fileSharedUri, 0);
|
sendFileSharingMessage(fileSharedUri, 0);
|
||||||
|
@ -1633,8 +1632,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
|
|
||||||
public void loadBitmap(String path, ImageView imageView) {
|
public void loadBitmap(String path, ImageView imageView) {
|
||||||
if (cancelPotentialWork(path, imageView)) {
|
if (cancelPotentialWork(path, imageView)) {
|
||||||
String extension = LinphoneUtils.getExtensionFromFileName(path);
|
if(LinphoneUtils.isExtensionImage(path))
|
||||||
if(extension != null && extension.matches(".*(.png|.jpg|.jpeg|.bmp|.gif).*"))
|
|
||||||
defaultBitmap = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.chat_picture_over);
|
defaultBitmap = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.chat_picture_over);
|
||||||
else
|
else
|
||||||
defaultBitmap = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.chat_attachment_over);
|
defaultBitmap = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.chat_attachment_over);
|
||||||
|
@ -1663,47 +1661,50 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
Bitmap bm = null;
|
Bitmap bm = null;
|
||||||
Bitmap thumbnail = null;
|
Bitmap thumbnail = null;
|
||||||
|
|
||||||
if (path.startsWith("content")) {
|
if(LinphoneUtils.isExtensionImage(path)) {
|
||||||
try {
|
if (path.startsWith("content")) {
|
||||||
bm = MediaStore.Images.Media.getBitmap(context.getContentResolver(), Uri.parse(path));
|
try {
|
||||||
} catch (FileNotFoundException e) {
|
bm = MediaStore.Images.Media.getBitmap(context.getContentResolver(), Uri.parse(path));
|
||||||
Log.e(e);
|
} catch (FileNotFoundException e) {
|
||||||
} catch (IOException e) {
|
Log.e(e);
|
||||||
Log.e(e);
|
} catch (IOException e) {
|
||||||
}
|
Log.e(e);
|
||||||
} else {
|
}
|
||||||
bm = BitmapFactory.decodeFile(path);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Rotate the bitmap if possible/needed, using EXIF data
|
|
||||||
try {
|
|
||||||
Bitmap bm_tmp;
|
|
||||||
ExifInterface exif = new ExifInterface(path);
|
|
||||||
int pictureOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 0);
|
|
||||||
Matrix matrix = new Matrix();
|
|
||||||
if (pictureOrientation == 6) {
|
|
||||||
matrix.postRotate(90);
|
|
||||||
} else if (pictureOrientation == 3) {
|
|
||||||
matrix.postRotate(180);
|
|
||||||
} else if (pictureOrientation == 8) {
|
|
||||||
matrix.postRotate(270);
|
|
||||||
}
|
|
||||||
bm_tmp = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
|
|
||||||
if (bm_tmp != bm) {
|
|
||||||
bm.recycle();
|
|
||||||
bm = bm_tmp;
|
|
||||||
} else {
|
} else {
|
||||||
bm_tmp = null;
|
bm = BitmapFactory.decodeFile(path);
|
||||||
}
|
}
|
||||||
} catch (Exception e) {
|
|
||||||
Log.e(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (bm != null) {
|
// Rotate the bitmap if possible/needed, using EXIF data
|
||||||
thumbnail = ThumbnailUtils.extractThumbnail(bm, SIZE_SMALL, SIZE_SMALL);
|
try {
|
||||||
bm.recycle();
|
Bitmap bm_tmp;
|
||||||
}
|
ExifInterface exif = new ExifInterface(path);
|
||||||
return thumbnail;
|
int pictureOrientation = exif.getAttributeInt(ExifInterface.TAG_ORIENTATION, 0);
|
||||||
|
Matrix matrix = new Matrix();
|
||||||
|
if (pictureOrientation == 6) {
|
||||||
|
matrix.postRotate(90);
|
||||||
|
} else if (pictureOrientation == 3) {
|
||||||
|
matrix.postRotate(180);
|
||||||
|
} else if (pictureOrientation == 8) {
|
||||||
|
matrix.postRotate(270);
|
||||||
|
}
|
||||||
|
bm_tmp = Bitmap.createBitmap(bm, 0, 0, bm.getWidth(), bm.getHeight(), matrix, true);
|
||||||
|
if (bm_tmp != bm) {
|
||||||
|
bm.recycle();
|
||||||
|
bm = bm_tmp;
|
||||||
|
} else {
|
||||||
|
bm_tmp = null;
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (bm != null) {
|
||||||
|
thumbnail = ThumbnailUtils.extractThumbnail(bm, SIZE_SMALL, SIZE_SMALL);
|
||||||
|
bm.recycle();
|
||||||
|
}
|
||||||
|
return thumbnail;
|
||||||
|
}else
|
||||||
|
return defaultBitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Once complete, see if ImageView is still around and set bitmap.
|
// Once complete, see if ImageView is still around and set bitmap.
|
||||||
|
@ -1712,7 +1713,6 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
if (isCancelled()) {
|
if (isCancelled()) {
|
||||||
bitmap = null;
|
bitmap = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (imageViewReference != null && bitmap != null) {
|
if (imageViewReference != null && bitmap != null) {
|
||||||
final ImageView imageView = imageViewReference.get();
|
final ImageView imageView = imageViewReference.get();
|
||||||
final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView);
|
final BitmapWorkerTask bitmapWorkerTask = getBitmapWorkerTask(imageView);
|
||||||
|
@ -1736,7 +1736,7 @@ public class ChatFragment extends Fragment implements OnClickListener, LinphoneC
|
||||||
File file = new File(imageUri);
|
File file = new File(imageUri);
|
||||||
contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file);
|
contentUri = FileProvider.getUriForFile(getActivity(), "org.linphone.provider", file);
|
||||||
}
|
}
|
||||||
intent.setDataAndType(contentUri, "image/*");
|
intent.setDataAndType(contentUri, "*/*");
|
||||||
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
|
intent.addFlags(FLAG_GRANT_READ_URI_PERMISSION);
|
||||||
context.startActivity(intent);
|
context.startActivity(intent);
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,43 +18,6 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*/
|
*/
|
||||||
package org.linphone;
|
package org.linphone;
|
||||||
|
|
||||||
import static android.view.View.GONE;
|
|
||||||
import static android.view.View.VISIBLE;
|
|
||||||
|
|
||||||
import java.io.BufferedOutputStream;
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileNotFoundException;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStream;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.io.OutputStream;
|
|
||||||
import java.net.MalformedURLException;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.zip.ZipEntry;
|
|
||||||
import java.util.zip.ZipOutputStream;
|
|
||||||
|
|
||||||
import org.linphone.core.DialPlan;
|
|
||||||
import org.linphone.core.LinphoneAccountCreator;
|
|
||||||
import org.linphone.core.LinphoneAddress;
|
|
||||||
import org.linphone.core.LinphoneCall;
|
|
||||||
import org.linphone.core.LinphoneCall.State;
|
|
||||||
import org.linphone.core.LinphoneChatMessage;
|
|
||||||
import org.linphone.core.LinphoneCore;
|
|
||||||
import org.linphone.core.LinphoneCoreException;
|
|
||||||
import org.linphone.core.LinphoneCoreFactory;
|
|
||||||
import org.linphone.core.LinphoneProxyConfig;
|
|
||||||
import org.linphone.mediastream.Log;
|
|
||||||
import org.linphone.mediastream.video.capture.hwconf.Hacks;
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.AlertDialog;
|
import android.app.AlertDialog;
|
||||||
import android.content.ContentResolver;
|
import android.content.ContentResolver;
|
||||||
|
@ -81,6 +44,43 @@ import android.widget.EditText;
|
||||||
import android.widget.ImageView;
|
import android.widget.ImageView;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
|
import org.linphone.core.DialPlan;
|
||||||
|
import org.linphone.core.LinphoneAccountCreator;
|
||||||
|
import org.linphone.core.LinphoneAddress;
|
||||||
|
import org.linphone.core.LinphoneCall;
|
||||||
|
import org.linphone.core.LinphoneCall.State;
|
||||||
|
import org.linphone.core.LinphoneChatMessage;
|
||||||
|
import org.linphone.core.LinphoneCore;
|
||||||
|
import org.linphone.core.LinphoneCoreException;
|
||||||
|
import org.linphone.core.LinphoneCoreFactory;
|
||||||
|
import org.linphone.core.LinphoneProxyConfig;
|
||||||
|
import org.linphone.mediastream.Log;
|
||||||
|
import org.linphone.mediastream.video.capture.hwconf.Hacks;
|
||||||
|
|
||||||
|
import java.io.BufferedOutputStream;
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileNotFoundException;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStream;
|
||||||
|
import java.net.MalformedURLException;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
import java.util.zip.ZipEntry;
|
||||||
|
import java.util.zip.ZipOutputStream;
|
||||||
|
|
||||||
|
import static android.view.View.GONE;
|
||||||
|
import static android.view.View.VISIBLE;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Helpers.
|
* Helpers.
|
||||||
* @author Guillaume Beraudo
|
* @author Guillaume Beraudo
|
||||||
|
@ -481,6 +481,11 @@ public final class LinphoneUtils {
|
||||||
return extension;
|
return extension;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static Boolean isExtensionImage(String path){
|
||||||
|
String extension = LinphoneUtils.getExtensionFromFileName(path);
|
||||||
|
return (extension != null && extension.matches(".*(png|jpg|jpeg|bmp|gif).*"));
|
||||||
|
}
|
||||||
|
|
||||||
public static void recursiveFileRemoval(File root) {
|
public static void recursiveFileRemoval(File root) {
|
||||||
if (!root.delete()) {
|
if (!root.delete()) {
|
||||||
if (root.isDirectory()) {
|
if (root.isDirectory()) {
|
||||||
|
|
Loading…
Reference in a new issue