From 4634dd8b98a684c07260e6334ecb4a818e63070b Mon Sep 17 00:00:00 2001 From: RdVoitz <rdv1u16@soton.ac.uk> Date: Mon, 9 Jul 2018 17:01:57 +0100 Subject: [PATCH] First commit on this new proj --- .idea/caches/build_file_checksums.ser | Bin 537 -> 496 bytes app/build.gradle | 3 + app/src/main/AndroidManifest.xml | 2 +- .../example/admin/sleepbetter/MainMenu.java | 3 + .../example/admin/sleepbetter/TestBot.java | 115 ++++++++++++++++++ app/src/main/res/layout/testbot.xml | 35 ++++++ .../main/res/menu/activity_menu_drawer.xml | 3 + 7 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/com/example/admin/sleepbetter/TestBot.java create mode 100644 app/src/main/res/layout/testbot.xml diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser index 157b270644b21f09e2dfaa4884b465597f04e7d4..306e670b31ee85c4ba18ad004c08d2c64ca62472 100644 GIT binary patch delta 86 zcmbQq@_~8643_$xN9IqQ<HN{0@uilc`65Q|)hQoiw_Uw#l)Y9#w1h#!*(xTqIJKxa trYJF`G=6ddquFFtMxDv~8Knhu*i^3b@M+5)o5b|-%7zm=C%<CU2LR}EA_4#a delta 149 zcmeysJd<U@43;{RzY8YL@nK|}_)<&2>V4gXIR7=16$&0oMV+5{dU6J%9>0dORZM7c zYEf}aVoGji-eeO-vk;!7(#)I`z4W5Ql$_MkLWVj9HU<U;fvjf!Q#%}M^3R54=N<EF w-%-LKkdvRBn4?!vlwXiqRFaumj8Gi5K4ymeF=HP6{p>RvE<Q}0e2`He0Q^`uFaQ7m diff --git a/app/build.gradle b/app/build.gradle index bf75d57..b98b24d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -20,6 +20,8 @@ android { } dependencies { + implementation 'com.ibm.watson.developer_cloud:java-sdk:3.7.2' + implementation 'com.github.kittinunf.fuel:fuel-android:1.9.0' implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:constraint-layout:1.1.2' @@ -31,4 +33,5 @@ dependencies { testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + implementation 'com.android.support:design:27.1.1' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6add63f..b3de139 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.admin.sleepbetter"> - + <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" diff --git a/app/src/main/java/com/example/admin/sleepbetter/MainMenu.java b/app/src/main/java/com/example/admin/sleepbetter/MainMenu.java index 6e6f260..8cf8c02 100644 --- a/app/src/main/java/com/example/admin/sleepbetter/MainMenu.java +++ b/app/src/main/java/com/example/admin/sleepbetter/MainMenu.java @@ -84,6 +84,7 @@ public class MainMenu extends AppCompatActivity FragmentManager fragmentManager = getFragmentManager(); + if (id == R.id.nav_factors) { fragmentManager.beginTransaction().replace(R.id.content_frame, new Factors()).commit(); } else if (id == R.id.nav_goal_diary) { @@ -94,6 +95,8 @@ public class MainMenu extends AppCompatActivity fragmentManager.beginTransaction().replace(R.id.content_frame, new Questionnaire()).commit(); } else if (id == R.id.nav_help) { fragmentManager.beginTransaction().replace(R.id.content_frame, new Help()).commit(); + } else if (id == R.id.nav_bot) { + fragmentManager.beginTransaction().replace(R.id.content_frame, new TestBot()).commit(); } DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout); diff --git a/app/src/main/java/com/example/admin/sleepbetter/TestBot.java b/app/src/main/java/com/example/admin/sleepbetter/TestBot.java new file mode 100644 index 0000000..581501b --- /dev/null +++ b/app/src/main/java/com/example/admin/sleepbetter/TestBot.java @@ -0,0 +1,115 @@ +package com.example.admin.sleepbetter; + +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.text.Html; +import android.util.Log; +import android.view.KeyEvent; +import android.view.inputmethod.EditorInfo; +import android.widget.EditText; +import android.widget.TextView; + +import com.github.kittinunf.fuel.Fuel; +import com.github.kittinunf.fuel.core.FuelError; +import com.github.kittinunf.fuel.core.Handler; +import com.github.kittinunf.fuel.core.Request; +import com.github.kittinunf.fuel.core.Response; +import com.ibm.watson.developer_cloud.conversation.v1.ConversationService; +import com.ibm.watson.developer_cloud.conversation.v1.model.MessageRequest; +import com.ibm.watson.developer_cloud.conversation.v1.model.MessageResponse; +import com.ibm.watson.developer_cloud.http.ServiceCallback; + +import java.util.HashMap; +import java.util.Map; + +public class TestBot extends AppCompatActivity { + + private static final String TAG = "TestBot"; + private ConversationService myConversationService = null; + private TextView chatDisplayTV; + private EditText userStatementET; + private final String IBM_USERNAME = "528a69dc-8537-4a01-8598-bf08be28a75a"; + private final String IBM_PASSWORD = "PqXreJu3IwoQ"; + private final String IBM_WORKSPACE_ID = "724cbe7d-c790-4298-a591-79833ac9aff9"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.testbot); + chatDisplayTV = findViewById(R.id.tv_chat_display); + userStatementET = findViewById(R.id.et_user_statement); + + //instantiating IBM Watson Conversation Service + myConversationService = + new ConversationService( + "2017-12-06", + IBM_USERNAME, + IBM_PASSWORD + ); + + userStatementET.setOnEditorActionListener(new TextView.OnEditorActionListener() { + @Override + public boolean onEditorAction(TextView tv, int action, KeyEvent keyEvent) { + if (action == EditorInfo.IME_ACTION_DONE) { + //show the user statement + final String userStatement = userStatementET.getText().toString(); + chatDisplayTV.append( + Html.fromHtml("<p><b>YOU:</b> " + userStatement + "</p>") + ); + userStatementET.setText(""); + + MessageRequest request = new MessageRequest.Builder() + .inputText(userStatement) + .build(); + // initiate chat conversation + myConversationService + .message(IBM_WORKSPACE_ID, request) + .enqueue(new ServiceCallback<MessageResponse>() { + @Override + public void onResponse(MessageResponse response) { + final String botStatement = response.getText().get(0); + runOnUiThread(new Runnable() { + @Override + public void run() { + chatDisplayTV.append( + Html.fromHtml("<p><b>BOT:</b> " + + botStatement + "</p>") + ); + } + }); + + // if the intent is joke then we access the third party + // service to get a random joke and respond to user + if (response.getIntents().get(0).getIntent().endsWith("RequestQuote")) { + final Map<String, String> params = new HashMap<String, String>() {{ + put("Accept", "text/plain"); + }}; + Fuel.get("https://icanhazdadjoke.com/").header(params) + .responseString(new Handler<String>() { + @Override + public void success(Request request, Response response, String body) { + Log.d(TAG, "" + response + " ; " + body); + chatDisplayTV.append( + Html.fromHtml("<p><b>BOT:</b> " + + body + "</p>") + ); + } + + @Override + public void failure(Request request, Response response, FuelError fuelError) { + } + }); + } + } + + @Override + public void onFailure(Exception e) { + Log.d(TAG, e.getMessage()); + } + }); + } + return false; + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/testbot.xml b/app/src/main/res/layout/testbot.xml new file mode 100644 index 0000000..d2a2eb9 --- /dev/null +++ b/app/src/main/res/layout/testbot.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="utf-8"?> +<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" +xmlns:tools="http://schemas.android.com/tools" +android:layout_width="match_parent" +android:layout_height="match_parent" +android:padding="16dp"> +<!--tools:context="MainActivity">--> + + <ScrollView + android:layout_width="match_parent" + android:layout_height="match_parent" + android:layout_above="@+id/user_statement_container"> + + <TextView + android:id="@+id/tv_chat_display" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:textSize="16sp" /> + </ScrollView> + + <android.support.design.widget.TextInputLayout + android:id="@+id/user_statement_container" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_alignParentBottom="true"> + + <EditText + android:id="@+id/et_user_statement" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:hint="Your Message:" + android:imeOptions="actionDone" + android:inputType="textShortMessage" /> + </android.support.design.widget.TextInputLayout> +</RelativeLayout> \ No newline at end of file diff --git a/app/src/main/res/menu/activity_menu_drawer.xml b/app/src/main/res/menu/activity_menu_drawer.xml index 2b4c42c..5a43064 100644 --- a/app/src/main/res/menu/activity_menu_drawer.xml +++ b/app/src/main/res/menu/activity_menu_drawer.xml @@ -20,6 +20,9 @@ <item android:id="@+id/nav_help" android:title="Help" /> + <item + android:id="@+id/nav_bot" + android:title="TestBot" /> </group> </menu> -- GitLab