I use this module hier playDataAudio to play data received from b4a that use AudioStreamer from b4j
but not work for me
B4X:
Private Sub Astream_NewData (Buffer() As Byte)
log("data arrived")
playaudio.SendDataPlayer(Buffer)
B4X:
Sub Class_Globals
Private nativeMe As JavaObject
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize
nativeMe = Me
nativeMe.RunMethod( "initialaudio", Null)
End Sub
Public Sub StartAudioPlayer
nativeMe.RunMethod( "startaudio", Null)
End Sub
Public Sub StopAudioPlayer
nativeMe.RunMethod( "stopaudio", Null)
End Sub
Public Sub SendDataPlayer (data() As Byte)
nativeMe.RunMethod( "playaudio", Array(data,data.Length))
End Sub
#IF JAVA
import javax.sound.sampled.*;
SourceDataLine _speaker;
public void initialaudio() throws LineUnavailableException{
// specifying the audio format
AudioFormat _format = new AudioFormat(22050.F,// Sample Rate
16, // Size of SampleBits
1, // Number of Channels
true, // Is Signed?
false // Is Big Endian?
);
// creating the DataLine Info For the speaker format
DataLine.Info speakerInfo = new DataLine.Info(SourceDataLine.class, _format);
// getting the mixer For the speaker
_speaker = (SourceDataLine) AudioSystem.getLine(speakerInfo);
_speaker.open(_format);
}
public void startaudio() {
try {
_speaker.start();
} catch (Exception e) {
e.printStackTrace();
}
}
public void playaudio(byte[] data, int readCount) {
try {
if(readCount > 0){
_speaker.write(data, 0, readCount);
}
} catch (Exception e) {
e.printStackTrace();
}
}
public void stopaudio() {
try {
_speaker.drain();
_speaker.close();
} catch (Exception e) {
e.printStackTrace();
}
}
#End If
but not work for me