Skip to content

Commit 486b51e

Browse files
front と back のカメラでプレビューのポート番号を変更
Notification で、frontとbackが同時に表示されたときに、front のプレビューしか表示されなかった問題を修正
1 parent e6b74ae commit 486b51e

2 files changed

Lines changed: 40 additions & 18 deletions

File tree

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/recorder/camera/Camera2PreviewServerProvider.java

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -97,17 +97,18 @@ class Camera2PreviewServerProvider extends AbstractPreviewServerProvider {
9797
*
9898
* @param context コンテキスト
9999
* @param recorder レコーダ
100+
* @param num カメラの番号
100101
*/
101-
Camera2PreviewServerProvider(final Context context, final Camera2Recorder recorder) {
102+
Camera2PreviewServerProvider(final Context context, final Camera2Recorder recorder, final int num) {
102103
super(context, recorder, BASE_NOTIFICATION_ID + recorder.getId().hashCode());
103104

104105
mContext = context;
105106
mRecorder = recorder;
106107
mOverlayManager = new OverlayManager(mContext);
107108

108-
addServer(new Camera2MJPEGPreviewServer(context, recorder, 11000, mOnEventListener));
109-
addServer(new Camera2RTSPPreviewServer(context, recorder, 12000, mOnEventListener));
110-
addServer(new Camera2SRTPreviewServer(context, recorder, 13000, mOnEventListener));
109+
addServer(new Camera2MJPEGPreviewServer(context, recorder, 11000 + num, mOnEventListener));
110+
addServer(new Camera2RTSPPreviewServer(context, recorder, 12000 + num, mOnEventListener));
111+
addServer(new Camera2SRTPreviewServer(context, recorder, 13000 + num, mOnEventListener));
111112
}
112113

113114
@Override
@@ -393,7 +394,12 @@ private void unregisterBroadcastReceiver() {
393394
private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {
394395
@Override
395396
public void onReceive(Context context, Intent intent) {
396-
if (intent == null) {
397+
if (intent == null || mRecorder == null) {
398+
return;
399+
}
400+
401+
String cameraId = intent.getStringExtra(EXTRA_CAMERA_ID);
402+
if (!mRecorder.getId().equals(cameraId)) {
397403
return;
398404
}
399405

@@ -414,14 +420,14 @@ public void onReceive(Context context, Intent intent) {
414420
public void onCameraStarted() {
415421
mCameraPreviewFlag = true;
416422

417-
// プレビュー配信が開始されるので、オーバーレイに表示していたカメラを停止します。
418-
try {
419-
mRecorder.stopPreview();
420-
} catch (CameraWrapperException e) {
421-
// ignore.
422-
}
423-
424423
if (mOverlayView != null) {
424+
// プレビュー配信が開始されるので、オーバーレイに表示していたカメラを停止します。
425+
try {
426+
mRecorder.stopPreview();
427+
} catch (CameraWrapperException e) {
428+
// ignore.
429+
}
430+
425431
SurfaceView surfaceView = mOverlayView.findViewById(R.id.surface_view);
426432
mRecorder.setTargetSurface(surfaceView.getHolder().getSurface());
427433
adjustSurfaceView(mRecorder.isSwappedDimensions());

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/recorder/camera/Camera2Recorder.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ public Camera2Recorder(final @NonNull Context context,
208208
requestThread.start();
209209
mRequestHandler = new Handler(requestThread.getLooper());
210210

211-
mCamera2PreviewServerProvider = new Camera2PreviewServerProvider(context, this);
211+
mCamera2PreviewServerProvider = new Camera2PreviewServerProvider(context, this, mFacing.getValue());
212212
}
213213

214214
@Override
@@ -852,26 +852,33 @@ private CameraFacing detectFacing() {
852852
*/
853853
public enum CameraFacing {
854854
/** スマートフォンの裏側. */
855-
BACK("Back"),
855+
BACK("Back", 0),
856856

857857
/** スマートフォンの正面. */
858-
FRONT("Front"),
858+
FRONT("Front", 1),
859859

860860
/** 外部接続. (e.g. OTG 接続されている USB カメラ) */
861-
EXTERNAL("External"),
861+
EXTERNAL("External", 2),
862862

863863
/** 不明. */
864-
UNKNOWN("Unknown");
864+
UNKNOWN("Unknown", -1);
865865

866866
/** カメラの位置を表現する名前. */
867867
private final String mName;
868868

869+
/**
870+
* カメラの番号.
871+
*/
872+
private final int mValue;
873+
869874
/**
870875
* コンストラクタ.
871876
* @param name カメラの位置を表現する名前
877+
* @param value カメラの番号
872878
*/
873-
CameraFacing(final String name) {
879+
CameraFacing(final String name, final int value) {
874880
mName = name;
881+
mValue = value;
875882
}
876883

877884
/**
@@ -881,6 +888,15 @@ public enum CameraFacing {
881888
public String getName() {
882889
return mName;
883890
}
891+
892+
/**
893+
* カメラの番号を取得します.
894+
*
895+
* @return カメラ番号
896+
*/
897+
public int getValue() {
898+
return mValue;
899+
}
884900
}
885901

886902
private LiveStreamingClient mLiveStreamingClient;

0 commit comments

Comments
 (0)