Skip to content

Commit 934debd

Browse files
Merge pull request #573 from TakayukiHoshi1984/modify_external_camera
外部カメラ対応
2 parents 4ea247a + cb97393 commit 934debd

8 files changed

Lines changed: 52 additions & 11 deletions

File tree

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/activity/recorder/settings/SettingsAudioFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class SettingsAudioFragment extends SettingsParameterFragment {
1717

1818
@Override
1919
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
20-
getPreferenceManager().setSharedPreferencesName(getRecorderId());
20+
getPreferenceManager().setSharedPreferencesName(getRecorderId().replaceAll("/", "_"));
2121
setPreferencesFromResource(R.xml.settings_host_recorder_audio, rootKey);
2222
}
2323

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/activity/recorder/settings/SettingsBroadcastFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class SettingsBroadcastFragment extends SettingsBaseFragment {
88

99
@Override
1010
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
11-
getPreferenceManager().setSharedPreferencesName(getRecorderId());
11+
getPreferenceManager().setSharedPreferencesName(getRecorderId().replaceAll("/", "_"));
1212
setPreferencesFromResource(R.xml.settings_host_recorder_broadcast, rootKey);
1313
}
1414

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/activity/recorder/settings/SettingsPortFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
public class SettingsPortFragment extends SettingsBaseFragment {
88
@Override
99
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
10-
getPreferenceManager().setSharedPreferencesName(getRecorderId());
10+
getPreferenceManager().setSharedPreferencesName(getRecorderId().replaceAll("/", "_"));
1111
setPreferencesFromResource(R.xml.settings_host_recorder_port, rootKey);
1212
}
1313

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/activity/recorder/settings/SettingsVideoFragment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ public class SettingsVideoFragment extends SettingsParameterFragment {
3535

3636
@Override
3737
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
38-
getPreferenceManager().setSharedPreferencesName(getRecorderId());
38+
getPreferenceManager().setSharedPreferencesName(getRecorderId().replaceAll("/", "_"));
3939
setPreferencesFromResource(R.xml.settings_host_recorder_video, rootKey);
4040
}
4141

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ private static boolean availableCapability(final CameraManager cameraManager, fi
115115
}
116116
}
117117
}
118-
} catch (CameraAccessException e) {
118+
} catch (IllegalArgumentException | CameraAccessException e) {
119119
// ignore.
120120
}
121121
return false;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ abstract class Settings {
463463
private final PropertyUtil mPref;
464464

465465
public Settings(Context context, HostMediaRecorder recorder) {
466-
mPref = new PropertyUtil(context, recorder.getId());
466+
mPref = new PropertyUtil(context, recorder.getId().replaceAll("/", "_"));
467467
}
468468

469469
/**

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,14 @@ public void destroy() {
318318
mCameraWrapperManager.destroy();
319319
}
320320

321+
/**
322+
* 端末が対応しているレコーダを読み込みし直す
323+
*/
324+
public void reloadRecorders() {
325+
destroy();
326+
mRecorders.clear();
327+
initRecorders();
328+
}
321329
/**
322330
* 指定されたレコーダが使用できるか確認します.
323331
*

dConnectDevicePlugin/dConnectDeviceHost/app/src/main/java/org/deviceconnect/android/deviceplugin/host/recorder/screen/ScreenCastRecorder.java

Lines changed: 38 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import android.annotation.TargetApi;
1212
import android.content.Context;
1313
import android.graphics.Bitmap;
14+
import android.graphics.Insets;
1415
import android.graphics.PixelFormat;
1516
import android.media.ImageReader;
1617
import android.os.Build;
@@ -19,8 +20,11 @@
1920
import android.util.DisplayMetrics;
2021
import android.util.Range;
2122
import android.util.Size;
23+
import android.view.Display;
2224
import android.view.Surface;
25+
import android.view.WindowInsets;
2326
import android.view.WindowManager;
27+
import android.view.WindowMetrics;
2428

2529
import androidx.annotation.NonNull;
2630

@@ -96,7 +100,6 @@ private void initSupportedSettings() {
96100
Size maxSize = CapabilityUtil.getSupportedMaxSize("video/avc");
97101

98102
Size originalSize = getDisplaySize();
99-
100103
List<Size> supportPictureSizes = new ArrayList<>();
101104
List<Size> supportPreviewSizes = new ArrayList<>();
102105
final int num = 4;
@@ -171,10 +174,40 @@ private Size getDisplaySize() {
171174
isSwap = true;
172175
break;
173176
}
174-
// 画面が回転している場合には、縦横をスワップしておく。
175-
int width = isSwap ? metrics.heightPixels : metrics.widthPixels;
176-
int height = isSwap ? metrics.widthPixels : metrics.heightPixels;
177-
return new Size(width, height);
177+
int insetsWidth = 0;
178+
int insetsHeight = 0;
179+
Size displaySize;
180+
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
181+
WindowMetrics windowMetrics = wm.getCurrentWindowMetrics();
182+
final WindowInsets windowInsets = windowMetrics.getWindowInsets();
183+
Insets insets = windowInsets.getInsetsIgnoringVisibility(WindowInsets.Type.navigationBars()
184+
| WindowInsets.Type.displayCutout());
185+
186+
int width = isSwap ? windowMetrics.getBounds().height() :windowMetrics.getBounds().width();
187+
int height = isSwap ? windowMetrics.getBounds().width() :windowMetrics.getBounds().height();
188+
insetsWidth = insets.right + insets.left;
189+
insetsHeight = insets.top + insets.bottom;
190+
191+
// Legacy size that Display#getSize reports
192+
displaySize = new Size(width - insetsWidth,
193+
height - insetsHeight);
194+
} else {
195+
// 画面が回転している場合には、縦横をスワップしておく。
196+
int width = isSwap ? metrics.heightPixels : metrics.widthPixels;
197+
int height = isSwap ? metrics.widthPixels : metrics.heightPixels;
198+
displaySize = new Size(width, height);
199+
}
200+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
201+
Display.Mode[] modes = wm.getDefaultDisplay().getSupportedModes();
202+
if(modes.length > 0){
203+
Display.Mode mode = modes[modes.length - 1];
204+
int width = isSwap ? mode.getPhysicalHeight() : mode.getPhysicalWidth();
205+
int height = isSwap ? mode.getPhysicalWidth() : mode.getPhysicalHeight();
206+
// 4Kサイズの解像度がある場合はそちらを優先する
207+
displaySize = new Size(width - insetsWidth, height - insetsHeight);
208+
}
209+
}
210+
return displaySize;
178211
}
179212

180213
@Override

0 commit comments

Comments
 (0)