You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
MpPreview/app/src/main/java/com/xypower/mppreview/MainActivity.java

244 lines
8.5 KiB
Java

6 months ago
package com.xypower.mppreview;
6 months ago
6 months ago
import static java.lang.System.loadLibrary;
6 months ago
import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher;
import androidx.activity.result.contract.ActivityResultContracts;
6 months ago
import androidx.appcompat.app.AppCompatActivity;
6 months ago
import androidx.core.app.ActivityCompat;
import androidx.recyclerview.widget.GridLayoutManager;
6 months ago
6 months ago
import android.Manifest;
import android.content.Context;
6 months ago
import android.content.Intent;
6 months ago
import android.content.pm.PackageManager;
import android.hardware.camera2.CameraAccessException;
import android.hardware.camera2.CameraManager;
import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkRequest;
6 months ago
import android.os.Bundle;
import android.util.Log;
6 months ago
import android.view.View;
import android.widget.AdapterView;
6 months ago
import android.widget.Button;
import android.widget.Toast;
import com.xypower.mppreview.adapter.ItemAdapter;
import com.xypower.mppreview.interfaces.OnItemClickListener;
import com.xypower.mppreview.ui.CameraActivity;
import com.xypower.mppreview.ui.CameraChannelActivity;
import com.xypower.mppreview.utils.PhotoUtil;
import com.xypower.mppreview.bean.Contants;
import com.xypower.mppreview.utils.CameraUtils;
import com.xypower.mppreview.utils.RouteManager;
6 months ago
6 months ago
import java.io.File;
import java.util.ArrayList;
6 months ago
public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener, OnItemClickListener {
6 months ago
6 months ago
static {
loadLibrary("mppreview");
}
// static {
// if (!OpenCVLoader.initDebug()) {
// Log.e("OpenCV", "Initialization failed");
// } else {
// Log.d("OpenCV", "Initialization succeeded");
// }
// }
6 months ago
private static int MY_PERMISSIONS_REQUEST_FOREGROUND_SERVICE = 100;
6 months ago
public static int ExposureComp = 0;
6 months ago
private Button systakepic;
private Button hdrtakepic;
private ActivityResultLauncher<Intent> photoResultLauncher;
private int picsize = 0;
private com.xypower.mppreview.databinding.ActivityMainBinding viewBinding;
private int numberOfCameras;
6 months ago
6 months ago
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
viewBinding = com.xypower.mppreview.databinding.ActivityMainBinding.inflate(getLayoutInflater());
setContentView(viewBinding.getRoot());
6 months ago
initView();
initActivityResult();
6 months ago
String[] accessPermissions = new String[]{Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.FOREGROUND_SERVICE, Manifest.permission.READ_PHONE_STATE,
/*Manifest.permission.PACKAGE_USAGE_STATS,*/
/*Manifest.permission.SET_TIME,*/};
boolean needRequire = false;
for (String access : accessPermissions) {
int curPermission = ActivityCompat.checkSelfPermission(MainActivity.this, access);
if (curPermission != PackageManager.PERMISSION_GRANTED) {
needRequire = true;
break;
}
}
if (needRequire) {
ActivityCompat.requestPermissions(MainActivity.this, accessPermissions, MY_PERMISSIONS_REQUEST_FOREGROUND_SERVICE);
// return;
}
File file = this.getFilesDir();
String path = "/sdcard/com.xypower.mppreview/";
file = new File(path);
if (!file.exists()) {
file.mkdirs();
}
6 months ago
}
private void initView() {
viewBinding.hdrtakepic.setOnClickListener(this);
viewBinding.systakepic.setOnClickListener(this);
viewBinding.spinner.setOnItemSelectedListener(this);
numberOfCameras = CameraUtils.getNumberOfCameras(this);
ItemAdapter itemAdapter = new ItemAdapter(numberOfCameras);
itemAdapter.setOnClickListener(this);
viewBinding.recyclerView.setAdapter(itemAdapter);
viewBinding.recyclerView.setLayoutManager(new GridLayoutManager(this,3));
// initNetWork();
}
private void initNetWork() {
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
super.onAvailable(network);
NetworkCapabilities capabilities = connectivityManager.getNetworkCapabilities(network);
if (capabilities != null && capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET)) {
Log.d("NetworkCallback", "Ethernet connected");
// 以太网已连接
viewBinding.hdrhint.setText("已连接");
// RouteManager.addRoute("192.168.68.0/24", "eth0");
}
}
@Override
public void onLost(Network network) {
super.onLost(network);
Log.d("NetworkCallback", "Network lost");
// 网络断开
viewBinding.hdrhint.setText("已断开");
}
};
NetworkRequest request = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_ETHERNET)
.build();
connectivityManager.registerNetworkCallback(request, networkCallback);
6 months ago
}
private void initActivityResult() {
photoResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
@Override
public void onActivityResult(ActivityResult result) {
}
});
6 months ago
}
@Override
protected void onResume() {
super.onResume();
// if (OpenCVLoader.initDebug()) {
// Log.d("dfsdfd", "成功");
// } else {
// Log.d("dfsdfd", "失败");
// }
6 months ago
}
private void restartFragment() {
6 months ago
getSupportFragmentManager().beginTransaction().replace(R.id.container, Camera2RawFragment.newInstance()).commit();
6 months ago
}
private void doFocus() {
6 months ago
Camera2RawFragment fragment = (Camera2RawFragment) getSupportFragmentManager().findFragmentById(R.id.container);
6 months ago
fragment.doFocus();
}
private void takePicture() {
6 months ago
Camera2RawFragment fragment = (Camera2RawFragment) getSupportFragmentManager().findFragmentById(R.id.container);
6 months ago
fragment.takePicture();
}
6 months ago
@Override
public void onClick(View view) {
int id = view.getId();
switch (id) {
case R.id.hdrtakepic:
Intent intent = new Intent(this, CameraActivity.class);
intent.putExtra(Contants.HDRNUM, picsize);
6 months ago
startActivity(intent);
break;
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;
6 months ago
}
}
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);
startActivity(intent);
}
6 months ago
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
picsize = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
@Override
public void onItemClick(View v, int position) {
openChannelActivity(position);
}
6 months ago
}