package com.eighteengray.procamera.fragment;
import android.content.Intent;
import android.hardware.camera2.CameraAccessException;
import android.os.Bundle;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.eighteengray.procamera.R;
import com.eighteengray.procamera.activity.AlbumActivity;
import com.eighteengray.procamera.activity.SettingActivity;
import com.eighteengray.procamera.widget.dialogfragment.ModeSelectDialogFragment;
import com.eighteengray.procamera.widget.dialogfragment.PopupWindowFactory;
import com.eighteengray.procameralibrary.camera.RecordTextureView;
import com.eighteengray.procameralibrary.dataevent.CameraConfigure;
import com.eighteengray.procameralibrary.dataevent.RecordVideoEvent;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
public class RecordVideoFragment extends BaseCameraFragment
{
View view;
//上部
@BindView(R.id.iv_flash_camera)
ImageView iv_flash_camera;
@BindView(R.id.iv_switch_camera)
ImageView iv_switch_camera;
//拍照
@BindView(R.id.recordTextureView)
RecordTextureView recordTextureView;
//中下部
@BindView(R.id.rl_middle_bottom_menu)
RelativeLayout rl_middle_bottom_menu;
@BindView(R.id.tv_mode_select)
TextView tv_mode_select;
//下部
@BindView(R.id.iv_album_camera)
ImageView iv_album_camera;
@BindView(R.id.iv_shutter_camera)
ImageView iv_shutter_camera;
@BindView(R.id.iv_setting_camera)
ImageView iv_setting_camera;
private boolean isRecording = false;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
view = inflater.inflate(R.layout.fragment_recordvideo, container, false);
ButterKnife.bind(this, view);
EventBus.getDefault().register(this);
return view;
}
@Override
public void onResume()
{
super.onResume();
recordTextureView.openCamera();
}
@Override
public void onPause()
{
if (recordTextureView != null)
{
recordTextureView.closeCamera();
}
super.onPause();
}
@Override
public void onDestroy()
{
EventBus.getDefault().unregister(this);
super.onDestroy();
}
@OnClick({R.id.iv_flash_camera, R.id.iv_switch_camera,
R.id.recordTextureView, R.id.tv_mode_select,
R.id.iv_album_camera, R.id.iv_shutter_camera, R.id.iv_setting_camera})
public void click(View view)
{
switch (view.getId())
{
case R.id.iv_flash_camera: //闪光灯
int[] location1 = new int[2];
iv_flash_camera.getLocationOnScreen(location1);
PopupWindowFactory.createFlashPopupWindow(getActivity()).showAtLocation(iv_flash_camera, Gravity.NO_GRAVITY, location1[0] + iv_flash_camera.getWidth(), location1[1] - iv_flash_camera.getHeight());
break;
case R.id.iv_switch_camera:
recordTextureView.switchCamera();
break;
case R.id.recordTextureView:
break;
case R.id.tv_mode_select:
ModeSelectDialogFragment modeSelectDialogFragment = new ModeSelectDialogFragment();
modeSelectDialogFragment.show(getFragmentManager(), "Camera");
break;
case R.id.iv_album_camera:
Intent intent_album = new Intent(getActivity(), AlbumActivity.class);
startActivity(intent_album);
break;
case R.id.iv_shutter_camera:
if (!isRecording)
{
isRecording = true;
recordTextureView.startRecordVideo();
} else if (isRecording)
{
isRecording = false;
recordTextureView.stopRecordVideo();
}
break;
case R.id.iv_setting_camera:
Intent intent_setting = new Intent(getActivity(), SettingActivity.class);
startActivity(intent_setting);
break;
}
}
//EventBus接收相机配置的参数
@Subscribe(threadMode = ThreadMode.MAIN)
public void onFlashSelect(CameraConfigure.Flash flash) throws CameraAccessException
{
recordTextureView.setFlashMode(flash.getFlash());
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onRecordVideo(RecordVideoEvent recordVideoEvent) throws CameraAccessException
{
if(recordVideoEvent.isRecording())
{
iv_shutter_camera.setImageResource(R.drawable.btn_shutter_recording);
}
else
{
iv_shutter_camera.setImageResource(R.drawable.btn_shutter_record);
}
}
}