增加通道拍照参数的设置
parent
daddd080cc
commit
c409a806d4
@ -0,0 +1,222 @@
|
|||||||
|
package com.xypower.mpapp;
|
||||||
|
|
||||||
|
import androidx.appcompat.app.AppCompatActivity;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.view.MenuItem;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
import androidx.appcompat.app.ActionBar;
|
||||||
|
|
||||||
|
import com.xypower.mpapp.databinding.ActivityChannelBinding;
|
||||||
|
|
||||||
|
import org.json.JSONException;
|
||||||
|
import org.json.JSONObject;
|
||||||
|
|
||||||
|
import java.io.BufferedReader;
|
||||||
|
import java.io.File;
|
||||||
|
import java.io.FileInputStream;
|
||||||
|
import java.io.FileOutputStream;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStreamReader;
|
||||||
|
import java.io.OutputStreamWriter;
|
||||||
|
import java.io.UnsupportedEncodingException;
|
||||||
|
import android.widget.AdapterView;
|
||||||
|
|
||||||
|
public class ChannelActivity extends AppCompatActivity {
|
||||||
|
|
||||||
|
private ActivityChannelBinding binding;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
binding = ActivityChannelBinding.inflate(getLayoutInflater());
|
||||||
|
setContentView(binding.getRoot());
|
||||||
|
|
||||||
|
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
|
||||||
|
|
||||||
|
|
||||||
|
binding.sensitivity.setOnFocusChangeListener(onFocusChangeListener);
|
||||||
|
binding.exposuretime.setOnFocusChangeListener(onFocusChangeListener);
|
||||||
|
|
||||||
|
int channel = binding.channels.getSelectedItemPosition();
|
||||||
|
loadChannelParams(channel);
|
||||||
|
|
||||||
|
binding.channels.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
|
||||||
|
int channel = i + 1;
|
||||||
|
loadChannelParams(channel);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNothingSelected(AdapterView<?> adapterView) {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
binding.btnSave.setOnClickListener(new View.OnClickListener() {
|
||||||
|
@Override
|
||||||
|
public void onClick(View v) {
|
||||||
|
int channel = binding.channels.getSelectedItemPosition() + 1;
|
||||||
|
saveChannelParams(channel);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private View.OnFocusChangeListener onFocusChangeListener = new View.OnFocusChangeListener() {
|
||||||
|
@Override
|
||||||
|
public void onFocusChange(View view, boolean b) {
|
||||||
|
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
|
||||||
|
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
|
switch (item.getItemId()) {
|
||||||
|
case android.R.id.home:
|
||||||
|
// todo: goto back activity from here
|
||||||
|
|
||||||
|
finish();
|
||||||
|
return true;
|
||||||
|
|
||||||
|
default:
|
||||||
|
return super.onOptionsItemSelected(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void loadChannelParams(int channel) {
|
||||||
|
|
||||||
|
binding.btnAutoExplosure.setChecked(true);
|
||||||
|
binding.btnAutoFocus.setChecked(true);
|
||||||
|
binding.btnHdrMode.setChecked(true);
|
||||||
|
binding.exposuretime.setText("0");
|
||||||
|
binding.sensitivity.setText("0");
|
||||||
|
|
||||||
|
String appPath = MicroPhotoService.buildAppDir(getApplicationContext());
|
||||||
|
|
||||||
|
InputStreamReader inputStreamReader = null;
|
||||||
|
BufferedReader bufferedReader = null;
|
||||||
|
try {
|
||||||
|
inputStreamReader = new InputStreamReader(new FileInputStream(new File(appPath + "data/channels/" + String.valueOf(channel) + ".json")), "UTF-8");
|
||||||
|
bufferedReader = new BufferedReader(inputStreamReader);
|
||||||
|
String line;
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
while ((line = bufferedReader.readLine()) != null) {
|
||||||
|
stringBuilder.append(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
JSONObject jsonObject = new JSONObject(stringBuilder.toString());
|
||||||
|
binding.btnAutoExplosure.setChecked(jsonObject.optInt("autoExposure", 1) == 1);
|
||||||
|
binding.btnAutoFocus.setChecked(jsonObject.optInt("autoFocus", 1) == 1);
|
||||||
|
binding.btnHdrMode.setChecked(jsonObject.optInt("hdr", 1) == 1);
|
||||||
|
binding.exposuretime.setText(Integer.toString(jsonObject.optInt("exposureTime", 0)));
|
||||||
|
binding.sensitivity.setText(Integer.toString(jsonObject.optInt("sensibility", 0)));
|
||||||
|
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (bufferedReader != null) {
|
||||||
|
try {
|
||||||
|
bufferedReader.close();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (inputStreamReader != null) {
|
||||||
|
try {
|
||||||
|
inputStreamReader.close();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void saveChannelParams(int channel) {
|
||||||
|
|
||||||
|
JSONObject jsonObject = null;
|
||||||
|
String appPath = MicroPhotoService.buildAppDir(this.getApplicationContext());
|
||||||
|
InputStreamReader inputStreamReader = null;
|
||||||
|
BufferedReader bufferedReader = null;
|
||||||
|
File dataPath = new File(appPath + "data/channels/");
|
||||||
|
File file = new File(dataPath, String.valueOf(channel) + ".json");
|
||||||
|
|
||||||
|
try {
|
||||||
|
StringBuilder stringBuilder = new StringBuilder();
|
||||||
|
|
||||||
|
if (file.exists()) {
|
||||||
|
inputStreamReader = new InputStreamReader(new FileInputStream(file), "UTF-8");
|
||||||
|
bufferedReader = new BufferedReader(inputStreamReader);
|
||||||
|
String line;
|
||||||
|
|
||||||
|
while ((line = bufferedReader.readLine()) != null) {
|
||||||
|
stringBuilder.append(line);
|
||||||
|
}
|
||||||
|
|
||||||
|
jsonObject =stringBuilder.length() > 0 ? (new JSONObject(stringBuilder.toString())) : (new JSONObject());
|
||||||
|
}
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (JSONException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (bufferedReader != null) {
|
||||||
|
try {
|
||||||
|
bufferedReader.close();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (inputStreamReader != null) {
|
||||||
|
try {
|
||||||
|
inputStreamReader.close();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (jsonObject == null) {
|
||||||
|
jsonObject = new JSONObject();
|
||||||
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
|
jsonObject.put("autoExposure", binding.btnAutoExplosure.isChecked() ? 1 : 0);
|
||||||
|
jsonObject.put("autoFocus", binding.btnAutoFocus.isChecked() ? 1 : 0);
|
||||||
|
jsonObject.put("hdrMode", binding.btnHdrMode.isChecked() ? 1 : 0);
|
||||||
|
jsonObject.put("exposureTime", Integer.parseInt(binding.exposuretime.getText().toString()));
|
||||||
|
jsonObject.put("sensibility", Integer.parseInt(binding.sensitivity.getText().toString()));
|
||||||
|
} catch (JSONException ex) {
|
||||||
|
|
||||||
|
}
|
||||||
|
OutputStreamWriter outputStreamWriter = null;
|
||||||
|
try {
|
||||||
|
if (!dataPath.exists()) {
|
||||||
|
dataPath.mkdirs();
|
||||||
|
}
|
||||||
|
|
||||||
|
outputStreamWriter = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");
|
||||||
|
outputStreamWriter.write(jsonObject.toString());
|
||||||
|
} catch (UnsupportedEncodingException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} catch (IOException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
} finally {
|
||||||
|
if (outputStreamWriter != null) {
|
||||||
|
try {
|
||||||
|
outputStreamWriter.close();
|
||||||
|
} catch (Exception ex) {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,105 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||||
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
tools:context=".ChannelActivity">
|
||||||
|
|
||||||
|
<Spinner
|
||||||
|
android:id="@+id/channels"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
style="@style/Widget.AppCompat.Spinner.Underlined"
|
||||||
|
android:entries="@array/channels"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="12dp"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
<Button
|
||||||
|
android:id="@+id/btnSave"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:text="保存"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/channels"
|
||||||
|
app:layout_constraintTop_toTopOf="parent" />
|
||||||
|
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
android:id="@+id/btnAutoExplosure"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:text="自动曝光"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
android:id="@+id/btnAutoFocus"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:text="自动对焦"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/btnAutoExplosure"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
|
||||||
|
|
||||||
|
<Switch
|
||||||
|
android:id="@+id/btnHdrMode"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
android:text="HDR"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/btnAutoFocus"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/btnSave" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewExplosure"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="曝光时间(ms)"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
app:layout_constraintStart_toStartOf="parent"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/exposuretime"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/exposuretime" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/exposuretime"
|
||||||
|
android:layout_width="120dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ems="10"
|
||||||
|
android:inputType="numberDecimal"
|
||||||
|
android:layout_marginStart="6dp"
|
||||||
|
android:layout_marginTop="6dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/textViewExplosure"
|
||||||
|
app:layout_constraintTop_toBottomOf="@+id/btnAutoExplosure" />
|
||||||
|
|
||||||
|
<TextView
|
||||||
|
android:id="@+id/textViewSensitivity"
|
||||||
|
android:layout_width="wrap_content"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:text="ISO"
|
||||||
|
android:layout_marginStart="12dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/exposuretime"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/exposuretime"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/exposuretime" />
|
||||||
|
|
||||||
|
<EditText
|
||||||
|
android:id="@+id/sensitivity"
|
||||||
|
android:layout_width="96dp"
|
||||||
|
android:layout_height="wrap_content"
|
||||||
|
android:ems="10"
|
||||||
|
android:inputType="numberDecimal"
|
||||||
|
android:layout_marginStart="4dp"
|
||||||
|
app:layout_constraintStart_toEndOf="@+id/textViewSensitivity"
|
||||||
|
app:layout_constraintTop_toTopOf="@+id/exposuretime"
|
||||||
|
app:layout_constraintBottom_toBottomOf="@+id/exposuretime" />
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<resources>
|
||||||
|
<string-array name="channels">
|
||||||
|
<item>通道1</item>
|
||||||
|
<item>通道2</item>
|
||||||
|
<item>通道3</item>
|
||||||
|
<item>通道4</item>
|
||||||
|
</string-array>
|
||||||
|
</resources>
|
Loading…
Reference in New Issue