package com.xypower.mppreview; import static java.lang.System.loadLibrary; import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.contract.ActivityResultContracts; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import android.Manifest; import android.content.Intent; import android.content.pm.PackageManager; import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.Button; import com.xypower.mppreview.bean.Contants; import com.xypower.mppreview.databinding.ActivityMainBinding; import java.io.File; public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener { static { loadLibrary("mppreview"); } private static int MY_PERMISSIONS_REQUEST_FOREGROUND_SERVICE = 100; public static int ExposureComp = 0; private Button systakepic; private Button hdrtakepic; private ActivityResultLauncher photoResultLauncher; private int picsize = 0; private com.xypower.mppreview.databinding.ActivityMainBinding viewBinding; protected native void test(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); viewBinding = ActivityMainBinding.inflate(getLayoutInflater()); setContentView(viewBinding.getRoot()); initView(); initActivityResult(); 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(); } new Thread(new Runnable() { @Override public void run() { test(); } }).start(); } private void initView() { 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); } private void initActivityResult() { photoResultLauncher = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback() { @Override public void onActivityResult(ActivityResult result) { } }); } @Override protected void onResume() { super.onResume(); // if (OpenCVLoader.initDebug()) { // Log.d("dfsdfd", "成功"); // } else { // Log.d("dfsdfd", "失败"); // } } private void restartFragment() { getSupportFragmentManager().beginTransaction().replace(R.id.container, Camera2RawFragment.newInstance()).commit(); } private void doFocus() { Camera2RawFragment fragment = (Camera2RawFragment) getSupportFragmentManager().findFragmentById(R.id.container); fragment.doFocus(); } private void takePicture() { Camera2RawFragment fragment = (Camera2RawFragment) getSupportFragmentManager().findFragmentById(R.id.container); fragment.takePicture(); } @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); 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; } } public void openChannelActivity(int channel) { Intent intent = new Intent(this, CameraChannelActivity.class); intent.putExtra(Contants.CAMERAID, channel); startActivity(intent); } @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { picsize = position; } @Override public void onNothingSelected(AdapterView parent) { } }