关于最后

来源:互联网 发布: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);        }
    }
}

原创粉丝点击