package com.ztspeech.simutalk2.qa; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import android.app.AlertDialog; import android.app.NotificationManager; import android.content.Context; 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.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; 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.TextView; import android.widget.Toast; import cn.ac.ia.directtrans.json.JsonEditLinkman; 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.JsonSendMessage; import cn.ac.ia.directtrans.json.QuestionInfo; import cn.ac.ia.files.RequestParam; import com.ztspeech.recognizer.EngineResultFlag; 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.FriendDataList; import com.ztspeech.simutalk2.data.MsgDataList; import com.ztspeech.simutalk2.data.MsgGroupList; import com.ztspeech.simutalk2.data.MsgInfoData; import com.ztspeech.simutalk2.data.TextPlayer; import com.ztspeech.simutalk2.data.UserInfo; import com.ztspeech.simutalk2.dictionary.util.LogInfo; import com.ztspeech.simutalk2.dictionary.util.PublicArithmetic; import com.ztspeech.simutalk2.dictionary.util.Util; import com.ztspeech.simutalk2.net.ListViewImageEngine; import com.ztspeech.simutalk2.net.PostPackage; import com.ztspeech.simutalk2.net.PostPackage.IHttpPostListener; import com.ztspeech.simutalk2.net.PostPackageEngine; import com.ztspeech.simutalk2.net.ResultPackage; import com.ztspeech.simutalk2.qa.message.ProcessMessage; 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.MessageItemView; import com.ztspeech.simutalk2.qa.view.MessageItemView.OnMessageClickListener; import com.ztspeech.simutalk2.trans.speak.SpeakItemData; import com.ztspeech.translator.Translator; public class MessageActivity extends UpdateBaseActivity implements OnClickListener, IHttpPostListener, OnTouchListener { // Intent param define public static final int NOTIFICATION_ID = 10; private static final int DO_ASK = 0; private static final int DO_SOLVE = 1; private static final int DO_MSG = 2; private static final int GET_LASTMSG = 100001; // view control private ListView mListView; private EditText mEditMsg; private TextView mtvTitle; private Button mBtnReturn; private Button mBtnSend; private Button mBtnAddFriend; private Button mBtnSpeak; private Button mBtnChOrEn; private ProcessMessage mProcessMessage = ProcessMessage.getInstance(); private FriendDataList mFriends = FriendDataList.getInstance(); private LinearLayout mLayoutSender; private UnisayRecognizerDialog mDialog = null; private Translator mTranslater = null; private VoicePlayer mPlayer = null; private int mListViewHeight = 0; // private TTSPlayer mTtsPlayer = null; // private LocaleTTS mTts = LocaleTTS.getInstance(); // data private MsgGroupList mMsgGroupList = MsgGroupList.getInstance(); private JsonEditLinkman mJsonAddFriend = new JsonEditLinkman(); private JsonSendMessage mJsonMessage = new JsonSendMessage(); private JsonQuestion mJsonQuestion = new JsonQuestion(); private static MsgDataList mMsgList; private MsgDataList mViewDataList = new MsgDataList(); private DataListAdapter mListViewAdapter = null; // private PostPackage mPostPackage; private int mLinkId = 0; private int mType = 0; private int mDoing = DO_MSG; private boolean mHasVoice = false; private static boolean isShow = false; private static String language; private ListViewImageEngine listViewImageLoaderEngine; private GetVoiceFromServerEngine mMessageActivityEngine; private PostVoiceDataToServerEngine mPostVoiceDataToServerEngine; private PostPackageEngine mPostPackageEngine; private Context context; private int postPackageType = 0; private int nsize = 0; public static boolean isShowNotifitionTip(MsgDataList msgList) { if (isShow) { if (mMsgList == msgList) { return false; } } return true; } @Override protected void onStart() { super.onStart(); isShow = true; mProcessMessage.setTalking(true); } @Override protected void onStop() { if (TextPlayer.getInstance().isPlaying()) { TextPlayer.getInstance().stop(); } super.onStop(); mProcessMessage.setTalking(false); isShow = false; } // ========================================================= // 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); 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", "MessageActivity>>>>>>>>>>>>>>>>>>> msg.obj =" + (String) msg.obj); postVoiceDataCallBack((String) msg.obj); break; case 104: mPostVoiceDataToServerEngine.dismissLoading(); LogInfo.LogOutE("haitian", "MessageActivity>>>>>>>>>>>>>>>>>>> dismissLoading"); break; case 200: postPackageCallBack((ResultPackage) msg.obj, postPackageType); break; case 404: Toast.makeText(context, (String) msg.obj, Toast.LENGTH_LONG).show(); break; case GET_LASTMSG://�������һ����Ϣ if(UserInfo.getInstanse().autoTTS&&UserInfo.getInstanse().isTranslatetalk()){ MsgInfoData item = (MsgInfoData) msg.obj; String[] str = item.text.split("/"); if(str.length>1&&item.senderId != UserInfo.state.id){ if(item.hasVoice()){ if(!mTextPlayer.isLoadingData){ speakStr(str[1]); } } } } break; default: break; } }; }; private boolean btnClickflag = false; // ========================================================= @Override public void onCreate(Bundle savedInstanceState) { overridePendingTransition(R.anim.slideinright, R.anim.slideoutleft); super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_message); context = this; // getWindow().setFormat(PixelFormat.RGBA_8888); mInterpretView = new InterpretView(this, handler, this); mTranslater = new Translator(this, mTranslaterListener); mDialog = new UnisayRecognizerDialog(this, "", mRecognizerListener, mInterpretView.mNewRecognizerViewListenerInterface); mPlayer = new VoicePlayer(this); mPlayer.setListener(mPlayerListener); mMessageActivityEngine = new GetVoiceFromServerEngine(context, mPlayer, handler); mPostVoiceDataToServerEngine = new PostVoiceDataToServerEngine(context, handler); mListView = (ListView) findViewById(R.id.lvQuestion); mBtnReturn = (Button) findViewById(R.id.btnReturn); mBtnSend = (Button) findViewById(R.id.btnSend); mBtnSpeak = (Button) findViewById(R.id.btnSpeak); mBtnAddFriend = (Button) findViewById(R.id.btnAddFriend); mEditMsg = (EditText) findViewById(R.id.editMsg); mtvTitle = (TextView) findViewById(R.id.tvMessageTitle); mLayoutSender = (LinearLayout) findViewById(R.id.layoutSender); mBtnChOrEn = (Button) findViewById(R.id.btnChOrEn); mEditMsg.setOnTouchListener(this); mBtnReturn.setOnClickListener(this); mBtnSend.setOnClickListener(this); mBtnAddFriend.setOnClickListener(this); mBtnSpeak.setOnClickListener(this); mBtnChOrEn.setOnClickListener(this); mBtnReturn.setText(""); // mEditMsg.setFocusableInTouchMode(false); mMsgList = null; initListView(); getIntentData(); // ȡ�� ��Ϣ��ʾ NotificationManager noticedManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); if (noticedManager != null) { noticedManager.cancel(NOTIFICATION_ID); } if (language == null) { language = UserInfo.getInstanse().s2sType; } if (language.equals(UserInfo.S2T_CH2EN)) { mBtnChOrEn.setBackgroundResource(R.drawable.qa_btn_z_f); //mDialog.setToChineseEngine(); mDialog.setToCH2ENEngine(); } else { mBtnChOrEn.setBackgroundResource(R.drawable.qa_btn_e_f); //mDialog.setToEnglishEngine(); mDialog.setToEN2CHEngine(); } mEditMsg.addTextChangedListener(mOnTextChangedListener); } protected boolean mMessageChanged = true; private TextWatcher mOnTextChangedListener = new TextWatcher() { @Override public void afterTextChanged(Editable arg0) { } @Override public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { } @Override public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { mMessageChanged = true; } }; public void setEditTextModel() { if (mListViewHeight == 0) { // int w = // View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); // int h = // View.MeasureSpec.makeMeasureSpec(0,View.MeasureSpec.UNSPECIFIED); // mListView.measure(w, h); // mListViewHeight = mListView.getMeasuredHeight(); mListViewHeight = mListView.getHeight(); // imm = (InputMethodManager) // getSystemService(Context.INPUT_METHOD_SERVICE); } handler.postDelayed(mKeyboardRunnable, 100); } private Runnable mKeyboardRunnable = new Runnable() { // s public void run() { // InputMethodManager imm = (InputMethodManager) // getSystemService(INPUT_METHOD_SERVICE); int h = mListView.getHeight(); if (mListViewHeight > h) { if (mBtnSpeak.getVisibility() == View.VISIBLE) { mBtnSpeak.setVisibility(View.GONE); mBtnChOrEn.setVisibility(View.GONE); // controlLayout.setMinimumHeight(120); // mEditInput.setLines(2); // mEditInput.setMaxLines(2); // mEditInput.setSingleLine(false); } } else { if (mBtnSpeak.getVisibility() == View.GONE) { // mEditInput.setLines(1); // mEditInput.setMaxLines(1); // mEditInput.setSingleLine(true); mBtnSpeak.setVisibility(View.VISIBLE); mBtnChOrEn.setVisibility(View.VISIBLE); } } handler.postDelayed(mKeyboardRunnable, 100); } }; private OnPlayerListener mPlayerListener = new OnPlayerListener() { public InputStream getPlayWaveData(String text) { // InputStream in = getTTSInputStream(text); // InputStream in = mTtsDownloader.getTTSInputStream(text); return null; } public void onPlayStart() { } public void onPlayStop() { } public void onPlayLoadDataStart() { } public void onPlayLoadDataEnd() { } }; private String transResult = null; private OnEngineListener mTranslaterListener = new OnEngineListener(){ @Override public void onEngineEnd() { // TODO Auto-generated method stub } @Override public void onEngineResult(List arg0, int arg1, String arg2) { if (arg1 == EngineResultFlag.OVER) { if(arg0==null){ return; } if(arg0.size()>0){ String msg = mEditMsg.getText().toString().trim(); postMsg(msg, arg0.get(0).toString(), "", 0); } } else if (arg1 == EngineResultFlag.NOTHING) { } else if (arg1 == EngineResultFlag.CONNECT_ERROR) { } else if (arg1 == EngineResultFlag.CANCEL) { // doError(flag); } else { } } @Override public void onEngineStart() { // TODO Auto-generated method stub } }; private OnEngineListener mRecognizerListener = new OnEngineListener() { public void onEngineResult(List list, int flag, String id) { mDialog.close(); mInterpretView.dismissPopWindow(); mBtnSpeak.setEnabled(true); if (list == null) { return; } if(list.size()>0){ mHasVoice = true; mEditMsg.append((String) list.get(0)); transResult = null; } if(list.size()>1){ transResult= (String) list.get(1); } // mEditMsg.setText(text); } public void onEngineStart() { } public void onEngineEnd() { mBtnSpeak.setEnabled(true); } }; @Override public boolean onCreateOptionsMenu(Menu menu) { menu.add(0, 1, 1, getString(R.string.qa_msg_menu_clear)); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: clearMessage(); break; } return super.onOptionsItemSelected(item); } private void clearMessage() { mMsgList = mMsgGroupList.findItem(mLinkId, mType); if (mMsgList != null) { mMsgGroupList.setMsgChanged(true); mMsgList.clear(); } updateListView(true); } private void getIntentData() { mBtnAddFriend.setVisibility(View.INVISIBLE); mtvTitle.setBackgroundResource(R.drawable.qa_top_button_03); mDoing = DO_MSG; Intent intent = this.getIntent(); long id = intent.getLongExtra(MsgGroupList.PARAM_ID, 0); mType = intent.getIntExtra(MsgGroupList.PARAM_TYPE, 0); mLinkId = (int) id; mMsgList = mMsgGroupList.findItem(mLinkId, mType); if (mMsgList == null) { return; } if (mType == MsgInfoData.Define.TYPE_QA) { int ownerId = mMsgList.getOwnerId(); // mBtnMsgClose.setText(getString(R.string.qa_msg_btn_add_friend)); // mBtnAddFriend.setVisibility(View.INVISIBLE); if (ownerId == UserInfo.state.id) { mDoing = DO_ASK; if (mMsgList.closed()) { mtvTitle.setBackgroundResource(R.drawable.qa_you_record_button_normal01); } else { mtvTitle.setBackgroundResource(R.drawable.qa_you_record_button_normal01); } } else { mDoing = DO_SOLVE; if (mMsgList.closed()) { mtvTitle.setBackgroundResource(R.drawable.qa_you_record_button_normal02); } else { mtvTitle.setBackgroundResource(R.drawable.qa_you_record_button_normal02); } } } updateListView(true); } @Override public void finish() { if (mMsgList != null) { mMsgGroupList.setMsgChanged(true); mMsgList.setAllLookOver(); } mMsgList = null; MsgGroupListActivity.isViewUpdate = true; setResult(RESULT_OK, null); super.finish(); overridePendingTransition(R.anim.slideinleft, R.anim.slideoutright); } private void updateListView(boolean update) { if (mMsgList == null) { mMsgList = mMsgGroupList.findItem(mLinkId, mType); if (mMsgList == null) { return; } } if (mMsgList.mIsChanged || update) { mMsgList.mIsChanged = false; mMsgGroupList.setMsgChanged(true); int visible = View.GONE; if (mMsgList.enabled()) { visible = View.VISIBLE; } if (mLayoutSender.getVisibility() != visible) { mLayoutSender.setVisibility(visible); } if (mDoing != DO_MSG) { visible = View.VISIBLE; if (mMsgList.closed()) { visible = View.INVISIBLE; } visible = View.INVISIBLE; MsgInfoData msg = mMsgList.getLinkman(UserInfo.state.id); if (msg != null) { if (null == mFriends.findById(msg.senderId)) { visible = View.VISIBLE; } else { visible = View.INVISIBLE; } } if (mBtnAddFriend.getVisibility() != visible) { mBtnAddFriend.setVisibility(visible); } } mViewDataList.clear(); mMsgList.getList(mViewDataList); mListViewAdapter.notifyDataSetChanged(); int nSelection = mListViewAdapter.getCount() - 1; if (nSelection > -1) { mListView.setSelection(nSelection); //�����һ�����͵����߳� if(nsize!=0){ Message msg = new Message(); msg.what = GET_LASTMSG; msg.obj = mViewDataList.get(mViewDataList.size()-1); handler.sendMessage(msg); } nsize = mViewDataList.size(); } } } public IHttpPostListener mSetQusetionListener = 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) { mMsgGroupList.setState(mLinkId, QuestionInfo.STATE_CLOSE); finish(); } else { new AlertDialog.Builder(MessageActivity.this).setTitle("��ʾ").setMessage(ret.explain) .setPositiveButton("ȷ��", null).show(); } } } mBtnSend.setEnabled(true); WaitingActivity.stop(); } @Override public void isShowTipDialog(String msg) { } }; private TextPlayer mTextPlayer = TextPlayer.getInstance(); public void speakStr(String str) { int result = new PublicArithmetic().isWhat(str); switch (result) { case 0: case 3: mTextPlayer.setPopContext(context); if (mTextPlayer.isPlaying()) { mTextPlayer.stop(); } else { mTextPlayer.playChinese(str); } break; case 1: case 2: mTextPlayer.setPopContext(context); if (mTextPlayer.isPlaying()) { mTextPlayer.stop(); } else { mTextPlayer.playEnglish(str); } break; } } private OnMessageClickListener mItemLinstener = new OnMessageClickListener() { @Override public void OnClick(String cmd, MsgInfoData data) { if ("play".equals(cmd)) { mMessageActivityEngine.httpRequestNewThread(data.vId, RequestParam.FILE_TYPE_VOICE); } } }; private void initListView() { listViewImageLoaderEngine = new ListViewImageEngine(mListView); mListViewAdapter = new DataListAdapter(this, mViewDataList) { @Override public AdapterItemView getAdapterItemView(Context context) { return new MessageItemView(context, mItemLinstener, listViewImageLoaderEngine); } }; mListView.setAdapter(mListViewAdapter); mListView.setOnItemClickListener(mAdapterLinstener); mListView.setDividerHeight(0); } private OnItemClickListener mAdapterLinstener = new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { MessageItemView v = (MessageItemView) arg1; MsgInfoData data = (MsgInfoData) v.getData(); if (data.hasVoice()) { if(UserInfo.getInstanse().isTranslatetalk()){ String[] text = data.text.split("/"); if(text.length>1){ speakStr(text[1]); }else{ mMessageActivityEngine.httpRequestNewThread(data.vId, RequestParam.FILE_TYPE_VOICE); } }else{ mMessageActivityEngine.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); } } }; public void onClick(View v) { if (v == mBtnReturn) { finish(); } else if (v == mBtnSend) { sendMsg(); } else if (v == mBtnAddFriend) { switch (mDoing) { case DO_ASK: addFriend(); break; case DO_SOLVE: addFriend(); break; case DO_MSG: // CloseMessage(); break; default: } } else if (v == mBtnSpeak) { InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(mEditMsg.getWindowToken(), 0); // mBtnSpeak.setEnabled(false); mInterpretView.showPopWindowLocation(); 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.setToEN2CHEngine(); } else { mBtnChOrEn.setBackgroundResource(R.drawable.qa_btn_z_f); language = UserInfo.S2T_CH2EN; mDialog.setToCH2ENEngine(); } } 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.dismissPopWindow(); } else if (v.getId() == R.id.btn_record) { if (!btnClickflag) { btnClickflag = true; mDialog.show(); mInterpretView.setBtnRecordEnable(true); } else { btnClickflag = false; mDialog.close(); mInterpretView.dismissPopWindow(); } } else if (v == mEditMsg) { /* * if(mIsInputTextModel) { * * } else { mBtnSpeak.setEnabled(false); mDialog.show(); } */ } } private void addFriend() { MsgInfoData msg = mMsgList.getLinkman(UserInfo.state.id); if (msg == null) { return; } // mPostPackage = new PostPackage(this, mAddFriendListener); mJsonAddFriend.setInviteLinkman(msg.senderId); mJsonAddFriend.name = msg.name; postPackageType = 2; mPostPackageEngine = new PostPackageEngine(context, mJsonAddFriend, handler); mPostPackageEngine.post(); // if (mPostPackage.post(mJsonAddFriend, getString(R.string.host_ip), // true)) { // // WaitingActivity.waiting(this, 0); // } } // public IHttpPostListener mAddFriendListener = 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) { // // ProcessMessage pro = ProcessMessage.getInstance(); // pro.process(ret); // mBtnMsgClose.setVisibility(View.INVISIBLE); // } else { // new // AlertDialog.Builder(MessageActivity.this).setTitle("��ʾ").setMessage(ret.explain) // .setPositiveButton("ȷ��", null).show(); // } // } // } // // WaitingActivity.stop(); // } // }; 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++;// �ɹ������handkey ProcessMessage pro = ProcessMessage.getInstance(); pro.process(ret, false); updateListView(true); mEditMsg.setText(""); LogInfo.LogOutE("PostPackageEngine", "PostPackageEngine--ret.succeed == true"); } else { new AlertDialog.Builder(MessageActivity.this).setTitle("��ʾ").setMessage(ret.explain) .setPositiveButton("ȷ��", null).show(); LogInfo.LogOutE("PostPackageEngine", "PostPackageEngine--ret.succeed == false"); } } } else if (postPackageType == 1) { if (ret != null) { if (ret.succeed == true) { mMsgGroupList.setState(mLinkId, QuestionInfo.STATE_CLOSE); finish(); } else { new AlertDialog.Builder(MessageActivity.this).setTitle("��ʾ").setMessage(ret.explain) .setPositiveButton("ȷ��", null).show(); } } } else if (postPackageType == 2) { if (ret != null) { if (ret.succeed == true) { ProcessMessage pro = ProcessMessage.getInstance(); pro.process(ret, false); mBtnAddFriend.setVisibility(View.INVISIBLE); Toast.makeText(context, "��Ӻ��ѳɹ�", Toast.LENGTH_LONG).show(); } else { new AlertDialog.Builder(MessageActivity.this).setTitle("��ʾ").setMessage(ret.explain) .setPositiveButton("ȷ��", null).show(); } } } } } protected void CloseQuestion() { MsgInfoData data = mMsgList.getFirstItem(); // mPostPackage = new PostPackage(this, mSetQusetionListener); mJsonQuestion.id = mLinkId; mJsonQuestion.owner = data.senderId; mJsonQuestion.cmd = JsonQuestion.MARK; postPackageType = 1; mPostPackageEngine = new PostPackageEngine(context, mJsonQuestion, handler); mPostPackageEngine.post(); // if (mPostPackage.post(mJsonQuestion, getString(R.string.host_ip), // true)) { // // mBtnSend.setEnabled(false); // WaitingActivity.waiting(this, WAIT_POST_MSG); // } } private void sendMsg() { String msg = mEditMsg.getText().toString().trim(); if (msg.length() == 0 && mHasVoice == false) { return; } if (mHasVoice) { postSbx(); } else { if(UserInfo.getInstanse().isTranslatetalk()){ if (PublicArithmetic.chTandEnF(msg.trim())) { mTranslater.transCH2EN(msg, false); } else { mTranslater.transEN2CH(msg, false); } }else{ postMsg(msg, "", 0); } } } private void postMsg(String sText, String vId, int vLen) { mJsonMessage.linkId = mLinkId; mJsonMessage.text = sText; mJsonMessage.vLen = vLen; mJsonMessage.vId = vId; if (mMessageChanged) { mMessageChanged = false; Util.handkey++; } // ����keyֵ mJsonMessage.handkey = Util.handkey; switch (mDoing) { case DO_ASK: case DO_SOLVE: mJsonMessage.cmd = JsonMessage.Function.SOLVED; break; case DO_MSG: default: mJsonMessage.cmd = JsonMessage.Function.MSG; } postPackageType = 0; mPostPackageEngine = new PostPackageEngine(context, mJsonMessage, handler); mPostPackageEngine.post(); } private void postMsg(String sText,String sTrans, String vId, int vLen) { mJsonMessage.linkId = mLinkId; mJsonMessage.text = sText+"/"+sTrans; mJsonMessage.vLen = vLen; mJsonMessage.vId = vId; if (mMessageChanged) { mMessageChanged = false; Util.handkey++; } // ����keyֵ mJsonMessage.handkey = Util.handkey; switch (mDoing) { case DO_ASK: case DO_SOLVE: mJsonMessage.cmd = JsonMessage.Function.SOLVED; break; case DO_MSG: default: mJsonMessage.cmd = JsonMessage.Function.MSG; } postPackageType = 0; mPostPackageEngine = new PostPackageEngine(context, mJsonMessage, handler); mPostPackageEngine.post(); } private void postVoiceDataCallBack(String fileId) { if (fileId == null) { setButtonEnabled(true); return; } if (fileId.length() == 0) { setButtonEnabled(true); return; } byte[] voice = (byte[]) mDialog.getObject(); String msg = mEditMsg.getText().toString().trim(); if (mMessageChanged) { mMessageChanged = false; Util.handkey++; } // ����keyֵ mJsonMessage.handkey = Util.handkey; mJsonMessage.linkId = mLinkId; if(UserInfo.getInstanse().isTranslatetalk()){ mJsonMessage.text = msg+"/"+transResult; }else{ mJsonMessage.text = msg; } mJsonMessage.vLen = voice.length; mJsonMessage.vId = fileId; switch (mDoing) { case DO_ASK: case DO_SOLVE: mJsonMessage.cmd = JsonMessage.Function.SOLVED; break; case DO_MSG: default: mJsonMessage.cmd = JsonMessage.Function.MSG; } postPackageType = 0; mPostPackageEngine = new PostPackageEngine(context, mJsonMessage, handler); mPostPackageEngine.post(); handler.sendEmptyMessage(104); } private void postSbx() { byte[] voice = (byte[]) mDialog.getObject(); mPostVoiceDataToServerEngine.httpRequestPostNewThread(voice, RequestParam.FILE_TYPE_VOICE); } @Override public void onNetPostResult(PostPackage owner, ResultPackage result) { if (result.isNetSucceed()) { JsonRequestResult ret = JsonRequestResult.fromJson(result.getJson()); if (ret != null) { if (ret.succeed == true) { ProcessMessage pro = ProcessMessage.getInstance(); pro.process(ret, false); } else { new AlertDialog.Builder(this).setTitle("��ʾ").setMessage(ret.explain).setPositiveButton("ȷ��", null) .show(); } } } else { } mBtnSend.setEnabled(true); WaitingActivity.stop(); } @Override public void updateMesage() { updateListView(false); } private void setButtonEnabled(boolean b) { mBtnSend.setEnabled(b); mBtnSpeak.setEnabled(b); } @Override public void isShowTipDialog(String msg) { } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { mDialog.close(); mInterpretView.dismissPopWindow(); } return super.onKeyDown(keyCode, event); } @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { setEditTextModel(); } return false; } }