Skip to content
Snippets Groups Projects
Commit 6a7183c3 authored by Pierre Duchemin's avatar Pierre Duchemin
Browse files

tv: fix camera detection

now using api introduced in sdk 21

Change-Id: Ic78d55de96f020d110d1664bb1f536af9b6edf1a
parent c1158499
No related branches found
No related tags found
No related merge requests found
......@@ -30,7 +30,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.database.ContentObserver;
import android.hardware.usb.UsbManager;
import android.net.ConnectivityManager;
import android.os.Build;
import android.os.Bundle;
......@@ -62,7 +61,6 @@ import cx.ring.client.ConversationActivity;
import cx.ring.facades.ConversationFacade;
import cx.ring.model.Codec;
import cx.ring.model.Settings;
import cx.ring.model.SipCall;
import cx.ring.model.Uri;
import cx.ring.services.AccountService;
import cx.ring.services.CallService;
......@@ -534,11 +532,6 @@ public class DRingService extends Service {
updateConnectivityState();
break;
}
case UsbManager.ACTION_USB_DEVICE_ATTACHED:
case UsbManager.ACTION_USB_DEVICE_DETACHED: {
mHardwareService.initVideo();
break;
}
case PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED: {
mConnectivityChecker.run();
mHandler.postDelayed(mConnectivityChecker, 100);
......@@ -546,7 +539,6 @@ public class DRingService extends Service {
}
}
};
@Override
public void onCreate() {
Log.i(TAG, "onCreated");
......@@ -565,8 +557,6 @@ public class DRingService extends Service {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
intentFilter.addAction(PowerManager.ACTION_DEVICE_IDLE_MODE_CHANGED);
}
intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_ATTACHED);
intentFilter.addAction(UsbManager.ACTION_USB_DEVICE_DETACHED);
registerReceiver(receiver, intentFilter);
updateConnectivityState();
......@@ -585,6 +575,7 @@ public class DRingService extends Service {
unregisterReceiver(receiver);
getContentResolver().unregisterContentObserver(contactContentObserver);
mHardwareService.unregisterCameraDetectionCallback();
mDisposableBag.clear();
isRunning = false;
}
......
......@@ -94,6 +94,21 @@ public class CameraService {
private MediaProjection currentMediaProjection;
private VirtualDisplay virtualDisplay;
private MediaCodec currentCodec;
private final CameraManager.AvailabilityCallback availabilityCallback = new CameraManager.AvailabilityCallback() {
@Override
public void onCameraAvailable(@NonNull String cameraId) {
init()
.onErrorComplete()
.subscribe();
}
@Override
public void onCameraUnavailable(@NonNull String cameraId) {
init()
.onErrorComplete()
.subscribe();
}
};
CameraService(@NonNull Context c) {
manager = (CameraManager) c.getSystemService(Context.CAMERA_SERVICE);
......@@ -368,6 +383,7 @@ public class CameraService {
})
.ignoreElement()
.doOnError(e -> Log.e(TAG, "Error initializing video device", e))
.doOnComplete(() -> manager.registerAvailabilityCallback(availabilityCallback, getVideoHandler()))
.onErrorComplete();
}
......@@ -938,4 +954,9 @@ public class CameraService {
(long) rhs.getWidth() * rhs.getHeight());
}
}
public void unregisterCameraDetectionCallback() {
if (manager != null && availabilityCallback != null)
manager.unregisterAvailabilityCallback(availabilityCallback);
}
}
......@@ -24,6 +24,7 @@ import android.bluetooth.BluetoothHeadset;
import android.content.Context;
import android.content.pm.PackageManager;
import android.graphics.Point;
import android.hardware.camera2.CameraManager;
import android.media.AudioDeviceInfo;
import android.media.AudioManager;
import android.media.MediaRecorder;
......@@ -33,10 +34,11 @@ import android.view.SurfaceHolder;
import android.view.TextureView;
import android.view.WindowManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.media.AudioAttributesCompat;
import androidx.media.AudioManagerCompat;
import androidx.media.AudioFocusRequestCompat;
import androidx.media.AudioManagerCompat;
import java.io.File;
import java.lang.ref.WeakReference;
......@@ -741,4 +743,9 @@ public class HardwareServiceImpl extends HardwareService implements AudioManager
int w, h;
long window = 0;
}
@Override
public void unregisterCameraDetectionCallback() {
cameraService.unregisterCameraDetectionCallback();
}
}
......@@ -161,6 +161,8 @@ public abstract class HardwareService {
public abstract boolean shouldPlaySpeaker();
public abstract void unregisterCameraDetectionCallback();
public void connectivityChanged(boolean isConnected) {
Log.i(TAG, "connectivityChange() " + isConnected);
connectivityEvents.onNext(isConnected);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment