在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android 仿俏江南源码(实现了 语音搜索)

android 仿俏江南源码(实现了 语音搜索)

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:7.38M
  • 下载次数:29
  • 浏览次数:343
  • 发布时间:2016-03-01
  • 实例类别:Android平台开发
  • 发 布 人:827892712
  • 文件格式:.zip
  • 所需积分:2
 相关标签: Android 语音 搜索

实例介绍

【实例简介】

【实例截图】

【核心代码】

package com.example.myfood;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Camera;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.StrictMode;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.LinearLayout.LayoutParams;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TabHost;
import android.widget.TabWidget;
import android.widget.TextView;
import android.widget.Toast;

import com.example.adapter.articleAdapter;
import com.example.jsonservices.jsonarticle;
import com.example.model.article;
import com.example.myfood.R.color;
import com.example.utils.myapplication;
import com.iflytek.speech.RecognizerResult;
import com.iflytek.speech.SpeechError;
import com.iflytek.ui.RecognizerDialog;
import com.iflytek.ui.RecognizerDialogListener;

public class MainActivity extends Activity {
	private myapplication myapplication1;
	private ProgressDialog ProgressDialog1; // 加载对话框
	private ListView listview1;
	private articleAdapter adapter;
	private int page = 1;
	private long waitTime = 2000;
	private long touchTime = 0;
	private TextView textView;
	private ImageButton ImageButton1;// 语音
	private ImageButton ImageButton2;// 语音
	private List<article> list1 = null;
	private List<HashMap<String, Object>> articleslist = new ArrayList<HashMap<String, Object>>();

	private String textString = "";
	private Thread Thread1;
	private boolean havedata = true; // 来判断是否还有数据
	private EditText setedit;
	private ImageButton yuyinButton;
	private RelativeLayout rela;

