package com.ztspeech.simutalk2.qa.view; import java.util.ArrayList; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.os.Handler; import android.os.Message; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.RelativeLayout; import android.widget.TextView; import com.ztspeech.recognizer.EngineResultFlag; import com.ztspeech.recognizer.interf.NewRecognizerViewListenerInterface; import com.ztspeech.simutalk2.R; import com.ztspeech.simutalk2.dictionary.util.LogInfo; import com.ztspeech.simutalk2.dictionary.util.Util; import com.ztspeech.simutalk2.dictionary.util.Util.R_String; import com.ztspeech.simutalk2.qa.view.DirWordSelectDialog.SimuTalkSendDialogListener; public class InterpretView { private RelativeLayout record_layout; private ImageButton mBtnRecord, btn_bg; private TextView text_status; private Button btnCancel; private AnimationDrawable rocketAnimation; private AnimationDrawable noVoiceAnimation; private ImageView imageWaite, imageNoVoiceAnim; private Handler mHandlerKeyboard; private Context mContext; private ArrayList<String> datas = new ArrayList<String>(); private int[] recordViewArr = new int[] { R.drawable.bottorm_button_recording1, R.drawable.bottorm_button_recording2, R.drawable.bottorm_button_recording3, R.drawable.bottorm_button_recording4, R.drawable.bottorm_button_recording5, R.drawable.bottorm_button_recording6, R.drawable.bottorm_button_recording7, R.drawable.bottorm_button_recording8 }; // private int[] recordBgArr = new int[] { // R.drawable.trans_bottorm_button_recording1, // R.drawable.trans_bottorm_button_recording2, // R.drawable.trans_bottorm_button_recording3, // R.drawable.trans_bottorm_button_recording4, // R.drawable.trans_bottorm_button_recording5, // R.drawable.trans_bottorm_button_recording6, // R.drawable.trans_bottorm_button_recording7, // R.drawable.trans_bottorm_button_recording8 }; // ============================================================================================================= private DirWordSelectDialog resultDialog; private LayoutInflater inflater; private View v; private PopupWindow mRecognizerWindow; private boolean isHaveView = false; // ===================================================================== public InterpretView(Context context, Handler handler, View v, OnClickListener mOnClickListener) { mHandlerKeyboard = handler; isHaveView = true; mContext = context; record_layout = (RelativeLayout) v.findViewById(R.id.record_layout); mBtnRecord = (ImageButton) v.findViewById(R.id.btn_record); btn_bg = (ImageButton) v.findViewById(R.id.btn_bg); imageWaite = (ImageView) v.findViewById(R.id.imageviewanim); text_status = (TextView) v.findViewById(R.id.text_status); btnCancel = (Button) v.findViewById(R.id.btn_cancel); imageNoVoiceAnim = (ImageView) v.findViewById(R.id.imagenovoiceanim); mBtnRecord.setOnClickListener(mOnClickListener); btn_bg.setOnClickListener(mOnClickListener); btnCancel.setOnClickListener(mOnClickListener); imageNoVoiceAnim.setOnClickListener(mOnClickListener); imageWaite.setBackgroundResource(R.drawable.recognizer_wait_anim); rocketAnimation = (AnimationDrawable) imageWaite.getBackground(); // imageNoVoiceAnim.setBackgroundResource(R.drawable.record_no_voice_anim); // noVoiceAnimation = (AnimationDrawable) // imageNoVoiceAnim.getBackground(); } public InterpretView(Context context, Handler handler, OnClickListener mOnClickListener) { inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); isHaveView = false; v = inflater.inflate(R.layout.recognizer_view, null); mRecognizerWindow = new PopupWindow(v, LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT); mRecognizerWindow.setFocusable(true); mRecognizerWindow.setOutsideTouchable(false); mHandlerKeyboard = handler; mContext = context; record_layout = (RelativeLayout) v.findViewById(R.id.record_layout); mBtnRecord = (ImageButton) v.findViewById(R.id.btn_record); btn_bg = (ImageButton) v.findViewById(R.id.btn_bg); imageWaite = (ImageView) v.findViewById(R.id.imageviewanim); text_status = (TextView) v.findViewById(R.id.text_status); btnCancel = (Button) v.findViewById(R.id.btn_cancel); imageNoVoiceAnim = (ImageView) v.findViewById(R.id.imagenovoiceanim); mBtnRecord.setOnClickListener(mOnClickListener); btn_bg.setOnClickListener(mOnClickListener); btnCancel.setOnClickListener(mOnClickListener); imageNoVoiceAnim.setOnClickListener(mOnClickListener); imageWaite.setBackgroundResource(R.drawable.recognizer_wait_anim); rocketAnimation = (AnimationDrawable) imageWaite.getBackground(); // imageNoVoiceAnim.setBackgroundResource(R.drawable.record_no_voice_anim); // noVoiceAnimation = (AnimationDrawable) // imageNoVoiceAnim.getBackground(); } public NewRecognizerViewListenerInterface mNewRecognizerViewListenerInterface = new NewRecognizerViewListenerInterface() { long count = 0; public void onVoiceValue(int value) { int v = 0; int mRecordAnimationCount1 = recordViewArr.length; if (value > 0) { if (value < 5) { v = 1; } else { v = (value * mRecordAnimationCount1) / 100; if (v >= mRecordAnimationCount1) { v = mRecordAnimationCount1 - 1; } } } count++; if (count % 10 == 0) { mHandlerKeyboard.sendMessage(Message.obtain(mHandlerKeyboard, Util.ON_VOICE_VALUE, v)); } } public void onRecordEnd() { mHandlerKeyboard.sendEmptyMessage(Util.ON_RECORD_END); LogInfo.LogOut("haitian", ">>>>>>>>>>>>>>>-onRecordEnd "); } public void onRecordBegin() { mHandlerKeyboard.sendEmptyMessage(Util.ON_RECORD_BEGIN); LogInfo.LogOut("haitian", ">>>>>>>>>>>>>>>-onRecordBegin "); } public void onRecorderError(int error) { mHandlerKeyboard.sendEmptyMessage(Util.ON_RECORDER_ERROR); LogInfo.LogOut("haitian", ">>>>>>>>>>>>>>>-onRecorderError "); } public void onWaitBegin() { mHandlerKeyboard.sendEmptyMessage(Util.ON_WAIT_BEGIN); LogInfo.LogOut("haitian", ">>>>>>>>>>>>>>>-onWaitBegin "); } public void onWaitEnd() { mHandlerKeyboard.sendEmptyMessage(Util.ON_WAIT_END); LogInfo.LogOut("haitian", ">>>>>>>>>>>>>>>-onWaitEnd "); } public void onRecognizerError(int flag) { LogInfo.LogOut("haitian", ">>>>>>>>>>>>>>>-onRecognizerError flag = " + flag); mHandlerKeyboard.sendMessage(Message.obtain(mHandlerKeyboard, Util.ON_RECOGNIZER_ERROR, flag)); } public void setListView(String[] data) { datas.clear(); for (String result : data) { datas.add(result); } mHandlerKeyboard.sendMessage(Message.obtain(mHandlerKeyboard, Util.SET_LIST_VIEW, datas)); } }; public void dispRresultList(ArrayList<String> mDatas) { if (isHaveView) { setRecordLayoutDisp(View.GONE); } else { dismissPopWindow(); } resultDialog = new DirWordSelectDialog(mContext).setTitle("ѡ��Ҫ��ĵ���").setButton("ȷ��", "ȡ��", null, new SimuTalkSendDialogListener() { public void onClick() { } }); resultDialog.setItems(mDatas, mOnItemClickListener); resultDialog.show(); } private OnItemClickListener mOnItemClickListener = new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { resultDialog.dismiss(); mHandlerKeyboard.sendMessage(Message.obtain(mHandlerKeyboard, Util.SELECT_RESULT, datas.get(position))); } }; private boolean flag = false; public void startViewAnim() { btn_bg.setVisibility(View.GONE); mBtnRecord.setVisibility(View.GONE); imageNoVoiceAnim.setVisibility(View.GONE); imageWaite.setVisibility(View.VISIBLE); // noVoiceAnimation.stop(); rocketAnimation.start(); flag = true; } public void clearViewAnim() { mBtnRecord.setVisibility(View.VISIBLE); btn_bg.setVisibility(View.VISIBLE); mBtnRecord.setEnabled(true); btn_bg.setBackgroundResource(R.drawable.trans_bottorm_button_recording1); mBtnRecord.setBackgroundResource(R.drawable.trans_bottorm_button_speak); imageWaite.setVisibility(View.GONE); if (flag) { rocketAnimation.stop(); } flag = false; } public void _clearViewAnim() { mBtnRecord.setVisibility(View.VISIBLE); btn_bg.setVisibility(View.VISIBLE); mBtnRecord.setEnabled(true); btn_bg.setBackgroundResource(R.drawable.trans_bottorm_button_recording1); mBtnRecord.setBackgroundResource(R.drawable.trans_bottorm_button_speak); imageWaite.setVisibility(View.GONE); rocketAnimation.stop(); flag = false; } public void startNoVoiceAnim() { imageNoVoiceAnim.setVisibility(View.VISIBLE); // btn_bg.setVisibility(View.GONE); mBtnRecord.setVisibility(View.GONE); // noVoiceAnimation.start(); } public void clearNoVoiceAnim() { btn_bg.setVisibility(View.VISIBLE); mBtnRecord.setVisibility(View.VISIBLE); btn_bg.setBackgroundResource(R.drawable.trans_bottorm_button_recording1); mBtnRecord.setBackgroundResource(R.drawable.trans_bottorm_button_speak); // noVoiceAnimation.stop(); imageNoVoiceAnim.setVisibility(View.GONE); } public void setBtnRecordEnable(boolean flag) { mBtnRecord.setEnabled(flag); } public void setBtnVoiceAnimEnable(boolean flag) { imageNoVoiceAnim.setClickable(flag); btn_bg.setClickable(flag); } public void setBtnRecordBg(int index) { // btn_bg.setBackgroundResource(recordBgArr[index]); // mBtnRecord.setBackgroundResource(recordViewArr[index]); imageNoVoiceAnim.setBackgroundResource(recordViewArr[index]); } public void setTextStatus(int flag) { // text_status.setText(txt); LogInfo.LogOutE("haitian", "flag =" + flag); if (EngineResultFlag.NOTHING == flag) { Util.showToast(mContext, R_String.lbl_speak_nothing); }else if(-2 == flag){ } else { Util.showToast(mContext, "(" + flag + ")" + R_String.lbl_net_error); } if (isHaveView) { setRecordLayoutDisp(View.GONE); } else { dismissPopWindow(); } } public void setTextStatusDisp(int visible) { // text_status.setVisibility(visible); } public void setRecordLayoutDisp(int visible) { record_layout.setVisibility(visible); } public void setBtnCancelDisp(int visible) { btnCancel.setVisibility(visible); } public void showPopWindowLocation() { mRecognizerWindow.showAtLocation(v, Gravity.BOTTOM, 0, 0); } public void dismissPopWindow() { mRecognizerWindow.dismiss(); } // ============================================================================================================= // ============================================================================================================= }