Search in sources :

Example 6 with ListenableFuture

use of org.thoughtcrime.securesms.util.concurrent.ListenableFuture in project Signal-Android by WhisperSystems.

the class ScribbleActivity method onSave.

@Override
public void onSave() {
    ListenableFuture<Bitmap> future = scribbleView.getRenderedImage();
    future.addListener(new ListenableFuture.Listener<Bitmap>() {

        @Override
        public void onSuccess(Bitmap result) {
            PersistentBlobProvider provider = PersistentBlobProvider.getInstance(ScribbleActivity.this);
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            result.compress(Bitmap.CompressFormat.JPEG, 80, baos);
            byte[] data = baos.toByteArray();
            baos = null;
            result = null;
            Uri uri = provider.create(masterSecret, data, ContentType.IMAGE_JPEG);
            Intent intent = new Intent();
            intent.setData(uri);
            setResult(RESULT_OK, intent);
            finish();
        }

        @Override
        public void onFailure(ExecutionException e) {
            Log.w(TAG, e);
        }
    });
}
Also used : Bitmap(android.graphics.Bitmap) ListenableFuture(org.thoughtcrime.securesms.util.concurrent.ListenableFuture) Intent(android.content.Intent) ByteArrayOutputStream(java.io.ByteArrayOutputStream) PersistentBlobProvider(org.thoughtcrime.securesms.providers.PersistentBlobProvider) ExecutionException(java.util.concurrent.ExecutionException) Uri(android.net.Uri)

Example 7 with ListenableFuture

use of org.thoughtcrime.securesms.util.concurrent.ListenableFuture in project Signal-Android by WhisperSystems.

the class ConversationActivity method onRecorderFinished.

@Override
public void onRecorderFinished() {
    Vibrator vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
    vibrator.vibrate(20);
    getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    ListenableFuture<Pair<Uri, Long>> future = audioRecorder.stopRecording();
    future.addListener(new ListenableFuture.Listener<Pair<Uri, Long>>() {

        @Override
        public void onSuccess(@NonNull final Pair<Uri, Long> result) {
            try {
                boolean forceSms = sendButton.isManualSelection() && sendButton.getSelectedTransport().isSms();
                int subscriptionId = sendButton.getSelectedTransport().getSimSubscriptionId().or(-1);
                long expiresIn = recipients.getExpireMessages() * 1000;
                AudioSlide audioSlide = new AudioSlide(ConversationActivity.this, result.first, result.second, ContentType.AUDIO_AAC);
                SlideDeck slideDeck = new SlideDeck();
                slideDeck.addSlide(audioSlide);
                sendMediaMessage(forceSms, "", slideDeck, expiresIn, subscriptionId).addListener(new AssertedSuccessListener<Void>() {

                    @Override
                    public void onSuccess(Void nothing) {
                        new AsyncTask<Void, Void, Void>() {

                            @Override
                            protected Void doInBackground(Void... params) {
                                PersistentBlobProvider.getInstance(ConversationActivity.this).delete(result.first);
                                return null;
                            }
                        }.execute();
                    }
                });
            } catch (InvalidMessageException e) {
                Log.w(TAG, e);
                Toast.makeText(ConversationActivity.this, R.string.ConversationActivity_error_sending_voice_message, Toast.LENGTH_LONG).show();
            }
        }

        @Override
        public void onFailure(ExecutionException e) {
            Toast.makeText(ConversationActivity.this, R.string.ConversationActivity_unable_to_record_audio, Toast.LENGTH_LONG).show();
        }
    });
}
Also used : InvalidMessageException(org.whispersystems.libsignal.InvalidMessageException) AudioSlide(org.thoughtcrime.securesms.mms.AudioSlide) SlideDeck(org.thoughtcrime.securesms.mms.SlideDeck) Uri(android.net.Uri) AssertedSuccessListener(org.thoughtcrime.securesms.util.concurrent.AssertedSuccessListener) ListenableFuture(org.thoughtcrime.securesms.util.concurrent.ListenableFuture) Vibrator(android.os.Vibrator) ExecutionException(java.util.concurrent.ExecutionException) Pair(android.util.Pair)

Example 8 with ListenableFuture

use of org.thoughtcrime.securesms.util.concurrent.ListenableFuture in project Signal-Android by WhisperSystems.

the class ConversationParentFragment method onRecorderFinished.

@Override
public void onRecorderFinished() {
    voiceRecorderWakeLock.release();
    updateToggleButtonState();
    Vibrator vibrator = ServiceUtil.getVibrator(requireContext());
    vibrator.vibrate(20);
    requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
    requireActivity().setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
    ListenableFuture<VoiceNoteDraft> future = audioRecorder.stopRecording();
    future.addListener(new ListenableFuture.Listener<VoiceNoteDraft>() {

        @Override
        public void onSuccess(@NonNull final VoiceNoteDraft result) {
            sendVoiceNote(result.getUri(), result.getSize());
        }

        @Override
        public void onFailure(ExecutionException e) {
            Toast.makeText(requireContext(), R.string.ConversationActivity_unable_to_record_audio, Toast.LENGTH_LONG).show();
        }
    });
}
Also used : VoiceNoteDraft(org.thoughtcrime.securesms.components.voice.VoiceNoteDraft) ListenableFuture(org.thoughtcrime.securesms.util.concurrent.ListenableFuture) Vibrator(android.os.Vibrator) ExecutionException(java.util.concurrent.ExecutionException)

Aggregations

ExecutionException (java.util.concurrent.ExecutionException)8 ListenableFuture (org.thoughtcrime.securesms.util.concurrent.ListenableFuture)8 Uri (android.net.Uri)6 Vibrator (android.os.Vibrator)6 Pair (android.util.Pair)4 Intent (android.content.Intent)2 Bitmap (android.graphics.Bitmap)2 AsyncTask (android.os.AsyncTask)2 ByteArrayOutputStream (java.io.ByteArrayOutputStream)2 VoiceNoteDraft (org.thoughtcrime.securesms.components.voice.VoiceNoteDraft)2 AudioSlide (org.thoughtcrime.securesms.mms.AudioSlide)2 SlideDeck (org.thoughtcrime.securesms.mms.SlideDeck)2 PersistentBlobProvider (org.thoughtcrime.securesms.providers.PersistentBlobProvider)2 AssertedSuccessListener (org.thoughtcrime.securesms.util.concurrent.AssertedSuccessListener)2 InvalidMessageException (org.whispersystems.libsignal.InvalidMessageException)1