add record voice mail button to busy screen. fixes #3754
This commit is contained in:
parent
bc6446beb8
commit
8603d24bcb
|
@ -2121,6 +2121,7 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
|||
final String downloadUuid = extras.getString(ConversationsActivity.EXTRA_DOWNLOAD_UUID);
|
||||
final String text = extras.getString(Intent.EXTRA_TEXT);
|
||||
final String nick = extras.getString(ConversationsActivity.EXTRA_NICK);
|
||||
final String postInitAction = extras.getString(ConversationsActivity.EXTRA_POST_INIT_ACTION);
|
||||
final boolean asQuote = extras.getBoolean(ConversationsActivity.EXTRA_AS_QUOTE);
|
||||
final boolean pm = extras.getBoolean(ConversationsActivity.EXTRA_IS_PRIVATE_MESSAGE, false);
|
||||
final boolean doNotAppend = extras.getBoolean(ConversationsActivity.EXTRA_DO_NOT_APPEND, false);
|
||||
|
@ -2161,6 +2162,10 @@ public class ConversationFragment extends XmppFragment implements EditMessage.Ke
|
|||
appendText(text, doNotAppend);
|
||||
}
|
||||
}
|
||||
if (ConversationsActivity.POST_ACTION_RECORD_VOICE.equals(postInitAction)) {
|
||||
attachFile(ATTACHMENT_CHOICE_RECORD_VOICE);
|
||||
return;
|
||||
}
|
||||
final Message message = downloadUuid == null ? null : conversation.findMessageWithFileAndUuid(downloadUuid);
|
||||
if (message != null) {
|
||||
startDownloadable(message);
|
||||
|
|
|
@ -94,6 +94,8 @@ public class ConversationsActivity extends XmppActivity implements OnConversatio
|
|||
public static final String EXTRA_NICK = "nick";
|
||||
public static final String EXTRA_IS_PRIVATE_MESSAGE = "pm";
|
||||
public static final String EXTRA_DO_NOT_APPEND = "do_not_append";
|
||||
public static final String EXTRA_POST_INIT_ACTION = "post_init_action";
|
||||
public static final String POST_ACTION_RECORD_VOICE = "record_voice";
|
||||
|
||||
private static List<String> VIEW_AND_SHARE_ACTIONS = Arrays.asList(
|
||||
ACTION_VIEW_CONVERSATION,
|
||||
|
|
|
@ -44,6 +44,7 @@ import eu.siacs.conversations.R;
|
|||
import eu.siacs.conversations.databinding.ActivityRtpSessionBinding;
|
||||
import eu.siacs.conversations.entities.Account;
|
||||
import eu.siacs.conversations.entities.Contact;
|
||||
import eu.siacs.conversations.entities.Conversation;
|
||||
import eu.siacs.conversations.services.AppRTCAudioManager;
|
||||
import eu.siacs.conversations.services.XmppConnectionService;
|
||||
import eu.siacs.conversations.ui.util.AvatarWorkerTask;
|
||||
|
@ -101,6 +102,14 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
|
|||
}
|
||||
}
|
||||
|
||||
private static void addSink(final VideoTrack videoTrack, final SurfaceViewRenderer surfaceViewRenderer) {
|
||||
try {
|
||||
videoTrack.addSink(surfaceViewRenderer);
|
||||
} catch (final IllegalStateException e) {
|
||||
Log.e(Config.LOGTAG, "possible race condition on trying to display video track. ignoring", e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCreate(Bundle savedInstanceState) {
|
||||
super.onCreate(savedInstanceState);
|
||||
|
@ -372,7 +381,6 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@RequiresApi(api = Build.VERSION_CODES.O)
|
||||
private void startPictureInPicture() {
|
||||
try {
|
||||
|
@ -551,11 +559,13 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
|
|||
this.binding.acceptCall.setImageResource(R.drawable.ic_call_white_48dp);
|
||||
this.binding.acceptCall.setVisibility(View.VISIBLE);
|
||||
} else if (state == RtpEndUserState.DECLINED_OR_BUSY) {
|
||||
this.binding.rejectCall.setVisibility(View.INVISIBLE);
|
||||
this.binding.endCall.setOnClickListener(this::exit);
|
||||
this.binding.endCall.setImageResource(R.drawable.ic_clear_white_48dp);
|
||||
this.binding.endCall.setVisibility(View.VISIBLE);
|
||||
this.binding.acceptCall.setVisibility(View.INVISIBLE);
|
||||
this.binding.rejectCall.setOnClickListener(this::exit);
|
||||
this.binding.rejectCall.setImageResource(R.drawable.ic_clear_white_48dp);
|
||||
this.binding.rejectCall.setVisibility(View.VISIBLE);
|
||||
this.binding.endCall.setVisibility(View.INVISIBLE);
|
||||
this.binding.acceptCall.setOnClickListener(this::recordVoiceMail);
|
||||
this.binding.acceptCall.setImageResource(R.drawable.ic_voicemail_white_24dp);
|
||||
this.binding.acceptCall.setVisibility(View.VISIBLE);
|
||||
} else if (asList(RtpEndUserState.CONNECTIVITY_ERROR, RtpEndUserState.APPLICATION_ERROR, RtpEndUserState.RETRACTED).contains(state)) {
|
||||
this.binding.rejectCall.setOnClickListener(this::exit);
|
||||
this.binding.rejectCall.setImageResource(R.drawable.ic_clear_white_48dp);
|
||||
|
@ -789,14 +799,6 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
|
|||
}
|
||||
}
|
||||
|
||||
private static void addSink(final VideoTrack videoTrack, final SurfaceViewRenderer surfaceViewRenderer) {
|
||||
try {
|
||||
videoTrack.addSink(surfaceViewRenderer);
|
||||
} catch (final IllegalStateException e) {
|
||||
Log.e(Config.LOGTAG, "possible race condition on trying to display video track. ignoring", e);
|
||||
}
|
||||
}
|
||||
|
||||
private Optional<VideoTrack> getLocalVideoTrack() {
|
||||
final JingleRtpConnection connection = this.rtpConnectionReference != null ? this.rtpConnectionReference.get() : null;
|
||||
if (connection == null) {
|
||||
|
@ -847,7 +849,21 @@ public class RtpSessionActivity extends XmppActivity implements XmppConnectionSe
|
|||
proposeJingleRtpSession(account, with, media);
|
||||
}
|
||||
|
||||
private void exit(View view) {
|
||||
private void exit(final View view) {
|
||||
finish();
|
||||
}
|
||||
|
||||
private void recordVoiceMail(final View view) {
|
||||
final Intent intent = getIntent();
|
||||
final Account account = extractAccount(intent);
|
||||
final Jid with = Jid.ofEscaped(intent.getStringExtra(EXTRA_WITH));
|
||||
final Conversation conversation = xmppConnectionService.findOrCreateConversation(account, with, false, true);
|
||||
final Intent launchIntent = new Intent(this, ConversationsActivity.class);
|
||||
launchIntent.setAction(ConversationsActivity.ACTION_VIEW_CONVERSATION);
|
||||
launchIntent.putExtra(ConversationsActivity.EXTRA_CONVERSATION, conversation.getUuid());
|
||||
launchIntent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
||||
launchIntent.putExtra(ConversationsActivity.EXTRA_POST_INIT_ACTION, ConversationsActivity.POST_ACTION_RECORD_VOICE);
|
||||
startActivity(launchIntent);
|
||||
finish();
|
||||
}
|
||||
|
||||
|
|
BIN
src/main/res/drawable-hdpi/ic_voicemail_white_24dp.png
Normal file
BIN
src/main/res/drawable-hdpi/ic_voicemail_white_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 478 B |
BIN
src/main/res/drawable-mdpi/ic_voicemail_white_24dp.png
Normal file
BIN
src/main/res/drawable-mdpi/ic_voicemail_white_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 221 B |
BIN
src/main/res/drawable-xhdpi/ic_voicemail_white_24dp.png
Normal file
BIN
src/main/res/drawable-xhdpi/ic_voicemail_white_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 487 B |
BIN
src/main/res/drawable-xxhdpi/ic_voicemail_white_24dp.png
Normal file
BIN
src/main/res/drawable-xxhdpi/ic_voicemail_white_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 625 B |
BIN
src/main/res/drawable-xxxhdpi/ic_voicemail_white_24dp.png
Normal file
BIN
src/main/res/drawable-xxxhdpi/ic_voicemail_white_24dp.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 971 B |
Loading…
Reference in a new issue