Commit a376de32 by cuiliang.shi

v0.1

1 parent 5172eec3
......@@ -35,7 +35,7 @@
</value>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
......
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
apply plugin: 'com.android.application'
android {
signingConfigs {
debug {
storeFile file('F:\\Cuiliang.shi\\android\\turingos\\turingos.jks')
storePassword 'agenewturing'
keyAlias = 'turingos'
keyPassword 'agenewturing'
}
}
compileSdkVersion 25
buildToolsVersion '28'
defaultConfig {
......@@ -17,8 +25,6 @@ android {
}
lintOptions {
abortOnError false
}
......
The file could not be displayed because it is too large.
The file could not be displayed because it is too large.
......@@ -5,6 +5,7 @@
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
......@@ -29,6 +30,7 @@
<application
android:persistent="true"
android:allowBackup="true"
android:label="@string/app_name"
android:supportsRtl="true"
......
......@@ -234,8 +234,14 @@ public class Base {
setTTSListener(ttsClientListener);
setActionBo(true, true);
AsrManager.getInstance().stop();
TTSManager.getInstance().stopTTS();
if(AsrManager.getInstance().isRecording()){
AsrManager.getInstance().stop();
}
if (TTSManager.getInstance().isSpeaking()){
TTSManager.getInstance().stopTTS();
}
record();
}
......
......@@ -2,7 +2,6 @@ package com.toscl.turingos;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
......@@ -11,7 +10,6 @@ import android.graphics.drawable.AnimationDrawable;
import android.os.Build;
import android.os.Handler;
import android.os.Message;
import android.support.annotation.RequiresApi;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
......@@ -86,16 +84,18 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme(R.style.AppTheme);
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
mContext = this;
recognize = (Button) findViewById(R.id.iat_recognize);
......@@ -145,7 +145,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
operateAll();
}
});
initSDK();
musicHandler.mOnMiGuPlayStateListener = mOnPlayerStateListener;
musicHandler.mOnTuringPlayStateListener = mOnTuringPlayStateListener;
......@@ -159,6 +158,9 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
});
playViewWrapper = (RelativeLayout) findViewById(R.id.ai_music);
initSDK();
}
......@@ -311,48 +313,41 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
private AuthenticationListener authenticationListener = new AuthenticationListener() {
@Override
public void onSuccess() {
runOnUiThread(new Runnable() {
@Override
public void run() {
mLoginSuccess = true;
TTSManager.getInstance().init(getApplicationContext(), new TTSInitListener() {
@Override
public void onSuccess() {
TTSManager.getInstance().setEnhancerEnable(true);
LogUtil.e(TAG, "TTS init success");
}
@Override
public void onFailed(int i, String s) {
LogUtil.e(TAG, "TTS init failed errorCode=" + i + " errorMsg=" + s);
}
});
AsrManager.getInstance().init(getApplicationContext(), new InitialListener() {
@Override
public void onInitialSuccess() {
LogUtil.e(TAG, "ASR init success");
}
@Override
public void onInitialError(int errorCode, String asrErrorMessage) {
LogUtil.e(TAG, "ASR init failed errorCode=" + errorCode + " errorMsg=" + asrErrorMessage);
}
});
mLoginSuccess = true;
TTSManager.getInstance().init(getApplicationContext(), new TTSInitListener() {
@Override
public void onSuccess() {
TTSManager.getInstance().setEnhancerEnable(true);
Log.d(TAG, "TTS init success");
if (mFirstIn) {
mFirstIn = false;
List<String> ttsSequenceList = new ArrayList<>();
ttsSequenceList.add("我是" + getString(R.string.app_name) + ",有什么可以帮你的吗");
// mResultText.setText(ttsSequenceList.get(0));
handleTtsOfWelcome(ttsSequenceList);
addContactToRobot();
mFirstIn = false;
}
}
@Override
public void onFailed(int i, String s) {
LogUtil.e(TAG, "TTS init failed errorCode=" + i + " errorMsg=" + s);
}
});
AsrManager.getInstance().init(getApplicationContext(), new InitialListener() {
@Override
public void onInitialSuccess() {
LogUtil.e(TAG, "ASR init success");
}
@Override
public void onInitialError(int errorCode, String asrErrorMessage) {
LogUtil.e(TAG, "ASR init failed errorCode=" + errorCode + " errorMsg=" + asrErrorMessage);
}
});
}
......@@ -369,12 +364,14 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
msg.obj = s;
mLoadToastHandler.sendMessageAtTime(msg, 100);
handleAiDialog(false);
//startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); //直接进入手机中的wifi网络设置界面
//Toast.makeText(MainActivity.this, "错误码:" + errorCode + " 错误信息:" + s, Toast.LENGTH_SHORT).show();
traceTheErrorAndShowIt();
}
});
if (errorCode == 50000){
mGlobalDialog.setTitleText("请检查网络后重试");
mGlobalDialog.show();
}
Log.e(TAG, "errorCode=" + errorCode + " errorMsg=" + s);
}
};
......@@ -515,7 +512,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
// mResultText.setText(welcome);
}
} else {
if (textValue.length() <=12){
if (textValue.length() <=12 || textValue.contains("请听我唱")){
Message msg = new Message();
msg.arg1 = 2;
msg.obj = textValue;
......@@ -527,19 +524,12 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
mGlobalDialog.show();
// mResultText.setText(textValue);
handleAiDialog(false);
}
setStatusLayout();
Log.d(TAG, "processSequence" + intent.getCode());
// if (intent.getCode() == 201601 ||
// intent.getCode() == 200802 || intent.getCode() == 200101){
// handleTts(intent, ttsSequenceList);
// } else{
// handleTts(intent, ttsSequenceList);
// }
handleTts(intent, ttsSequenceList);
}
......@@ -605,21 +595,45 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
case 2:
mLoadToast.setText(msg.obj.toString());
mLoadToast.show();
break;
case 3:
mLoadToast.setText(msg.obj.toString());
mLoadToast.show();
mGlobalDialog.cancel();
mGlobalDialog = new SweetAlertDialog(mContext, SweetAlertDialog.WARNING_TYPE)
.setTitleText(msg.obj.toString())
.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sDialog) {
operateAll();
}
});
mGlobalDialog.show();
if (mLoginSuccess){
List<String> ttsSequenceList = new ArrayList<>();
ttsSequenceList.add(msg.obj.toString());
handleTtsOfWelcome(ttsSequenceList);
}
break;
}
}
};
private void handleTtsOfWelcome(final List<String> ttsSequenceList) {
Log.d(TAG, "ttsSequenceList SIZE = " + ttsSequenceList.size());
Message msg = new Message();
msg.arg1 = 2;
msg.obj = ttsSequenceList.get(0);
mLoadToastHandler.sendMessageAtTime(msg, 100);
if (ttsSequenceList.size() > 0) {
TTSManager.getInstance().startTTS(ttsSequenceList.get(0), new TTSListener() {
@Override
public void onSpeakBegin(String s) {
Log.d(TAG, "handleTtsOfWelcome - ttsSequenceList onSpeakBegin");
Message msg = new Message();
msg.arg1 = 2;
msg.obj = ttsSequenceList.get(0);
mLoadToastHandler.sendMessageAtTime(msg, 100);
}
@Override
......@@ -649,6 +663,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
} else {
Log.d(TAG, "ttsSequenceList size <= 0");
}
ttsSequenceList.clear();
}
private void handleTts(final Behavior.IntentInfo intent, List<String> ttsSequenceList) {
......@@ -714,17 +730,8 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
}
};
private void handleAiDialog(final boolean show) {
runOnUiThread(new Runnable() {
@Override
public void run() {
viewAiWrapper.setVisibility(show ? View.VISIBLE : View.GONE);
viewBg.setVisibility(show ? View.VISIBLE : View.GONE);
if (!show) {
animationDrawable.stop();
}
}
});
private void traceTheErrorAndShowIt() {
handleMyTips(getString(R.string.app_name) + "刚刚出小差了,请再试一次吧");
}
......@@ -838,14 +845,13 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
if (mGlobalDialog.getAlerType() == SweetAlertDialog.PROGRESS_TYPE){
mGlobalDialog.setTitleText(list.get(0));
mGlobalDialog.show();
}else{
mGlobalDialog.cancel();
Log.d(TAG, "AsrListener processDialog");
mGlobalDialog.cancel();
mGlobalDialog = new SweetAlertDialog(mContext, SweetAlertDialog.PROGRESS_TYPE);
mGlobalDialog.getProgressHelper().setBarColor(Color.parseColor("#A5DC86"));
mGlobalDialog.setTitleText(list.get(0));
mGlobalDialog.setCancelable(false);
mGlobalDialog.setCancelable(true);
mGlobalDialog.show();
}
return;
......@@ -855,9 +861,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
Log.d(TAG, "asrListener - onResults" + list.toString());
if (list != null && list.size() > 0 && !TextUtils.isEmpty(list.get(0))) {
mGlobalDialog.dismiss();
mGlobalDialog.cancel();
mGlobalDialog = new SweetAlertDialog(mContext, SweetAlertDialog.SUCCESS_TYPE)
.setTitleText(list.get(0))
.setContentText("");
......@@ -887,7 +891,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
@Override
public void onEndOfRecord() {
handleAiDialog(false);
// traceTheErrorAndShowIt();
// mResultText.setText(getString(R.string.app_name) + "正在分析中...");
}
......@@ -922,48 +926,31 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
handleMyTips(getString(R.string.app_name) + "请求超时了,请再试一次吧");
}
onErrorCallback(errorMessage.getMessage());
handleAiDialog(false);
traceTheErrorAndShowIt();
}
@Override
public void onVolumeChange(int i) {
// Log.d(TAG, "volume" + i);
if (i > 20) {
mSilentTime = System.currentTimeMillis();
}
if (System.currentTimeMillis() - mSilentTime > 3000) {
handleAiDialog(false);
traceTheErrorAndShowIt();
AsrManager.getInstance().stop();
TTSManager.getInstance().stopTTS();
}
// animationDrawable.stop();
// animationDrawable.start();
}
};
private void handleMyTips(String text) {
// mResultText.setText(text);
Log.d(TAG, "handleMyTips");
Message msg = new Message();
msg.arg1 = 2;
msg.arg1 = 3;
msg.obj = text;
mLoadToastHandler.sendMessageAtTime(msg, 100);
mGlobalDialog.dismiss();
mGlobalDialog = new SweetAlertDialog(this, SweetAlertDialog.WARNING_TYPE)
.setTitleText(text)
.setConfirmClickListener(new SweetAlertDialog.OnSweetClickListener() {
@Override
public void onClick(SweetAlertDialog sDialog) {
operateAll();
}
});
mGlobalDialog.show();
List<String> ttsSequenceList = new ArrayList<>();
ttsSequenceList.add(text);
handleTtsOfWelcome(ttsSequenceList);
}
......@@ -1014,15 +1001,14 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
mLoadToast.setText("正在倾听中...");
if (mLoginSuccess) {
// handleAiDialog(true);
mGlobalDialog.dismiss();
mGlobalDialog.cancel();
// traceTheErrorAndShowIt(true);
Log.d(TAG, "AsrListener processDialog");
mGlobalDialog.cancel();
mGlobalDialog = new SweetAlertDialog(mContext, SweetAlertDialog.PROGRESS_TYPE);
mGlobalDialog.getProgressHelper().setBarColor(Color.parseColor("#A5DC86"));
mGlobalDialog.setTitleText("识别中...");
mGlobalDialog.setCancelable(false);
mGlobalDialog.setCancelable(true);
mGlobalDialog.show();
// animationDrawable.start();
......@@ -1053,8 +1039,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
playView.setChecked(false);
TuringMusic.getInstance().stop();
}
// mResultText.setText(getString(R.string.app_name) + "正在聆听中...");
}
/**
......@@ -1112,10 +1096,6 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
}
};
/**
* 开始播放音乐
**/
public void startMusic(String mediaUrl) {
TTSManager.getInstance().stopTTS();
Log.e(TAG, "media url=" + mediaUrl);
......@@ -1131,6 +1111,7 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
@Override
public void onSuccess() {
Log.d(TAG, "music music success");
mGlobalDialog.cancel();
TuringMusic.getInstance().play();
playViewWrapper.setVisibility(View.VISIBLE);
playView.requestFocus();
......@@ -1230,28 +1211,23 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
}
}
/**
* @param isClick 播放资源是否可以按压
**/
private void setMusicView(boolean isClick) {
}
@Override
protected void onDestroy() {
Log.d(TAG, "onDestroy");
super.onDestroy();
exitLogic();
if (mLoginSuccess) {
exitLogic();
}
}
public void exitLogic() {
if (AsrManager.getInstance().isRecording()) {
if (AsrManager.getInstance() != null && AsrManager.getInstance().isRecording()) {
AsrManager.getInstance().cancel();
}
if (TTSManager.getInstance().isSpeaking()) {
if (TTSManager.getInstance() != null && TTSManager.getInstance().isSpeaking()) {
TTSManager.getInstance().stopTTS();
}
if (TuringMusic.getInstance().isPlaying()) {
if (TuringMusic.getInstance() != null &&TuringMusic.getInstance().isPlaying()) {
playViewWrapper.setVisibility(View.GONE);
playView.setChecked(false);
TuringMusic.getInstance().stop();
......
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#880E0E0E"
xmlns:app="http://schemas.android.com/apk/res-auto">
android:background="#880E0E0E">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:gravity="center_horizontal"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:paddingRight="10dp">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="10dp" >
<TextView
android:layout_width="wrap_content"
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text=""
android:textSize="10sp" />
</RelativeLayout>
android:layout_margin="10dp">
<com.toscl.turingos.view.ScrollEditText
android:id="@+id/iat_text"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:gravity="top|left"
android:focusable="false"
android:hint=""
android:paddingBottom="10dp"
android:textSize="20sp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text=""
android:textSize="10sp" />
</RelativeLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_marginTop="10dp"
android:layout_gravity="center"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<Button
android:clickable="true"
android:id="@+id/iat_recognize"
android:layout_width="45dp"
android:layout_height="49dp"
<com.toscl.turingos.view.ScrollEditText
android:id="@+id/iat_text"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="@drawable/selector_record_bg"
android:focusable="true"
android:editable="false"
android:focusable="false"
android:gravity="top|left"
android:hint=""
android:paddingBottom="10dp"
android:textSize="20sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:layout_marginTop="10dp"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="10dp"
android:layout_marginBottom="2dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
<Button
android:id="@+id/iat_recognize"
android:layout_width="45dp"
android:layout_height="49dp"
android:layout_weight="1"
android:background="@drawable/selector_record_bg"
android:clickable="true"
android:focusable="true"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_marginBottom="2dp"
android:gravity="center_horizontal"
android:orientation="horizontal">
</LinearLayout>
</LinearLayout>
<RelativeLayout
android:gravity="center"
android:id="@+id/ai_music"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/music_background">
<com.toscl.turingos.view.PlayView
android:layout_width="wrap_content"
android:id="@+id/playview"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:onClick="play"
android:padding="10dp"
android:rotation="180"
android:clickable="true"
android:focusable="true"
app:checked="true"
app:pauseLineColor="@color/colorAccent"
app:pauseLineDistance="18dp"
app:pauseLineHeight="45dp"
app:pauseLineWidth="8dp"
app:radius="50dp"
app:solidColor="@color/colorAccent"
app:triangleColor="@color/colorAccent"
app:triangleHeight="40dp" />
android:gravity="center"
android:visibility="gone">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:background="@drawable/dialog_background">
<com.toscl.turingos.view.PlayView
android:id="@+id/playview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_rowWeight="1"
android:layout_columnWeight="1"
android:clickable="true"
android:focusable="true"
android:onClick="play"
android:padding="10dp"
android:layout_gravity="center"
android:rotation="180"
app:checked="true"
app:pauseLineColor="@color/color_3"
app:pauseLineDistance="18dp"
app:pauseLineHeight="45dp"
app:pauseLineWidth="10dp"
app:radius="50dp"
app:solidColor="@color/color_3"
app:strokeWidth="10dp"
app:triangleColor="@color/color_3"
app:triangleHeight="40dp" />
</LinearLayout>
</RelativeLayout>
<RelativeLayout
android:id="@+id/ai_bg"
android:clickable="true"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/black_hint">
</RelativeLayout>
android:background="@color/black_hint"
android:clickable="true"
android:visibility="gone"></RelativeLayout>
<RelativeLayout
android:id="@+id/ai_wrapper"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:visibility="gone">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:layout_height="match_parent"
android:orientation="horizontal">
<LinearLayout
android:orientation="vertical"
android:layout_gravity="center"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:background="@drawable/shape_dialog_bg"
android:gravity="center"
android:orientation="vertical"
android:paddingTop="10dp"
android:paddingBottom="20dp"
android:layout_height="wrap_content"
android:background="@drawable/shape_dialog_bg">
android:paddingBottom="20dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="倾听中"
android:textColor="@color/ai"
android:textSize="23sp"
android:text="倾听中"/>
android:textSize="23sp" />
<ImageView
android:id="@+id/ai_pic"
android:layout_width="wrap_content"
android:layout_height="80sp"
android:src="@drawable/anim_record"/>
android:src="@drawable/anim_record" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="百合机器人为你服务"
android:textColor="@color/white"
android:textSize="16sp"
android:text="百合机器人为你服务"/>
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
......
<resources>
<string name="app_name">M</string>
<string name="app_name"></string>
<string name="turing_appkey">19693c9351fb41c9bb7b5b2695fd890b</string>
<string name="turing_secret">goV639J27FRW8Y9F</string>
<string name="network_error">网络慢.缓冲失败</string>
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!