package com.insthub.ecmobile.fragment;
//
// __
// /\ \ _
// ____ ____ ___\ \ \_/ \ _____ ___ ___
// / _ \ / __ \ / __ \ \ < __ /\__ \ / __ \ / __ \
// /\ \_\ \/\ __//\ __/\ \ \\ \ /\_\ \/_/ / /\ \_\ \/\ \_\ \
// \ \____ \ \____\ \____\\ \_\\_\ \/_/ /\____\\ \____/\ \____/
// \/____\ \/____/\/____/ \/_//_/ \/____/ \/___/ \/___/
// /\____/
// \/___/
//
// Powered by BeeFramework
//
import java.util.ArrayList;
import android.app.Activity;
import android.util.Log;
import android.widget.*;
import com.external.maxwin.view.XListView;
import com.iflytek.cloud.speech.*;
import com.iflytek.cloud.ui.RecognizerDialog;
import com.iflytek.cloud.ui.RecognizerDialogListener;
import com.insthub.BeeFramework.Utils.JsonParser;
import com.insthub.ecmobile.EcmobileManager;
import com.insthub.ecmobile.ShareConst;
import com.insthub.ecmobile.activity.D2_FilterActivity;
import com.insthub.ecmobile.activity.D1_CategoryActivity;
import com.insthub.ecmobile.adapter.D0_CategoryAdapter;
import com.insthub.ecmobile.protocol.ApiInterface;
import com.insthub.ecmobile.protocol.CATEGORY;
import com.insthub.ecmobile.protocol.FILTER;
import com.umeng.analytics.MobclickAgent;
import org.json.JSONException;
import android.content.res.Resources;
import org.json.JSONObject;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.view.Gravity;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnKeyListener;
import android.view.ViewGroup;
import android.view.inputmethod.EditorInfo;
import android.widget.TextView.OnEditorActionListener;
import com.external.androidquery.callback.AjaxStatus;
import com.insthub.BeeFramework.fragment.BaseFragment;
import com.insthub.BeeFramework.model.BusinessResponse;
import com.insthub.BeeFramework.view.MyViewGroup;
import com.insthub.BeeFramework.view.ToastView;
import com.insthub.ecmobile.R;
import com.insthub.ecmobile.activity.B1_ProductListActivity;
import com.insthub.ecmobile.model.ProtocolConst;
import com.insthub.ecmobile.model.SearchModel;
public class D0_CategoryFragment extends BaseFragment implements OnClickListener, BusinessResponse {
private View view;
private ImageView search;
private EditText input;
private ImageButton voice;
private SearchModel searchModel;
private Button btn[];
private MyViewGroup layout;
private XListView parentListView;
D0_CategoryAdapter parentListAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
view = inflater.inflate(R.layout.d0_category, null);
input = (EditText) view.findViewById(R.id.search_input);
search = (ImageView) view.findViewById(R.id.search_search);
voice = (ImageButton) view.findViewById(R.id.search_voice);
layout = (MyViewGroup) view.findViewById(R.id.search_layout);
parentListView = (XListView) view.findViewById(R.id.parent_list);
search.setOnClickListener(this);
voice.setOnClickListener(this);
input.setOnEditorActionListener(new OnEditorActionListener() {
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if (actionId == EditorInfo.IME_ACTION_SEARCH)
{
try
{
Intent intent = new Intent(getActivity(), B1_ProductListActivity.class);
FILTER filter = new FILTER();
filter.keywords = input.getText().toString().toString();
intent.putExtra(B1_ProductListActivity.FILTER,filter.toJson().toString());
startActivity(intent);
getActivity().overridePendingTransition(R.anim.push_right_in,
R.anim.push_right_out);
return true;
}
catch (JSONException e)
{
}
}
return false;
}
});
if (null == searchModel)
{
searchModel = new SearchModel(getActivity());
searchModel.searchCategory();
}
searchModel.addResponseListener(this);
parentListAdapter = new D0_CategoryAdapter(getActivity(),searchModel.categoryArrayList);
parentListView.setAdapter(parentListAdapter);
parentListView.setPullLoadEnable(false);
parentListView.setPullRefreshEnable(false);
parentListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if (position -1 < searchModel.categoryArrayList.size())
{
CATEGORY category = searchModel.categoryArrayList.get(position -1);
try
{
if (category.children.size() > 0)
{
Intent it = new Intent(getActivity(),D1_CategoryActivity.class);
it.putExtra("category",category.toJson().toString());
it.putExtra("category_name", searchModel.categoryArrayList.get(position-1).name);
getActivity().startActivity(it);
getActivity().overridePendingTransition(R.anim.push_right_in,
R.anim.push_right_out);
}
else
{
Intent intent = new Intent(getActivity(), B1_ProductListActivity.class);
FILTER filter = new FILTER();
filter.category_id = String.valueOf(category.id);
intent.putExtra(B1_ProductListActivity.FILTER,filter.toJson().toString());
startActivity(intent);
getActivity().overridePendingTransition(R.anim.push_right_in,
R.anim.push_right_out);
}
}
catch (JSONException e)
{
e.printStackTrace();
}
}
}
});
addKeywords();
return view;
}
@Override
public void onClick(View v) {
String tag;
Intent intent;
switch(v.getId())
{
case R.id.search_search:
break;
case R.id.search_voice:
{
showRecognizerDialog(); //弹出语音搜索框
break;
}
}
}
// 动态添加button,并设置监听
public void addKeywords() {
if(searchModel.list.size() > 0) {
layout.removeAllViews();
btn = new Button[searchModel.list.size()];
for(int i=0; i<searchModel.list.size(); i++)
{
View view = LayoutInflater.from(getActivity()).inflate(R.layout.button_view, null);
btn[i] = (Button) view.findViewById(R.id.search_keyword);
btn[i].setText(searchModel.list.get(i).toString());
layout.addView(view);
}
for(int k=0;k<searchModel.list.size();k++) {
btn[k].setTag(k);
btn[k].setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
int a = (Integer) v.getTag();
try
{
Intent intent = new Intent(getActivity(), B1_ProductListActivity.class);
FILTER filter = new FILTER();
filter.keywords = btn[a].getText().toString();
intent.putExtra(B1_ProductListActivity.FILTER,filter.toJson().toString());
startActivity(intent);
getActivity().overridePendingTransition(R.anim.push_right_in,
R.anim.push_right_out);
}
catch (JSONException e)
{
}
}
});
}
}
}
public void showRecognizerDialog() {
String appid=EcmobileManager.getXunFeiCode(getActivity());
if(appid!=null&&!"".equals(appid)) {
//用户登录
SpeechUser.getUser().login(getActivity(), null, null
, "appid=" + EcmobileManager.getXunFeiCode(getActivity()), listener);
final RecognizerDialog recognizerDialog = new RecognizerDialog(getActivity());
//设置引擎为转写
recognizerDialog.setParameter(SpeechConstant.DOMAIN, "iat");
//设置识别语言为中文
recognizerDialog.setParameter(SpeechConstant.LANGUAGE, "zh_cn");
//设置方言为普通话
recognizerDialog.setParameter(SpeechConstant.ACCENT, "mandarin");
//设置录音采样率为
recognizerDialog.setParameter(SpeechConstant.SAMPLE_RATE, "16000");
//设置监听对象
recognizerDialog.setListener(new RecognizerDialogListener() {
@Override
public void onResult(RecognizerResult results, boolean b) {
String text = JsonParser.parseIatResult(results.getResultString());
if (text.length() > 0) {
input.setText(text.toString());
input.setSelection(input.getText().length());
try {
recognizerDialog.setListener(null);
Intent intent = new Intent(getActivity(), B1_ProductListActivity.class);
FILTER filter = new FILTER();
filter.keywords = input.getText().toString();
intent.putExtra(B1_ProductListActivity.FILTER, filter.toJson().toString());
startActivity(intent);
getActivity().overridePendingTransition(R.anim.push_right_in,
R.anim.push_right_out);
} catch (JSONException e) {
}
}
}
@Override
public void onError(SpeechError speechError) {
}
});
//开始识别
recognizerDialog.show();
}
}
public void OnMessageResponse(String url, JSONObject jo, AjaxStatus status) {
if (url.endsWith(ApiInterface.SEARCHKEYWORDS))
{
addKeywords();
}
else if (url.endsWith(ApiInterface.CATEGORY))
{
parentListAdapter.notifyDataSetChanged();
}
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onResume() {
super.onResume();
input.setText("");
MobclickAgent.onPageStart("Search");
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd("Search");
}
private SpeechListener listener = new SpeechListener()
{
@Override
public void onData(byte[] arg0) {
}
@Override
public void onCompleted(SpeechError error) {
if(error != null) {
Toast.makeText(getActivity(), "登陆失败"
, Toast.LENGTH_SHORT).show();
}
}
@Override
public void onEvent(int arg0, Bundle arg1) {
}
};
}