mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-25 05:37:47 +00:00
refactor: testing out the full screen intents
This commit is contained in:
@@ -54,6 +54,7 @@
|
|||||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||||
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" tools:node="remove"/>
|
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" tools:node="remove"/>
|
||||||
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
|
||||||
|
<uses-permission android:name="android.permission.USE_FULL_SCREEN_INTENT"/>
|
||||||
|
|
||||||
<queries>
|
<queries>
|
||||||
<intent>
|
<intent>
|
||||||
@@ -298,6 +299,7 @@
|
|||||||
<activity android:name="org.thoughtcrime.securesms.calls.WebRtcCallActivity"
|
<activity android:name="org.thoughtcrime.securesms.calls.WebRtcCallActivity"
|
||||||
android:screenOrientation="portrait"
|
android:screenOrientation="portrait"
|
||||||
android:launchMode="singleTop"
|
android:launchMode="singleTop"
|
||||||
|
android:showForAllUsers="true"
|
||||||
android:parentActivityName="org.thoughtcrime.securesms.home.HomeActivity"
|
android:parentActivityName="org.thoughtcrime.securesms.home.HomeActivity"
|
||||||
android:theme="@style/Theme.Session.CallActivity">
|
android:theme="@style/Theme.Session.CallActivity">
|
||||||
<meta-data
|
<meta-data
|
||||||
|
@@ -6,6 +6,7 @@ import android.content.Context
|
|||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.content.IntentFilter
|
import android.content.IntentFilter
|
||||||
import android.media.AudioManager
|
import android.media.AudioManager
|
||||||
|
import android.os.Build
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
@@ -76,8 +77,17 @@ class WebRtcCallActivity: PassphraseRequiredActionBarActivity() {
|
|||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
|
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
|
||||||
super.onCreate(savedInstanceState, ready)
|
super.onCreate(savedInstanceState, ready)
|
||||||
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
|
||||||
setContentView(R.layout.activity_webrtc)
|
setContentView(R.layout.activity_webrtc)
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
|
||||||
|
setShowWhenLocked(true)
|
||||||
|
setTurnScreenOn(true)
|
||||||
|
}
|
||||||
|
window.addFlags(
|
||||||
|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
|
||||||
|
or WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
|
||||||
|
or WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
|
||||||
|
or WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
|
||||||
|
or WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON)
|
||||||
volumeControlStream = AudioManager.STREAM_VOICE_CALL
|
volumeControlStream = AudioManager.STREAM_VOICE_CALL
|
||||||
|
|
||||||
if (intent.action == ACTION_ANSWER) {
|
if (intent.action == ACTION_ANSWER) {
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
package org.thoughtcrime.securesms.notifications;
|
package org.thoughtcrime.securesms.notifications;
|
||||||
|
|
||||||
import android.annotation.TargetApi;
|
import android.annotation.TargetApi;
|
||||||
|
import android.app.Notification;
|
||||||
import android.app.NotificationChannel;
|
import android.app.NotificationChannel;
|
||||||
import android.app.NotificationChannelGroup;
|
import android.app.NotificationChannelGroup;
|
||||||
import android.app.NotificationManager;
|
import android.app.NotificationManager;
|
||||||
|
@@ -34,13 +34,14 @@ class CallNotificationBuilder {
|
|||||||
val text = context.getString(R.string.CallNotificationBuilder_first_call_message)
|
val text = context.getString(R.string.CallNotificationBuilder_first_call_message)
|
||||||
|
|
||||||
val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS)
|
val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS)
|
||||||
.setSound(null)
|
.setSound(null)
|
||||||
.setSmallIcon(R.drawable.ic_baseline_call_24)
|
.setSmallIcon(R.drawable.ic_baseline_call_24)
|
||||||
.setContentIntent(pendingIntent)
|
.setContentIntent(pendingIntent)
|
||||||
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
.setPriority(NotificationCompat.PRIORITY_HIGH)
|
||||||
.setContentTitle(context.getString(R.string.CallNotificationBuilder_first_call_title))
|
.setContentTitle(context.getString(R.string.CallNotificationBuilder_first_call_title))
|
||||||
.setContentText(text)
|
.setContentText(text)
|
||||||
.setStyle(NotificationCompat.BigTextStyle().bigText(text))
|
.setStyle(NotificationCompat.BigTextStyle().bigText(text))
|
||||||
|
.setAutoCancel(true)
|
||||||
|
|
||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
@@ -53,11 +54,11 @@ class CallNotificationBuilder {
|
|||||||
val pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
|
val pendingIntent = PendingIntent.getActivity(context, 0, contentIntent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)
|
||||||
|
|
||||||
val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS)
|
val builder = NotificationCompat.Builder(context, NotificationChannels.CALLS)
|
||||||
.setSound(null)
|
.setSound(null)
|
||||||
.setSmallIcon(R.drawable.ic_baseline_call_24)
|
.setSmallIcon(R.drawable.ic_baseline_call_24)
|
||||||
.setContentIntent(pendingIntent)
|
.setContentIntent(pendingIntent)
|
||||||
.setOngoing(true)
|
.setOngoing(true)
|
||||||
.setPriority(NotificationCompat.PRIORITY_LOW)
|
.setPriority(NotificationCompat.PRIORITY_LOW)
|
||||||
|
|
||||||
recipient?.name?.let { name ->
|
recipient?.name?.let { name ->
|
||||||
builder.setContentTitle(name)
|
builder.setContentTitle(name)
|
||||||
@@ -68,23 +69,7 @@ class CallNotificationBuilder {
|
|||||||
builder.setContentText(context.getString(R.string.CallNotificationBuilder_connecting))
|
builder.setContentText(context.getString(R.string.CallNotificationBuilder_connecting))
|
||||||
builder.priority = NotificationCompat.PRIORITY_LOW
|
builder.priority = NotificationCompat.PRIORITY_LOW
|
||||||
}
|
}
|
||||||
TYPE_INCOMING_PRE_OFFER -> {
|
TYPE_INCOMING_PRE_OFFER,
|
||||||
builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call))
|
|
||||||
.setCategory(NotificationCompat.CATEGORY_CALL)
|
|
||||||
builder.addAction(getServiceNotificationAction(
|
|
||||||
context,
|
|
||||||
WebRtcCallService.ACTION_DENY_CALL,
|
|
||||||
R.drawable.ic_close_grey600_32dp,
|
|
||||||
R.string.NotificationBarManager__deny_call
|
|
||||||
))
|
|
||||||
builder.addAction(getActivityNotificationAction(
|
|
||||||
context,
|
|
||||||
WebRtcCallActivity.ACTION_PRE_OFFER,
|
|
||||||
R.drawable.ic_phone_grey600_32dp,
|
|
||||||
R.string.NotificationBarManager__answer_call
|
|
||||||
))
|
|
||||||
builder.priority = NotificationCompat.PRIORITY_HIGH
|
|
||||||
}
|
|
||||||
TYPE_INCOMING_RINGING -> {
|
TYPE_INCOMING_RINGING -> {
|
||||||
builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call))
|
builder.setContentText(context.getString(R.string.NotificationBarManager__incoming_signal_call))
|
||||||
.setCategory(NotificationCompat.CATEGORY_CALL)
|
.setCategory(NotificationCompat.CATEGORY_CALL)
|
||||||
@@ -94,9 +79,12 @@ class CallNotificationBuilder {
|
|||||||
R.drawable.ic_close_grey600_32dp,
|
R.drawable.ic_close_grey600_32dp,
|
||||||
R.string.NotificationBarManager__deny_call
|
R.string.NotificationBarManager__deny_call
|
||||||
))
|
))
|
||||||
|
builder.setFullScreenIntent(getFullScreenPendingIntent(
|
||||||
|
context
|
||||||
|
), true)
|
||||||
builder.addAction(getActivityNotificationAction(
|
builder.addAction(getActivityNotificationAction(
|
||||||
context,
|
context,
|
||||||
WebRtcCallActivity.ACTION_ANSWER,
|
if (type == TYPE_INCOMING_PRE_OFFER) WebRtcCallActivity.ACTION_PRE_OFFER else WebRtcCallActivity.ACTION_ANSWER,
|
||||||
R.drawable.ic_phone_grey600_32dp,
|
R.drawable.ic_phone_grey600_32dp,
|
||||||
R.string.NotificationBarManager__answer_call
|
R.string.NotificationBarManager__answer_call
|
||||||
))
|
))
|
||||||
@@ -125,7 +113,6 @@ class CallNotificationBuilder {
|
|||||||
return builder.build()
|
return builder.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
|
||||||
private fun getServiceNotificationAction(context: Context, action: String, iconResId: Int, titleResId: Int): NotificationCompat.Action {
|
private fun getServiceNotificationAction(context: Context, action: String, iconResId: Int, titleResId: Int): NotificationCompat.Action {
|
||||||
val intent = Intent(context, WebRtcCallService::class.java)
|
val intent = Intent(context, WebRtcCallService::class.java)
|
||||||
.setAction(action)
|
.setAction(action)
|
||||||
@@ -135,7 +122,12 @@ class CallNotificationBuilder {
|
|||||||
return NotificationCompat.Action(iconResId, context.getString(titleResId), pendingIntent)
|
return NotificationCompat.Action(iconResId, context.getString(titleResId), pendingIntent)
|
||||||
}
|
}
|
||||||
|
|
||||||
@JvmStatic
|
private fun getFullScreenPendingIntent(context: Context): PendingIntent {
|
||||||
|
val intent = Intent(context, WebRtcCallActivity::class.java)
|
||||||
|
|
||||||
|
return PendingIntent.getActivity(context, 1, intent, PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE)
|
||||||
|
}
|
||||||
|
|
||||||
private fun getActivityNotificationAction(context: Context, action: String,
|
private fun getActivityNotificationAction(context: Context, action: String,
|
||||||
@DrawableRes iconResId: Int, @StringRes titleResId: Int): NotificationCompat.Action {
|
@DrawableRes iconResId: Int, @StringRes titleResId: Int): NotificationCompat.Action {
|
||||||
val intent = Intent(context, WebRtcCallActivity::class.java)
|
val intent = Intent(context, WebRtcCallActivity::class.java)
|
||||||
|
Reference in New Issue
Block a user