mirror of
https://github.com/oxen-io/session-android.git
synced 2024-11-25 02:55:23 +00:00
0dd36c64a4
1) Move the attachment structures into the encrypted message body. 2) Encrypt attachments with symmetric keys transmitted in the encryptd attachment pointer structure. 3) Correctly handle asynchronous decryption and categorization of encrypted push messages. TODO: Correct notification process and network/interruption retries.
86 lines
2.7 KiB
Java
86 lines
2.7 KiB
Java
/**
|
|
* Copyright (C) 2011 Whisper Systems
|
|
*
|
|
* This program is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package org.thoughtcrime.securesms.mms;
|
|
|
|
import java.io.IOException;
|
|
|
|
import org.thoughtcrime.securesms.R;
|
|
|
|
import ws.com.google.android.mms.pdu.PduPart;
|
|
import android.content.ContentResolver;
|
|
import android.content.Context;
|
|
import android.database.Cursor;
|
|
import android.graphics.Bitmap;
|
|
import android.graphics.BitmapFactory;
|
|
import android.graphics.drawable.Drawable;
|
|
import android.net.Uri;
|
|
import android.provider.MediaStore;
|
|
import android.util.Log;
|
|
import android.widget.ImageView;
|
|
|
|
public class VideoSlide extends Slide {
|
|
|
|
public VideoSlide(Context context, PduPart part) {
|
|
super(context, part);
|
|
}
|
|
|
|
public VideoSlide(Context context, Uri uri) throws IOException, MediaTooLargeException {
|
|
super(context, constructPartFromUri(context, uri));
|
|
}
|
|
|
|
@Override
|
|
public Drawable getThumbnail(int width, int height) {
|
|
return context.getResources().getDrawable(R.drawable.ic_launcher_video_player);
|
|
}
|
|
|
|
@Override
|
|
public boolean hasImage() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean hasVideo() {
|
|
return true;
|
|
}
|
|
|
|
private static PduPart constructPartFromUri(Context context, Uri uri) throws IOException, MediaTooLargeException {
|
|
PduPart part = new PduPart();
|
|
ContentResolver resolver = context.getContentResolver();
|
|
Cursor cursor = null;
|
|
|
|
try {
|
|
cursor = resolver.query(uri, new String[] {MediaStore.Video.Media.MIME_TYPE}, null, null, null);
|
|
if (cursor != null && cursor.moveToFirst()) {
|
|
Log.w("VideoSlide", "Setting mime type: " + cursor.getString(0));
|
|
part.setContentType(cursor.getString(0).getBytes());
|
|
}
|
|
} finally {
|
|
if (cursor != null)
|
|
cursor.close();
|
|
}
|
|
|
|
if (getMediaSize(context, uri) > MAX_MESSAGE_SIZE)
|
|
throw new MediaTooLargeException("Video exceeds maximum message size.");
|
|
|
|
part.setDataUri(uri);
|
|
part.setContentId((System.currentTimeMillis()+"").getBytes());
|
|
part.setName(("Video" + System.currentTimeMillis()).getBytes());
|
|
|
|
return part;
|
|
}
|
|
}
|