diff --git a/README.md b/README.md index 6624eac6ca26dab795438b7d353fd360dd73bb09..36804e9a040bbc53802e3e6368b23fc489583bbf 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ Network Detect
Storage IO
Command Line Support
UI Control Features (Status Bar and Navigation Bar)
+TTS Features
## Current Version -1.0-git-201706291123 +1.0-git-201708111646 diff --git a/app/src/main/java/jp/ruby/rubylibrary/A.java b/app/src/main/java/jp/ruby/rubylibrary/A.java deleted file mode 100644 index 311b446cf54d4fa3e365597032e731608c2c1f47..0000000000000000000000000000000000000000 --- a/app/src/main/java/jp/ruby/rubylibrary/A.java +++ /dev/null @@ -1,10 +0,0 @@ -package jp.ruby.rubylibrary; - -/** - * Created by Akeno on 2017/06/30. - */ - -public class A { - public int a; - public String b; -} diff --git a/app/src/main/java/jp/ruby/rubylibrary/JS.java b/app/src/main/java/jp/ruby/rubylibrary/JS.java new file mode 100644 index 0000000000000000000000000000000000000000..b65b60d0e4732f7a3a0487d0d701a67c405d42f1 --- /dev/null +++ b/app/src/main/java/jp/ruby/rubylibrary/JS.java @@ -0,0 +1,40 @@ +package jp.ruby.rubylibrary; + +import android.content.Context; +import android.speech.tts.TextToSpeech; +import android.webkit.JavascriptInterface; +import android.widget.Toast; + +import java.util.Locale; + +/** + * Created by Akeno on 2017/08/11. + */ + +public class JS { + private Context context; + private TextToSpeech tts; + + public JS(final Context context) { + + // TODO Auto-generated constructor stub + this.context = context; + tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() { + @Override + public void onInit(int status) { + // TODO Auto-generated method stub + if (status == TextToSpeech.SUCCESS) { + int result = tts.setLanguage(Locale.SIMPLIFIED_CHINESE); + if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { + Toast.makeText(context, "Language is not available.", Toast.LENGTH_SHORT).show(); + } + } + } + }); + } + @JavascriptInterface + public void say(String text) { + tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); + } +} + diff --git a/app/src/main/java/jp/ruby/rubylibrary/MainActivity.java b/app/src/main/java/jp/ruby/rubylibrary/MainActivity.java index 02fd0f1e35707914f0c3647878599d262053d263..79757e252c3bd63930dd9405fe0b4a76738f0e26 100644 --- a/app/src/main/java/jp/ruby/rubylibrary/MainActivity.java +++ b/app/src/main/java/jp/ruby/rubylibrary/MainActivity.java @@ -16,11 +16,13 @@ import android.widget.LinearLayout; import android.widget.TextView; import java.nio.charset.Charset; +import java.util.Locale; import yuki.control.extended.WebViewEx; import yuki.resource.extended.GsonConvert; import yuki.resource.extended.StorageIOManager; import yuki.resource.extended.UIController; +import yuki.tts.extended.TTSComplexController; public class MainActivity extends Activity { @@ -28,16 +30,12 @@ public class MainActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); - A a=new A(); - a.a=1; - a.b="hello world!"; - TextView tv=findViewById(R.id.tv); - String gson=GsonConvert.SerializeObject(a); - tv.setText(gson); - A b=GsonConvert.DeserializeObject(gson,A.class); - b=null; - Intent aa=new Intent(Intent.ACTION_VIEW, Uri.parse("weixin://baidu.com/")); - startActivity(aa); + WebView wv = (WebView) findViewById(R.id.wv); + wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); + wv.getSettings().setJavaScriptEnabled(true); + wv.loadUrl("http://10.1.1.134:8282/Client.html"); + wv.addJavascriptInterface(new TTSComplexController(getApplicationContext(), Locale.SIMPLIFIED_CHINESE), "tts"); + //wv.addJavascriptInterface(new JS(getApplicationContext()), "tts"); } } diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 8c68c42e11026725537387da93da0786ea5a4c4f..151cf76af4803eb591803111a70de82ec5097b95 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -7,9 +7,8 @@ android:orientation="vertical" tools:context="jp.ruby.rubylibrary.MainActivity"> - + android:layout_height="match_parent" /> diff --git a/rubylib/build.gradle b/rubylib/build.gradle index 2d8bb627dfcaa75834e3b878002b1909c96a246a..4041c9c6a0e81a31716cf6533d999139776375b9 100644 --- a/rubylib/build.gradle +++ b/rubylib/build.gradle @@ -7,7 +7,7 @@ publish { userOrg = 'takeya-yuki-studio' //bintray注册的用户名 groupId = 'jp.ruby.rubylib' //compile引用时的第1部分groupId artifactId = 'rubylib' //compile引用时的第2部分项目名 - publishVersion = '1.0.4' //compile引用时的第3部分版本号 + publishVersion = '1.0.5' //compile引用时的第3部分版本号 desc = 'Ruby Extended Controls' website = 'https://github.com/Takeya-Yuki/RubyLib.git' } @@ -20,8 +20,8 @@ android { defaultConfig { minSdkVersion 17 targetSdkVersion 26 - versionCode 4 - versionName "1.0.4" + versionCode 5 + versionName "1.0.5" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/rubylib/src/main/java/yuki/tts/extended/TTSComplexController.java b/rubylib/src/main/java/yuki/tts/extended/TTSComplexController.java new file mode 100644 index 0000000000000000000000000000000000000000..b6b63d8ed7c95fbaa6ee1bff38d8e0abaa4dda64 --- /dev/null +++ b/rubylib/src/main/java/yuki/tts/extended/TTSComplexController.java @@ -0,0 +1,63 @@ +package yuki.tts.extended; + +import android.content.Context; +import android.speech.tts.TextToSpeech; +import android.speech.tts.UtteranceProgressListener; +import android.util.Log; +import android.webkit.JavascriptInterface; + +import java.util.ArrayList; +import java.util.List; +import java.util.Locale; + +/** + * Created by Akeno on 2017/08/11. + */ + +public class TTSComplexController { + private Context context; + private TextToSpeech tts; + private ArrayList textList; + + public TTSComplexController(final Context context,final Locale locale){ + + // TODO Auto-generated constructor stub + this.context = context; + textList=new ArrayList(); + tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() { + @Override + public void onInit(int status) { + // TODO Auto-generated method stub + if (status == TextToSpeech.SUCCESS) { + int result = tts.setLanguage(locale); + if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { + Log.d("TTS","Language '"+locale.getDisplayLanguage()+"'is not supported"); + } + } + } + }); + tts.setOnUtteranceProgressListener(new UtteranceProgressListener() { + @Override + public void onStart(String s) { + + } + + @Override + public void onDone(String s) { + if(textList.size()>0) { + textList.remove(0); + } + } + + @Override + public void onError(String s) { + + } + }); + } + @JavascriptInterface + public void say(String text) { + textList.add(text); + tts.speak(text,TextToSpeech.QUEUE_ADD,null); + } +} diff --git a/rubylib/src/main/java/yuki/tts/extended/TTSSimpleController.java b/rubylib/src/main/java/yuki/tts/extended/TTSSimpleController.java new file mode 100644 index 0000000000000000000000000000000000000000..1d3b37e8e97bc4a4351d6458179c624227a54ead --- /dev/null +++ b/rubylib/src/main/java/yuki/tts/extended/TTSSimpleController.java @@ -0,0 +1,40 @@ +package yuki.tts.extended; + +import android.content.Context; +import android.speech.tts.TextToSpeech; +import android.util.Log; +import android.webkit.JavascriptInterface; +import android.widget.Toast; + +import java.util.Locale; + +/** + * Created by Akeno on 2017/08/11. + */ + +public class TTSSimpleController { + private Context context; + private TextToSpeech tts; + + public TTSSimpleController(final Context context,final Locale locale){ + + // TODO Auto-generated constructor stub + this.context = context; + tts = new TextToSpeech(context, new TextToSpeech.OnInitListener() { + @Override + public void onInit(int status) { + // TODO Auto-generated method stub + if (status == TextToSpeech.SUCCESS) { + int result = tts.setLanguage(locale); + if (result == TextToSpeech.LANG_MISSING_DATA || result == TextToSpeech.LANG_NOT_SUPPORTED) { + Log.d("TTS","Language '"+locale.getDisplayLanguage()+"'is not supported"); + } + } + } + }); + } + @JavascriptInterface + public void say(String text) { + tts.speak(text, TextToSpeech.QUEUE_FLUSH, null); + } +}