Check if in-call via audio manager

pull/194/merge
M66B 4 years ago
parent b8a21847e2
commit 4a5d6be29b

@ -822,6 +822,9 @@ public class EntityRule {
private boolean onActionTts(Context context, EntityMessage message, JSONObject jargs) { private boolean onActionTts(Context context, EntityMessage message, JSONObject jargs) {
DB db = DB.getInstance(context); DB db = DB.getInstance(context);
if (message.ui_seen)
return false;
if (!message.content) { if (!message.content) {
EntityOperation.queue(context, message, EntityOperation.BODY); EntityOperation.queue(context, message, EntityOperation.BODY);
EntityOperation.queue(context, message, EntityOperation.RULE, this.id); EntityOperation.queue(context, message, EntityOperation.RULE, this.id);
@ -832,6 +835,8 @@ public class EntityRule {
@Override @Override
public void run() { public void run() {
try { try {
if (MediaPlayerHelper.isInCall(context))
return;
speak(context, EntityRule.this, message); speak(context, EntityRule.this, message);
} catch (Throwable ex) { } catch (Throwable ex) {
db.message().setMessageError(message.id, Log.formatThrowable(ex)); db.message().setMessageError(message.id, Log.formatThrowable(ex));
@ -974,6 +979,8 @@ public class EntityRule {
@Override @Override
public void run() { public void run() {
try { try {
if (MediaPlayerHelper.isInCall(context))
return;
MediaPlayerHelper.play(context, uri, alarm, duration); MediaPlayerHelper.play(context, uri, alarm, duration);
} catch (Throwable ex) { } catch (Throwable ex) {
Log.e(ex); Log.e(ex);

@ -2,6 +2,7 @@ package eu.faircode.email;
import android.content.Context; import android.content.Context;
import android.media.AudioAttributes; import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.MediaPlayer; import android.media.MediaPlayer;
import android.net.Uri; import android.net.Uri;
@ -49,4 +50,18 @@ public class MediaPlayerHelper {
Log.w(ex); Log.w(ex);
} }
} }
static boolean isInCall(Context context) {
AudioManager am =
(AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
if (am == null)
return false;
// This doesn't require READ_PHONE_STATE permission
int mode = am.getMode();
EntityLog.log(context, "Audio mode=" + mode);
return (mode == AudioManager.MODE_RINGTONE ||
mode == AudioManager.MODE_IN_CALL ||
mode == AudioManager.MODE_IN_COMMUNICATION);
}
} }

Loading…
Cancel
Save