欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2022-09-02 21:08:36
基于Android实现自带谷歌语音识别垃圾分类APP此次做的项目是垃圾分类APP,涵盖内容各类垃圾的分类详情,关于软件的介绍,分享软件,语音识别,基于API搜索。项目主要功能及实现技术功能1:等待界面实现技术:利用线程的延时处理来达到进入APP时等待界面的效果,Thread.sleep(3000);代码延时三秒,三秒结束后通过intent来跳转界面。功能2:不同类别垃圾的详情和示例实现技术:在主界面中放置了四个imageButton,还是使用intent方式跳转到对应的详情页,每个类别的垃圾详情...

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

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

项目主要功能及实现技术

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

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

for(int i=0;i<WetGarbage.length;i++){ Map<String,Object>map=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){ ArrayList<String>result=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】 ); } 

最终效果图

Android如何实现自带谷歌语音识别垃圾分类APP
Android如何实现自带谷歌语音识别垃圾分类APP
Android如何实现自带谷歌语音识别垃圾分类APP
Android如何实现自带谷歌语音识别垃圾分类APP
附上源码链接:https://download.csdn.net/download/Tank_548/12682162

总结

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

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