Android Question Oject should first be intitialized(Java Object)

petr4ppc

Well-Known Member
Licensed User
Longtime User
Dear friends, please I have
B4X:
        'Declared
        Private Recognizer As JavaObject
        'Then
        Dim Evt As Object = Recognizer.CreateEvent("edu.cmu.pocketsphinx.RecognitionListener","Listener",0)
        Recognizer.RunMethod("addListener",Array(Evt))

but here:

B4X:
Recognizer.RunMethod("addListener",Array(Evt))

I get this error:

java.lang.RuntimeException: Object should first be initialized (JavaObject).
at anywheresoftware.b4a.AbsObjectWrapper.getObject(AbsObjectWrapper.java:67)
at anywheresoftware.b4j.object.JavaObject.createEvent(JavaObject.java:227)
at anywheresoftware.b4j.object.JavaObject.CreateEvent(JavaObject.java:215)
at aaa.app.mo.sr._setup_complete sr.java:535)
at aaa.app.mo.sr.callSub(sr.java:675)
at anywheresoftware.b4a.keywords.Common.CallSub4(Common.java:1066)
at anywheresoftware.b4a.keywords.Common.CallSubNew3(Common.java:1045)
at aaa.app.mo.sr_th_ended(srr.java:249)
at java.lang.reflect.Method.invoke(Native Method)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:213)
at anywheresoftware.b4a.BA$2.run(BA.java:387)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:237)
at android.app.ActivityThread.main(ActivityThread.java:8107)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:496)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1100)

The mistake is born after I set higher Java or SDK platform, please how can I rewrite the code?
I set:
java\jdk-11.0.1\bin\javac.exe
androidsdk\platforms\android-30\android.jar

Best
p4ppc
 
Last edited:

petr4ppc

Well-Known Member
Licensed User
Longtime User
Thank you Erel,
only notice: I think that something must happen because of changing Java or Platform version (now 30) because with older platform (15) and Java 1 0 7 11, was everything ok.. (but I am not proffesional, I am only writing all informations).

I am doing recognizer initialization in :
B4X:
setup.initialize(Me,Recognizer)

please are here other possibilities how can I do initialization of "Recognizer"?
Thank you
p4ppc
 
Upvote 0

petr4ppc

Well-Known Member
Licensed User
Longtime User
Here I send code:
B4X:
Sub Class_Globals
Dim mModule as Object
Dim MRecognizer as JavaObject
Private TH As Thread
End Sub

Public Sub Initialize(Module as Object,Recognizer as JavaObject)
mModule=Module
mecognizer=Recognizer
TH.initialise("TH")
TH.start(Me,"Configurerecognizer_new",Null)
End sub

I am trying only - I have tried to put MAIN (not Me):
If I set
B4X:
setup.initialize(Main,Recognizer)
then appliacation not crashed (it is running), but Recognizer is not functioned.

Thank you very much,
p4ppc
 
Last edited:
Upvote 0

petr4ppc

Well-Known Member
Licensed User
Longtime User
With this code (I put now setup.InitializeStatic("mRecognizer"):
B4X:
Private Sub Configurerecognizer_new
    Dim Setup As JavaObject
    Setup.InitializeStatic("edu.cmu.pocketsphinx.SpeechRecognizerSetup")
    mRecognizer = Setup.RunMethodJO("defaultSetup",Null) _
    .RunMethodJO("setAcousticModel",Array(JavaFile(ModelsDir,"hmm/en-us-semi"))) _
    .RunMethodJO("setDictionary",Array(JavaFile(ModelsDir,"dict/cmu07a.dic"))) _          
    .RunMethodJO("setRawLogDir",Array(JavaFile(rawdir,""))) _                        
    .RunMethodJO("setKeywordThreshold",Array(Val)) _
    .Runmethod("getRecognizer",Null)    

    Dim ModuleJO As JavaObject = mModule
    mRecognizer.RunMethod("addKeyphraseSearch",Array(ModuleJO.GetField("_kws_search"), ModuleJO.GetField("_keyphrase_search"))) 
    setup.InitializeStatic("mRecognizer")  
End Sub
App is running without recognition and I get in Logs
Failed to initialize recognizer systemException: java lang mRecognizer
 
Last edited:
Upvote 0

petr4ppc

Well-Known Member
Licensed User
Longtime User
Erel, Stevel05

thank you for your answer.
Yes I am trying to use this old project and it appears that in newer version of Android it can not running as in older version (3-4 years back) of Android.
Please if you will have some informations how to solve
"java.lang.RuntimeException: Object should first be initialized (JavaObject) "
because of calling
Recognizer.RunMethod("addListeenr",Array(Evt))
then please for information...

(I am trying : Platform - Android 30, java - JDK 11 0 1)

Thank you very much
Best regards

p4ppc
(I will try some other tests myself too, but I dont know if I can do Initialization correctly)
 
Upvote 0

petr4ppc

Well-Known Member
Licensed User
Longtime User
Dear stevel05, thank you very much for your answer. I am trying your project on Android 11 and I am writing in my answer result:

I put my answer to main Continuous speech recognition thread here:

MAIN THREAD
 
Upvote 0
Top