关于最后
来源:互联网 发布:centos kvm 多主机 编辑:程序博客网 时间:2024/06/08 14:25
package com.example.admin.tim.Activity;import android.Manifest;import android.content.pm.PackageManager;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.util.Log;import android.widget.Button;import android.widget.ImageView;import android.widget.ProgressBar;import android.widget.TextView;import com.baidu.speech.EventListener;import com.baidu.speech.EventManager;import com.baidu.speech.EventManagerFactory;import com.baidu.speech.asr.SpeechConstant;import com.example.admin.tim.Http.Asycn;import com.example.admin.tim.R;import org.json.JSONObject;import java.util.ArrayList;/** * Created by Administrator on 2017/12/9 0009. */public class BaseActivity extends AppCompatActivity{ EventManager asr; String finalResult; ProgressBar progressBar; TextView content; Asycn asycn; Toolbar toolbar; TextView bottomTextView; Button button; ImageView imageView; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initPermission(); } private void initPermission() { String permissions[] = {Manifest.permission.RECORD_AUDIO, Manifest.permission.ACCESS_NETWORK_STATE, Manifest.permission.INTERNET, Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE }; ArrayList<String> toApplyList = new ArrayList<String>(); for (String perm :permissions){ if (PackageManager.PERMISSION_GRANTED != ContextCompat.checkSelfPermission(this, perm)) { toApplyList.add(perm); //进入到这里代表没有权限. } } String tmpList[] = new String[toApplyList.size()]; if (!toApplyList.isEmpty()){ ActivityCompat.requestPermissions(this, toApplyList.toArray(tmpList), 123); } } @Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { // 此处为android 6.0以上动态授权的回调,用户自行实现。 }}
package com.example.admin.tim.Activity;import android.graphics.Color;import android.os.Bundle;import android.support.v4.widget.NestedScrollView;import android.support.v7.widget.LinearLayoutManager;import android.support.v7.widget.RecyclerView;import android.support.v7.widget.Toolbar;import android.util.Log;import android.view.Gravity;import android.view.LayoutInflater;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.PopupWindow;import android.widget.ProgressBar;import android.widget.TextView;import com.baidu.speech.EventListener;import com.baidu.speech.EventManagerFactory;import com.baidu.speech.asr.SpeechConstant;import com.example.admin.tim.Adapter.RecyAdapter;import com.example.admin.tim.Bean.Label;import com.example.admin.tim.Error.ErrorTranslation;import com.example.admin.tim.Http.Asycn;import com.example.admin.tim.R;import com.example.admin.tim.UI.FingerWaveView;import com.example.admin.tim.interfacee.PopListener;import com.example.admin.tim.interfacee.RecycleChangeListener;import com.example.admin.tim.interfacee.viewChangeListener;import com.example.admin.tim.voice.RecogResult;import org.json.JSONObject;import java.util.ArrayList;import java.util.LinkedHashMap;import java.util.List;import java.util.Map;public class MainActivity extends BaseActivity implements EventListener { private RecyclerView recyclerView; private RecyAdapter recyAdapter; NestedScrollView nestedScrollView; private List<Label> list; boolean once=false; private FingerWaveView fingerWaveView; private RecycleChangeListener recycleChangeListener=new RecycleChangeListener() { @Override public void change(Label l) { list.add(l); recyAdapter.notifyItemChanged(list.size()); //Log.e("Lin",l.getText()+":"+l.getLabel()); //recyclerView.scrollToPosition(recyAdapter.getItemCount()-1); Log.d("Lin","recycle"+recyclerView.getHeight()); Log.d("Lin","recycle"+recyclerView.getLayoutParams().height); //recyclerView.smoothScrollToPosition(recyAdapter.getItemCount()-1); if (once) { once=false; nestedScrollView.smoothScrollTo(0,(recyclerView.getHeight()+1000)); //nestedScrollView.scrollTo(0, recyclerView.getHeight()+1000); } } }; private com.example.admin.tim.interfacee.viewChangeListener viewChangeListener; public void getListener(viewChangeListener viewChangeListener){ this.viewChangeListener=viewChangeListener; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initView(); asr= EventManagerFactory.create(this,"asr"); asr.registerListener(this); } private void initView() { toolbar=(Toolbar)findViewById(R.id.tool); setSupportActionBar(toolbar); toolbar.setTitle("Vio"); list=new ArrayList<>(); nestedScrollView=(NestedScrollView)findViewById(R.id.nest); bottomTextView=(TextView)findViewById(R.id.tv_finger_status); imageView=(ImageView)findViewById(R.id.iv); progressBar=(ProgressBar)findViewById(R.id.pro); progressBar.setVisibility(View.GONE); imageView.setVisibility(View.GONE); bottomTextView.setVisibility(View.GONE); fingerWaveView=(FingerWaveView)findViewById(R.id.view_custom); content=(TextView)findViewById(R.id.content); content.setText("1.可以说出城市名字 比如 北京 会显示天气状况"+"\n"+"2.可以说 热点 显示最近的热点新闻"+ "\n3.可以说 名言 会随机显示一句名言"+"\n4.可以说 你的星座 比如 天蝎座 会获取星座运势"+"\n5.其他 说其他的会有机器人跟你聊天 "); Label label=new Label(); label.setLabel("in"); label.setText("dwadwa"); list.add(label); //Log.d("Lin","Lable"+label.getLabel()+label.getText()); recyclerView=(RecyclerView)findViewById(R.id.recy); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyAdapter=new RecyAdapter(this,list); recyclerView.setAdapter(recyAdapter); button=(Button)findViewById(R.id.button_send); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { start(); bottomTextView.setText("请说。。。"); imageView.setVisibility(View.VISIBLE); bottomTextView.setVisibility(View.VISIBLE); viewChangeListener.viewStart(); fingerWaveView.bringToFront(); bottomTextView.bringToFront(); imageView.bringToFront(); button.setClickable(false); } }); } private void start(){ Map<String, Object> params = new LinkedHashMap<String, Object>(); String event = null; event = SpeechConstant.ASR_START; // 替换成测试的event params.put(SpeechConstant.ACCEPT_AUDIO_VOLUME, false); params.put(SpeechConstant.VAD, SpeechConstant.VAD_TOUCH); //下面这句是长语音 //params.put(SpeechConstant.VAD_ENDPOINT_TIMEOUT,1500); // params.put(SpeechConstant.NLU, "enable");// params.put(SpeechConstant.VAD_ENDPOINT_TIMEOUT, 800);// params.put(SpeechConstant.VAD, SpeechConstant.VAD_DNN);// params.put(SpeechConstant.PROP ,20000); String json = null; //可以替换成自己的json json = new JSONObject(params).toString(); // 这里可以替换成你需要测试的json asr.send(event, json, null, 0, 0); Log.d("Lin","asr start"); } private void stop() { Log.d("Lin"," asr stop"); asr.send(SpeechConstant.ASR_STOP, null, null, 0, 0); } @Override public void onEvent(String s, String s1, byte[] bytes, int i, int i1) { if(s.equals(SpeechConstant.CALLBACK_EVENT_ASR_READY)){ // 引擎就绪,可以说话,一般在收到此事件后通过UI通知用户可以说话了 } if(s.equals(SpeechConstant.CALLBACK_EVENT_ASR_FINISH)){ // 识别结束. Label label=new Label(); label.setLabel("in"); label.setText(finalResult); recycleChangeListener.change(label); once=true; String url="https://free-api.heweather.com/s6/weather/now?location="+finalResult+"&key=3c0a78cc87b0428281065a9572dc4a6f"; asycn=new Asycn(progressBar,url,finalResult,recycleChangeListener); imageView.setVisibility(View.GONE); bottomTextView.setVisibility(View.GONE); progressBar.setVisibility(View.VISIBLE); progressBar.bringToFront(); asycn.execute(url,"weather"); RecogResult recogResult1 = RecogResult.parseJson(s1); if (recogResult1.hasError()) { int errorCode = recogResult1.getError(); int subErrorCode = recogResult1.getSubError(); String error = "错误代码:" + errorCode + "\n错误信息:" + ErrorTranslation.recogError(errorCode)+ "\n具体内容:"+recogResult1.getDesc(); if (error != null) { Log.e("Lin", error); viewChangeListener.viewEnd(); bottomTextView.setText("出现错误请联系程序员"); stop(); } } } if (s.equals(SpeechConstant.CALLBACK_EVENT_ASR_PARTIAL)) { RecogResult recogResult = RecogResult.parseJson(s1); //Log.d("Lin",recogResult+""); // 临时识别结果, 长语音模式需要从此消息中取出结果 String[] results = recogResult.getResultsRecognition(); //Log.d("Lin","result"+results+""); finalResult=results[0]; Log.d("Lin",finalResult); stop(); button.setClickable(true); viewChangeListener.viewEnd(); bottomTextView.setText("识别完成"); } } @Override protected void onDestroy() { super.onDestroy(); asr.send(SpeechConstant.ASR_CANCEL, "{}", null, 0, 0); }}
package com.example.admin.tim.Adapter;import android.content.Context;import android.support.v7.widget.RecyclerView;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.example.admin.tim.Bean.Label;import com.example.admin.tim.R;import java.util.ArrayList;import java.util.List;/** * Created by Administrator on 2017/12/9 0009. */public class RecyAdapter extends RecyclerView.Adapter<RecyAdapter.My> { List<Label> mList=new ArrayList<>(); Context mContext; public RecyAdapter(Context context, List<Label> list){ this.mList=list; Log.d("Lin",list.get(list.size()-1).getText()); this.mContext=context; } @Override public My onCreateViewHolder(ViewGroup parent, int viewType) { View inflate; inflate = LayoutInflater.from(mContext).inflate(R.layout.right, null); Log.d("Lin","inflate"+inflate+""); return new My(inflate); } @Override public void onBindViewHolder(My holder, int position) { final Label user = this.mList.get(position); if (mList.get(position).getLabel().equals("in")){ holder.rightText.setText(user.getText()); Log.d("Lin","Text ++"+holder.rightText.getText()+""); Log.d("Lin","Text ++"+holder.leftText.getText()+""); holder.leftText.setVisibility(View.GONE); }else { holder.leftText.setText(user.getText()); Log.d("Lin","Text ++"+holder.leftText.getText()+""); holder.rightText.setVisibility(View.GONE); } } @Override public int getItemCount() { return mList.size(); } class My extends RecyclerView.ViewHolder { TextView leftText; TextView rightText; public My(View itemView) { super(itemView); rightText=(TextView)itemView.findViewById(R.id.text0); leftText=(TextView)itemView.findViewById(R.id.teww); }
}
}
阅读全文
0 0
- 关于最后
- 关于Donews的记忆---最后的不舍
- 关于Peercast注释版的最后声明
- 关于Web2.0的最后几句话
- 最后一篇:关于治疗和健康
- 关于毕业最后一次项目的调试
- 关于光标聚焦到文本框最后
- 关于explode最后的参数limit
- 关于listview最后一项i遮盖问题
- 关于js获取一个月最后一天
- 关于郑渊洁的最后一段话
- 最后
- 最后
- 最后
- 救火沉思录--关于项目最后阶段的思考
- 救火沉思录--关于项目最后阶段的思考
- 关于结构体中最后的 char [0]
- 关于MySQL安装到最后总是未响应的解决办法
- JS修改属性的默认特性(属性描述符)
- 对设计模式的理解
- C# mvc 中把带 html标签的字符 当作 html标签 显示到页面
- struts2 文字过滤拦截器
- 深入浅出妙用 Javascript 中 apply、call、bind
- 关于最后
- LeetCode113. Path Sum II
- 通过OllyDbg调试windows窗口程序
- 【Spring笔记】2. XML装配Bean
- 11.服务链路追踪(sleuth+zikpin)
- 洛谷P3384 【模板】树链剖分
- 深入理解计算机系统--笔记
- Zju1610 Count the Colors
- 16C