Android Question AudioStreamer Errors

Douglas Farias

Expert
Licensed User
Longtime User
Hi All
I see today errors on Google Play Console about AudioStreamer
I m using this example(lib)
https://www.b4x.com/android/forum/threads/audio-library-v1-5-new-audiostreamer-object.30550/
post #10, save audio to wave.

The errors reported on Google its Like this

java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
at android.media.AudioRecord.<init>(AudioRecord.java:233)
at anywheresoftware.b4a.audio.AudioStreamer.Initialize2(AudioStreamer.java:79)
at anywheresoftware.b4a.audio.AudioStreamer.Initialize(AudioStreamer.java:65)
at com.afina.iddesenvolvimento.main._activity_create(main.java:451)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
at com.afina.iddesenvolvimento.main.afterFirstLayout(main.java:102)
at com.afina.iddesenvolvimento.main.access$000(main.java:17)
at com.afina.iddesenvolvimento.main$WaitForLayout.run(main.java:80)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(Native Method)
Android 2.3.3 - 2.3.7 - Galaxy Y Duos (GT-S6102B)



java.lang.IllegalArgumentException
java.lang.IllegalArgumentException
at android.media.AudioRecord.<init>(AudioRecord.java:233)
at anywheresoftware.b4a.audio.AudioStreamer.Initialize2(AudioStreamer.java:79)
at anywheresoftware.b4a.audio.AudioStreamer.Initialize(AudioStreamer.java:65)
at com.afina.iddesenvolvimento.main._activity_create(main.java:451)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
at com.afina.iddesenvolvimento.main.afterFirstLayout(main.java:102)
at com.afina.iddesenvolvimento.main.access$000(main.java:17)
at com.afina.iddesenvolvimento.main$WaitForLayout.run(main.java:80)
at android.os.Handler.handleCallback(Handler.java:808)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:5292)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640)
at dalvik.system.NativeStart.main(Native Method)
Android 4.4 - Lenovo A3500-FL (A3500FL)


I m using the same example code on my app

This is a bug on the audio lib? or my app?
i have put a lot of try and catch on this app, i dont put only on this code

B4X:
    If FirstTime Then
        streamer.Initialize("streamer", mSampleRate, mMono, mBitRate, streamer.VOLUME_MUSIC)
        buffers.Initialize
        timer1.Initialize("timer1", 1000)
        mps.Initialize2("mps")
    End If

The error can is on this code.
how can i fix this error, and this is from lib or my app?

The app with this error its this
https://www.b4x.com/android/forum/threads/afinador-de-violão-guitar-tuner.62091/

thx again.
 

Douglas Farias

Expert
Licensed User
Longtime User
The same of this example
https://www.b4x.com/android/forum/threads/audio-library-v1-5-new-audiostreamer-object.30550/
#10 Audio for wav file example

B4X:
Sub Process_Globals
    Private streamer As AudioStreamer
    Private buffers As List
    Private timer1 As Timer
    Private recordingStart As Long
    Private output As OutputStream
    Private recording As Boolean
    Private mBitRate As Int = 16
    Private mSampleRate As Int = 22050
    Private mMono As Boolean = True
    Private mps As MediaPlayer
    Private kv As KeyValueStore
    Private tcarrega As Timer
End Sub

On Activity Create

B4X:
    If FirstTime Then
        streamer.Initialize("streamer", mSampleRate, mMono, mBitRate, streamer.VOLUME_MUSIC)
        buffers.Initialize
        timer1.Initialize("timer1", 1000)
        mps.Initialize2("mps")
    End If


B4X:
Sub StartWaveFile(Dir As String, FileName As String, SampleRate As Int, Mono As Boolean,BitsPerSample As Int) As OutputStream
        File.Delete(Dir, FileName)
        Dim raf As RandomAccessFile
        raf.Initialize2(Dir, FileName, False, True)
        raf.WriteBytes("RIFF".GetBytes("ASCII"), 0, 4, raf.CurrentPosition)
        raf.CurrentPosition = 8 'skip 4 bytes for the size
        raf.WriteBytes("WAVE".GetBytes("ASCII"),0, 4, raf.CurrentPosition)
        raf.WriteBytes("fmt ".GetBytes("ASCII"),0, 4, raf.CurrentPosition)
        raf.WriteInt(16, raf.CurrentPosition)
        raf.WriteShort(1, raf.CurrentPosition)
        Dim numberOfChannels As Int
        If Mono Then numberOfChannels = 1 Else numberOfChannels = 2
        raf.WriteShort(numberOfChannels, raf.CurrentPosition)
        raf.WriteInt(SampleRate, raf.CurrentPosition)
        raf.WriteInt(SampleRate * numberOfChannels * BitsPerSample / 8, raf.CurrentPosition)
        raf.WriteShort(numberOfChannels * BitsPerSample / 8, raf.CurrentPosition)
        raf.WriteShort(BitsPerSample, raf.CurrentPosition)
        raf.WriteBytes("data".GetBytes("ASCII"),0, 4, raf.CurrentPosition)
        raf.WriteInt(0, raf.CurrentPosition)
        raf.Close
        Return File.OpenOutput(Dir, FileName, True)
End Sub

Sub CloseWaveFile(Dir As String, FileName As String)
    Dim raf As RandomAccessFile
    raf.Initialize2(Dir, FileName, False, True)
    raf.WriteInt(raf.Size - 8, 4)
    raf.WriteInt(raf.Size - 44, 40)
    raf.Close
End Sub


Sub streamer_RecordBuffer (Buffer() As Byte)
    If recording Then output.WriteBytes(Buffer, 0, Buffer.Length)
End Sub


Audio LIB = 1.63
 
Upvote 0

sorex

Expert
Licensed User
Longtime User
I had these errors aswell depending on which device it was running. 8KHz seemed to work on all of them so enter 8000 is you still have problems.
 
Upvote 0

Douglas Farias

Expert
Licensed User
Longtime User
The reports continue i dont understand why
here whate i made to try fix

B4X:
    If FirstTime Then
       
        Try
        streamer.Initialize("streamer", mSampleRate, mMono, mBitRate, streamer.VOLUME_MUSIC)
        Catch
        streamer.Initialize("streamer", 11025, mMono, mBitRate, streamer.VOLUME_MUSIC)   
        Log("Erro Stream 11025")
        End Try
       
       
        buffers.Initialize
        timer1.Initialize("timer1", 1000)
        mps.Initialize2("mps")
       
       
       
    End If


Today one user reported

java.lang.NegativeArraySizeException
at anywheresoftware.b4a.audio.AudioStreamer.Initialize2(AudioStreamer.java:77)
at anywheresoftware.b4a.audio.AudioStreamer.Initialize(AudioStreamer.java:65)
at com.afina.iddesenvolvimento.main._activity_create(main.java:451)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at anywheresoftware.b4a.BA.raiseEvent2(BA.java:169)
at com.afina.iddesenvolvimento.main.afterFirstLayout(main.java:102)
at com.afina.iddesenvolvimento.main.access$000(main.java:17)
at com.afina.iddesenvolvimento.main$WaitForLayout.run(main.java:80)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
 
Upvote 0
Top