TTS Listner is one of Infairy broadcast channel which can let all developer receive the voice command from end users. Which means the event bundle can own a voice control ability, just listen the TTS broadcast and analysis the incoming keyword, easy to be a voice control app.
When user made a voice command from Infairy App, Infairy will make a voice recognization and pass through 5 keyword sentences to all bundles in the Infairy.
Developer can listen TTS broadcast channel to get all event by implement "EventTTSDNA" class, please follow the step as below:
First, import package as follows:
When user made a voice command from Infairy App, Infairy will make a voice recognization and pass through 5 keyword sentences to all bundles in the Infairy.
Developer can listen TTS broadcast channel to get all event by implement "EventTTSDNA" class, please follow the step as below:
import org.osgi.service.event.Event;
import org.osgi.service.event.EventHandler;
import com.infairy.cocina.SDK.gene.EventTTSDNA;
then, implement "EventHandler" in your bundle class:
package yourBundle;
public class CommData implements BundleActivator, EventHandler{
....
}
Third, implement HandleEvent() method,
public void handleEvent(Event evnt) {
...
}
Last, do not forget listen TTS broadcast channel in start() method,
package yourBundle;
public class CommData implements BundleActivator, EventHandler{
....
public void start(BundleContext context) throws Exception {
...
device.ListenBroadcast(context, this, device.BROADCAST_CHANNEL_TTS);
}
}
after done the process as above, you can get the event from all other sensor:
public void handleEvent(Event evnt) {
if(evnt==null) return;
//Cast event object from the property of BROADCAST_TTS_VOICE_TRIGGER_EVENTOBJECT to EventTTSDNA
EventTTSDNA eto=(EventTTSDNA)evnt.getProperty(device.BROADCAST_TTS_VOICE_TRIGGER_EVENTOBJECT );
if(eto==null) return;
//get the voice to speech keyword array
String VR[]=eto.WORDS;//(String[]) evnt.getProperty(device.BROADCAST_TTS_VOICE_WORDS);
//Analysis each keyword and find any concern with your bundle
for(int i=0; VR!=null && i < VR.length; i++){
//isPinYinOf() fucntion same as indexOf(), which use chinese pinyin to make the position of the keyword assigned
if(device.isInPinYinOf(VR[i],LanguagePack("天气"))!=-1 && device.isInPinYinOf(VR[i],LanguagePack("预报"))!=-1){
if(device.isInPinYinOf(VR[i],LanguagePack("今天晚上"))!=-1){
.....
}
}
}
}
The EventTTSDNA interface shows as below:
/**
* Voice recognition words array(5 words)
*/
public String[] WORDS=null;
/**
* the number in the Voice recognition words, default is -1
*/
public int NUMBER=-1;
/**
* the hour number in the Voice recognition words, default is -1
*/
public int HOUR=-1;
/**
* the minute number in the Voice recognition words, default is -1
*/
public int MINUTE=-1;
/**
* the latitude where from the user's geo-position
*/
public String LATITUDE="";
/**
* the longitude where from the user's geo-position
*/
public String LONGITUDE="";
/**
*
* the ID of WORD from, defined by developer
*/
public String FROM_ID="";
/**
* selected index by multiple choose
*/
public String SELECTED_INDEX="";
/**
* Define the branc ID of Voice come from.
*/
public String BranchID="";