/* * * TextureViewActivity.java * * Created by Wuwang on 2017/3/4 * Copyright © 2016年 深圳哎吖科技. All rights reserved. */ package com.aiyaapp.aiya.mvc; import android.Manifest; import android.graphics.SurfaceTexture; import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.TextureView; import android.view.View; import com.aiyaapp.aiya.EffectSelectActivity; import com.aiyaapp.aiya.R; import com.aiyaapp.aiya.util.PermissionUtils; import com.aiyaapp.camera.sdk.base.FrameCallback; import com.aiyaapp.camera.sdk.base.Log; import com.aiyaapp.camera.sdk.widget.AiyaController; import com.aiyaapp.camera.sdk.widget.AiyaModel; /** * Description: */ public class TextureViewActivity extends EffectSelectActivity implements FrameCallback { private TextureView mTextureView; private int bmpWidth=720,bmpHeight=1280; private AiyaModel mAiyaModel; private AiyaController mAiyaController; private Camera1Model mCamera1Model; private Camera2Model mCamera2Model; private SurfaceTexture mNowTexture; private int mWidth,mHeight; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); PermissionUtils.askPermission(this,new String[]{Manifest.permission.CAMERA,Manifest .permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_PHONE_STATE},10,mRunnable); } private Runnable mRunnable=new Runnable() { @Override public void run() { setContentView(R.layout.activity_textureview); initData(); modelInit(); mAiyaController=new AiyaController(TextureViewActivity.this); mAiyaController.setFrameCallback(bmpWidth,bmpHeight,TextureViewActivity.this); mAiyaModel=mCamera1Model; //mAiyaModel=mCamera2Model; mTextureView= (TextureView)findViewById(R.id.mTextureView); mTextureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() { @Override public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { mNowTexture=surface; mWidth=width; mHeight=height; mAiyaController.surfaceCreated(surface); mAiyaModel.attachToController(mAiyaController); mAiyaController.surfaceChanged(width, height); } @Override public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { Log.e("textureview","onSurfaceTextureSizeChanged---->"); mAiyaController.surfaceChanged(width, height); } @Override public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { mNowTexture=null; Log.e("textureview","onSurfaceTextureDestroyed---->"); mAiyaController.surfaceDestroyed(); return false; } @Override public void onSurfaceTextureUpdated(SurfaceTexture surface) { } }); } }; private void modelInit(){ mCamera1Model=new Camera1Model(); if(Build.VERSION.SDK_INT>=Build.VERSION_CODES.LOLLIPOP){ mCamera2Model=new Camera2Model(this); } } @Override protected void onResume() { super.onResume(); if(mAiyaController!=null){ Log.e("textureview","resume---->"); mAiyaController.onResume(); } } @Override protected void onPause() { super.onPause(); if (mAiyaController!=null){ Log.e("textureview","pause---->"); mAiyaController.onPause(); } } @Override protected void onDestroy() { super.onDestroy(); if(mAiyaController!=null){ mAiyaController.destroy(); } } @Override public void onClick(View view) { super.onClick(view); switch (view.getId()){ case R.id.mShutter: mAiyaController.takePhoto(); break; } } @Override public void onFrame(byte[] bytes, long time) { saveBitmapAsync(bytes,bmpWidth,bmpHeight); } }