/* * Copyright (C) 2015 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.example.rscamera; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.SeekBar; import android.widget.ViewFlipper; import com.android.example.rscamera.rscamera.R; import java.text.DecimalFormat; import java.util.Timer; import java.util.TimerTask; /** * Main Activity for this app * It presents a ui for setting ISO, Shutter speed, and focus */ public class MainActivity extends Activity { private static final String TAG = "MainActivity"; private static final long ONE_SECOND = 1000000000; private CameraView mPreviewView; private ViewFlipper mViewFlipper; private Button mSpeedButton; private Button mISOButton; private Button mFocusButton; private Timer mTimer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mSpeedButton = (Button) findViewById(R.id.speed); mISOButton = (Button) findViewById(R.id.iso); mFocusButton = (Button) findViewById(R.id.focus); mPreviewView = (CameraView) findViewById(R.id.preview); mViewFlipper = (ViewFlipper) findViewById(R.id.viewFlipper); SeekBar seekBar = (SeekBar) findViewById(R.id.focusbar); seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { mPreviewView.setFocusInMeters(seekBar.getProgress() / 10.f); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); mPreviewView.setParametersChangedCallback(new CameraView.ParametersChangedCallback() { @Override public void parametersChanged() { update_buttons(); } }); mTimer = new Timer(); mTimer.scheduleAtFixedRate(new TimerTask() { @Override public void run() { // TODO Auto-generated method stub runOnUiThread(new Runnable() { public void run() { setTitle("RS Camera (" + mPreviewView.getFps() + "fps)"); } }); } }, 250, 250); } @Override protected void onResume() { super.onResume(); mPreviewView.resume(this); } @Override protected void onPause() { super.onPause(); mPreviewView.pause(); } public void setShutterSpeed(View v) { if (mPreviewView.isAutoExposure()) { mPreviewView.setAutoExposure(false); mPreviewView.setMode(CameraView.MODE_SPEED); } else { mPreviewView.setMode(CameraView.MODE_NONE); mPreviewView.setAutoExposure(true); } update_buttons(); } public void setISO(View v) { if (mPreviewView.isAutoExposure()) { mPreviewView.setAutoExposure(false); mPreviewView.setMode(CameraView.MODE_ISO); } else { mPreviewView.setMode(CameraView.MODE_NONE); mPreviewView.setAutoExposure(true); } update_buttons(); } public void setFocus(View v) { if (mPreviewView.isAutofocus()) { mPreviewView.setAutofocus(false); mPreviewView.setMode(CameraView.MODE_FOCUS); mViewFlipper.setInAnimation(this, R.anim.slide_in_from_left); mViewFlipper.setOutAnimation(this, R.anim.slide_out_to_right); mViewFlipper.showNext(); } else { mPreviewView.setMode(CameraView.MODE_NONE); mPreviewView.setAutofocus(true); } update_buttons(); } public void back(View v) { mViewFlipper.setInAnimation(this, R.anim.slide_in_from_left); mViewFlipper.setOutAnimation(this, R.anim.slide_out_to_right); mViewFlipper.showNext(); } public void capture(View v) { mPreviewView.takePicture(); } private void update_buttons() { byte mode = mPreviewView.getMode(); mSpeedButton.setElevation(mode == CameraView.MODE_SPEED ? 20 : 0); mFocusButton.setElevation(mode == CameraView.MODE_FOCUS ? 20 : 0); mISOButton.setElevation(mode == CameraView.MODE_ISO ? 20 : 0); String a; a = (mPreviewView.isAutoExposure()) ? "A " : " "; if (ONE_SECOND > mPreviewView.getExposure()) { mSpeedButton.setText(a + 1 + "/" + (ONE_SECOND / mPreviewView.getExposure()) + "s"); } else { mSpeedButton.setText(a + (mPreviewView.getExposure() / ONE_SECOND) + "\"s"); } a = (mPreviewView.isAutofocus()) ? "A " : " "; DecimalFormat df = new DecimalFormat("#.###"); float d = mPreviewView.getFocusDist(); if (d < 0.01) { d = 0; } mFocusButton.setText(a + df.format(0.1 / d) + " m"); a = (mPreviewView.isAutoExposure()) ? "A ISO " : " ISO "; mISOButton.setText(a + mPreviewView.getIso() + " M"); } }