Adapted project to the new dixitmobile-common library

This commit is contained in:
Jimmie Matsson 2017-06-16 10:57:49 +02:00
parent c63c19cf5d
commit 110591b814
8 changed files with 99 additions and 90 deletions

1
.idea/encodings.xml generated
View file

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="Encoding">
<file url="file://$PROJECT_DIR$/voicepickingdemo/src/main/res/values-fr/_vxt_demo_picking.jcf" charset="UTF-8" />
<file url="PROJECT" charset="UTF-8" />
</component>
</project>

1
.idea/gradle.xml generated
View file

@ -7,6 +7,7 @@
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$/../dixitmobile-common/library" />
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/voicepickingdemo" />
</set>

View file

@ -1 +1,3 @@
include ':voicepickingdemo'
include ':library'
project(':library').projectDir = new File('../dixitmobile-common/library')

View file

@ -2,7 +2,7 @@ apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.1"
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.voixtreme.voicepickingdemo"
minSdkVersion 19
@ -33,8 +33,9 @@ dependencies {
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.2.0'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support.constraint:constraint-layout:1.0.0-alpha9'
compile 'com.google.code.gson:gson:2.7'
compile project(':library')
testCompile 'junit:junit:4.12'
}

View file

@ -7,6 +7,8 @@ import android.content.IntentFilter;
import android.os.Bundle;
import android.util.Log;
import com.dixitmobile.common.BroadcastParams;
/**
* Created by jima on 8/03/17.
*/
@ -17,33 +19,12 @@ public class VoiXtreme {
private static final String INTENT_ACTION_RESPONSE = "com.voixtreme.api.RESPONSE";
private static final String INTENT_ACTION_RESPONSE_SPEECH = "com.voixtreme.api.COMMAND_SPEECH";
private static final String INTENT_ACTION_VOIXTREME = "com.voixtreme.vocalengine.COMMAND";
private static final String EXTRAS_COMMAND = "COMMAND";
private static final String EXTRAS_TEXT_TO_SPEAK = "TEXT";
private static final String EXTRAS_PACKAGE = "PACKAGE";
private static final String EXTRAS_REGISTER = "REGISTER";
private static final String EXTRAS_VOICES = "VOICES";
private static final String EXTRAS_ID = "ID";
public static final String RESPONSE_EXTRA_COMMAND = "COMMAND";
public static final String RESPONSE_EXTRA_TEXT = "TEXT";
public static final String RESPONSE_EXTRA_VOICES = "VOICES";
public static final String RESPONSE_EXTRA_RELIABILITY = "RELIABILITY";
public static final String RESPONSE_EXTRA_ASR_STATE = "ASRSTATE";
private static final String ID_WELCOME = "welcome";
private static final String ID_BYE = "bye";
private static final String ID_TALKING = "talking";
private static final String RESET_ENGINE = "<RST>";
private static final int COMMAND_INITIALIZE_ALL = 0;
private static final int COMMAND_INITIALIZE_TTS = 1;
private static final int COMMAND_SAY = 3;
private static final int COMMAND_BREAK = 3;
private static final int COMMAND_INPUT = 3;
private static final int COMMAND_ACTION = 4;
private static final int COMMAND_SPEECH = 4;
private static final int COMMAND_PING = 10;
private static final String RESET_ENGINE = "<RST>";
private static final String SAY = "<TTSO><APP><LOG>Voice Picking Demo<TEXT>";
private static final String INPUT_LOC = "<ASR>{type}<GRMEXTRA>{grammars}<LOT>N<LOG>Calibrate<MIN>2<MAX>2"
@ -111,15 +92,15 @@ public class VoiXtreme {
private void registerAsrStateListener(boolean register) {
Intent intent = new Intent(INTENT_ACTION_VOIXTREME);
intent.putExtra(EXTRAS_COMMAND, COMMAND_SPEECH);
intent.putExtra(BroadcastParams.EXTRAS_ACTION, BroadcastParams.COMMAND_STATE);
if (register) {
intent.putExtra(EXTRAS_REGISTER, REGISTER_REGISTER_FOR_STATE);
intent.putExtra(BroadcastParams.EXTRAS_REGISTER, REGISTER_REGISTER_FOR_STATE);
} else {
intent.putExtra(EXTRAS_REGISTER, REGISTER_UNREGISTER);
intent.putExtra(BroadcastParams.EXTRAS_REGISTER, REGISTER_UNREGISTER);
}
intent.putExtra(EXTRAS_PACKAGE, INTENT_ACTION_RESPONSE);
intent.putExtra(BroadcastParams.EXTRAS_RESPONSE_ACTION, INTENT_ACTION_RESPONSE);
mContext.sendBroadcast(intent);
}
@ -148,10 +129,10 @@ public class VoiXtreme {
mIsTalking = true;
Intent intent = new Intent(INTENT_ACTION_VOIXTREME);
intent.putExtra(EXTRAS_COMMAND, COMMAND_SAY);
intent.putExtra(EXTRAS_TEXT_TO_SPEAK, SAY + welcomeText);
intent.putExtra(EXTRAS_PACKAGE, INTENT_ACTION_RESPONSE);
intent.putExtra(EXTRAS_ID, ID_WELCOME);
intent.putExtra(BroadcastParams.EXTRAS_ACTION, BroadcastParams.COMMAND_SPEECH);
intent.putExtra(BroadcastParams.EXTRAS_TEXT, SAY + welcomeText);
intent.putExtra(BroadcastParams.EXTRAS_RESPONSE_ACTION, INTENT_ACTION_RESPONSE);
intent.putExtra(BroadcastParams.EXTRAS_ID, ID_WELCOME);
mContext.sendBroadcast(intent);
return true;
@ -166,16 +147,19 @@ public class VoiXtreme {
public boolean say(String text) {
if (mIsTalking) {
Log.e(TAG, "Nunca deberia haber llegado aquí");
return false;
}
mIsTalking = true;
Log.d(TAG, "Saying: " + ID_TALKING + ": " + SAY + text);
Intent intent = new Intent(INTENT_ACTION_VOIXTREME);
intent.putExtra(EXTRAS_COMMAND, COMMAND_SAY);
intent.putExtra(EXTRAS_TEXT_TO_SPEAK, SAY + text);
intent.putExtra(EXTRAS_PACKAGE, INTENT_ACTION_RESPONSE);
intent.putExtra(EXTRAS_ID, ID_TALKING);
intent.putExtra(BroadcastParams.EXTRAS_ACTION, BroadcastParams.COMMAND_SPEECH);
intent.putExtra(BroadcastParams.EXTRAS_TEXT, SAY + text);
intent.putExtra(BroadcastParams.EXTRAS_RESPONSE_ACTION, INTENT_ACTION_RESPONSE);
intent.putExtra(BroadcastParams.EXTRAS_ID, ID_TALKING);
mContext.sendBroadcast(intent);
return true;
@ -196,10 +180,10 @@ public class VoiXtreme {
mIsTalking = true;
Intent intent = new Intent(INTENT_ACTION_VOIXTREME);
intent.putExtra(EXTRAS_COMMAND, COMMAND_SAY);
intent.putExtra(EXTRAS_TEXT_TO_SPEAK, SAY + byeText);
intent.putExtra(EXTRAS_PACKAGE, INTENT_ACTION_RESPONSE);
intent.putExtra(EXTRAS_ID, ID_BYE);
intent.putExtra(BroadcastParams.EXTRAS_ACTION, BroadcastParams.COMMAND_SPEECH);
intent.putExtra(BroadcastParams.EXTRAS_TEXT, SAY + byeText);
intent.putExtra(BroadcastParams.EXTRAS_RESPONSE_ACTION, INTENT_ACTION_RESPONSE);
intent.putExtra(BroadcastParams.EXTRAS_ID, ID_BYE);
mContext.sendBroadcast(intent);
return true;
@ -246,9 +230,9 @@ public class VoiXtreme {
Log.d(TAG, "input: " + text);
Intent intent = new Intent(INTENT_ACTION_VOIXTREME);
intent.putExtra(EXTRAS_COMMAND, COMMAND_INPUT);
intent.putExtra(EXTRAS_TEXT_TO_SPEAK, text);
intent.putExtra(EXTRAS_PACKAGE, INTENT_ACTION_RESPONSE);
intent.putExtra(BroadcastParams.EXTRAS_ACTION, BroadcastParams.COMMAND_SPEECH);
intent.putExtra(BroadcastParams.EXTRAS_TEXT, text);
intent.putExtra(BroadcastParams.EXTRAS_RESPONSE_ACTION, INTENT_ACTION_RESPONSE);
mContext.sendBroadcast(intent);
return true;
@ -261,9 +245,9 @@ public class VoiXtreme {
public void resetEngine() {
Intent intent = new Intent(INTENT_ACTION_VOIXTREME);
intent.putExtra(EXTRAS_COMMAND, COMMAND_BREAK);
intent.putExtra(EXTRAS_TEXT_TO_SPEAK, RESET_ENGINE);
intent.putExtra(EXTRAS_PACKAGE, INTENT_ACTION_RESPONSE);
intent.putExtra(BroadcastParams.EXTRAS_ACTION, BroadcastParams.COMMAND_SPEECH);
intent.putExtra(BroadcastParams.EXTRAS_TEXT, RESET_ENGINE);
intent.putExtra(BroadcastParams.EXTRAS_RESPONSE_ACTION, INTENT_ACTION_RESPONSE);
mContext.sendBroadcast(intent);
}
@ -285,17 +269,15 @@ public class VoiXtreme {
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
int command = extras.getInt(RESPONSE_EXTRA_COMMAND, -1);
String id = extras.getString(EXTRAS_ID, "NO-ID");
String text = extras.getString(RESPONSE_EXTRA_TEXT, "");
int asrState = extras.getInt(RESPONSE_EXTRA_ASR_STATE, -1);
int command = extras.getInt(BroadcastParams.EXTRAS_ACTION, -1);
String id = extras.getString(BroadcastParams.EXTRAS_ID, "NO-ID");
String text = extras.getString(BroadcastParams.EXTRAS_TEXT, "");
int asrState = extras.getInt(BroadcastParams.EXTRAS_ASR_STATE, -1);
if (asrState == -1) {
Log.d(TAG, "received: -------------------------------------------");
Log.d(TAG, "received: ACTION: " + intent.getAction());
Log.d(TAG, "received: COMMAND: " + extras.getInt(RESPONSE_EXTRA_COMMAND, -1));
Log.d(TAG, "received: ID: " + id);
}
Log.d(TAG, "received: -------------------------------------------");
Log.d(TAG, "received: ACTION: " + intent.getAction());
Log.d(TAG, "received: COMMAND: " + command);
Log.d(TAG, "received: ID: " + id);
// Log.d(TAG, "received: VOICES: " + extras.getString(RESPONSE_EXTRA_VOICES, "nada"));
// Log.d(TAG, "received: COMMAND_SPEECH: " + extras.getInt("COMMAND_SPEECH", -1));
@ -305,10 +287,10 @@ public class VoiXtreme {
Log.d(TAG, "INTENT_ACTION_RESPONSE");
}
if (command == COMMAND_SAY) {
if (command == BroadcastParams.COMMAND_SPEECH) {
Log.d(TAG, "COMMAND_SAY");
int reliability = extras.getInt(RESPONSE_EXTRA_RELIABILITY, 0);
int reliability = extras.getInt(BroadcastParams.EXTRAS_RELIABILITY, 0);
// Engine stopped talking
if (reliability == 0 && text.isEmpty()) {
@ -321,9 +303,7 @@ public class VoiXtreme {
}
}
if (command == COMMAND_ACTION) {
// Log.d(TAG, "received: ASR_STATE: " + asrState);
if (command == BroadcastParams.COMMAND_STATE) {
switch (asrState) {
case 0: // NOL (NO Listen X)
mIsTalking = false;
@ -366,6 +346,8 @@ public class VoiXtreme {
mIsTalking = false;
Log.d(TAG, "Say finished: " + id);
switch (id) {
case ID_WELCOME:
informListenerEvent(VoiXtremeEventListener.VOIXTREME_EVENT_DONE_SAY_WELCOME);
@ -396,6 +378,8 @@ public class VoiXtreme {
*/
private void informListenerResponse(String responseText, int reliability) {
mIsTalking = false;
if (mVoiXtremeEventListener != null) {
mVoiXtremeEventListener.OnVoiXtremeUserResponse(responseText, reliability);
}

View file

@ -8,6 +8,9 @@ import android.os.Handler;
import android.support.annotation.Nullable;
import android.util.Log;
import com.dixitmobile.common.BroadcastParams;
import com.dixitmobile.common.voixtreme.VxtCommon;
/**
* Created by jima on 8/03/17.
*/
@ -16,14 +19,10 @@ public class VoiXtremeCalibrate {
private static final String TAG = "VoiXtremeCalibrate";
private static final String CALIBRATE_PACKAGE_NAME = "com.voixtreme.calibrate";
private static final String EXTRAS_RETURN_PACKAGE = "returnPackage";
private static final String EXTRAS_STATUS = "status";
private static final String RETURN_ACTION = "com.voixtreme.api.calibrate.ACTION";
private static final int DEFAULT_TIMEOUT_CALIBRATE = 10000;
private static final int CALIBRATE_STATUS_STARTED_OK = 100;
private Context mContext;
private int mTimeOut;
private VoiXtremeCalibrateListener mVoiXtremeCalibrateListener;
@ -63,7 +62,7 @@ public class VoiXtremeCalibrate {
IntentFilter filter = new IntentFilter(RETURN_ACTION);
mContext.registerReceiver(mBroadcastReceiver, filter);
intent.putExtra(EXTRAS_RETURN_PACKAGE, RETURN_ACTION);
intent.putExtra(BroadcastParams.EXTRAS_RESPONSE_ACTION, RETURN_ACTION);
mContext.startActivity(intent);
}
@ -104,9 +103,9 @@ public class VoiXtremeCalibrate {
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(RETURN_ACTION)) {
int status = intent.getExtras().getInt(EXTRAS_STATUS, -1);
int status = intent.getExtras().getInt(BroadcastParams.EXTRAS_STATUS, -1);
if (status == CALIBRATE_STATUS_STARTED_OK) {
if (status == VxtCommon.Calibrate.CALIBRATE_STATUS_STARTED) {
Log.i(TAG, "Calibrate started OK");
mHandler.removeCallbacks(mTimeoutRunnable);
} else {

View file

@ -1,22 +1,21 @@
package com.voixtreme.voicepickingdemo;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.annotation.NonNull;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Toast;
import com.voixtreme.api.VoiXtreme;
import com.dixitmobile.common.VerifyPermissions;
import com.voixtreme.api.VoiXtremeCalibrate;
import com.voixtreme.api.VoiXtremeCalibrateListener;
import com.voixtreme.api.VoiXtremeEventListener;
public class SplashScreen extends AppCompatActivity
implements VoiXtremeCalibrateListener {
private static final String TAG = "SplashScreen";
private static final int REQUEST_CODE_PERMISSIONS = 313;
private VerifyPermissions mVerifyPermissions;
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -24,20 +23,26 @@ public class SplashScreen extends AppCompatActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_splashscreen);
// TODO: check for permissions
mVerifyPermissions = new VerifyPermissions(this);
if (mVerifyPermissions.checkPermissionReadExternalStorage()) {
startCalibrate();
}
}
private void startCalibrate() {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// startMainActivity();
// finish();
VoiXtremeCalibrate calibrate = new VoiXtremeCalibrate(getApplicationContext());
calibrate.startCalibrateApp(SplashScreen.this);
}
}, 1000);
if (BuildConfig.DEBUG) {
startMainActivity();
} else {
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
VoiXtremeCalibrate calibrate = new VoiXtremeCalibrate(getApplicationContext());
calibrate.startCalibrateApp(SplashScreen.this);
}
}, 1000);
}
}
@Override
@ -52,6 +57,18 @@ public class SplashScreen extends AppCompatActivity
finish();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (requestCode == VerifyPermissions.REQUEST_CODE_PERMISSIONS) {
if (mVerifyPermissions.onRequestPermissionResult(requestCode, permissions, grantResults)) {
startCalibrate();
} else {
mVerifyPermissions.showErrorDialog(R.string.error_no_permission, true);
}
}
}
/**
* Lets start the main activity
*/
@ -59,5 +76,6 @@ public class SplashScreen extends AppCompatActivity
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
finish();
}
}

View file

@ -8,6 +8,7 @@ import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.dixitmobile.common.voixtreme.VxtCommon;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.stream.JsonReader;
@ -117,7 +118,7 @@ public class Demo extends AppCompatActivity implements VoiXtremeEventListener {
return;
}
mUserResponse.setText(responseText);
mUserResponse.setText(responseText + " (" + reliability + ")");
if (responseText.equals(mRequestData.verify)) {
sayAction(true);
@ -135,7 +136,7 @@ public class Demo extends AppCompatActivity implements VoiXtremeEventListener {
String errorText;
String infoText;
public String allSay() {
String allSay() {
return sayInit + " " + sayText;
}
@ -248,8 +249,7 @@ public class Demo extends AppCompatActivity implements VoiXtremeEventListener {
* @return Demo configuration or null on error
*/
private JsonDemoPicking readJsonConfigurationFile() {
String fileName = System.getenv("EXTERNAL_STORAGE") + "/voixtreme/_vxt_demo_picking.jcf";
String fileName = VxtCommon.getDefaultVoiXtremePath() + "_vxt_demo_picking.jcf";
Log.d(TAG, fileName);
JsonReader reader;
@ -287,11 +287,14 @@ public class Demo extends AppCompatActivity implements VoiXtremeEventListener {
@Override
public void onBackPressed() {
Log.i(TAG, "counter: " + mCounter);
if (System.currentTimeMillis() - mTime > 500) {
mCounter = 1;
} else if (mCounter++ > 5) {
} else if (mCounter++ > 2) {
mVoiXtreme.resetEngine();
super.onBackPressed();
mVoiXtreme.sayBye(mConfig.picking.goodbye);
finish();
return;
}