AssistantActivity.java 5.41 KB
package com.ys.yslibrary.ui;


import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.LayoutAnimationController;
import android.widget.HorizontalScrollView;


import com.ys.yslibrary.aiui.AIUIWrapper;
import com.ys.yslibrary.bean.Answer;
import com.ys.yslibrary.bean.AssistantContentBean;
import com.ys.yslibrary.bean.ChatMessageHandler;
import com.ys.yslibrary.callback.OnVoiceIdentifyResultListener;
import com.ys.yslibrary.R;
import com.ys.yslibrary.bean.RawMessage;
import com.ys.yslibrary.databinding.ActivityXiaojiaAssistantBinding;
import com.ys.yslibrary.ui.adapter.AssistantAdapter;
import com.ys.yslibrary.ui.custom.AssistantViewAdapter;
import com.ys.yslibrary.viewmodel.VoiceViewModel;


public class AssistantActivity extends BaseActivity {
    private VoiceViewModel mVoiceViewModel;
    private ActivityXiaojiaAssistantBinding binding;
    private ChatMessageHandler messageHandler;
    private AssistantViewAdapter viewAdapter;

    @Override
    protected int getBindingLayoutId() {
        return R.layout.activity_xiaojia_assistant;
    }

    @Override
    void initViewModel() {
        mVoiceViewModel = (VoiceViewModel) getViewModel(VoiceViewModel.class);
    }

    @Override
    protected void init() {
        this.binding = (ActivityXiaojiaAssistantBinding) getBaseBinding();

//        binding.rv.setLayoutManager(new LinearLayoutManager(this));
//        binding.rv.setAdapter(assistantAdapter);

        getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        messageHandler = new ChatMessageHandler();
        AIUIWrapper.getInstance().startRecordAudio();
        AssistantContentBean assistantContentBean = new AssistantContentBean(AssistantContentBean.TYPE_WEATHER);
        viewAdapter = new AssistantViewAdapter(this, assistantContentBean);

        binding.assistantView.setVisibility(View.GONE);
        binding.assistantView.setLayoutAnimation(AnimationUtils.loadLayoutAnimation(this, R.anim.layout_animation_fall_down));
        binding.assistantView.setAdapter(viewAdapter);
        binding.assistantView.setOnClickBlankBgListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                finish();
            }
        });
//        new Handler().postDelayed(new Runnable() {
//            @Override
//            public void run() {
//                AssistantContentBean assistantContentBean = new AssistantContentBean(AssistantContentBean.TYPE_DIALOGUE);
//                assistantContentBean.setDialogue("修奥对话");
//                viewAdapter.setChangeData(assistantContentBean);
//                viewAdapter.notifyAllChange();
//            }
//        }, 3000);

//                list.add(assistantContentBean);
////                assistantAdapter.notifyItemInserted(0);
//                //通过加载XML动画设置文件来创建一个Animation对象;
//                Animation animation = AnimationUtils.loadAnimation(AssistantActivity.this, R.anim.anim_bottom);
//                //得到一个LayoutAnimationController对象;
//                LayoutAnimationController lac = new LayoutAnimationController(animation);
//                binding.rv.setLayoutAnimation(lac);
//
//                assistantAdapter.notifyDataSetChanged();
//                binding.rv.scheduleLayoutAnimation();
//            }
//        }, 3000);
        binding.assistantView.setVisibility(View.INVISIBLE);
        AIUIWrapper.getInstance().setVoiceIdentifyResultListener(new OnVoiceIdentifyResultListener() {
            @Override
            public void onResult(boolean isIATResult, RawMessage rawMessage) {
                if (rawMessage != null) {
                    if (rawMessage.isFromUser()) {

                        binding.tvMsg.setText(isIATResult ? rawMessage.cacheContent : String.valueOf(rawMessage.msgData));
                        if (!isIATResult) {
                            Log.e("TAG", "onResult: " + new String(rawMessage.msgData));
                        }
                        //滑动到最后一位
                        binding.hscroll.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
                    } else {
                        binding.assistantView.setVisibility(View.VISIBLE);
                        //非用户说的
                        Answer result = messageHandler.getFormatMessage(rawMessage);
                        AssistantContentBean assistantContentBean = new AssistantContentBean(AssistantContentBean.TYPE_WEATHER);
                        assistantContentBean.setWeather(result.getAnswer());
                        viewAdapter.setChangeData(assistantContentBean);
                        viewAdapter.notifyAllChange();
                    }

                } else {
                    binding.tvMsg.setText("什么也没说");
                }
            }
        });

        binding.tvMsg.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                reSpeak();
            }
        });
    }

    private void reSpeak() {
        messageHandler.reset();
        AIUIWrapper.getInstance().startRecordAudio();
        binding.tvMsg.setText("倾听中...");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        AIUIWrapper.getInstance().stopRecordAudio();
    }
}