基于Android实现自带谷歌语音识别垃圾分类APP

此次做的项目是垃圾分类APP,涵盖内容各类垃圾的分类详情,关于软件的介绍,分享软件,语音识别,基于API搜索。文章末尾附源码,源码全注释。

项目主要功能及实现技术

功能1:等待界面

实现技术:利用线程的延时处理来达到进入APP时等待界面的效果,Thread.sleep(3000);代码延时三秒,三秒结束后通过intent来跳转界面。

功能2:不同类别垃圾的详情和示例

实现技术:在主界面中放置了四个imageButton,还是使用intent方式跳转到对应的详情页,每个类别的垃圾详情主要通过布局直接写入,示例展示则是通过绑定适配器的方式实现,提前搜索符合各个类别的示例垃圾,用数组的方式直接添加信息。另外一行只显示两个适配内容,所以布局是通过网格布局来实现的。利用数组循环添加的主要代码如下:

for(int i=0;imap=new HashMap<>(); map.put("text",WetGarbage[i]); data.add(map); }

功能3:基于API搜索垃圾,并显示所属类别

实现技术:这里封装使用了一个类,Okhttp的方式访问API,检索并返回数据,实现的过程中需要手动导入okhttp3的包,获取数据的方式使用的是GET方式。检索数据时需要带上搜索框输入的名称,匹配到结果后使用handler来接收数据。返回的是json数据,还需要对json数据进行解析。显示结果时还使用了progressDialog来实现搜索过程中的等待效果。

GET方式获取数据的代码如下:

public static void OkHttpGet(String url, Callback callback){ OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder().url(url).build(); client.newCall(request).enqueue(callback); }

Json解析并显示代码如下:

JSONObject js = new JSONObject(json);//网络请求返回的是json数据,这里对json数据进行解析 String n = js.getString("data"); tvSearch.setText(name+": "+n);

功能4:基于谷歌的语音识别显示到搜索框

private void promptSpeechInput(){ Intent intent=new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM); intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault()); intent.putExtra(RecognizerIntent.EXTRA_PROMPT,getString(R.string.speech_prompt)); try{ startActivityForResult(intent,REQ_CODE_SPEECH_INPUT);} catch (ActivityNotFoundException a){ Toast.makeText(getApplicationContext(),getString(R.string.speech_not_supported),Toast.LENGTH_SHORT).show(); } } protected void onActivityResult(int requestCode,int resultCode,Intent data){ super.onActivityResult(requestCode,resultCode,data); switch (requestCode){ case REQ_CODE_SPEECH_INPUT:{ if(resultCode==RESULT_OK&&null!=data){ ArrayListresult=data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS); editText.setText(result.get(0)); } break; } } }

功能5:“关于软件详情”页面的图片滑动效果

实现技术:图片左右滑动效果主要是通过绑定一个ViewPager适配器来展示的,可以手动左右滑动图片,也可以延时自动播放下一张图片。

手动滑动图片的核心代码如下:

private void setVPListener() { /* 设置ViewPager的监听器*/ aboutVp.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { for (int i = 0; i < pointList.size(); i++) { pointList.get(i).setImageResource(R.mipmap.a2); } pointList.get(position%pointList.size()).setImageResource(R.mipmap.a3); } @Override public void onPageScrollStateChanged(int state) { } }); }

功能6:“关于软件详情”页面分享软件

实现技术:这里主要是调用系统自带的分享功能,通过QQ、微信等方式分享给好友一个message,实现代码如下所示:

