diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index b88ee58..b26650d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -22,10 +22,10 @@
android:requestLegacyExternalStorage="true"
tools:targetApi="30">
photoResultLauncher;
private int picsize = 0;
private com.xypower.mppreview.databinding.ActivityMainBinding viewBinding;
+ private int numberOfCameras;
protected native void test();
@@ -43,7 +56,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- viewBinding = ActivityMainBinding.inflate(getLayoutInflater());
+ viewBinding = com.xypower.mppreview.databinding.ActivityMainBinding.inflate(getLayoutInflater());
setContentView(viewBinding.getRoot());
initView();
initActivityResult();
@@ -85,12 +98,19 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
viewBinding.hdrtakepic.setOnClickListener(this);
viewBinding.systakepic.setOnClickListener(this);
viewBinding.spinner.setOnItemSelectedListener(this);
- viewBinding.channel1.setOnClickListener(this);
- viewBinding.channel2.setOnClickListener(this);
- viewBinding.channel3.setOnClickListener(this);
- viewBinding.channel4.setOnClickListener(this);
- viewBinding.channel5.setOnClickListener(this);
- viewBinding.channel6.setOnClickListener(this);
+// viewBinding.channel1.setOnClickListener(this);
+// viewBinding.channel2.setOnClickListener(this);
+// viewBinding.channel3.setOnClickListener(this);
+// viewBinding.channel4.setOnClickListener(this);
+// viewBinding.channel5.setOnClickListener(this);
+// viewBinding.channel6.setOnClickListener(this);
+ numberOfCameras = CameraUtils.getNumberOfCameras(this);
+ ItemAdapter itemAdapter = new ItemAdapter(numberOfCameras);
+ itemAdapter.setOnClickListener(this);
+ viewBinding.recyclerView.setAdapter(itemAdapter);
+ viewBinding.recyclerView.setLayoutManager(new GridLayoutManager(this,3));
+
+
}
private void initActivityResult() {
@@ -138,28 +158,40 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
case R.id.systakepic:
PhotoUtil.openCamera(this, photoResultLauncher);
break;
- case R.id.channel1:
- openChannelActivity(0);
- break;
- case R.id.channel2:
- openChannelActivity(1);
- break;
- case R.id.channel3:
- openChannelActivity(2);
- break;
- case R.id.channel4:
- openChannelActivity(3);
- break;
- case R.id.channel5:
- openChannelActivity(4);
- break;
- case R.id.channel6:
- openChannelActivity(5);
- break;
+// case R.id.channel1:
+// openChannelActivity(0);
+// break;
+// case R.id.channel2:
+// openChannelActivity(1);
+// break;
+// case R.id.channel3:
+// openChannelActivity(2);
+// break;
+// case R.id.channel4:
+// openChannelActivity(3);
+// break;
+// case R.id.channel5:
+// openChannelActivity(4);
+// break;
+// case R.id.channel6:
+// openChannelActivity(5);
+// break;
}
}
+
+ public static int getNumberOfCameras(Context context) {
+ CameraManager manager = (CameraManager) context.getSystemService(Context.CAMERA_SERVICE);
+ try {
+ String[] cameraIds = manager.getCameraIdList();
+ return cameraIds.length;
+ } catch (CameraAccessException e) {
+ e.printStackTrace();
+ return 0; // 如果发生异常,返回0个摄像头
+ }
+ }
+
public void openChannelActivity(int channel) {
Intent intent = new Intent(this, CameraChannelActivity.class);
intent.putExtra(Contants.CAMERAID, channel);
@@ -176,4 +208,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
public void onNothingSelected(AdapterView> parent) {
}
+
+ @Override
+ public void onItemClick(View v, int position) {
+ openChannelActivity(position);
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/xypower/mppreview/adapter/ItemAdapter.java b/app/src/main/java/com/xypower/mppreview/adapter/ItemAdapter.java
new file mode 100644
index 0000000..b6e1129
--- /dev/null
+++ b/app/src/main/java/com/xypower/mppreview/adapter/ItemAdapter.java
@@ -0,0 +1,69 @@
+package com.xypower.mppreview.adapter;
+
+import android.annotation.SuppressLint;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+import androidx.annotation.NonNull;
+import androidx.recyclerview.widget.RecyclerView;
+
+import com.xypower.mppreview.R;
+import com.xypower.mppreview.interfaces.OnItemClickListener;
+
+import java.util.List;
+
+
+public class ItemAdapter extends RecyclerView.Adapter {
+ private Integer count;
+ public OnItemClickListener listener;
+
+ public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
+ private final TextView title;
+ private OnItemClickListener listeners;
+ public MyViewHolder(View view, OnItemClickListener listener) {
+ super(view);
+ this.listeners = listener;
+ title = view.findViewById(R.id.channel);
+ title.setOnClickListener(this);
+ }
+
+ public TextView getTitle() {
+ return title;
+ }
+
+ @Override
+ public void onClick(View v) {
+ if (listeners != null) {
+ listeners.onItemClick(v, getAdapterPosition());
+ }
+ }
+ }
+
+ public ItemAdapter(Integer itemcount) {
+ this.count = itemcount;
+ }
+
+
+ public void setOnClickListener(OnItemClickListener listener) {
+ this.listener = listener;
+
+ }
+ @NonNull
+ @Override
+ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
+ View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_view, parent, false);
+ return new MyViewHolder(view,listener);
+ }
+
+ @Override
+ public void onBindViewHolder(@NonNull MyViewHolder holder, @SuppressLint("RecyclerView") int position) {
+// Integer item = itemList.get(position);
+ holder.getTitle().setText("通道"+(position+1));
+ }
+
+ @Override
+ public int getItemCount() {
+ return count;
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xypower/mppreview/interfaces/OnItemClickListener.java b/app/src/main/java/com/xypower/mppreview/interfaces/OnItemClickListener.java
new file mode 100644
index 0000000..58f18de
--- /dev/null
+++ b/app/src/main/java/com/xypower/mppreview/interfaces/OnItemClickListener.java
@@ -0,0 +1,8 @@
+package com.xypower.mppreview.interfaces;
+
+import android.view.View;
+
+public interface OnItemClickListener {
+ void onItemClick(View v, int position);
+}
+
diff --git a/app/src/main/java/com/xypower/mppreview/CameraActivity.java b/app/src/main/java/com/xypower/mppreview/ui/CameraActivity.java
similarity index 85%
rename from app/src/main/java/com/xypower/mppreview/CameraActivity.java
rename to app/src/main/java/com/xypower/mppreview/ui/CameraActivity.java
index 46f2c23..3cf580d 100644
--- a/app/src/main/java/com/xypower/mppreview/CameraActivity.java
+++ b/app/src/main/java/com/xypower/mppreview/ui/CameraActivity.java
@@ -1,19 +1,15 @@
-package com.xypower.mppreview;
+package com.xypower.mppreview.ui;
import androidx.appcompat.app.AppCompatActivity;
-import android.content.ComponentCallbacks2;
-import android.content.Context;
import android.content.Intent;
-import android.os.Build;
import android.os.Bundle;
import android.util.Log;
-import android.view.View;
import android.view.Window;
-import android.view.WindowInsets;
-import android.view.WindowInsetsController;
import android.view.WindowManager;
+import com.xypower.mppreview.Camera2RawFragment;
+import com.xypower.mppreview.R;
import com.xypower.mppreview.bean.Contants;
public class CameraActivity extends AppCompatActivity {
diff --git a/app/src/main/java/com/xypower/mppreview/CameraChannelActivity.java b/app/src/main/java/com/xypower/mppreview/ui/CameraChannelActivity.java
similarity index 96%
rename from app/src/main/java/com/xypower/mppreview/CameraChannelActivity.java
rename to app/src/main/java/com/xypower/mppreview/ui/CameraChannelActivity.java
index bad403d..d630259 100644
--- a/app/src/main/java/com/xypower/mppreview/CameraChannelActivity.java
+++ b/app/src/main/java/com/xypower/mppreview/ui/CameraChannelActivity.java
@@ -1,6 +1,4 @@
-package com.xypower.mppreview;
-
-import static android.os.Environment.getExternalStoragePublicDirectory;
+package com.xypower.mppreview.ui;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
@@ -16,19 +14,18 @@ import androidx.core.content.ContextCompat;
import android.net.Uri;
import android.os.Bundle;
-import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.google.common.util.concurrent.ListenableFuture;
+import com.xypower.mppreview.MyAnalyzer;
+import com.xypower.mppreview.R;
import com.xypower.mppreview.bean.Contants;
import com.xypower.mppreview.databinding.ActivityCameraChannelBinding;
import java.io.File;
-import java.io.IOException;
import java.text.SimpleDateFormat;
-import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.concurrent.ExecutorService;
diff --git a/app/src/main/java/com/xypower/mppreview/utils/CameraUtils.java b/app/src/main/java/com/xypower/mppreview/utils/CameraUtils.java
new file mode 100644
index 0000000..1fb2e24
--- /dev/null
+++ b/app/src/main/java/com/xypower/mppreview/utils/CameraUtils.java
@@ -0,0 +1,28 @@
+package com.xypower.mppreview.utils;
+
+import android.content.Context;
+
+import androidx.camera.core.CameraInfo;
+import androidx.camera.lifecycle.ProcessCameraProvider;
+
+import com.google.common.util.concurrent.ListenableFuture;
+
+import java.util.List;
+import java.util.concurrent.ExecutionException;
+
+public class CameraUtils {
+ public static int getNumberOfCameras(Context context) {
+ List availableCameraInfos;
+ ListenableFuture instance = ProcessCameraProvider.getInstance(context);
+ try {
+ ProcessCameraProvider processCameraProvider = instance.get();
+ availableCameraInfos = processCameraProvider.getAvailableCameraInfos();
+ } catch (ExecutionException e) {
+ throw new RuntimeException(e);
+ } catch (InterruptedException e) {
+ throw new RuntimeException(e);
+ }
+ return availableCameraInfos.size();
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/xypower/mppreview/HdrUtil.java b/app/src/main/java/com/xypower/mppreview/utils/HdrUtil.java
similarity index 90%
rename from app/src/main/java/com/xypower/mppreview/HdrUtil.java
rename to app/src/main/java/com/xypower/mppreview/utils/HdrUtil.java
index f769687..05ba556 100644
--- a/app/src/main/java/com/xypower/mppreview/HdrUtil.java
+++ b/app/src/main/java/com/xypower/mppreview/utils/HdrUtil.java
@@ -1,4 +1,4 @@
-package com.xypower.mppreview;
+package com.xypower.mppreview.utils;
import static java.lang.System.loadLibrary;
diff --git a/app/src/main/java/com/xypower/mppreview/PhotoUtil.java b/app/src/main/java/com/xypower/mppreview/utils/PhotoUtil.java
similarity index 99%
rename from app/src/main/java/com/xypower/mppreview/PhotoUtil.java
rename to app/src/main/java/com/xypower/mppreview/utils/PhotoUtil.java
index 0ad39f4..2c5c34c 100644
--- a/app/src/main/java/com/xypower/mppreview/PhotoUtil.java
+++ b/app/src/main/java/com/xypower/mppreview/utils/PhotoUtil.java
@@ -1,4 +1,4 @@
-package com.xypower.mppreview;
+package com.xypower.mppreview.utils;
import android.content.Context;
diff --git a/app/src/main/res/layout/activity_camera.xml b/app/src/main/res/layout/activity_camera.xml
index 4ec324e..46f13df 100644
--- a/app/src/main/res/layout/activity_camera.xml
+++ b/app/src/main/res/layout/activity_camera.xml
@@ -5,7 +5,7 @@
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true"
- tools:context=".CameraActivity">
+ tools:context=".ui.CameraActivity">
+ tools:context=".ui.CameraChannelActivity">
+
+
+
+
+
+
+
+
+
+
+
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toRightOf="parent" />
+
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/item_view.xml b/app/src/main/res/layout/item_view.xml
new file mode 100644
index 0000000..137f1b3
--- /dev/null
+++ b/app/src/main/res/layout/item_view.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file