21
ݻಅአᧆ SDK ݎՈၥᦶՈݳվ֎զྌఽي᪁ጱ՜አᥝᘏӞਧጱ Android ᖫᑕᕪḵ ጯଶDuerOS Android SDK(զӥᓌᑍ“SDK”҂ฎጯଶଶᑃവڊAndroid ݣկݎૡ۱(SDK) DCSܐᦓฎDuerOSۓᒒӨᦡᒒԏᳵጱ᭗ᦔܐᦓฎ ӞॺDuerOSጱฬᚆᶪԻᚆݻێಅᦡනጱAPIԧᥴᧇఘ᧗፡DCSܐ SDK׀DCSܐᦓᦡᒒጱਫሿᴳᦡളفDuerOSݎݎᘏள᭛ളفԅ Android ݎ׀ܔഠጱݎݗݎAndroid ᦡӤਫሿᶪԻۑඪ೮चۑᚆ۱ތᶪᬌفᶪᬌڊᳺᰦᶪԔඎනഴګඪ೮ۑݢզᬰᤈᛔਧԎ ඪ೮ᕚᶪᦩۑڦᚆ۱ތVadཛྷୗTouchཛྷୗ ඪ೮ᶪग़Իۑඪ೮ᶪݳ౮ඎಸۑඪ೮ᛔਧԎᒒᚆۑێඪ೮ᐶᕚᶪᦩۑڦਠ౮ጯଶᨴݩݎᘏᦊᦤԾڠߝୌਠ౮ԾڠߝݸݎᘏտݐCLIENT_ID᧗গכ࠺CLIENT_IDݸۑᚆአӾ᮷տग़አک ݣګف Android Studio ඪ೮ Android 4.1 զӤᔮᕹᇇ ᭗ᬦӥڜṈਖ਼jar۱soکفےૡᑕӾ jar۱soݢզ໑ഝᛔ૩ጱۑᚆᬰᤈೲᵱአ ᯈᗝjar۱ demoӾlibsӥጱjar۱کګૡᑕ app/libsፓ୯ӥଚgradleկጱdependenciesཛྷกjar۱᪠ஆইӥಅᐏғ DuerOS-Android-SDKݎ ܖᓌՕ ۑڜSDKᵞ౮ Өኩ᧗ ݎӨᬩᤈሾह ᯈᗝૡᑕ

DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

SDK Android

DuerOS Android SDK( “SDK” Android (SDK) DCS DuerOSDuerOS API DCS SDK DCS DuerOS

Android Android

Vad Touch

CLIENT_ID CLIENT_ID

Android Studio

Android 4.1

jar so jar so

jar

demo libs jar app/libs gradle dependencies jar

DuerOS-Android-SDK

SDK

Page 2: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

dependencies { compile fileTree(include: ['*.jar'], dir: 'libs')

// url compile name: 'bdplayer-1.0.0', ext: 'aar' // compile project(':location') // ------- def jacksonVersion = '2.9.1' compile "com.fasterxml.jackson.core:jackson-core:${jacksonVersion}" compile "com.fasterxml.jackson.core:jackson-databind:${jacksonVersion}" compile "com.fasterxml.jackson.core:jackson-annotations:${jacksonVersion}" compile files('libs/commons-fileupload-1.3.2.jar') compile files('libs/commons-lang3-3.4.jar') compile files('libs/commons-io-2.5.jar') compile files('libs/okhttp-3.8.1.jar') compile files('libs/okio-1.14.0.jar') compile files('libs/jlayer-1.0.1.jar') compile files('libs/turbonet.jar') compile files('libs/localtts-2.3.2.jar') compile files('libs/dcssdk- .jar') compile files('libs/crablite2.1.jar') compile files('libs/speechv3.jar') compile files('libs/fastjson-1.2.46.jar')}

so armeabi armeabi-v7a so app/src/main/jniLibs

app/src/main/jniLibs Android Studio so so app/libs gradlejniLibs.srcDirs = ['libs']

AndroidManifest.xml audio ( )

<uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.WRITE_SETTINGS" /> <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />

SDK PID APP_KEY PID APP_KEY PID

pid 1703key com.baidu.dumi.open

pid 1704key com.baidu.dumi.open.far

Android5.0 crash android4.4

SDK

PID APPKEY

Multi-Dex

Page 3: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

crash gradle buildType multiDexKeepFile file('multidex-config.txt') multidex-config.txtgradle multidex-config.txt

com/baidu/duer/dcs/tts/TtsImpl.classcom/alibaba/fastjson/JSON.classcom/baidu/duer/dcs/util/http/callback/DcsCallback.classcom/baidu/duer/dcs/util/http/callback/ResponseCallback.classcom/baidu/duer/dcs/util/http/callback/SimpleCallback.classcom/baidu/duer/dcs/util/util/ObjectMapperUtil.classorg/apache/commons/io/output/StringBuilderWriter.classcom/fasterxml/jackson/databind/introspect/BasicBeanDescription.classcom/fasterxml/jackson/core/io/SegmentedStringWriter.classcom/baidu/tts/g/a/a.classcom/fasterxml/jackson/databind/deser/impl/FailingDeserializer.classjava/lang.reflect.ParameterizedType.classcom/baidu/duer/dcs/componentapi/AbsDcsClient.classcom/baidu/duer/dcs/devicemodule/audioplayer/message/PlaybackStatePayload.classcom/baidu/speech/core/BDSCoreJniInterface.classcom/baidu/duer/dcs/basiclibs/turbonet/TurbonetRequestImpl.classcom/fasterxml/jackson/databind/introspect/SimpleMixInResolver.classcom/baidu/duer/dcs/basiclibs/turbonet/CallImpl.class

crash DcsSDK

demo jar demo proguard-rules.pro

dcs-sdk jar

-dontwarn ai.kitt.snowboy.**-keep class ai.kitt.snowboy.** {*;}-dontwarn com.baidu.duer.**-keep class com.baidu.duer.** {*;}-dontwarn com.baidu.dcs.acl.**-keep class com.baidu.dcs.acl.** {*;}

dcs-sdk Demo proguard-rules.pro

1. 2. · id ·3. sdk id StandbyDeviceIdUtil.getStandbyDeviceId() SHA256 android_id + imei + Mac + 32 UUID 64 ID apk -> -> apk -> ->4.dueros-device-id id ID IMEI ID 64 64 ID : A-Z : a-z : 0-9 : -_

sdk (sdk )

ID

Page 4: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

BaseAudioRecorder audioRecorder = new AudioRecordImpl(); IOauth oauth = new OauthCodeImpl(CLIENT_ID, this); // OauthCode CLIENT_ID, DcsSdkBuilder builder = new DcsSdkBuilder(); SdkConfigProvider sdkConfigProvider = new DefaultSdkConfigProvider() { @Override public String clientId() { // CLIENT_ID client_id return CLIENT_ID; }

@Override public int pid() { // PID return PID; }

}; dcsSdk = builder.withSdkConfig(sdkConfigProvider) .withOauth(oauth) .withAudioRecorder(audioRecorder) // 1.withDeviceId ID // 2. // id // // 3.sdk // StandbyDeviceIdUtil.getStandbyDeviceId() // SHA256 android_id + imei + Mac + 32 UUID) 64 // ID apk -> -> // apk -> -> .withDeviceId(StandbyDeviceIdUtil.getStandbyDeviceId()) .build();

sdk

((DcsSdkImpl) dcsSdk).getInternalApi().login(new ILoginListener() { @Override public void onSucceed(String accessToken) { dcsSdk.run(); Toast.makeText(SDKBaseActivity.this.getApplicationContext(), " ", Toast .LENGTH_SHORT).show(); }

@Override public void onFailed(String errorMessage) { Toast.makeText(SDKBaseActivity.this.getApplicationContext(), " ", Toast .LENGTH_SHORT).show(); Log.e(TAG, "login onFailed. "); finish(); }

@Override public void onCancel() { Toast.makeText(SDKBaseActivity.this.getApplicationContext(), " ", Toast .LENGTH_SHORT).show(); Log.e(TAG, "login onCancel. "); finish(); }});

sdk

dcsSdk.release();

Page 5: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

SDK

OAuth :OAuth

DcsSdkBuilder withOauth(IOauth oauth) InternalApi login onSucceed

demo

IOauth oauth = new OauthCodeImpl(CLIENT_ID, this)

Oauth DUEROS

1. -->>OAUTH CONFIG URL -->> -->>2.

https://xiaodu.baidu.com/saiya/device/oauthCallback?client_id=********* (********* client_id)3. xiaodu.baidu.com

cancelVoiceRequest cancelVoiceRequest

// canceldcsSdk.getVoiceRequest().cancelVoiceRequest(false, new com.baidu.duer.dcs.api.IVoiceRequestListener() { @Override public void onSucceed() { dcsSdk.getVoiceRequest().beginVoiceRequest(vad); }});

dcsSdk.getVoiceRequest().endVoiceRequest(new IVoiceRequestListener() { @Override public void onSucceed() { }});

Authorization Code

Authorization Code

IVoiceRequest.beginVoiceRequest

IVoiceRequest.endVoiceRequest

IVoiceRequest.cancelVoiceRequest

Page 6: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

dcsSdk.getVoiceRequest().cancelVoiceRequest(true, new IVoiceRequestListener() { @Override public void onSucceed() { Log.d(TAG, "cancelVoiceRequest onSucceed"); }});

1. enableVad true endVoiceRequest() 2. endVoiceRequest() cancelVoiceRequest() 3. endVoiceRequest() cancelVoiceRequest()

4. beginVoiceRequest() endVoiceRequest() cancelVoiceRequest()

add remove

dcsSdk.getVoiceRequest().addDialogStateListener(IDialogStateListener dialogStateListener);dcsSdk.getVoiceRequest().removeDialogStateListener(IDialogStateListener dialogStateListener);

IDLE --> LISTENING --> THINKING ( ) --> SPEAKING ( ) --> IDLE IDialogStateListener

op1=>operation: IDLEop2=>operation: LISTENINGop3=>operation: THINKINGop4=>operation: SPEAKINGop1(right)->op2(right)->op3(right)->op4(right)

sdk Kitt Snowboy KittWakeUpImpl

WakeUp IWakeupProvider API

Page 7: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

final BaseWakeup wakeup = new KittWakeUpImpl();IWakeupProvider wakeupProvider = new IWakeupProvider() { @Override public WakeUpConfig wakeUpConfig() { // // index Snowboy // 5 " " index 1-5 // WakeUpWord List<WakeUpWord> wakeupWordList = new ArrayList<>(); wakeupWordList.add(new WakeUpWord(1, " ")); wakeupWordList.add(new WakeUpWord(2, " ")); wakeupWordList.add(new WakeUpWord(3, " ")); wakeupWordList.add(new WakeUpWord(4, " ")); wakeupWordList.add(new WakeUpWord(5, " ")); final List<String> paths = new ArrayList<>(); paths.add(WAKEUP_UMDL_PATH); return new WakeUpConfig.Builder() .resPath(WAKEUP_RES_PATH) .umdlPath(paths) .sensitivity(WAKEUP_SENSITIVITY) .highSensitivity(WAKEUP_HIGH_SENSITIVITY) .wakeUpWords(wakeupWordList) .build(); }

@Override public boolean enableWarning() { return ENABLE_PLAY_WARNING; }

@Override public String warningSource() { // // assets assets:// // sd return "assets://ding.wav"; }

@Override public float volume() { // // [0-1] return 0.8f; }

@Override public boolean wakeAlways() { return SDKBaseActivity.this.enableWakeUp(); }

@Override public BaseWakeup wakeupImpl() { return wakeup; } @Override public int audioType() { // return AudioManager.STREAM_SYSTEM; }};

Page 8: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

IWakeupAgent wakeupAgent = getInternalApi().getWakeupAgent();if (wakeupAgent != null) { wakeupAgentListener = new IWakeupAgent.SimpleWakeUpAgentListener() { @Override public void onWakeupSucceed(WakeUpWord wakeUpWord) { Toast.makeText(SDKBaseActivity.this, " " + wakeUpWord.getWord(), Toast.LENGTH_SHORT).show(); } }; wakeupAgent.addWakeupAgentListener(wakeupAgentListener); }

WakeUpProvider

dcsSdk = builder.withWakeupProvider(wakeupProvider) // sdk

getInternalApi().initWakeUp();

private void initWakeUpAgentListener() { IWakeupAgent wakeupAgent = getInternalApi().getWakeupAgent(); if (wakeupAgent != null) { wakeupAgentListener = new IWakeupAgent.SimpleWakeUpAgentListener() { @Override public void onWakeupSucceed(WakeUpWord wakeUpWord) { Toast.makeText(SDKBaseActivity.this, " " + wakeUpWord.getWord(), Toast.LENGTH_LONG).show(); } }; wakeupAgent.addWakeupAgentListener(wakeupAgentListener); }}

sdk BaseWakeup BaseWakeup

a simple demo -

Page 9: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

public class MyWakeUpImpl extends BaseWakeup { private BaseAudioRecorder audioRecorder;

private BaseAudioRecorder.IRecorderListener recorderListener = new BaseAudioRecorder.SimpleRecorderListener() { @Override public void onData(byte[] data) { // pcm // ... } };

public MyWakeUpImpl(BaseAudioRecorder audioRecorder) { super(); this.audioRecorder = audioRecorder; }

@Override public void initWakeup(WakeUpConfig wakeUpConfig) { super.initWakeup(wakeUpConfig); // // ... }

@Override public void startWakeup() { // IInteractionStrategy // ... }

@Override public void stopWakeup(IStopWakeupListener stopWakeupListener) { // // ... }

@Override public void release() { super.release(); // // ... }

}

1. AndroidManifest.xml

<!-- KITT --> <service android:name="com.baidu.duer.kitt.KittWakeUpService" android:enabled="true" android:process=":kittwakeup" />

1.

final BaseWakeup wakeup = new KittWakeUpServiceImpl(audioRecorder);

longspeech

Page 10: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

1. sdcardAsrParam.ASR_OFFLINE_ENGINE_DAT_FILE_PATH = Environment.getExternalStorageDirectory() + "/libbd_model_easr_dat.so";

2. 0: 1: 2: 0AsrParam.ASR_OFFLINE_PUNCTUATION_SETTING_VALUE = 1;

3.

AsrParam.ASR_DECODER = 1;

asrMode = DcsConfig.ASR_MODE_OFFLINE

asrOnly = true

4. license licenseAsrParam.ASR_OFFLINE_ENGINE_LICENSE_FILE_PATH = "assets://temp_wakeup_license";

TTS

InternalApi speakOfflineQuery (String text)

SDK BaseDeviceModule demoBaseDeviceModule DeviceModule dcsSdk.putDeviceModule(BaseDeviceModule deviceModule);

BaseDeviceModule

DCS namespace DeviceModule

namespace name Payload

BaseDeviceModule

public abstract void handleDirective(Directive directive) throwsHandleDirectiveException;

public abstract HashMap> supportPayload() ; Payload

public abstract void release() ;SDK release()DeviceModule

public abstract ClientContext clientContext() ; null

SDK :

// IMessageSender SDK dcs eventIMessageSender messageSender = getInternalApi().getMessageSender();screenDeviceModule = new ScreenDeviceModule(messageSender);screenDeviceModule.addScreenListener(screenListener);dcsSdk.putDeviceModule(screenDeviceModule);

TTS

sdk

Page 11: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

DcsSdkBuilder

DcsSdkBuilder withSdkConfig (SdkConfigProvider sdkConfigProvider)

DcsSdkBuilder withOauth (IOauth oauth)

DcsSdkBuilder withDeviceId (String deviceId) id

DcsSdkBuilder withWakeupProvider (IWakeupProvider wakeupProvider)

DcsSdkBuilder withAudioRecorder (BaseAudioRecorder audioRecorder)

DcsSdkBuilder withProductVersion (String appVersion)

DcsSdkBuilder withMediaPlayer (IMediaPlayer mediaPlayer) sdk

DcsSdkBuilder withSpeakerDecoder (IDecoder decoder)

DcsSdkBuilder withSpeakerPlayer (IMediaPlayer mediaPlayer)

IDcsSdk build () sdk

IDcsSdk

void run (OnInitListener listener)sdk

void release ()

IVoiceRequest getVoiceRequest ()

void putDeviceModule (BaseDeviceModule deviceModule)

void addConnectionStatusListener (IConnectionStatusListenerconnectStatusListener)

void removeConnectionStatusListener (IConnectionStatusListenerconnectStatusListener)

SdkConfigProvider

String clientId () ClientId

int pid () PID PID

int regionId () id

HttpProxy ~~ httpProxy ~~()

boolean compressPCM () PCM

boolean asrOnly () ASR

String appKey () appkey pid

boolean longSpeech ()

int asrAudioSource () audiosource

IConnectionStatusListener

sdk

Page 12: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

void onConnectStatus (ConnectionStatus connectionStatus)

ConnectionStatusDISCONNECTEDPENDING ( )CONNECTED ( )

PlaybackControllerDeviceModule.CommandIssued

CommandIssuedPlay

CommandIssuedPause

CommandIssuedPrevious

CommandIssuedNext

IResponseListener

void onSucceed (int statusCode); statusCode http code

void onFailed (DcsErrorCode dcsErrorCode); dcsErrorCode

void onCancel ();

IDirectiveReceivedListener

void onDirective (Directive directive)

Directive

public Header header ; json header

public Payload payload ; json payload

private String rawMessage ; json

public String rawPayload ; payload

public JSONObject jsonObjectDirective ; jsonobject

IDcsRequestBodySentListener

void onDcsRequestBody (DcsRequestBody dcsRequestBody)

Location.LocationHandler

double getLongitude ();

double getLatitude ();

String getCity ();

EGeoCoordinateSystem getGeoCoordinateSystem ()

Page 13: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

EGeoCoordinateSystem

WGS84

BD09LL

BD09MC

IVoiceRequest

void beginVoiceRequest (boolean enableVad),enableVad true: Vad false touch

void endVoiceRequest (final IVoiceRequestListenerlistener)

,

void cancelVoiceRequest (finalIVoiceRequestListener listener)

void cancelVoiceRequest (boolean initiative,IVoiceRequestListener listener)

true false

void addDialogStateListener (IDialogStateListenerdialogStateListener)

listener

voidremoveDialogStateListener (IDialogStateListener

dialogStateListener)listener

IVoiceRequestListener

void onSucceed ();

IDialogStateListener

void onDialogStateChanged (DialogState dialogState) dialogState

DialogState

IDLE ( )LISTENING ( )THINKING ( )SPEAKING ( ( )tts )

BaseDeviceModule

protected final String nameSpace DeviceModule

protected final IMessageSender messageSender event

Page 14: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

public abstract ClientContext clientContext ()

public abstract void handleDirective (Directivedirective) throws HandleDirectiveException;

public abstract HashMap> supportPayload ()deviceModule Payload,@return HashMap> key

NameSpace+ value payload class

public abstract void release (); sdk.release sdk

public String getNameSpace () DeviceModule nameSpace

IWakeupProvider

WakeUpConfigwakeupConfig ();

booleanenableWarning ();

StringwarningSource ();

android assets assets urlassets://filename

float volume (); 0<= <=1;

boolean wakeAlways ()

BaseWakeupwakeupImpl ()

int audioType () AudioManager STREAM_SYSTEM

WakeUpConfig.Builder

Builder resPath (String resPath) Snowboy .res assets

Builder umdlPath (String umdlPath) Snowboy .umdl assets

Builder sensitivity (Stringsensitivity)

Snowboy ',' "0.35,0.35,0.45"

Builder wakeUpWords (ListwakeUpWords)

Snowboy3 index 1 2 3

Builder highSensitivity (StringhighSensitivity)

( Snowboy - 2 ',' "0.45,0.45,0.55"

BuilderonPlayingSensitivity (String

onPlayingSensitivity)MediaPlayer Snowboy ','

BuilderonPlayingHighSensitivity (String

onPlayingHighSensitivity)MediaPlayer Snowboy - 2 ','

Builder audioGain (float audioGain) Snowboy >1

WakeUpWord

Page 15: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

int index 1...N

String word

byte[] wakeUpWordAudioData

long time ms

boolean isOneshot oneshot

BaseWakeup

public void initWakeup (WakeUpConfig wakeUpConfig)

public abstract void startWakeup ()

public abstract void stopWakeup (IStopWakeupListener l)

public void release ()

public void addWakeupListener (IWakeupListener listener)

public void removeWakeupListener (IWakeupListener listener)

protected void fireOnWakeUpSucceed (WakeUpWord wakeUpWord)

protected void fireOnInitWakeUpSucceed ()

protected void fireOnInitWakeUpFailed (String errorMessage) errorMessage

public void setSupportOneShot (boolean supportOneShot) oneshot

public void setSensitivity (String sensitivity)

public void setHighSensitivity (String highSensitivity) 2

IWakeupAgent

void addWakeupAgentListener (IWakeupAgentListener listener) listener

void removeWakeupAgentListener (IWakeupAgentListener listener) listener

IWakeupAgentListener

void onInitWakeUpSucceed ()

void onInitWakeUpFailed (String errMsg)

void onWakeupSucceed (WakeUpWord wakeUpWord) wakeUpWord

void onWarningCompleted ()

void onWarningError (String error, IMediaPlayer.ErrorType errorType)

IWakeupListener

Page 16: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

void onInitWakeUpSucceed () ,

void onInitWakeUpFailed (String errorMessage) errorMessage

void onWakeupSucceed (WakeUpWord wakeUpWord) wakeUpWord

IStopWakeupListener

void onStopWakeup ()

IUpload

void uploadPhoneContacts (String contacts, boolean forceUpload, IUploadListener listener)

void uploadWechatContacts (String contacts, IUploadListener listener)

IOauth

void getToken (IOauthCallback listener) accessToken

void clearAccessToken () accessToken

IOauthCallback

void onSucceed (String accessToken) accessToken

void onError (String errorMsg) accessToken

void onCancel () accessToken Oauth code

ILoginListener

void onSucceed (String accessToken)

void onFailed (String errorMessage)

void onCancel ()

IErrorListener

void onErrorCode (DcsErrorCode errorCode)

DcsErrorCode

error suberror errorMsg( ) originMsg ( )

Page 17: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

error suberror

VOICE_REQUEST_EXCEPTION NETWORK_UNAVAILABLE

VOICE_REQUEST_EXCEPTION TOKEN_IS_EMPTY accessToken

VOICE_REQUEST_EXCEPTION DIRECTIVE_IS_PENDING

VOICE_REQUEST_EXCEPTION 1003 1005

VOICE_REQUEST_EXCEPTION 2000 2002 2003 2004 2005 2006 2100

VOICE_REQUEST_EXCEPTION 3001

VOICE_REQUEST_EXCEPTION 3100 VAD

VOICE_REQUEST_EXCEPTION 3101 VAD

VOICE_REQUEST_EXCEPTION 3102 VAD

VOICE_REQUEST_EXCEPTION 4001 4002 4003 4004

VOICE_REQUEST_EXCEPTION 5001

VOICE_REQUEST_EXCEPTION 6001

VOICE_REQUEST_EXCEPTION 7001

VOICE_REQUEST_EXCEPTION 8001

VOICE_REQUEST_EXCEPTION 9001

VOICE_REQUEST_EXCEPTION 10002-10012

VOICE_REQUEST_EXCEPTION 11002-11010

VOICE_REQUEST_EXCEPTION

LOGIN_EXCEPTION LOGIN_FAILED

LOGIN_EXCEPTION LOGIN_CANCEL

DECODER_FAILED DECODER_FAILED

REQUEST_HINT INVALID_REQUEST

REQUEST_HINT UNAUTHORIZED_REQUEST

REQUEST_HINT THROTTLING_EXCEPTION /

REQUEST_HINT INTERNAL_SERVICE_EXCEPTION

REQUEST_HINT NA

EVENT_REQUEST_EXCEPTION EVENT_TOKEN_ISNULL token

EVENT_REQUEST_EXCEPTION EVENT_ISNULL

JSON_PARSE_EXCEPTION JSON_PARSE_EXCEPTION json

DIRECTIVE_EXCEPTION DIRECTIVE_EXCEPTION

TtsOnlineInfo

-

Page 18: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

volume 0-9

speed 0-9

pitch 0-9

speaker 0: 1: 2: 3: " " 4: " "

aue MP3, : AUDIO_FORMAT_

rate : AUDIO_BITRATE_

xml xml

TtsInfoHelper.IUpdateTtsCallback

void success ()

void error (String errMsg) errMsg

InternalApi

public InternalApi (DcsSdkImpl dcsSdkimp) IDcsSdk

public void sendQuery (String query) , query

public void speakRequest (String text) tts

public void speakOfflineRequest (String text) - tts

public void stopSpeaker () tts ,

public void pauseSpeaker () ( tts tts )

public void resumeSpeaker () ( tts tts )

public void interruptSpeaker ()( tts tts )

speaker play pauseSpeakerresumeSpeaker

public void updateOnlineTtsInfo (String clientId, TtsOnlineInfo info,TtsInfoHelper.IUpdateTtsCallback callback)

tts

public void initWakeUp ()IWakeupProvider.wakeAlways true

public void stopWakeup (IStopWakeupListener l)

public void startWakeup ()

public void uninitWakeUp (IStopWakeupListener listener)

public AbsDcsClient getDcsClient () AbsDcsClient

public BaseDeviceModule getDeviceModule (String namespace) DeviceModule

public void removeDeviceModule (String nameSpace) DeviceModule

public IMessageSender getMessageSender () sdk event

public IWakeupAgent getWakeupAgent () listener

API ( )

Page 19: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

public float getCurrentVolume ()

public void setVolume (float volume) ,0<=volume<=1

public voidsendCommandIssuedEvent (PlaybackControllerDeviceModule.CommandIssued

commandIssued)

public String getDeviceID () id

public void postEvent (Event event, IResponseListener responseListener) event

public void postEvent (JSONObject event, IResponseListenerresponseListener)

event

public void handleDirective (Directive directive)

public void addDirectiveReceivedListener (IDirectiveReceivedListenerlistener)

listener

public void removeDirectiveReceivedListener (IDirectiveReceivedListenerlistener)

listener

public void addRequestBodySentListener (IDcsRequestBodySentListenerlistener)

listener

public voidremoveRequestBodySentListener (IDcsRequestBodySentListener listener)

listener

public Location.LocationHandler getLocationHandler ()

public void setLocationHandler (Location.LocationHandler handler) handler

public void setAsrMode (int asrMode) asr

public void setSupportOneshot (boolean isOneshot) oneshot

public void setInteractionStrategy (IInteractionStrategy wakeUpStrategy) -

public void login (ILoginListener loginListener)

public IUpload getUpload () ( & )

public ISmartHomeManager getSmartHomeManager ()

public void addErrorListener (IErrorListener listener) sdk

public void removeErrorListener (IErrorListener listener) sdk

public void logout ()

public void addAudioPlayListener (IMediaPlayer.IMediaPlayerListenerlistener)

public void removeAudioPlayListener (IMediaPlayer.IMediaPlayerListenerlistener)

public void addFinishedDirectiveListener (IFinishedDirectiveListenerlistener)

ASR/TextInput

public void removeFinishedDirectiveListener (IFinishedDirectiveListenerlistener)

ASR/TextInput

public void addTTSPositionInfoListener (ITTSPositionInfoListener listener) TTS

public void removeTTSPositionInfoListener (ITTSPositionInfoListenerlistener)

TTS

public void exitMultiScene ()

public IOauth getOauth ()

Page 20: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

public boolean isLogin ()

public void addListenerToAllMediaPlayer (IMediaPlayerListener listener) MediaPlayer

public void removeListenerToAllMediaPlayer (IMediaPlayerListenerlistener)

MediaPlayer

public void setDebugBot (String botId) botId id

public BaseAudioInput getAudioInput () audioinput

public IDcsInternalProvider getDcsInternalProvider () DCS

public void addNearAsrEndListener (INearAsrEndListener listener) touch asr

public void removeNearAsrEndListener (INearAsrEndListener listener) touch asr

public void switchAsrToNear (final BaseAudioRecorder audioRecorder, finalISwitchAsrNearFarListener listener)

asr

public void switchAsrToFar (final BaseAudioRecorder audioRecorder, finalISwitchAsrNearFarListener listener)

asr

public TtsImpl initLocalTts (Context context, String pid, String key, StringapiKey, String secretkey)

tts

public TtsImpl initLocalTts (Context context, String pid, String key, StringapiKey, String secretkey,String appId, String licenseFile)

tts

public TtsImpl initLocalTts (Context context, int streamType, String pid, Stringkey, String apiKey,String secretkey, String appId, String licenseFile)

tts

public void setBDuss (String bduss) bduss

public void setSpeakerStreamType (int streamType) AudioTrack StreamType

public void setSpeakerUsage (int usage) AudioTrack Usage

public ICES getStatistics ()

public String getActiveDialogRequestId () id

IInteractionStrategy

void onInitWakeUpFinished ()

void onWakeUpFinished (WakeUpWord wakeUpWord)

void onVoiceRequestFinished ()

void onVoiceRequestStart ()

IFinishedDirectiveListener

void onFinishedDirective () ASR/TextInput

ITTSPositionInfoListener

void onPositionInfo (long pos, longplayTimeMs, long mark)

tts pos playTimeMs mark SpeakandsubContentsInCharacters mark -1

Page 21: DuerOS-Android-SDK O N ðopen-platform-api-doc.bj.bcebos.com/DuerOS-Android... · È é { M µ Æ SDK 1 O N H § 5 e ¶ H § 5 s ¢ ~ f J R = J 1 L \ ] â Û M M Þ ' 1 Android «

DCS DuerOS

CLIENT_ID ID

PID ID

ASR

TTS

VAD

TOUCH

oneshot

Kitt SDK Kitt Snowboy

device id / ID

longspeech 60s