call: show activity on incoming call and lock screen
* launch CallActivity on incoming call
* make CallActivity available on lock screen
Uses API 27 (Android 8.1) so update the platform.
Change-Id: Ie4f89fdd728def5c58fb1012b41ff141c22a3544
diff --git a/ring-android/app/src/main/AndroidManifest.xml b/ring-android/app/src/main/AndroidManifest.xml
index 7cbba2d..0dfe1a0 100644
--- a/ring-android/app/src/main/AndroidManifest.xml
+++ b/ring-android/app/src/main/AndroidManifest.xml
@@ -157,6 +157,7 @@
android:label="@string/app_name"
android:screenOrientation="fullUser"
android:theme="@style/AppTheme.ActionBar.Transparent"
+ android:showOnLockScreen="true"
android:windowSoftInputMode="adjustPan|stateHidden">
<intent-filter>
<action android:name="android.intent.action.CALL" />
@@ -276,6 +277,7 @@
<activity
android:name="cx.ring.tv.call.TVCallActivity"
+ android:showOnLockScreen="true"
android:theme="@style/AppThemeBase">
<intent-filter>
<action android:name="cx.ring.action.CALL" />
diff --git a/ring-android/app/src/main/java/cx/ring/client/CallActivity.java b/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
index 65bab4d..8c3b1d0 100644
--- a/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/client/CallActivity.java
@@ -26,10 +26,12 @@
import android.app.FragmentTransaction;
import android.content.Intent;
import android.content.res.Configuration;
+import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.KeyEvent;
import android.view.View;
+import android.view.WindowManager;
import cx.ring.BuildConfig;
import cx.ring.R;
@@ -54,6 +56,14 @@
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
+ setTurnScreenOn(true);
+ setShowWhenLocked(true);
+ } else {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
+ WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+ }
+
setContentView(R.layout.activity_call_layout);
mMainView = findViewById(R.id.main_call_layout);
diff --git a/ring-android/app/src/main/java/cx/ring/service/DRingService.java b/ring-android/app/src/main/java/cx/ring/service/DRingService.java
index a6df8ca..a30c5fb 100644
--- a/ring-android/app/src/main/java/cx/ring/service/DRingService.java
+++ b/ring-android/app/src/main/java/cx/ring/service/DRingService.java
@@ -758,14 +758,14 @@
case INCOMING_CALL:
SipCall call = arg.getEventInput(ServiceEvent.EventInput.CALL, SipCall.class);
- if (call != null && isTv()) {
+ if (call != null) {
Log.d(TAG, "call id : " + call.getCallId());
Bundle extras = new Bundle();
extras.putString("account", mAccountService.getCurrentAccount().getAccountID());
extras.putString("callId", call.getCallId());
startActivity(new Intent(Intent.ACTION_VIEW)
.putExtras(extras)
- .setClass(getApplicationContext(), TVCallActivity.class)
+ .setClass(getApplicationContext(), isTv() ? TVCallActivity.class : CallActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK));
}
break;
diff --git a/ring-android/app/src/main/java/cx/ring/tv/call/TVCallActivity.java b/ring-android/app/src/main/java/cx/ring/tv/call/TVCallActivity.java
index 10efb7b..50426e0 100644
--- a/ring-android/app/src/main/java/cx/ring/tv/call/TVCallActivity.java
+++ b/ring-android/app/src/main/java/cx/ring/tv/call/TVCallActivity.java
@@ -21,10 +21,12 @@
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
+import android.os.Build;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.MotionEvent;
+import android.view.WindowManager;
import cx.ring.R;
import cx.ring.application.RingApplication;
@@ -39,6 +41,14 @@
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O_MR1) {
+ setTurnScreenOn(true);
+ setShowWhenLocked(true);
+ } else {
+ getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
+ WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+ }
setContentView(R.layout.tv_activity_call);
// dependency injection