zcq2qX9+INBD%1`4zN*@62m$G-iTJluziZobuQ5_Am=bUTrf@ox=F^=|Ep~G0+D*-0
zu%K>hQu4N2r*U`;Cd6ZD++RfLrhv#jk3g>l>sq
zD0x*%wT;~-;7-yLOYc7UB^!aNoI5~oh@uomB(SzwUlcxGCz_V>MXhryEg|N^p}~l42KzFxL{VLdi$3S%cln9CIN6=02ERV
z_y4Iuu?dP
5mln!gKW~%(&K!EWuHN#+fYPAob3)34P&OL
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 physicalIds) {
+ public Camera(String id, boolean isFront, float focalLength, float aperture, SizeF sensorSize, double angleOfView, int[] aeModes, boolean flashSupported, Size[] rawSizes, Size[] jpegSizes, Size[] yuvSizes, String supportedHardwareLevel, Set physicalIds) {
this.id = id;
this.focalLength = focalLength;
this.aperture = aperture;
@@ -36,6 +38,8 @@ public Camera(String id, boolean isFront, float focalLength, float aperture, Siz
this.aeModes = aeModes;
this.flashSupported = flashSupported;
this.rawSizes = rawSizes;
+ this.jpegSizes = jpegSizes;
+ this.yuvSizes = yuvSizes;
this.supportedHardwareLevel = supportedHardwareLevel;
this.isFront = isFront;
this.physicalIds = physicalIds;
@@ -96,6 +100,14 @@ public Size[] getRawSizes() {
return rawSizes;
}
+ public Size[] getJpegSizes() {
+ return jpegSizes;
+ }
+
+ public Size[] getYUVSizes() {
+ return yuvSizes;
+ }
+
public SizeF getSensorSize() {
return sensorSize;
}
@@ -115,6 +127,8 @@ public boolean isTypeNotSet() {
@NonNull
public String toString() {
return "" + type + (isFront ? "FRONT" : "BACK") + " " + "ID" + '[' + id + "] " + name + (physicalIds.isEmpty() ? "" : " = ID" + '[' + physicalIds.toString().replace(", ", " + ") + ']') +
+ "\n\t\t\t" +
+ "SupportedHardwareLevel = " + supportedHardwareLevel +
"\n\t\t\t" +
"FocalLength = " + focalLength +
"\n\t\t\t" +
@@ -130,7 +144,16 @@ public String toString() {
"\n\t\t\t" +
"RAW_SENSOR sizes = " + Arrays.toString(rawSizes) +
"\n\t\t\t" +
- "SupportedHardwareLevel = " + supportedHardwareLevel +
+ "\n_______________\n" +
+ "YUV_420_888 sizes = " + Arrays.deepToString(yuvSizes) +
+ "\n\t\t\t" +
+ "\n_______________\n" +
+ "JPEG sizes = " + Arrays.toString(jpegSizes) +
+ "\n\n" +
+ "\n\t\t\t" +
+ "\n\t\t\t" +
+ "\n===============\n" +
+ "\n\t\t\t" +
"\n\n"
;
}
diff --git a/app/src/main/java/com/vibhorsrv/cameraids/CamerasFinder.java b/app/src/main/java/com/rakin/vibhorcameraids/CamerasFinder.java
similarity index 89%
rename from app/src/main/java/com/vibhorsrv/cameraids/CamerasFinder.java
rename to app/src/main/java/com/rakin/vibhorcameraids/CamerasFinder.java
index 1fe61ce..c84ed07 100644
--- a/app/src/main/java/com/vibhorsrv/cameraids/CamerasFinder.java
+++ b/app/src/main/java/com/rakin/vibhorcameraids/CamerasFinder.java
@@ -1,4 +1,4 @@
-package com.vibhorsrv.cameraids;
+package com.rakin.vibhorcameraids;
import android.graphics.ImageFormat;
import android.hardware.camera2.CameraAccessException;
@@ -13,6 +13,7 @@
/**
* Created by Vibhor on 23/09/2020
+ * Modified by Rakin on 27/09/2020
*/
public class CamerasFinder {
private final Map map = new LinkedHashMap<>();
@@ -42,6 +43,8 @@ private void scanAllCameras(CameraManager cameraManager) {
cameraCharacteristics.get(CameraCharacteristics.CONTROL_AE_AVAILABLE_MODES),
cameraCharacteristics.get(CameraCharacteristics.FLASH_INFO_AVAILABLE),
getRawSizes(cameraCharacteristics),
+ getJpegSizes(cameraCharacteristics),
+ getYUVSizes(cameraCharacteristics),
getSupportedHWlevel(cameraCharacteristics),
cameraCharacteristics.getPhysicalCameraIds()
);
@@ -160,15 +163,27 @@ private Size[] getRawSizes(CameraCharacteristics cameraCharacteristics) {
}
+ private Size[] getYUVSizes(CameraCharacteristics cameraCharacteristics) {
+ StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
+ return streamConfigurationMap.getOutputSizes(ImageFormat.YUV_420_888);
+
+ }
+
+ private Size[] getJpegSizes(CameraCharacteristics cameraCharacteristics) {
+ StreamConfigurationMap streamConfigurationMap = cameraCharacteristics.get(CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP);
+ return streamConfigurationMap.getOutputSizes(ImageFormat.JPEG);
+
+ }
+
private String getSupportedHWlevel(CameraCharacteristics cameraCharacteristics) {
return hwLevelName(cameraCharacteristics.get(CameraCharacteristics.INFO_SUPPORTED_HARDWARE_LEVEL));
}
private String hwLevelName(int level) {
- return level == 0 ? "LIMITED"
- : level == 1 ? "FULL"
- : level == 2 ? "LEGACY"
- : level == 3 ? "3"
+ return level == 0 ? "LIMITED COMPATIBILITY"
+ : level == 1 ? "FULL\n\t\t\t (GCAM COMPATIBLE)"
+ : level == 2 ? "LEGACY \n\t\t\t (GCAM INCOMPATIBLE)"
+ : level == 3 ? "LEVEL3 \n\t\t\t (BEST GCAM COMPATIBILITY)"
: level == 4 ? "EXTERNAL"
: "";
}
@@ -192,7 +207,7 @@ private void setFileName(String mFileName) {
public String getResultString() {
StringBuilder sb = new StringBuilder();
sb.append(Build.BRAND).append(", ").append(Build.MODEL).append(", ").append(Build.MANUFACTURER).append(", ").append(Build.DEVICE);
- setFileName("CameraIDs-".concat(sb.toString().replace(", ", "-")));
+ setFileName("CameraHW-".concat(sb.toString().replace(", ", "-")));
sb.append("\n\n");
sb.append("Android ").append(Build.VERSION.RELEASE).append(" - ").append(System.getProperty("os.version"));
sb.append("\n");
@@ -200,7 +215,7 @@ public String getResultString() {
scanAllCameras(mCameraManager);
try {
sb.append("\n===============\n");
- sb.append("\nCamera IDs visible to Apps = ");
+ sb.append("\nCamera IDs visible to Normal Apps = ");
sb.append(Arrays.toString(mCameraManager.getCameraIdList()));
sb.append("\n\n===============\n");
sb.append("All Cameras IDs = ").append(map.keySet()).append("\n");
diff --git a/app/src/main/java/com/vibhorsrv/cameraids/MainActivity.java b/app/src/main/java/com/rakin/vibhorcameraids/MainActivity.java
similarity index 98%
rename from app/src/main/java/com/vibhorsrv/cameraids/MainActivity.java
rename to app/src/main/java/com/rakin/vibhorcameraids/MainActivity.java
index 11e1864..e5d747a 100644
--- a/app/src/main/java/com/vibhorsrv/cameraids/MainActivity.java
+++ b/app/src/main/java/com/rakin/vibhorcameraids/MainActivity.java
@@ -1,4 +1,4 @@
-package com.vibhorsrv.cameraids;
+package com.rakin.vibhorcameraids;
import android.content.Context;
import android.content.Intent;
diff --git a/app/src/main/res/drawable/ic_baseline_info_24.xml b/app/src/main/res/drawable/ic_baseline_info_24.xml
index 654cfb3..0f51c30 100644
--- a/app/src/main/res/drawable/ic_baseline_info_24.xml
+++ b/app/src/main/res/drawable/ic_baseline_info_24.xml
@@ -1,4 +1,4 @@
-
diff --git a/app/src/main/res/drawable/ic_baseline_share_24.xml b/app/src/main/res/drawable/ic_baseline_share_24.xml
index 8540a71..5f66350 100644
--- a/app/src/main/res/drawable/ic_baseline_share_24.xml
+++ b/app/src/main/res/drawable/ic_baseline_share_24.xml
@@ -1,6 +1,6 @@
diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml
index b212008..c86642e 100644
--- a/app/src/main/res/drawable/ic_launcher_foreground.xml
+++ b/app/src/main/res/drawable/ic_launcher_foreground.xml
@@ -2,14 +2,19 @@
android:width="108dp"
android:height="108dp"
android:viewportWidth="108"
- android:viewportHeight="108">
-
+ android:viewportHeight="108"
+ android:tint="#D8DCD9">
+
+ android:fillColor="@android:color/white"
+ android:pathData="M14.12,4H9.88L8.05,6H4v12h16V6h-4.05l-1.83,-2zM12,17c-2.76,0 -5,-2.24 -5,-5s2.24,-5 5,-5 5,2.24 5,5 -2.24,5 -5,5z"
+ android:strokeAlpha="0.3"
+ android:fillAlpha="0.3"/>
+
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index fd3c85a..71a6541 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -9,6 +9,7 @@
@@ -18,11 +19,12 @@
android:id="@+id/textView"
android:layout_marginTop="15dp"
android:textSize="15sp"
- android:textColor="@android:color/black"
+ android:textColor="@android:color/primary_text_dark"
android:padding="10dp"
android:layout_gravity="fill"
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
+ android:background="@color/background"
tools:text="TextView"
/>
@@ -31,11 +33,11 @@
android:id="@+id/share"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_gravity="bottom|end"
+ android:layout_gravity="top|end"
android:enabled="true"
android:focusable="true"
- android:layout_margin="50dp"
- app:backgroundTint="@color/colorPrimary"
+ android:layout_margin="20dp"
+ app:backgroundTint="#ffffff"
android:src="@drawable/ic_baseline_share_24"
/>
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 3848c375ff8eb2a9006bd8b64cd0a2767eec3d76..d5166b7f21f536eb567a01baaa6134dd0f1ecd1c 100644
GIT binary patch
delta 1205
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