package com.diygreen.andoid4;
import android.graphics.SurfaceTexture;
import android.hardware.Camera;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.TextureView;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import java.io.IOException;
public class TextureViewDemoActivity extends AppCompatActivity implements TextureView.SurfaceTextureListener {
private static final String TAG = "TextureViewDemoActivity";
private Spinner mSPSetAlpha;
private Spinner mSPSetRotation;
private TextureView mTTVTest;
private Camera mCamera;
private Float[] mAlphaValueArr = {0.2f, 0.4f, 0.6f, 0.8f, 1.0f};
private Float[] mRotationValueArr = {15.0f, 30.0f, 45.0f, 60.0f, 90.0f};
private float mAlphaValue = 1.0f;
private float mRotationValue = 90.0f;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_textureviewdemo);
initView();
initData();
initListener();
}
private void initView() {
this.mSPSetAlpha = (Spinner) this.findViewById(R.id.sp_setalphavalue);
this.mSPSetRotation = (Spinner) this.findViewById(R.id.sp_setrotationvalue);
this.mTTVTest = (TextureView) this.findViewById(R.id.ttv_test);
}
private void initData() {
ArrayAdapter<Float> setAlphaAdapter = new ArrayAdapter<Float>(this,android.R.layout.simple_list_item_1, mAlphaValueArr);
setAlphaAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
this.mSPSetAlpha.setAdapter(setAlphaAdapter);
ArrayAdapter<Float> setRotationAdapter = new ArrayAdapter<Float>(this,android.R.layout.simple_list_item_1, mRotationValueArr);
setRotationAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
this.mSPSetRotation.setAdapter(setRotationAdapter);
}
private void initListener() {
this.mTTVTest.setSurfaceTextureListener(this);
this.mSPSetAlpha.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mAlphaValue = mAlphaValueArr[position];
mTTVTest.setAlpha(mAlphaValue);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
this.mSPSetRotation.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
mRotationValue = mRotationValueArr[position];
mTTVTest.setRotation(mRotationValue);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
@Override
public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) {
mCamera = Camera.open();
try {
mCamera.setPreviewTexture(surface);
} catch (IOException t) {
Log.e(TAG, t.getMessage());
}
mCamera.startPreview();
mTTVTest.setAlpha(mAlphaValue);
mTTVTest.setRotation(mRotationValue);
}
@Override
public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) {
}
@Override
public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) {
if (mCamera != null) {
mCamera.stopPreview();
mCamera.release();
}
return true;
}
@Override
public void onSurfaceTextureUpdated(SurfaceTexture surface) {
}
}