package com.example.najmus.sensorsai;
/*====================================
    Author : NAJMUS SEEMAB
======================================*/

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.Manifest;
import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.view.View;
import android.widget.TextView;
import com.google.gson.JsonElement;
import android.widget.Button;
import java.util.Map;
import ai.api.AIListener;
import ai.api.android.AIService;
import ai.api.model.AIError;
import ai.api.model.AIResponse;
import ai.api.model.Result;

public class ChatBot extends AppCompatActivity implements AIListener {
    AIService aiService;
    TextView t;
    private Button listenButton;
    private TextView resultTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate ( savedInstanceState );
        setContentView ( R.layout.activity_chat_bot );
        resultTextView=(TextView) findViewById ( R.id.resultTextView );
        listenButton=(Button) findViewById ( R.id.listenButton);
        int permission = ContextCompat.checkSelfPermission ( this, Manifest.permission.RECORD_AUDIO );
        if (permission!= PackageManager.PERMISSION_GRANTED){

            makeRequest();
        }
        final ai.api.android.AIConfiguration config = new ai.api.android.AIConfiguration(
                "5676027c25554d4da3ae2e0238c07e38",
                ai.api.AIConfiguration.SupportedLanguages.English, ai.api.android.AIConfiguration.RecognitionEngine.System);


        aiService = AIService.getService(this, (ai.api.android.AIConfiguration) config );
        aiService.setListener(this);
    }
    protected  void makeRequest(){
        ActivityCompat.requestPermissions (this,new String[]{Manifest.permission.RECORD_AUDIO},101);
    }
    @Override
    public void onRequestPermissionsResult(int requestCode,String permissions[],int[] grantResults){
        switch (requestCode){
            case 101:{
                if (grantResults.length ==0 || grantResults[0]!=PackageManager.PERMISSION_GRANTED) {

                }else {

                }
                return;
            }
        }
    }
    public void buttonClicked(View view){
        aiService.startListening();
    }
    @Override
    public void onResult(final AIResponse response) {
        Result result = response.getResult();
        String parameterString = "";
        if (result.getParameters() != null && !result.getParameters().isEmpty()) {
            for (final Map.Entry<String, JsonElement> entry : result.getParameters().entrySet()) {
                parameterString += "(" + entry.getKey() + ", " + entry.getValue() + ") ";

            }}
        resultTextView.setText("Users Say:\n\n\n" + result.getResolvedQuery() +
                "\nAnswer:\n " + result.getAction() +
                "\n " + parameterString);}

    @Override
    public void onError(AIError error) {
        resultTextView.setText(error.toString());

    }

    @Override
    public void onAudioLevel(float level) {

    }

    @Override
    public void onListeningStarted() {

    }

    @Override
    public void onListeningCanceled() {

    }

    @Override
    public void onListeningFinished() {

    }
    }