package com.ztspeech.simutalk2.qa;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.inputmethod.InputMethodManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
import cn.ac.ia.directtrans.json.Json;
import cn.ac.ia.directtrans.json.JsonMessage;
import cn.ac.ia.directtrans.json.JsonQuestion;
import cn.ac.ia.directtrans.json.JsonRequestResult;
import cn.ac.ia.directtrans.json.QuestionInfo;
import cn.ac.ia.files.RequestParam;
import com.ztspeech.recognizer.OnEngineListener;
import com.ztspeech.recognizer.speak.VoicePlayer;
import com.ztspeech.recognizer.speak.interf.OnPlayerListener;
import com.ztspeech.recognizerDialog.UnisayRecognizerDialog;
import com.ztspeech.simutalk2.R;
import com.ztspeech.simutalk2.data.AskTaskList;
import com.ztspeech.simutalk2.data.GlobalData;
import com.ztspeech.simutalk2.data.MsgDataList;
import com.ztspeech.simutalk2.data.MsgGroupList;
import com.ztspeech.simutalk2.data.MsgInfoData;
import com.ztspeech.simutalk2.data.MsgInfoData.Define;
import com.ztspeech.simutalk2.data.TextPlayer;
import com.ztspeech.simutalk2.data.UserInfo;
import com.ztspeech.simutalk2.data.UserInfoList;
import com.ztspeech.simutalk2.dictionary.util.LogInfo;
import com.ztspeech.simutalk2.dictionary.util.Util;
import com.ztspeech.simutalk2.net.AsyncHttpDownloader.OnAsyncHttpDownloaderLisenter;
import com.ztspeech.simutalk2.net.ListViewImageEngine;
import com.ztspeech.simutalk2.net.PostPackageEngine;
import com.ztspeech.simutalk2.net.ResultPackage;
import com.ztspeech.simutalk2.qa.view.AdapterItemView;
import com.ztspeech.simutalk2.qa.view.DataListAdapter;
import com.ztspeech.simutalk2.qa.view.InterpretView;
import com.ztspeech.simutalk2.qa.view.SolveQuestionItemView;
public class SolveQuestionActivity extends UpdateBaseActivity implements OnClickListener {
// Intent param define
public static final String PARAM_TYPE = "type";
public static final String PARAM_ID = "id";
public static final int TYPE_ASK = 1;
public static final int TYPE_SOLVE = 2;
private static final int ACTIVITY_SOLVE = 200;
// public static final int TYPE_ASK1 = 1;
// view control
private ListView mListView;
private EditText mEditMsg;
private Button mBtnGiveUp;
private Button mBtnSend;
private Button mBtnSpeak;
private Button mBtnChOrEn;
private LinearLayout mLayoutSender;
private QuestionInfo mAskQuestion;
private UnisayRecognizerDialog mDialog = null;
private VoicePlayer mPlayer = null;
// data
private MsgGroupList mMsgGroupList = MsgGroupList.getInstance();
private MsgDataList mShowList = new MsgDataList();
private static boolean isShow = false;
private static MsgDataList mMsgList;
private JsonQuestion mJsonMessage = new JsonQuestion();
// private PostPackage mPostPackage;
private boolean mHasVoice = false;
private static String language;
private ListViewImageEngine listViewImageLoaderEngine;
private Context context;
private GetVoiceFromServerEngine mSolveQuestionActivity;
private PostVoiceDataToServerEngine mPostVoiceDataToServerEngine;
private PostPackageEngine mPostPackageEngine;
private int postPackageType = 0;
// =========================================================
// private PopupWindow mRecognizerWindow = null;
private InterpretView mInterpretView;
private Handler handler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case 0:
Toast.makeText(context, context.getString(R.string.cancelnet), Toast.LENGTH_LONG).show();
break;
case 1:
Toast.makeText(context, context.getString(R.string.playererror), Toast.LENGTH_LONG).show();
break;
case 2:
Toast.makeText(context, context.getString(R.string.qa_msg_download_error), Toast.LENGTH_LONG).show();
break;
case 3:
break;
case Util.ON_RECORD_END:
mInterpretView.clearNoVoiceAnim();
mInterpretView.clearViewAnim();
mInterpretView.startViewAnim();
mInterpretView.setBtnRecordEnable(false);
break;
case Util.ON_RECORD_BEGIN:
mInterpretView.clearViewAnim();
mInterpretView.startNoVoiceAnim();
// btnDispProcess(true);
mInterpretView.setBtnRecordEnable(true);
break;
case Util.ON_RECORDER_ERROR:
mInterpretView.clearViewAnim();
mInterpretView.setBtnRecordEnable(true);
break;
case Util.ON_WAIT_BEGIN:
mInterpretView.setBtnRecordEnable(false);
mInterpretView.clearViewAnim();
mInterpretView.startViewAnim();
break;
case Util.ON_WAIT_END:
mInterpretView.setBtnRecordEnable(true);
// btnDispProcess(false);
mInterpretView.clearViewAnim();
break;
case Util.ON_RECOGNIZER_ERROR:
mInterpretView.clearViewAnim();
mInterpretView.setBtnRecordEnable(true);
mInterpretView.setTextStatusDisp(View.VISIBLE);
mDialog.close();
mInterpretView.setTextStatus((Integer) msg.obj);
setBtnEnable(true);
break;
case Util.ON_VOICE_VALUE:
mInterpretView.clearViewAnim();
mInterpretView.setBtnRecordEnable(false);
int value = (Integer) msg.obj;
mInterpretView.setBtnRecordBg(value);
break;
case Util.SET_LIST_VIEW:
mInterpretView.setBtnRecordEnable(true);
mInterpretView.clearViewAnim();
mDialog.close();
mInterpretView.dispRresultList((ArrayList<String>) msg.obj);
break;
case Util.SELECT_RESULT:
break;
case 100:
Toast.makeText(context, context.getString(R.string.cancelnet), Toast.LENGTH_LONG).show();
mPostVoiceDataToServerEngine.dismissLoading();
break;
case 101:
Toast.makeText(context, context.getString(R.string.qa_msg_download_error), Toast.LENGTH_LONG).show();
mPostVoiceDataToServerEngine.dismissLoading();
break;
case 102:
LogInfo.LogOutE("haitian", "SolveQuestionActivity>>>>>>>>>>>>>>>>>>> msg.obj =" + (String) msg.obj);
postVoiceDataCallBack((String) msg.obj);
break;
case 104:
mPostVoiceDataToServerEngine.dismissLoading();
LogInfo.LogOutE("haitian", "SolveQuestionActivity>>>>>>>>>>>>>>>>>>> dismissLoading");
break;
case 200:
postPackageCallBack((ResultPackage) msg.obj, postPackageType);
break;
case 404:
Toast.makeText(context, (String) msg.obj, Toast.LENGTH_LONG).show();
break;
default:
break;
}
};
};
private void btnDispProcess(boolean flag) {
if (flag) {
mInterpretView.setBtnCancelDisp(View.VISIBLE);
} else {
mInterpretView.setBtnCancelDisp(View.GONE);
}
}
private boolean btnClickflag = false;
private LayoutInflater inflater;
// =========================================================
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
inflater = (LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = inflater.inflate(R.layout.activity_solve_q, null);
setContentView(v);
// getWindow().setFormat(PixelFormat.RGBA_8888);
context = this;
mInterpretView = new InterpretView(this, handler, v, this);
mDialog = new UnisayRecognizerDialog(this, "", mRecognizerListener,
mInterpretView.mNewRecognizerViewListenerInterface);
mPlayer = new VoicePlayer(this);
mPlayer.setListener(mPlayerListener);
mSolveQuestionActivity = new GetVoiceFromServerEngine(context, mPlayer, handler);
mPostVoiceDataToServerEngine = new PostVoiceDataToServerEngine(context, handler);
mListView = (ListView) findViewById(R.id.lvQuestions);
mLayoutSender = (LinearLayout) findViewById(R.id.layoutSender);
mBtnGiveUp = (Button) findViewById(R.id.btnGiveUp);
mBtnSend = (Button) findViewById(R.id.btnSend);
mBtnSpeak = (Button) findViewById(R.id.btnSpeak);
mEditMsg = (EditText) findViewById(R.id.editMsg);
mBtnChOrEn = (Button) findViewById(R.id.btnChOrEn);
mBtnGiveUp.setOnClickListener(this);
mBtnSend.setOnClickListener(this);
mBtnSpeak.setOnClickListener(this);
// mEditMsg .setFocusableInTouchMode(false);
mBtnChOrEn.setOnClickListener(this);
mEditMsg.addTextChangedListener(mOnTextChangedListener);
listViewImageLoaderEngine = new ListViewImageEngine(mListView);
mListView.setAdapter(mListViewAdapter);
mListView.setOnItemClickListener(mAdapterLinstener);
mListView.setDividerHeight(0);
mMsgList = null;
getIntentData();
if (language == null) {
language = UserInfo.getInstanse().s2sType;
}
if (language.equals(UserInfo.S2T_CH2EN)) {
mBtnChOrEn.setBackgroundResource(R.drawable.qa_btn_z_f);
mDialog.setToChineseEngine();
} else {
mBtnChOrEn.setBackgroundResource(R.drawable.qa_btn_e_f);
mDialog.setToEnglishEngine();
}
}
protected boolean mMessageChanged = true;
private TextWatcher mOnTextChangedListener = new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
mMessageChanged = true;
}
};
private void postPackageCallBack(ResultPackage result, int postPackageType) {
if (result.isNetSucceed()) {
JsonRequestResult ret = JsonRequestResult.fromJson(result.getJson());
if (postPackageType == 0) {
if (ret != null) {
if (ret.succeed == true) {
mHasVoice = false;
Util.handkey++;// ��������keyֵ
JsonMessage q = Json.fromJson(ret.json, JsonMessage.class);
if (q != null) {
mMsgList = mMsgGroupList.findItem(mAskQuestion.id, MsgInfoData.Define.TYPE_QA);
if (mMsgList == null) {
MsgInfoData data = new MsgInfoData();
data.text = mAskQuestion.text;
data.time = mAskQuestion.time;
data.senderId = mAskQuestion.senderId;
data.name = mAskQuestion.senderName;
data.vLen = mAskQuestion.vLen;
data.vId = mAskQuestion.vId;
data.linkId = mAskQuestion.id;
data.state = QuestionInfo.STATE_MARK;
data.look_over = Define.LOOK_OVER;
data.setCmd(JsonMessage.Function.SOLVED);
mMsgGroupList.addMsg(data);
mMsgGroupList.addMsgToDB(data);
mMsgList = mMsgGroupList.findItem(mAskQuestion.id, MsgInfoData.Define.TYPE_QA);
UserInfo.state.solve++;
UserInfo.getInstanse().setChange(true);
} else {
mMsgList.setState(mAskQuestion.id, QuestionInfo.STATE_MARK);
}
AskTaskList list = GlobalData.getAskInstance();
list.deleteTopTask();
list.setChanged(true);
// �û���Ϣͳһ����
MsgInfoData data = new MsgInfoData();
data.setData(q);
data.state = QuestionInfo.STATE_MARK;
data.look_over = Define.LOOK_OVER;
mMsgGroupList.addMsg(data);
mMsgGroupList.addMsgToDB(data);
mEditMsg.setText("");
mMsgList.setChanged(true);
updateMesage();
Intent intent = new Intent(SolveQuestionActivity.this, UserStateActivity.class);
// intent.putExtra("result", "succeed");
SolveQuestionActivity.this.setResult(ACTIVITY_SOLVE, intent);
finish();
Toast.makeText(SolveQuestionActivity.this, "�ظ��ɹ�", Toast.LENGTH_SHORT).show();
}
finish();
} else {
new AlertDialog.Builder(SolveQuestionActivity.this).setTitle("��ʾ").setMessage(ret.explain)
.setPositiveButton("ȷ��", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface arg0, int arg1) {
finish();
}
}).show();
}
}
} else if (postPackageType == 1) {
if (ret != null) {
if (ret.succeed == true) {
// ɾ������������
AskTaskList list = GlobalData.getAskInstance();
list.deleteTopTask();
list.setChanged(true);
// SolveQuestionActivity.this.finish();
// Toast.makeText(context,
// context.getString(R.string.userGiveUpQuestion),
// Toast.LENGTH_LONG)
// .show();
} else {
// SolveQuestionActivity.this.finish();
// new
// AlertDialog.Builder(SolveQuestionActivity.this).setTitle("��ʾ")
// .setMessage(ret.explain).setPositiveButton("ȷ��",
// null).show();
}
}
}
}
}
public static boolean isShowNotifitionTip(MsgDataList msgList) {
if (isShow) {
if (mMsgList == msgList) {
return false;
}
}
return true;
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
isShow = true;
}
@Override
protected void onPause() {
super.onPause();
isShow = false;
}
private void getIntentData() {
mAskQuestion = UserStateActivity.mQuestionInfo;
if (mAskQuestion != null) {
MsgInfoData data = new MsgInfoData();
data.name = mAskQuestion.senderName;
data.time = mAskQuestion.time;
data.text = mAskQuestion.text;
data.vLen = mAskQuestion.vLen;
data.vId = mAskQuestion.vId;
data.senderId = mAskQuestion.senderId;
mShowList.add(data);
UserInfoList.getInstanse().update(mAskQuestion);
}
}
private OnPlayerListener mPlayerListener = new OnPlayerListener() {
public InputStream getPlayWaveData(String text) {
// InputStream in = getTTSInputStream(text);
// InputStream in = mTtsDownloader.getTTSInputStream(text);
return null;
}
public void onPlayStart() {
// TODO Auto-generated method stub
}
public void onPlayStop() {
// TODO Auto-generated method stub
}
public void onPlayLoadDataStart() {
// TODO Auto-generated method stub
}
public void onPlayLoadDataEnd() {
// TODO Auto-generated method stub
}
};
private DataListAdapter mListViewAdapter = new DataListAdapter(this, mShowList) {
@Override
public AdapterItemView getAdapterItemView(Context context) {
// TODO Auto-generated method stub
return new SolveQuestionItemView(context, null, listViewImageLoaderEngine);
}
};
@SuppressWarnings("unused")
private OnAsyncHttpDownloaderLisenter mDownloadLisenter = new OnAsyncHttpDownloaderLisenter() {
@Override
public void onData(byte[] data) {
if (data == null) {
Toast.makeText(SolveQuestionActivity.this, getString(R.string.qa_msg_download_error),
Toast.LENGTH_SHORT).show();
return;
}
if (data.length < 1000) {
Toast.makeText(SolveQuestionActivity.this, getString(R.string.qa_msg_download_error),
Toast.LENGTH_SHORT).show();
return;
}
InputStream s = new ByteArrayInputStream(data);
mPlayer.play(s);
}
@Override
public void onBegin() {
WaitingActivity.waiting(SolveQuestionActivity.this, 0);
}
@Override
public void onEnd() {
WaitingActivity.stop();
}
};
private OnItemClickListener mAdapterLinstener = new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
SolveQuestionItemView v = (SolveQuestionItemView) arg1;
MsgInfoData data = (MsgInfoData) v.getData();
if (data.hasVoice()) {
mSolveQuestionActivity.httpRequestNewThread(data.vId, RequestParam.FILE_TYPE_VOICE);
// AsyncHttpDownloader download = new
// AsyncHttpDownloader(mDownloadLisenter);
// download.setParam(getString(R.string.file_host_ip),
// UserInfo.appId, UserInfo.state.id + "");
// download.download(data.vId, RequestParam.FILE_TYPE_VOICE);
}
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private void setBtnEnable(boolean flag) {
mBtnSpeak.setEnabled(flag);
mEditMsg.setClickable(flag);
mBtnChOrEn.setEnabled(flag);
}
public void onClick(View v) {
// TODO Auto-generated method stub
if (v == mBtnGiveUp) {
// finish();
GiveUpQuestion();
setBtnEnable(true);
SolveQuestionActivity.this.finish();
} else if (v == mBtnSend) {
sendMsg();
} else if (v == mBtnSpeak) {
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mEditMsg.getWindowToken(), 0);
// mBtnSpeak.setEnabled(false);
mInterpretView.setRecordLayoutDisp(View.VISIBLE);
setBtnEnable(false);
mDialog.show();
} else if (v == mBtnChOrEn) {
if (language.equals(UserInfo.S2T_CH2EN)) {
mBtnChOrEn.setBackgroundResource(R.drawable.qa_btn_e_f);
language = UserInfo.S2T_EN2CH;
mDialog.setToEnglishEngine();
} else {
mBtnChOrEn.setBackgroundResource(R.drawable.qa_btn_z_f);
language = UserInfo.S2T_CH2EN;
mDialog.setToChineseEngine();
}
} else if (v == mEditMsg) {
} else if (v.getId() == R.id.btn_bg || v.getId() == R.id.imagenovoiceanim) {
mDialog.onRecognizerViewRecord();
LogInfo.LogOutE("haitian", "---------------stop record------------");
} else if (v.getId() == R.id.btn_cancel) {
mDialog.onRecognizerViewCancel();
mInterpretView.setRecordLayoutDisp(View.GONE);
setBtnEnable(true);
// mInterpretView.dismissPopWindow();
} else if (v.getId() == R.id.btn_record) {
if (!btnClickflag) {
btnClickflag = true;
mDialog.show();
mInterpretView.setBtnRecordEnable(true);
} else {
btnClickflag = false;
mDialog.close();
mInterpretView.setRecordLayoutDisp(View.GONE);
setBtnEnable(true);
}
LogInfo.LogOutE("haitian", "------------R.id.btn_record----------------");
}
}
private void sendMsg() {
// TODO Auto-generated method stub
String msg = mEditMsg.getText().toString().trim();
if (msg.length() == 0 && mHasVoice == false) {
return;
}
if (mHasVoice) {
byte[] voice = (byte[]) mDialog.getObject();
mPostVoiceDataToServerEngine.httpRequestPostNewThread(voice, RequestParam.FILE_TYPE_VOICE);
// AsyncHttpPost post = new AsyncHttpPost(this);
// post.setHost(getString(R.string.file_host_ip), "drt",
// UserInfo.state.id + "");
// post.postVoice(voice, RequestParam.FILE_TYPE_VOICE);
// setButtonEnabled(false);
} else {
postMsg(msg, "", 0);
}
}
private void setButtonEnabled(boolean b) {
// TODO Auto-generated method stub
mBtnSend.setEnabled(b);
mBtnSpeak.setEnabled(b);
}
private void postVoiceDataCallBack(String fileId) {
setButtonEnabled(true);
if (fileId == null) {
handler.sendEmptyMessage(104);
return;
}
if (fileId.length() == 0) {
handler.sendEmptyMessage(104);
return;
}
byte[] voice = (byte[]) mDialog.getObject();
String msg = mEditMsg.getText().toString().trim();
// mPostPackage = new PostPackage(this, mPostTextListener);
mJsonMessage.owner = mAskQuestion.senderId;
mJsonMessage.text = msg;
mJsonMessage.type = "";
mJsonMessage.vLen = voice.length;
mJsonMessage.vId = fileId;
mJsonMessage.id = mAskQuestion.id;
mJsonMessage.cmd = JsonQuestion.SOLVE;
if (mMessageChanged) {
mMessageChanged = false;
Util.handkey++;
}
// ����keyֵ
mJsonMessage.handkey = Util.handkey;
postPackageType = 0;
mPostPackageEngine = new PostPackageEngine(context, mJsonMessage, handler);
mPostPackageEngine.post();
handler.sendEmptyMessage(104);
// if (mPostPackage.post(mJsonMessage, getString(R.string.host_ip),
// true)) {
// setButtonEnabled(false);
// } else {
// setButtonEnabled(true);
// LogInfo.LogOutE("haitian",
// "-----------SolveQuestionActivity-----------");
// handler.sendEmptyMessage(104);
// }
}
private void postMsg(String sText, String vId, int vLen) {
// mPostPackage = new PostPackage(this, mPostTextListener);
mJsonMessage.owner = mAskQuestion.senderId;
mJsonMessage.text = sText;
mJsonMessage.type = "";
mJsonMessage.vLen = vLen;
mJsonMessage.vId = vId;
mJsonMessage.id = mAskQuestion.id;
mJsonMessage.cmd = JsonQuestion.SOLVE;
if (mMessageChanged) {
mMessageChanged = false;
Util.handkey++;
}
// ����keyֵ
mJsonMessage.handkey = Util.handkey;
postPackageType = 0;
mPostPackageEngine = new PostPackageEngine(context, mJsonMessage, handler);
mPostPackageEngine.post();
// if (mPostPackage.post(mJsonMessage, getString(R.string.host_ip),
// true)) {
//
// setButtonEnabled(false);
// WaitingActivity.waiting(this, 0);
// }
}
private OnEngineListener mRecognizerListener = new OnEngineListener() {
@SuppressWarnings("rawtypes")
public void onEngineResult(List list, int flag, String id) {
mDialog.close();
mInterpretView.setRecordLayoutDisp(View.GONE);
setBtnEnable(true);
if (list == null) {
return;
}
for (int i = 0; i < list.size(); i++) {
mHasVoice = true;
}
// String text = "";
for (int i = 0; i < list.size(); i++) {
mEditMsg.append((String) list.get(i));
}
// mEditMsg.setText(text);
}
public void onEngineStart() {
// TODO Auto-generated method stub
}
public void onEngineEnd() {
// TODO Auto-generated method stub
setBtnEnable(true);
}
};
// public IHttpPostListener mPostTextListener = new IHttpPostListener() {
//
// @Override
// public void onNetPostResult(PostPackage owner, ResultPackage result) {
// // TODO Auto-generated method stub
// if (result.isNetSucceed()) {
// mHasVoice = false;
// JsonRequestResult ret = JsonRequestResult.fromJson(result.getJson());
// if (ret != null) {
// if (ret.succeed == true) {
//
// JsonMessage q = Json.fromJson(ret.json, JsonMessage.class);
// if (q != null) {
//
// mMsgList = mMsgGroupList.findItem(mAskQuestion.id,
// MsgInfoData.Define.TYPE_QA);
// if (mMsgList == null) {
// MsgInfoData data = new MsgInfoData();
// data.text = mAskQuestion.text;
// data.time = mAskQuestion.time;
// data.senderId = mAskQuestion.senderId;
// data.name = mAskQuestion.senderName;
// data.vLen = mAskQuestion.vLen;
// data.vId = mAskQuestion.vId;
// data.linkId = mAskQuestion.id;
// data.photo = mAskQuestion.photo;
// data.state = QuestionInfo.STATE_MARK;
// data.look_over = Define.LOOK_OVER;
// data.setCmd(JsonMessage.Function.SOLVED);
//
// mMsgGroupList.addMsg(data);
// mMsgGroupList.addMsgToDB(data);
// mMsgList = mMsgGroupList.findItem(mAskQuestion.id,
// MsgInfoData.Define.TYPE_QA);
//
// UserInfo.state.solve++;
// UserInfo.getInstanse().setChange(true);
// } else {
// mMsgList.setState(mAskQuestion.id, QuestionInfo.STATE_MARK);
// }
//
// MsgInfoData data = new MsgInfoData();
// data.setData(q);
// data.state = QuestionInfo.STATE_MARK;
// data.look_over = Define.LOOK_OVER;
// mMsgGroupList.addMsg(data);
// mMsgGroupList.addMsgToDB(data);
// mEditMsg.setText("");
// mMsgList.setChanged(true);
// updateMesage();
// handler.sendEmptyMessage(104);
// LogInfo.LogOutE("haitian",
// "1-----------SolveQuestionActivity-----------");
// finish();
// Toast.makeText(SolveQuestionActivity.this, "�ظ��ɹ�",
// Toast.LENGTH_SHORT).show();
// }
// } else {
// LogInfo.LogOutE("haitian",
// "2-----------SolveQuestionActivity-----------");
// handler.sendEmptyMessage(104);
// new
// AlertDialog.Builder(SolveQuestionActivity.this).setTitle("��ʾ").setMessage(ret.explain)
// .setPositiveButton("ȷ��", null).show();
// }
// }
// }
// LogInfo.LogOutE("haitian",
// "3-----------SolveQuestionActivity-----------");
// handler.sendEmptyMessage(104);
// setButtonEnabled(true);
// WaitingActivity.stop();
//
// }
// };
// @Override
// public void onNetPostResult(PostPackage owner, ResultPackage result) {
// // TODO Auto-generated method stub
//
// if (result.isNetSucceed()) {
// mHasVoice = false;
//
// JsonRequestResult ret = JsonRequestResult.fromJson(result.getJson());
// if (ret != null) {
// if (ret.succeed == true) {
//
// ProcessMessage pro = ProcessMessage.getInstance();
// pro.process(ret);
// updateMesage();
// } else {
// new
// AlertDialog.Builder(this).setTitle("��ʾ").setMessage(ret.explain).setPositiveButton("ȷ��",
// null)
// .show();
// }
// }
// } else {
//
// }
//
// mBtnSend.setEnabled(true);
// WaitingActivity.stop();
// finish();
// }
@Override
public void updateMesage() {
// TODO Auto-generated method stub
if (mMsgList != null) {
if (mMsgList.isChanged()) {
mMsgList.setChanged(false);
mMsgGroupList.setMsgChanged(true);
int visible = View.GONE;
if (mMsgList.enabled()) {
visible = View.VISIBLE;
}
if (mLayoutSender.getVisibility() != visible) {
mLayoutSender.setVisibility(visible);
}
mShowList.clear();
mMsgList.getList(mShowList);
mListViewAdapter.notifyDataSetChanged();
int nSelection = mListViewAdapter.getCount() - 1;
if (nSelection > -1) {
mListView.setSelection(nSelection);
}
}
}
}
// @Override
// public void onData(String fileId) {
// // TODO Auto-generated method stub
// setButtonEnabled(true);
// if (fileId == null) {
//
// return;
// }
// if (fileId.length() == 0) {
//
// return;
// }
//
// byte[] voice = (byte[]) mDialog.getObject();
// String msg = mEditMsg.getText().toString().trim();
// postMsg(msg, fileId, voice.length);
// }
//
// @Override
// public void onBegin() {
// WaitingActivity.waiting(this, 0);
// }
//
// @Override
// public void onEnd() {
//
// WaitingActivity.stop();
// }
// public IHttpPostListener mGiveUpSolveListener = new IHttpPostListener() {
//
// @Override
// public void onNetPostResult(PostPackage owner, ResultPackage result) {
//
// if (result.isNetSucceed()) {
//
// JsonRequestResult ret = JsonRequestResult.fromJson(result.getJson());
// if (ret != null) {
// if (ret.succeed == true) {
// // SolveQuestionActivity.this.finish();
//
// } else {
// // SolveQuestionActivity.this.finish();
// // new
// // AlertDialog.Builder(SolveQuestionActivity.this).setTitle("��ʾ")
// // .setMessage(ret.explain).setPositiveButton("ȷ��",
// // null).show();
//
// }
// }
// }
// // SolveQuestionActivity.this.finish();
// }
// };
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
mDialog.close();
mInterpretView.setRecordLayoutDisp(View.GONE);
setBtnEnable(true);
// mInterpretView.dismissPopWindow();
}
return super.onKeyDown(keyCode, event);
}
private void GiveUpQuestion() {
// mPostPackage = new PostPackage(this, mGiveUpSolveListener);
mJsonMessage.cmd = JsonQuestion.GIVE_UP;
mJsonMessage.type = "";
updateMesage();
postPackageType = 1;
mPostPackageEngine = new PostPackageEngine(context, mJsonMessage, handler);
mPostPackageEngine.post(true);
// if (mPostPackage.post(mJsonMessage, getString(R.string.host_ip),
// true)) {
// // WaitingActivity.waiting(this , 0);
// }
}
@Override
protected void onStop() {
if (TextPlayer.getInstance().isPlaying()) {
TextPlayer.getInstance().stop();
}
super.onStop();
}
}