Skip to content

Commit a268daf

Browse files
author
David Motsonashvili
committed
add java api
1 parent 8de99bb commit a268daf

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed

firebase-ai/api.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,9 @@ package com.google.firebase.ai.java {
154154
method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public abstract com.google.common.util.concurrent.ListenableFuture<kotlin.Unit> startAudioConversation(boolean enableInterruptions);
155155
method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public abstract com.google.common.util.concurrent.ListenableFuture<kotlin.Unit> startAudioConversation(kotlin.jvm.functions.Function1<? super com.google.firebase.ai.type.FunctionCallPart,com.google.firebase.ai.type.FunctionResponsePart>? functionCallHandler);
156156
method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public abstract com.google.common.util.concurrent.ListenableFuture<kotlin.Unit> startAudioConversation(kotlin.jvm.functions.Function1<? super com.google.firebase.ai.type.FunctionCallPart,com.google.firebase.ai.type.FunctionResponsePart>? functionCallHandler, boolean enableInterruptions);
157+
method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public abstract com.google.common.util.concurrent.ListenableFuture<kotlin.Unit> startAudioConversation(kotlin.jvm.functions.Function1<? super com.google.firebase.ai.type.FunctionCallPart,com.google.firebase.ai.type.FunctionResponsePart>? functionCallHandler, kotlin.jvm.functions.Function1<? super com.google.firebase.ai.type.LiveServerMessage,kotlin.Unit>? transcriptHandler = null, boolean enableInterruptions);
158+
method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public abstract com.google.common.util.concurrent.ListenableFuture<kotlin.Unit> startAudioConversation(kotlin.jvm.functions.Function1<? super com.google.firebase.ai.type.LiveServerMessage,kotlin.Unit>? transcriptHandler = null);
159+
method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public abstract com.google.common.util.concurrent.ListenableFuture<kotlin.Unit> startAudioConversation(kotlin.jvm.functions.Function1<? super com.google.firebase.ai.type.LiveServerMessage,kotlin.Unit>? transcriptHandler = null, boolean enableInterruptions);
157160
method @RequiresPermission(android.Manifest.permission.RECORD_AUDIO) public abstract com.google.common.util.concurrent.ListenableFuture<kotlin.Unit> stopAudioConversation();
158161
method public abstract void stopReceiving();
159162
field public static final com.google.firebase.ai.java.LiveSessionFutures.Companion Companion;

firebase-ai/src/main/kotlin/com/google/firebase/ai/java/LiveSessionFutures.kt

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,17 @@ public abstract class LiveSessionFutures internal constructor() {
5353
functionCallHandler: ((FunctionCallPart) -> FunctionResponsePart)?
5454
): ListenableFuture<Unit>
5555

56+
/**
57+
* Starts an audio conversation with the model, which can only be stopped using
58+
* [stopAudioConversation].
59+
* @param transcriptHandler A callback function that is invoked whenever the model receives a
60+
* transcript.
61+
*/
62+
@RequiresPermission(RECORD_AUDIO)
63+
public abstract fun startAudioConversation(
64+
transcriptHandler: ((LiveServerMessage) -> Unit)? = null,
65+
): ListenableFuture<Unit>
66+
5667
/**
5768
* Starts an audio conversation with the model, which can only be stopped using
5869
* [stopAudioConversation].
@@ -73,6 +84,48 @@ public abstract class LiveSessionFutures internal constructor() {
7384
@RequiresPermission(RECORD_AUDIO)
7485
public abstract fun startAudioConversation(enableInterruptions: Boolean): ListenableFuture<Unit>
7586

87+
/**
88+
* Starts an audio conversation with the model, which can only be stopped using
89+
* [stopAudioConversation] or [close].
90+
*
91+
* @param enableInterruptions If enabled, allows the user to speak over or interrupt the model's
92+
* ongoing reply.
93+
*
94+
* @param transcriptHandler A callback function that is invoked whenever the model receives a
95+
* transcript.
96+
*
97+
* **WARNING**: The user interruption feature relies on device-specific support, and may not be
98+
* consistently available.
99+
*/
100+
@RequiresPermission(RECORD_AUDIO)
101+
public abstract fun startAudioConversation(
102+
transcriptHandler: ((LiveServerMessage) -> Unit)? = null,
103+
enableInterruptions: Boolean
104+
): ListenableFuture<Unit>
105+
106+
/**
107+
* Starts an audio conversation with the model, which can only be stopped using
108+
* [stopAudioConversation] or [close].
109+
*
110+
* @param functionCallHandler A callback function that is invoked whenever the model receives a
111+
* function call.
112+
*
113+
* @param transcriptHandler A callback function that is invoked whenever the model receives a
114+
* transcript.
115+
*
116+
* @param enableInterruptions If enabled, allows the user to speak over or interrupt the model's
117+
* ongoing reply.
118+
*
119+
* **WARNING**: The user interruption feature relies on device-specific support, and may not be
120+
* consistently available.
121+
*/
122+
@RequiresPermission(RECORD_AUDIO)
123+
public abstract fun startAudioConversation(
124+
functionCallHandler: ((FunctionCallPart) -> FunctionResponsePart)?,
125+
transcriptHandler: ((LiveServerMessage) -> Unit)? = null,
126+
enableInterruptions: Boolean
127+
): ListenableFuture<Unit>
128+
76129
/**
77130
* Starts an audio conversation with the model, which can only be stopped using
78131
* [stopAudioConversation] or [close].
@@ -233,6 +286,12 @@ public abstract class LiveSessionFutures internal constructor() {
233286
functionCallHandler: ((FunctionCallPart) -> FunctionResponsePart)?
234287
) = SuspendToFutureAdapter.launchFuture { session.startAudioConversation(functionCallHandler) }
235288

289+
@RequiresPermission(RECORD_AUDIO)
290+
override fun startAudioConversation(transcriptHandler: ((LiveServerMessage) -> Unit)?) =
291+
SuspendToFutureAdapter.launchFuture {
292+
session.startAudioConversation(transcriptHandler = transcriptHandler)
293+
}
294+
236295
@RequiresPermission(RECORD_AUDIO)
237296
override fun startAudioConversation() =
238297
SuspendToFutureAdapter.launchFuture { session.startAudioConversation() }
@@ -243,6 +302,32 @@ public abstract class LiveSessionFutures internal constructor() {
243302
session.startAudioConversation(enableInterruptions = enableInterruptions)
244303
}
245304

305+
@RequiresPermission(RECORD_AUDIO)
306+
override fun startAudioConversation(
307+
transcriptHandler: ((LiveServerMessage) -> Unit)?,
308+
enableInterruptions: Boolean
309+
) =
310+
SuspendToFutureAdapter.launchFuture {
311+
session.startAudioConversation(
312+
transcriptHandler = transcriptHandler,
313+
enableInterruptions = enableInterruptions
314+
)
315+
}
316+
317+
@RequiresPermission(RECORD_AUDIO)
318+
override fun startAudioConversation(
319+
functionCallHandler: ((FunctionCallPart) -> FunctionResponsePart)?,
320+
transcriptHandler: ((LiveServerMessage) -> Unit)?,
321+
enableInterruptions: Boolean
322+
) =
323+
SuspendToFutureAdapter.launchFuture {
324+
session.startAudioConversation(
325+
functionCallHandler = functionCallHandler,
326+
transcriptHandler = transcriptHandler,
327+
enableInterruptions = enableInterruptions
328+
)
329+
}
330+
246331
@RequiresPermission(RECORD_AUDIO)
247332
override fun startAudioConversation(
248333
functionCallHandler: ((FunctionCallPart) -> FunctionResponsePart)?,

0 commit comments

Comments
 (0)