J'ai récemment mis à jour mon code Android Google Cloud Speech de v1beta1 à v1. Il y avait quelques changements dans l'API, l'un d'eux était une nouvelle méthode appelée getWordsList().Comment utiliser Google Cloud Speech v1 sur Android?
Je veux utiliser la getWordsList() dans mon projet Android, mais la méthode ne semble pas être visible à mon code:
import com.google.cloud.speech.v1.SpeechGrpc;
import com.google.cloud.speech.v1.SpeechRecognitionAlternative;
import com.google.cloud.speech.v1.StreamingRecognizeResponse;
import com.google.cloud.speech.v1.WordInfo;
...
public void onNext(StreamingRecognizeResponse response) {
int numOfResults = response.getResultsCount();
if(numOfResults > 0){
for (int i=0;i<numOfResults;i++){
StreamingRecognitionResult result = response.getResultsList().get(i);
SpeechRecognitionAlternative alternative = result.getAlternativesList().get(0);
for (WordInfo wordInfo: alternative.getWordsList()) { //-->>Cannot resolve 'method'
System.out.println(wordInfo.getWord());
System.out.println(wordInfo.getStartTime().getSeconds() + " ");
}
...
Ce code est du repo officiel, cependant, je suis obtenir l'erreur suivante:
Cannot resolve method 'getWordsList()'
Voici mon gradle:
apply plugin: 'com.android.application'
apply plugin: 'com.google.protobuf'
android {
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "org.test.test"
minSdkVersion 24
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
// Enabling multidex support.
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
protobuf {
protoc {
artifact = 'com.google.protobuf:protoc:3.0.0'
}
plugins {
grpc {
artifact = 'io.grpc:protoc-gen-grpc-java:1.0.0'
}
javalite {
artifact = 'com.google.protobuf:protoc-gen-javalite:3.0.0'
}
}
generateProtoTasks {
all().each {
task ->
task.builtins {
remove javanano
java {
}
}
task.plugins {
grpc {
}
}
}
}
}
ext {
supportLibraryVersion = '25.0.0'
grpcVersion = '1.4.0'
}
dependencies {
// Generic dependencies
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.google.cloud:google-cloud-speech:0.23.1-alpha'
// Support libraries
compile "com.android.support:appcompat-v7:$supportLibraryVersion"
compile "com.android.support:design:$supportLibraryVersion"
compile "com.android.support:cardview-v7:$supportLibraryVersion"
compile "com.android.support:recyclerview-v7:$supportLibraryVersion"
compile 'com.android.support:multidex:1.0.1'
// gRPC
compile 'javax.annotation:javax.annotation-api:1.2'
compile("io.grpc:grpc-protobuf:${grpcVersion}") {
exclude module: 'jsr305'
}
compile("io.grpc:grpc-stub:${grpcVersion}") {
exclude module: 'jsr305'
}
compile("io.grpc:grpc-auth:${grpcVersion}") {
exclude module: 'jsr305'
}
compile("io.grpc:grpc-okhttp:${grpcVersion}") {
exclude module: 'jsr305'
}
// OAuth2 for Google API
compile('com.google.auth:google-auth-library-oauth2-http:0.3.0') {
exclude module: 'jsr305'
exclude module: 'httpclient'
}
}
J'ai aussi remarqué, je ne peux pas utiliser toutes les bibliothèques GRPC, par exemple la bibliothèque suivante ne peut pas être importé:
import com.google.api.gax.rpc.StreamingCallable;
Comment puis-je utiliser getWordsList() correctement dans Android? Est-ce que je n'utilise pas la bonne version de construction?
Il n'existe malheureusement pas de version de construction correcte à utiliser pour le moment. Les bibliothèques clientes Google Cloud Java [ne sont actuellement pas compatibles avec Android] (https://cloud.google.com/speech/docs/reference/libraries#client-libraries-install-java). C'est-à-dire qu'il pourrait y avoir des façons de faire fonctionner les bibliothèques mais comme elles ne sont pas officiellement supportées, on s'attend à ce que toutes les fonctionnalités ne soient pas là. –