package com.ztspeech.simutalk2.trans.speak; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.text.Html; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import android.widget.TextView; import com.ztspeech.recognizer.speak.OnTTSPlayerListener; import com.ztspeech.simutalk2.R; import com.ztspeech.simutalk2.data.TextPlayer; import com.ztspeech.simutalk2.data.UserInfo; import com.ztspeech.simutalk2.qa.WaitingActivity; public class SpeakView extends LinearLayout implements OnClickListener { private Context context; public SpeakItemData data = null; private IOnSpeakViewAdapterCallback mCallback; private RelativeLayout mllSpeak; private RelativeLayout mllTrans; private TextView mtvSpeak; private TextView mtvTrans; private TextView mtvFlag; private ImageButton btnPalyTrans; private ImageButton btnPalySpeak; private ImageView imgFlag; private ImageView imgFlagOnlyR; private RelativeLayout rFlag1; private RelativeLayout rFlag2; // private LinearLayout llLeft; // private LinearLayout llRight; private float fontSize = 16; private static int[][] backgroundId = new int[3][2]; public interface IOnSpeakViewAdapterCallback { public void speakViewAdapterCheckedChange(SpeakItemData data, String cmd); } public SpeakView(Context context, SpeakItemData data) { super(context); init(context, data); } public void setFontSize(float size) { fontSize = size; } @SuppressLint({ "ResourceAsColor", "ResourceAsColor" }) private void changeFontColorFocusFalse() { mtvSpeak.setTextColor(getResources().getColor(R.color.item_focused_true)); mtvSpeak.setTextSize(fontSize); mtvTrans.setTextColor(getResources().getColor(R.color.item_focused_true)); mtvTrans.setTextSize(fontSize); } private void changeFontColorFocusTrue() { mtvSpeak.setTextColor(getResources().getColor(R.color.item_focused_false)); mtvSpeak.setTextSize(fontSize); mtvTrans.setTextColor(getResources().getColor(R.color.item_focused_false)); mtvTrans.setTextSize(fontSize); } public void setData(SpeakItemData data) { if (data == null) { return; } this.data = data; if(data.mspeak.equals("")){ mtvSpeak.setText(data.speak); }else{ String[] speak = data.mspeak.split(" / "); if(speak.length>1){ mtvSpeak.setText(Html.fromHtml("<font size=\"3\" color=\"black\">"+speak[0]+"</font><font size=\"3\" color=\"#C0C0C0\">"+speak[1]+"</font>")); }else{ mtvSpeak.setText(Html.fromHtml("<font size=\"3\" color=\"black\">"+speak[0]+"</font>")); } } mtvTrans.setText(data.trans); float size = fontSize; if (data.focus) { size += 1; } if (data.isFocus == data) { // llLeft.setVisibility(View.GONE); // llRight.setVisibility(View.VISIBLE); rFlag1.setVisibility(View.VISIBLE); rFlag2.setVisibility(View.VISIBLE); if(data.speakStream==null&&!UserInfo.S2T_LETTER.equals(data.type)){ btnPalySpeak.setVisibility(View.INVISIBLE); }else{ btnPalySpeak.setVisibility(View.VISIBLE); } if( data.isTransTTS()){ // ��ĸ�����TTS btnPalyTrans.setVisibility(View.VISIBLE); }else{ btnPalyTrans.setVisibility(View.INVISIBLE); } } else { // llLeft.setVisibility(View.VISIBLE); // llRight.setVisibility(View.GONE); rFlag1.setVisibility(View.GONE); rFlag2.setVisibility(View.GONE); btnPalySpeak.setVisibility(View.INVISIBLE); btnPalyTrans.setVisibility(View.INVISIBLE); } setBg(data.isFocus == data); if (data.isExistTrans()) { if (data.flag == 3) { imgFlag.setVisibility(View.GONE); imgFlagOnlyR.setVisibility(View.GONE); } else if (data.flag == 1) { imgFlagOnlyR.setVisibility(View.GONE); imgFlag.setVisibility(View.VISIBLE); imgFlag.setImageResource(R.drawable.trans_pop_good); } else if (data.flag == 0) { imgFlagOnlyR.setVisibility(View.GONE); imgFlag.setVisibility(View.VISIBLE); imgFlag.setImageResource(R.drawable.trans_pop_bad); } } else { if (data.flag == 3) { imgFlag.setVisibility(View.GONE); imgFlagOnlyR.setVisibility(View.GONE); } else if (data.flag == 1) { imgFlag.setVisibility(View.GONE); imgFlagOnlyR.setVisibility(View.VISIBLE); imgFlagOnlyR.setImageResource(R.drawable.trans_pop_good); } else if (data.flag == 0) { imgFlag.setVisibility(View.GONE); imgFlagOnlyR.setVisibility(View.VISIBLE); imgFlagOnlyR.setImageResource(R.drawable.trans_pop_bad); } } // mtvText.setTextColor(Color.BLACK); // mllSpeak.setBackgroundResource(R.drawable.tans_item_selected); // mllBackground.setBackgroundColor(0xFFEEEEEE); // mllBackground.setBackgroundColor(Color.WHITE); // mllTrans.setBackgroundResource(0); // mtvText.setTextColor(0xFF707070); // this.setFocusable(false); // // // if( data.isExistTrans()){ // mllSpeak.setBackgroundResource(R.drawable.trans_font_bg_ce_2more_up_normal); // mllTrans.setBackgroundResource(R.drawable.trans_font_bg_ce_2more_down_normal); // // mllSpeak .setVisibility(VISIBLE); // mllTrans .setVisibility(VISIBLE); // } // else { // mllSpeak.setBackgroundResource(R.drawable.trans_font_bg_ce_1_normal); // mllSpeak .setVisibility(VISIBLE); // mllTrans.setVisibility(GONE); // } } private void init(Context context, SpeakItemData data) { this.context = context; // ���벼�� LayoutInflater.from(context).inflate(R.layout.listview_item_interpret, this, true); mllSpeak = (RelativeLayout) findViewById(R.id.llSpeak); mllTrans = (RelativeLayout) findViewById(R.id.llTrans); mtvSpeak = (TextView) findViewById(R.id.textSpeak); mtvTrans = (TextView) findViewById(R.id.textTrans); btnPalySpeak = (ImageButton) findViewById(R.id.btnPlaySpeak); btnPalyTrans = (ImageButton) findViewById(R.id.btnPlayTrans); imgFlag = (ImageView) findViewById(R.id.imgFlag); imgFlagOnlyR = (ImageView) findViewById(R.id.imgFlagOnlyR); rFlag1 = (RelativeLayout) findViewById(R.id.rFlag1); rFlag2 = (RelativeLayout) findViewById(R.id.rFlag2); // llLeft = (LinearLayout) findViewById(R.id.rlLeft); // llRight = (LinearLayout) findViewById(R.id.rlRight); btnPalyTrans.setOnClickListener(this); btnPalySpeak.setOnClickListener(this); setData(data); } public void setOnCallbackListener(IOnSpeakViewAdapterCallback listener) { mCallback = listener; } public void onClick(View v) { if (v == btnPalyTrans) { speakTrans(data.trans, data.type); } else if (v == btnPalySpeak) { speakSpeak(data.speak, data.type); } } private OnTTSPlayerListener onTTSPlayerListener = new OnTTSPlayerListener() { @Override public void onTtsPlayStart() { } @Override public void onTtsPlayLoadDataStart() { WaitingActivity.waiting((Activity) context, 0); } @Override public void onTtsPlayLoadDataEnd() { WaitingActivity.stop(); } @Override public void onTtsPlayError(int arg0) { // TODO Auto-generated method stub } @Override public void onTtsPlayEnd() { } }; public void speakSpeak(String str, String type) { if(data.speakStream!=null&&!type.equals(UserInfo.S2T_LETTER)){ TextPlayer.getInstance().play(data.speakStream); }else{ TextPlayer.getInstance().setPopContext(context); if (type.equals(UserInfo.S2T_CH2EN)) { if (TextPlayer.getInstance().isPlaying()) { TextPlayer.getInstance().stop(); } else { TextPlayer.getInstance().playChinese(str); } } else if (type.equals(UserInfo.S2T_EN2CH)) { if (TextPlayer.getInstance().isPlaying()) { TextPlayer.getInstance().stop(); } else { TextPlayer.getInstance().playEnglish(str); } } else if (type.equals(UserInfo.S2T_LETTER)) { if (TextPlayer.getInstance().isPlaying()) { TextPlayer.getInstance().stop(); } else { TextPlayer.getInstance().playEnglish(str); } } } } public void speakTrans(String str, String type) { TextPlayer.getInstance().setPopContext(context); if (type.equals(UserInfo.S2T_CH2EN)) { if (TextPlayer.getInstance().isPlaying()) { TextPlayer.getInstance().stop(); } else { TextPlayer.getInstance().playEnglish(str); } } else if (type.equals(UserInfo.S2T_EN2CH)) { if (TextPlayer.getInstance().isPlaying()) { TextPlayer.getInstance().stop(); } else { TextPlayer.getInstance().playChinese(str); } } else if (type.equals(UserInfo.S2T_LETTER)) { if (TextPlayer.getInstance().isPlaying()) { TextPlayer.getInstance().stop(); } else { TextPlayer.getInstance().playChinese(str); } } } public void setBg(boolean focus) { int[] bgid = getBgResourceByType(data.type); if (focus) { changeFontColorFocusTrue(); if (data.isExistTrans()) { mllSpeak.setBackgroundResource(bgid[0]); mllTrans.setBackgroundResource(bgid[1]); mllSpeak.setVisibility(VISIBLE); mllTrans.setVisibility(VISIBLE); } else { mllSpeak.setBackgroundResource(bgid[2]); mllSpeak.setVisibility(VISIBLE); mllTrans.setVisibility(GONE); } } else { changeFontColorFocusFalse(); if (data.isExistTrans()) { mllSpeak.setBackgroundResource(bgid[3]); mllTrans.setBackgroundResource(bgid[4]); mllSpeak.setVisibility(VISIBLE); mllTrans.setVisibility(VISIBLE); } else { mllSpeak.setBackgroundResource(bgid[5]); mllSpeak.setVisibility(VISIBLE); mllTrans.setVisibility(GONE); } } } public int[] getBgResourceByType(String type) { int[] bgid = new int[6]; if (UserInfo.S2T_CH2EN.equals(type)) { bgid[0] = R.drawable.trans_font_bg_ce_2more_up_click; bgid[1] = R.drawable.trans_font_bg_ce_2more_down_click; bgid[2] = R.drawable.trans_font_bg_ce_1_click; bgid[3] = R.drawable.trans_font_bg_ce_2more_up_normal; bgid[4] = R.drawable.trans_font_bg_ce_2more_down_normal; bgid[5] = R.drawable.trans_font_bg_ce_1_normal; } else if (UserInfo.S2T_EN2CH.equals(type)) { bgid[0] = R.drawable.trans_font_bg_ec_2more_up_click; bgid[1] = R.drawable.trans_font_bg_ec_2more_down_click; bgid[2] = R.drawable.trans_font_bg_ec_1_click; bgid[3] = R.drawable.trans_font_bg_ec_2more_up_normal; bgid[4] = R.drawable.trans_font_bg_ec_2more_down_normal; bgid[5] = R.drawable.trans_font_bg_ec_1_normal; } else if (UserInfo.S2T_LETTER.equals(type)) { bgid[0] = R.drawable.trans_font_bg_zimu_2more_up_click; bgid[1] = R.drawable.trans_font_bg_zimu_2more_down_click; bgid[2] = R.drawable.trans_font_bg_zimu_1_click; bgid[3] = R.drawable.trans_font_bg_zimu_2more_up_normal; bgid[4] = R.drawable.trans_font_bg_zimu_2more_down_normal; bgid[5] = R.drawable.trans_font_bg_zimu_1_normal; } else { bgid[0] = R.drawable.trans_font_bg_ce_2more_up_click; bgid[1] = R.drawable.trans_font_bg_ce_2more_down_click; bgid[2] = R.drawable.trans_font_bg_ce_1_click; bgid[3] = R.drawable.trans_font_bg_ce_2more_up_normal; bgid[4] = R.drawable.trans_font_bg_ce_2more_down_normal; bgid[5] = R.drawable.trans_font_bg_ce_1_normal; } return bgid; } }