Я тестирование нового API камеры. Я хочу использовать факел камеры как строб. Частоту строба можно изменить с помощью кнопки поиска. Вспышка камеры включается при начальном значении 1000 мс, но частота строба никогда не изменяется, даже если изменяется переменная значения. Я думаю, моя проблема в том, что я использую таймер для функции строба. У меня есть переменное значение, которое изменяется с помощью поисковой системы, но, очевидно, значение никогда не изменяется внутри функции таймера строба.Android M камеры изменение частоты torchMode
CameraManager cameraManager;
String[] camId;
Camera camera;
ViewGroup parentLayout;
int value = 1000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText editText = (EditText)
findViewById(R.id.editText);
cameraManager = (CameraManager) getSystemService(Context.CAMERA_SERVICE);
try {
camId = cameraManager.getCameraIdList();
} catch (CameraAccessException e) {
e.printStackTrace();
}
try {
strobe();
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
final SeekBar skbar = (SeekBar)findViewById(R.id.seekBar);
skbar.incrementProgressBy(1);
skbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
value = progress * 10;
editText.setText(value + " ms");
}
});
}
public void strobe() throws CameraAccessException {
new Timer().scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
cameraManager.setTorchMode(camId[0], true);
} catch (CameraAccessException e) {
e.printStackTrace();
}
try {
cameraManager.setTorchMode(camId[0], false);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
}, 0, value);
}