调整hdr拍照倍数

mem
liuguijing 6 months ago
parent 254ce22206
commit 973d09a93f

@ -58,6 +58,7 @@ import android.view.ViewGroup;
import android.widget.Button; import android.widget.Button;
import android.widget.Toast; import android.widget.Toast;
import com.xypower.mppreview.bean.Contants;
import com.xypower.mppreview.widget.ErrorDialog; import com.xypower.mppreview.widget.ErrorDialog;
import java.io.File; import java.io.File;
@ -140,7 +141,7 @@ public class Camera2RawFragment extends Fragment {
public boolean isHandTakePic = true; public boolean isHandTakePic = true;
private double pic1 = 1; private double pic1 = 0;
/** /**
* {@link TextureView.SurfaceTextureListener} handles several lifecycle events of a * {@link TextureView.SurfaceTextureListener} handles several lifecycle events of a
@ -517,9 +518,11 @@ public class Camera2RawFragment extends Fragment {
@Override @Override
public void onViewCreated(final View view, Bundle savedInstanceState) { public void onViewCreated(final View view, Bundle savedInstanceState) {
mTextureView = (AutoFitTextureView) view.findViewById(R.id.texture); mTextureView = (AutoFitTextureView) view.findViewById(R.id.texture);
Bundle arguments = getArguments();
if (arguments != null) {
pic1 = arguments.getInt(Contants.HDRNUM);
}
mOrientationListener = new OrientationEventListener(getActivity(), SensorManager.SENSOR_DELAY_NORMAL) { mOrientationListener = new OrientationEventListener(getActivity(), SensorManager.SENSOR_DELAY_NORMAL) {
@Override @Override
public void onOrientationChanged(int orientation) { public void onOrientationChanged(int orientation) {
@ -528,7 +531,6 @@ public class Camera2RawFragment extends Fragment {
} }
} }
}; };
Button takepic = view.findViewById(R.id.takepic); Button takepic = view.findViewById(R.id.takepic);
takepic.setOnClickListener(new View.OnClickListener() { takepic.setOnClickListener(new View.OnClickListener() {
@Override @Override
@ -1102,6 +1104,7 @@ public class Camera2RawFragment extends Fragment {
// 设置曝光时间例如设置为1000微秒 // 设置曝光时间例如设置为1000微秒
// long exposureTime = 1000 000000L; // 1000微秒 // long exposureTime = 1000 000000L; // 1000微秒
if (isHandTakePic) { if (isHandTakePic) {
captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF); captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
if (exposureTime > 0) { if (exposureTime > 0) {
v = exposureTime * pic1; v = exposureTime * pic1;
@ -1120,8 +1123,13 @@ public class Camera2RawFragment extends Fragment {
if (isHandTakePic) { if (isHandTakePic) {
captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF); captureBuilder.set(CaptureRequest.CONTROL_AE_MODE, CaptureRequest.CONTROL_AE_MODE_OFF);
if (exposureTime > 0) { if (exposureTime > 0) {
if (pic1 <= 0) {
v = exposureTime * 7; v = exposureTime * 7;
captureBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, (long) v); captureBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, (long) v);
} else {
v = exposureTime * pic1;
captureBuilder.set(CaptureRequest.SENSOR_EXPOSURE_TIME, (long) v);
}
} }
if (sensitivity > 0) { if (sensitivity > 0) {
captureBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, 100); captureBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, 100);

@ -2,6 +2,7 @@ package com.xypower.mppreview;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
@ -10,16 +11,24 @@ import android.view.WindowInsets;
import android.view.WindowInsetsController; import android.view.WindowInsetsController;
import android.view.WindowManager; import android.view.WindowManager;
import com.xypower.mppreview.bean.Contants;
public class CameraActivity extends AppCompatActivity { public class CameraActivity extends AppCompatActivity {
public int intExtra;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE); requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_camera); setContentView(R.layout.activity_camera);
Intent intent = getIntent();
intExtra = intent.getIntExtra(Contants.HDRNUM, 0);
if (null == savedInstanceState) { if (null == savedInstanceState) {
getSupportFragmentManager().beginTransaction().setReorderingAllowed(true).replace(R.id.container, Camera2RawFragment.class, null).commit(); Bundle bundle = new Bundle();
bundle.putInt(Contants.HDRNUM,intExtra);
getSupportFragmentManager().beginTransaction().setReorderingAllowed(true).replace(R.id.container, Camera2RawFragment.class, bundle).commit();
} }
} }
} }

@ -4,7 +4,6 @@ import static com.xypower.mppreview.Camera2RawFragment.makeHdr;
import static com.xypower.mppreview.HdrUtil.generateTimestamp; import static com.xypower.mppreview.HdrUtil.generateTimestamp;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.ImageFormat; import android.graphics.ImageFormat;
import android.hardware.camera2.CameraCharacteristics; import android.hardware.camera2.CameraCharacteristics;
import android.hardware.camera2.CaptureResult; import android.hardware.camera2.CaptureResult;
@ -13,6 +12,8 @@ import android.media.Image;
import android.media.ImageReader; import android.media.ImageReader;
import android.os.Environment; import android.os.Environment;
import com.xypower.mppreview.bean.PngPhotoBean;
import java.io.File; import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.io.IOException; import java.io.IOException;

@ -1,7 +1,5 @@
package com.xypower.mppreview; package com.xypower.mppreview;
import static java.lang.System.loadLibrary;
import androidx.activity.result.ActivityResult; import androidx.activity.result.ActivityResult;
import androidx.activity.result.ActivityResultCallback; import androidx.activity.result.ActivityResultCallback;
import androidx.activity.result.ActivityResultLauncher; import androidx.activity.result.ActivityResultLauncher;
@ -9,29 +7,29 @@ import androidx.activity.result.contract.ActivityResultContracts;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent; import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable; import android.text.Editable;
import android.view.View; import android.view.View;
import android.widget.AdapterView;
import android.widget.Button; import android.widget.Button;
import android.widget.EditText; import android.widget.EditText;
import android.widget.Spinner;
import com.xypower.mppreview.bean.Contants;
public class MainActivity extends AppCompatActivity implements View.OnClickListener { public class MainActivity extends AppCompatActivity implements View.OnClickListener, AdapterView.OnItemSelectedListener {
public static int ExposureComp = 0; public static int ExposureComp = 0;
private EditText hdrnum;
private Button systakepic; private Button systakepic;
private Button hdrtakepic; private Button hdrtakepic;
private ActivityResultLauncher<Intent> photoResultLauncher; private ActivityResultLauncher<Intent> photoResultLauncher;
private int picsize = 0;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); setContentView(R.layout.activity_main);
initView(); initView();
initActivityResult(); initActivityResult();
} }
@ -39,10 +37,10 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
private void initView() { private void initView() {
hdrtakepic = findViewById(R.id.hdrtakepic); hdrtakepic = findViewById(R.id.hdrtakepic);
systakepic = findViewById(R.id.systakepic); systakepic = findViewById(R.id.systakepic);
hdrnum = findViewById(R.id.hdr_num); Spinner spinner = findViewById(R.id.spinner);
hdrtakepic.setOnClickListener(this); hdrtakepic.setOnClickListener(this);
systakepic.setOnClickListener(this); systakepic.setOnClickListener(this);
spinner.setOnItemSelectedListener(this);
} }
private void initActivityResult() { private void initActivityResult() {
@ -85,12 +83,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
switch (id) { switch (id) {
case R.id.hdrtakepic: case R.id.hdrtakepic:
Intent intent = new Intent(this, CameraActivity.class); Intent intent = new Intent(this, CameraActivity.class);
Editable text = hdrnum.getText(); intent.putExtra(Contants.HDRNUM, picsize);
String s = text.toString();
if (s != null && !s.equals("")) {
double v = Double.parseDouble(s);
intent.putExtra("hdrnum", v);
}
startActivity(intent); startActivity(intent);
break; break;
case R.id.systakepic: case R.id.systakepic:
@ -101,4 +94,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
} }
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
picsize = position;
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
} }

@ -0,0 +1,5 @@
package com.xypower.mppreview.bean;
public class Contants {
public static final String HDRNUM = "hdrnum";
}

@ -1,4 +1,4 @@
package com.xypower.mppreview; package com.xypower.mppreview.bean;
public class PngPhotoBean { public class PngPhotoBean {

@ -21,15 +21,7 @@
android:id="@+id/spinner" android:id="@+id/spinner"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/hdrhint" android:entries="@array/size"
app:layout_constraintLeft_toRightOf="@+id/hdrhint"
app:layout_constraintTop_toTopOf="@+id/hdrhint" />
<EditText
android:id="@+id/hdr_num"
android:layout_width="50dp"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="@+id/hdrhint" app:layout_constraintBottom_toBottomOf="@+id/hdrhint"
app:layout_constraintLeft_toRightOf="@+id/hdrhint" app:layout_constraintLeft_toRightOf="@+id/hdrhint"
app:layout_constraintTop_toTopOf="@+id/hdrhint" /> app:layout_constraintTop_toTopOf="@+id/hdrhint" />

@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="size">
<item>默认</item>
<item>X1</item>
<item>X2</item>
<item>X3</item>
<item>X4</item>
<item>X5</item>
<item>X6</item>
<item>X7</item>
<item>X8</item>
<item>X9</item>
<item>X10</item>
<item>X11</item>
<item>X12</item>
<item>X13</item>
<item>X14</item>
<item>X15</item>
<item>X16</item>
<item>X17</item>
<item>X18</item>
<item>X19</item>
<item>X20</item>
</string-array>
</resources>
Loading…
Cancel
Save