package com.bear.aithinker.a20camera;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.bear.aithinker.a20camera.titlemenu.ActionItem;
import com.bear.aithinker.a20camera.titlemenu.TitlePopup;
import com.bear.aithinker.a20camera.tool.DialogManager;
import com.bear.aithinker.a20camera.tool.MyRoundProcess;
import com.bear.aithinker.a20camera.util.FileService;
import com.bear.aithinker.a20camera.util.StringUtils;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
/**
* Created by Administrator on 2016/7/28 0028.
*/
public class CameraActivity extends Activity implements View.OnClickListener {
private ImageView ivBack;
private ImageView ivJpg;
private ImageView ivPhoto;
private TextView tvSave, tvRotation, tvRadioBtn, tvTime;
private ApplicationUtil appUtil;
private Socket socket;
private PrintWriter out;
private DataInputStream is;
private String StrRadio, SendData, RecvData;
private TitlePopup titlePopup;
private ProgressDialog photoDialog = null;
private MyRoundProcess mRoundProcess;
private MyRoundProcess r;
private int myState = 0;
private Boolean isConnect = false;
private static final String FILENAME = "myjpg.jpg";
private Bitmap img = null;
private Thread TimerThread;
private enum handler_key {
CONNECT_OK,//连接服务器成功
DISCONNECT,//断开连接
RECECT_BEGIN,//收到bigin数据
RECECT_DATA_ERROR,//接收数据错误
RECECT_DATA_OK,//接收数据正确
RECECT_JPG,//收到图片
TiME_COUNT,//时间超时
}
private static int STATE_DISCONNECT = 0;
private static int STATE_BEGIN = 1;
private static int STATE_RECEVICE = 2;
private final int DATASIZE = 4100;
private final int RESULTSIZE = 4096;
private byte buf[] = new byte[DATASIZE];
private byte getBuf[] = new byte[DATASIZE];
private byte ResultBuf[];
private int packagelen = 0;//长度
private int packageNum = 0;//商
private int packageRem = 0;//余
private int len = 0;//计算收到包的长度
private int sum = 0;//progress
private int count = 0;//数据接收包的次数
private int currentPackage = 0;//当前读到的包数
private int mylength = 0; //计算是否达到一个包的要求
private int myTime = 0; //计算时间
private int ERRORNUM = 3;//错误次数
/**
* The handler.
*/
Handler handler = new Handler() {
public void handleMessage(Message msg) {
super.handleMessage(msg);
CameraActivity.handler_key key = CameraActivity.handler_key.values()[msg.what];
switch (key) {
case CONNECT_OK:
break;
case DISCONNECT:
Toast.makeText(CameraActivity.this, "CONNECT_ERROR", Toast.LENGTH_SHORT).show();
try {
socket.close();
is.close();
out.close();
isConnect = false;
cleanRecvData(1);
finish();
} catch (IOException e) {
e.printStackTrace();
}
break;
case RECECT_BEGIN:
photoDialog.cancel();
DealJson();
if (packagelen == 0) {
Toast.makeText(CameraActivity.this, "PHOTO_FALSE", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(CameraActivity.this, "PHOTO_OK", Toast.LENGTH_SHORT).show();
StartRead();//开始读取数据
}
break;
case RECECT_DATA_ERROR:
Toast.makeText(CameraActivity.this, "RECECT_DATA_ERROR", Toast.LENGTH_SHORT).show();
ERRORNUM--;
if (ERRORNUM == 0) {
ERRORNUM = 3;
} else {
SendData = "at+camrd=" + count * 4096 + "," + (count * 4096 + 4095);
SendtoServer(SendData);
}
cleanRecvData(0);
break;
case RECECT_DATA_OK:
// Log.i("bear","====ok=====");
myTime = 0;
SendData = "ok";
SendtoServer(SendData);
mRoundProcess.setProgress((sum * 100) / ((packageNum + 1) * 4100));
break;
case RECECT_JPG:
myTime = 0;
mRoundProcess.setVisibility(View.INVISIBLE);
BtnEnable(true);
img = FileService.getBitmap(FILENAME);
ivJpg.setImageBitmap(img);
Toast.makeText(CameraActivity.this, "RECECT_JPG", Toast.LENGTH_SHORT).show();
break;
case TiME_COUNT:
tvTime.setText(myTime + "");
break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_camera);
initView();
initEvent();
initData();
initsocket();
new BtnTestRecvThread().start();
TimerThread = new Thread(new ThreadShow());
TimerThread.start();
}
private void initsocket() {
appUtil = (ApplicationUtil) CameraActivity.this.getApplication();
socket = appUtil.getSocket();
out = appUtil.getOut();
is = appUtil.getIn();
isConnect = true;
}
private void initData() {
StrRadio = "begin2";
mRoundProcess.setVisibility(View.INVISIBLE);
img = FileService.getBitmap(FILENAME);
ivJpg.setImageBitmap(img);
}
private void initEvent() {
ivJpg.setOnClickListener(this);
ivBack.setOnClickListener(this);
ivPhoto.setOnClickListener(this);
tvSave.setOnClickListener(this);
tvRotation.setOnClickListener(this);
tvRadioBtn.setOnClickListener(this);
}
private void initView() {
ivBack = (ImageView) findViewById(R.id.ivBack);
ivJpg = (ImageView) findViewById(R.id.ivJpg);
ivPhoto = (ImageView) findViewById(R.id.ivPhoto);
tvSave = (TextView) findViewById(R.id.tvSave);
tvRotation = (TextView) findViewById(R.id.tvRotation);
tvRadioBtn = (TextView) findViewById(R.id.tvRadioBtn);
tvTime = (TextView) findViewById(R.id.tvTime);
r = new MyRoundProcess(CameraActivity.this);
mRoundProcess = (MyRoundProcess) findViewById(R.id.my_round_process);
photoDialog = DialogManager.progressDialog(CameraActivity.this, "正在拍照...");
initPopWindow();
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.ivBack:
cleanRecvData(1);
finish();
break;
case R.id.ivPhoto:
myTime = 0;
photoDialog.show();
SendData = StrRadio;
SendtoServer(StrRadio);
SetState(STATE_BEGIN);
cleanRecvData(1);
break;
case R.id.tvRadioBtn:
titlePopup.show(this.findViewById(R.id.tvRadioBtn));