public void onClick(View v) { // 调用系统自带的分享功能 Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("text/plain"); String msg= "垃圾分类非常的重要,了解垃圾的分类规则,处理方式,想要了解更多么,快来下载垃圾分类app吧~~"; intent.putExtra(Intent.EXTRA_TEXT,msg); startActivity(Intent.createChooser(intent,"垃圾分类")); }

功能7:按键音效

实现技术:写了一个初始化音效和播放音效的函数,

private SoundPool soundPool;//声明一个SoundPool private int soundID;//创建某个声音对应的音频ID

先声明所需要的用到的id,方法的代码如下所示:

@SuppressLint("NewApi") private void initSound() {//音乐初始化方法 soundPool = new SoundPool.Builder().build(); soundID = soundPool.load(this, R.raw.click_music, 1);//加载对应的因为文件 } private void playSound() { soundPool.play( soundID, 0.1f, //左耳道音量【0~1】 0.5f, //右耳道音量【0~1】 0, //播放优先级【0表示最低优先级】 1, //循环模式【0表示循环一次,-1表示一直循环,其他表示数字+1表示当前数字对应的循环次数】 1 //播放速度【1是正常,范围从0~2】 ); }

最终效果图

附上源码链接:https://download.csdn.net/download/Tank_548/12682162

总结

这是作为小白做的第一个APP,做的不好希望大家指点一下。代码量不大,适用于小项目。

本文地址:https://blog.csdn.net/Tank_548/article/details/107759445

android自带语音识别,Android如何实现自带谷歌语音识别垃圾分类APP相关推荐

  1. android人脸识别源代码,Android自带的人脸识别

    1.Android自带的人脸识别Android自带的人脸识别只能识别出人脸在画面中的位置,中点,眼间距,角度等基本特性,提供给拍照性质的应用使用.从基本功能中不能得出明显的特征数据 2.底层库支持ex ...

  2. Android视图状态及重绘流程分析,带你一步步深入了解View(三)

    在前面一篇文章中,我带着大家一起从源码的层面上分析了视图的绘制流程,了解了视图绘制流程中onMeasure.onLayout.onDraw这三个最重要步骤的工作原理,那么今天我们将继续对View进行深 ...

  3. Android 高仿微信6.0主界面 带你玩转切换图标变色

    目录(?)[+] 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/41087219,本文出自:[张鸿洋的博客] 1.概述 学习And ...

  4. android 指示器平移动画,Android实现带指示器的自动轮播式ViewPager

    前言 最近在做项目的时候,有个需求就是实现自动轮播式的ViewPager,最直观的例子就是知乎日报顶部的ViewPager,它内部有着好几个子view,每个一段时间便自动滑动到下一个item view ...

  5. 我的Android进阶之旅------Android利用温度传感器实现带动画效果的电子温度计

    要想实现带动画效果的电子温度计,需要以下几个知识点: 1.温度传感器相关知识. 2.ScaleAnimation动画相关知识,来进行水印刻度的缩放效果. 3.android:layout_weight ...

  6. android textview电话号码,Android应用开发之Android EditTextView 实现带空格分隔的输入(电话号码,银行卡)...

    本文将带你了解Android应用开发Android EditTextView 实现带空格分隔的输入(电话号码,银行卡),希望本文对大家学Android有所帮助. 电话号码输入框需求: 三位,七位后有空 ...

  7. UI设计之【android 仿微信、QQ聊天,带表情,可翻页,带翻页拖动缓冲】

    转自: http://blog.csdn.net/lnb333666/article/details/8546497 如题,这是公司项目的一个功能模块,先上个效果图: 其次大致说说原理: 1,首先判断 ...

  8. Android Studio 生成二维码、生成带logo的二维码

    1.生成二维码: 2.生成logo的二维码: 一.引入依赖 首先在libs文件目录下放进jar包zxing.jar,要下载zxing.jar就点击链接:下载zxing.jar(记得点击"Cd ...

  9. 【凯子哥带你学Android】Andriod性能优化之列表卡顿——以“简书”APP为例

    这几天闲得无聊,就打开手机上的开发者模式里面的"GPU过度绘制"功能,看看别家的App做的咋样,然后很偶然的打开了"简书",然后就被它的过度绘制惊呆了,于是写了 ...

最新文章

  1. java命名course为名的class_Java教程之变量命名
  2. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
  3. 32位 shell.efi x86_通过grub,让32位的efi也能运行64位的Linux发行版
  4. python turtle画熊-Python turtle画图库画姓名实例
  5. java batik_Batik详解.pdf
  6. 如何处理SAP云平台错误消息 there is no compute unit quota for subaccount
  7. angular 倒计时
  8. 平板Android调试打开log,Android 调试日志
  9. labview与matlab接口,LabVIEW Comms与MATLAB®的互联接口
  10. 怎么把图片的文字提取出来?
  11. 超级好用的cmd工具软件:Cmder
  12. 【ADS学习笔记(一)——ADS介绍】
  13. 解决Attribute 'transaction-manager' is not allowed to appear
  14. Oracle--“ORA-28007: the password cannot be reused”解决
  15. 最新版NASA官方网站数据下载流程——以MODIS数据演示为例
  16. 【Unity3D Shader编程】之六 暗黑城堡篇 表面着色器 Surface Shader 的写法 一
  17. DELPHI bpl使用
  18. 51nod 1486
  19. java8获取当前时间前一天
  20. 基于Fisco-Bcos的区块链智能合约-简单案例实践

热门文章

  1. SAP MDG —— 简介MDG数据处理逻辑和MDF缓存区
  2. SAP MDG —— 一些正在大规模使用MDG系统的国外公司清单(排名不分先后,持续更新中……)
  3. 用Xaml搭建一个登陆页面
  4. opencv 图像拼接stitcher
  5. 亚马逊产品利润计算器 免费工具下载
  6. MindSpore GPU异构算子全流程开发指导
  7. 数据预处理之Bartlett's球状检验
  8. Linux中通过修改MTU值来修改网速
  9. Unity Shader - 实现简单水体 - 浅水到深水颜色控制
  10. 想要入驻俄罗斯ozon?这篇文章可以帮到你