package com.ztspeech.simutalk2.qa; import java.io.InputStream; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import cn.ac.ia.directtrans.json.Json; import cn.ac.ia.directtrans.json.JsonMessage; import cn.ac.ia.directtrans.json.JsonRequestResult; import cn.ac.ia.directtrans.json.QuestionInfo; import cn.ac.ia.files.RequestParam; import com.ztspeech.recognizer.speak.VoicePlayer; import com.ztspeech.recognizer.speak.interf.OnPlayerListener; import com.ztspeech.simutalk2.R; import com.ztspeech.simutalk2.data.MsgInfoData; import com.ztspeech.simutalk2.data.UserInfo; import com.ztspeech.simutalk2.net.ResultPackage; @SuppressLint("HandlerLeak") public class GetQuestionActivity 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; // public static final int TYPE_ASK1 = 1; // view control private Button mBtnGiveUp; private Button mBtnResponse; private QuestionInfo mAskQuestion; private VoicePlayer mPlayer = null; private TextView tvMsgText; private TextView tvMsgTime; private TextView tvName; private Button btnPlayer; private TextView tvLen; private LinearLayout layoutQuestion; // data private MsgInfoData data; private Context context; private GetVoiceFromServerEngine mGetQuestionActivityEngine; 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: handler.postDelayed(new Runnable() { public void run() { layoutQuestion.setBackgroundColor(0); } }, data.vLen); break; case 200: postPackageCallBack((ResultPackage) msg.obj); break; case 404: Toast.makeText(context, (String) msg.obj, Toast.LENGTH_LONG).show(); break; default: break; } }; }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_getquestion); context = this; mPlayer = new VoicePlayer(this); mPlayer.setListener(mPlayerListener); mBtnGiveUp = (Button) findViewById(R.id.btnGiveUp); mBtnResponse = (Button) findViewById(R.id.btnResponse); tvMsgText = (TextView) findViewById(R.id.tvMsgText); tvMsgTime = (TextView) findViewById(R.id.tvMsgTime); tvName = (TextView) findViewById(R.id.tvName); tvLen = (TextView) findViewById(R.id.tvLen); btnPlayer = (Button) findViewById(R.id.btnPlay); layoutQuestion = (LinearLayout) findViewById(R.id.layoutQuestion); layoutQuestion.setOnClickListener(this); mBtnGiveUp.setOnClickListener(this); mBtnResponse.setOnClickListener(this); mGetQuestionActivityEngine = new GetVoiceFromServerEngine(context, mPlayer, handler); // mEditMsg .setFocusableInTouchMode(false); getIntentData(); } private void postPackageCallBack(ResultPackage result) { if (result.isNetSucceed()) { JsonRequestResult ret = JsonRequestResult.fromJson(result.getJson()); if (ret != null) { if (ret.succeed == true) { JsonMessage q = Json.fromJson(ret.json, JsonMessage.class); if (q != null) { } } else { new AlertDialog.Builder(GetQuestionActivity.this).setTitle("��ʾ").setMessage(ret.explain) .setPositiveButton("ȷ��", null).show(); } } } } @Override protected void onResume() { super.onResume(); } @Override protected void onPause() { super.onPause(); } private void getIntentData() { mAskQuestion = UserStateActivity.mQuestionInfo; if (mAskQuestion != null) { 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; tvName.setText(data.name); tvMsgTime.setText(UserInfo.getTimeString(data.time)); tvMsgText.setText(data.text); if (data.vLen == 0) { btnPlayer.setVisibility(View.GONE); tvLen.setVisibility(View.GONE); } else { btnPlayer.setVisibility(View.VISIBLE); tvLen.setVisibility(View.VISIBLE); tvLen.setText(UserInfo.getSbxLen(data.vLen)); } } } 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 } }; @Override public boolean onCreateOptionsMenu(Menu menu) { // getMenuInflater().inflate(R.menu.activity_main, menu); return true; } public void onClick(View v) { if (v == mBtnGiveUp) { finish(); } else if (v == mBtnResponse) { // sendMsg(); Intent intent = new Intent(GetQuestionActivity.this, SolveQuestionActivity.class); startActivity(intent); finish(); } else if (v == layoutQuestion) { layoutQuestion.setBackgroundColor(R.drawable.no2_searchresult_middle1); if (data.hasVoice()) { mGetQuestionActivityEngine.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 void updateMesage() { // TODO Auto-generated method stub } }