	private List<article> Articles;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
				.detectDiskReads().detectDiskWrites().detectNetwork() // or
																		// .detectAll()
																		// for
																		// all
																		// detectable
																		// problems
				.penaltyLog().build());
		StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
				.detectLeakedSqlLiteObjects().detectLeakedClosableObjects()
				.penaltyLog().penaltyDeath().build());
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		myapplication1 = (myapplication) getApplication();
		myapplication1.getInstance().addActivity(this);
		rela = (RelativeLayout) findViewById(R.id.rlay);
		listview1 = (ListView) findViewById(R.id.mlistView1);
		textView = (TextView) findViewById(R.id.textView2);
		ImageButton1 = (ImageButton) findViewById(R.id.xunfeiimageButton1);
		ImageButton2 = (ImageButton) findViewById(R.id.systemimageButton1);
		final TabHost tabhost = (TabHost) findViewById(android.R.id.tabhost);
		tabhost.setup();

		TabWidget tabwidget = tabhost.getTabWidget();
		tabhost.addTab(tabhost.newTabSpec("tab1").setIndicator("活动信息")
				.setContent(R.id.tab1));
		tabhost.addTab(tabhost.newTabSpec("tab2").setIndicator("餐厅预订")
				.setContent(R.id.tab2));
		tabhost.addTab(tabhost.newTabSpec("tab3").setIndicator("个人信息")
				.setContent(R.id.tab3));

		textView.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				LinearLayout LinearLayout1 = (LinearLayout) getLayoutInflater()
						.inflate(R.layout.searchdialog, null);

				setedit = (EditText) LinearLayout1
						.findViewById(R.searchdialog.editText1);
				yuyinButton = (ImageButton) LinearLayout1
						.findViewById(R.searchdialog.imageButton1);
				new AlertDialog.Builder(MainActivity.this)
						.setTitle("请输入查询关键字")
						.setIcon(android.R.drawable.ic_dialog_info)
						.setView(LinearLayout1)
						.setPositiveButton("取消", null)
						.setNegativeButton("确定",
								new DialogInterface.OnClickListener() {
									@Override
									public void onClick(DialogInterface arg0,
											int arg1) {
										// 数据获取
										searchtext(setedit.getText().toString());
									}
								}).show();
				yuyinButton.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						showDialog(1);
					}
				});
			}
		});

		/**
		 * 系统设置
		 */
		ImageButton2.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				Intent intent = new Intent();
				intent.setClass(MainActivity.this, SystemActivity.class);
				startActivity(intent);
				overridePendingTransition(android.R.anim.slide_in_left,
						android.R.anim.slide_out_right);
			}
		});

		/***
		 * 餐厅预定
		 */
		tabhost.getTabWidget().getChildAt(1)
				.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						tabhost.setCurrentTab(0);

						Intent intent = new Intent();
						intent.setClass(MainActivity.this, DiquActivity.class);
						startActivity(intent);
						overridePendingTransition(android.R.anim.slide_in_left,
								android.R.anim.slide_out_right);
					}
				});

		tabhost.getTabWidget().getChildAt(2)
				.setOnClickListener(new OnClickListener() {

					@Override
					public void onClick(View v) {
						// TODO Auto-generated method stub
						tabhost.setCurrentTab(0);
						Intent intent = new Intent();
						intent.setClass(MainActivity.this,
								RegisterActivity.class);
						startActivity(intent);
						overridePendingTransition(android.R.anim.slide_in_left,
								android.R.anim.slide_out_right);
					}

				});

		bindarticle();
	}

	public String localhost() {
		return myapplication1.getlocalhost();
	}

	public void bindarticle() {
		threadstart();
		listview1.setOnItemClickListener(new OnItemClickListener() {

			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
					long arg3) {
				// TODO Auto-generated method stub
				Intent Intent1 = new Intent();
				Intent1.setClass(MainActivity.this, ArticleActivity.class);
				Bundle Bundle1 = new Bundle();
				Bundle1.putString("_id", articleslist.get(arg2).get("id")
						.toString());
				Bundle1.putString("_title", articleslist.get(arg2).get("title")
						.toString());
				Bundle1.putString("_img_url",
						articleslist.get(arg2).get("img_url").toString());
				Bundle1.putString("_content",
						articleslist.get(arg2).get("content").toString());
				Bundle1.putString("_add_time",
						articleslist.get(arg2).get("add_time").toString());
				Intent1.putExtras(Bundle1);
				startActivity(Intent1);
				overridePendingTransition(R.anim.in_from_right,
						R.anim.out_to_left);
			}
		});

		listview1.setOnScrollListener(new OnScrollListener() {

			@Override
			public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {
				// TODO Auto-generated method stub

			}

			@Override
			public void onScrollStateChanged(AbsListView view, int scrollState) {
				// TODO Auto-generated method stub
				// 当不滚动时
				if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {
					// 判断是否滚动到底部
					if (view.getLastVisiblePosition() == view.getCount() - 1) {
						if (havedata) {
							threadmore();
						}
					}
				}
				switch (scrollState) {
				case OnScrollListener.SCROLL_STATE_FLING:
					adapter.setFlagBusy(true);
					break;
				case OnScrollListener.SCROLL_STATE_IDLE:
					adapter.setFlagBusy(false);
					break;
				case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
					adapter.setFlagBusy(false);
					break;
				default:
					break;
				}
				adapter.notifyDataSetChanged();
			}
		});
	}

	/***
	 * 配套使用加载读取
	 */
	public void threadstart() {
		ProgressDialog1 = new ProgressDialog(this);
		ProgressDialog1.setMessage("数据加载中,请稍后...");
		ProgressDialog1.show();
		Thread1 = new Thread() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				try {
					Thread1.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				Handler1.sendEmptyMessage(0);
			}
		};
		Thread1.start();
	}

	private Handler Handler1 = new Handler() {
		public void handleMessage(Message msg) {
			try {
				list1 = loaddata(page);
				bindlist(list1);
				adapter = new articleAdapter(MainActivity.this, list1);
				adapter.addlist(list1);
				listview1.setAdapter(adapter);
				ProgressDialog1.dismiss();
			} catch (Exception e) {
				e.printStackTrace();
				ProgressDialog1.dismiss();
				Toast.makeText(MainActivity.this, e.toString(), 1).show();
				neterror();// 网络重试
			}
		}
	};

	/***
	 * 加载更多
	 */
	public void threadmore() {
		ProgressDialog1 = new ProgressDialog(this);
		ProgressDialog1.setMessage("数据加载中,请稍后...");
		ProgressDialog1.show();
		Thread1 = new Thread(new Runnable() {

			@Override
			public void run() {
				// TODO Auto-generated method stub
				try {
					Thread1.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				Handler2.sendEmptyMessage(0);
			}
		});
		Thread1.start();
	}

	private Handler Handler2 = new Handler() {
		public void handleMessage(Message msg) {
			try {
				list1 = loaddata(page  = 1);
				bindlist(list1);
				adapter.addlist(list1);
				adapter.notifyDataSetChanged();
				ProgressDialog1.dismiss();
			} catch (Exception e) {
				e.printStackTrace();
				ProgressDialog1.dismiss();

			}
		}
	};

	/**
	 * 活动新闻绑定
	 * 
	 * @param list
	 */
	public void bindlist(List<article> list) {
		for (article articles : list) {
			HashMap<String, Object> item = new HashMap<String, Object>();
			item.put("title", articles.get_title());
			item.put("id", articles.get_id());
			item.put("zhaiyao", articles.get_zhaiyao());
			item.put("img_url", articles.get_img_url());
			item.put("content", articles.get_content());
			item.put("add_time", articles.get_add_time());
			articleslist.add(item);
		}

	}

	/**
	 * 网络重试
	 */
	public void neterror() {

		final LinearLayout linearLayout = (LinearLayout) getLayoutInflater()
				.inflate(R.layout.networkerror, null);
		linearLayout.setLayoutParams(new LinearLayout.LayoutParams(
				LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
		rela.addView(linearLayout);

		linearLayout.setOnClickListener(new OnClickListener() {

			@Override
			public void onClick(View v) {
				// TODO Auto-generated method stub
				rela.removeView(linearLayout);
				threadstart();
			}
		});
	}

	/***
	 * 读取文件流
	 * 
	 * @param page
	 * @return
	 */
	public List<article> loaddata(int page) {

		try {
			Articles = jsonarticle.getjsonlastarticles(

			myapplication1.getlocalhost()
					  "/android/json_article/list.aspx?channel_id=1&page="
					  page);
		} catch (Exception e) {
			e.printStackTrace();

			Articles = new ArrayList<article>();
			Toast.makeText(MainActivity.this, "全部显示完毕!", 1).show();
			havedata = false;
		}
		return Articles;
	}

	/**
	 * 退出系统
	 */
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if (event.getAction() == KeyEvent.ACTION_DOWN
				&& KeyEvent.KEYCODE_BACK == keyCode) {
			long currentTime = System.currentTimeMillis();
			if ((currentTime - touchTime) >= waitTime) {
				Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
				touchTime = currentTime;
			} else {
				myapplication1.getInstance().exit();
			}
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

	/**
	 * 语音查询
	 */
	@Override
	protected Dialog onCreateDialog(int id) {

		RecognizerDialog recognizerDialog = new RecognizerDialog(
				MainActivity.this, "appid=5132fe14");// 这里应该写从科大讯飞申请到的appid
		recognizerDialog.setEngine("sms", null, null);
		recognizerDialog.setListener(new RecognizerDialogListener() {
			@Override
			public void onResults(ArrayList<RecognizerResult> results,
					boolean arg1) {
				for (int i = 0; i < results.size(); i  ) {
					textString  = results.get(i).text;
				}
			}

			@Override
			public void onEnd(SpeechError arg0) {
				// Toast.makeText(MainActivity.this, textString, 1).show();
				setedit.setText(textString.substring(0, textString.length() - 1));
			}
		});
		return recognizerDialog;
	}

	/***
	 * 主页面查询操作一个是语音一个是文本输入
	 * 
	 * @param text
	 */
	public void searchtext(String text) {
		if ("".equals(myapplication1.getdiqu())) {
			Intent Intent1 = new Intent();
			Intent1.setClass(MainActivity.this, DiquActivity.class);
			startActivity(Intent1);
			Toast.makeText(MainActivity.this, "请先选择店铺地址", 1).show();
		} else {
			myapplication1
					.setgoodsurl("/android/json_goods/list.aspx?channel_id=2&keywords='"
							  java.net.URLEncoder.encode(text)   "'&page=");

			Intent Intent1 = new Intent();
			Intent1.setClass(MainActivity.this, DiancaiActivity.class);
			Bundle Bundle1 = new Bundle();
			Bundle1.putString("tg", "0");
			Intent1.putExtras(Bundle1);
			startActivity(Intent1);
		}

	}

}

标签: Android 语音 搜索

实例下载地址

android 仿俏江南源码(实现了 语音搜索)

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警