mirror of https://github.com/rusefi/rusefi-1.git
This commit is contained in:
parent
24ffa5d278
commit
5a020f40fd
|
@ -29,5 +29,6 @@
|
||||||
</activity>
|
</activity>
|
||||||
</application>
|
</application>
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
||||||
|
|
||||||
</manifest>
|
</manifest>
|
||||||
|
|
|
@ -63,6 +63,8 @@ public class rusEFI extends Activity {
|
||||||
|
|
||||||
private UsbManager usbManager;
|
private UsbManager usbManager;
|
||||||
private DfuUpload dfuUpload;
|
private DfuUpload dfuUpload;
|
||||||
|
private SoundBroadcast soundBroadcast = new SoundBroadcast();
|
||||||
|
|
||||||
|
|
||||||
@SuppressLint("SetTextI18n")
|
@SuppressLint("SetTextI18n")
|
||||||
@Override
|
@Override
|
||||||
|
@ -202,7 +204,7 @@ public class rusEFI extends Activity {
|
||||||
if (view.getId() == R.id.button) {
|
if (view.getId() == R.id.button) {
|
||||||
handleButton();
|
handleButton();
|
||||||
} else if (view.getId() == R.id.buttonSound) {
|
} else if (view.getId() == R.id.buttonSound) {
|
||||||
|
soundBroadcast.start();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,86 @@
|
||||||
|
package com.rusefi.ts_plugin;
|
||||||
|
|
||||||
|
import javax.sound.sampled.*;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.ServerSocket;
|
||||||
|
import java.net.Socket;
|
||||||
|
|
||||||
|
public class AudioPlayback {
|
||||||
|
private static final int sampleRate = 16000;
|
||||||
|
|
||||||
|
private static final AudioFormat format = new AudioFormat(sampleRate, 16, 1, true, false);
|
||||||
|
|
||||||
|
public AudioPlayback() throws IOException {
|
||||||
|
ServerSocket serverSocket = new ServerSocket(16000);
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
|
||||||
|
Socket clientSocket = serverSocket.accept();
|
||||||
|
new Thread(() -> {
|
||||||
|
try {
|
||||||
|
playSound(clientSocket.getInputStream());
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void start() {
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
try {
|
||||||
|
new AudioPlayback();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new IllegalStateException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static void playSound(InputStream stream) throws IOException {
|
||||||
|
while (true) {
|
||||||
|
byte[] buffer = new byte[30000];
|
||||||
|
int got = stream.read(buffer);
|
||||||
|
|
||||||
|
byte copy[] = new byte[got];
|
||||||
|
System.arraycopy(buffer, 0, copy, 0, got);
|
||||||
|
new Thread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
toSpeaker(copy);
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void toSpeaker(byte soundbytes[]) {
|
||||||
|
try {
|
||||||
|
DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class, format);
|
||||||
|
SourceDataLine sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo);
|
||||||
|
|
||||||
|
sourceDataLine.open(format);
|
||||||
|
|
||||||
|
FloatControl volumeControl = (FloatControl) sourceDataLine.getControl(FloatControl.Type.MASTER_GAIN);
|
||||||
|
volumeControl.setValue(100.0f);
|
||||||
|
|
||||||
|
sourceDataLine.start();
|
||||||
|
sourceDataLine.open(format);
|
||||||
|
|
||||||
|
sourceDataLine.start();
|
||||||
|
|
||||||
|
System.out.println("format? :" + sourceDataLine.getFormat());
|
||||||
|
|
||||||
|
sourceDataLine.write(soundbytes, 0, soundbytes.length);
|
||||||
|
System.out.println("Playing " + soundbytes.toString());
|
||||||
|
sourceDataLine.drain();
|
||||||
|
sourceDataLine.close();
|
||||||
|
} catch (Exception e) {
|
||||||
|
System.out.println("Not working in speakers...");
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -33,6 +33,9 @@ import static com.rusefi.StartupFrame.setFrameIcon;
|
||||||
import static com.rusefi.rusEFIVersion.CONSOLE_VERSION;
|
import static com.rusefi.rusEFIVersion.CONSOLE_VERSION;
|
||||||
import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
|
import static com.rusefi.ui.storage.PersistentConfiguration.getConfig;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @see StartupFrame
|
||||||
|
*/
|
||||||
public class ConsoleUI {
|
public class ConsoleUI {
|
||||||
private static final int DEFAULT_TAB_INDEX = 0;
|
private static final int DEFAULT_TAB_INDEX = 0;
|
||||||
public String port;
|
public String port;
|
||||||
|
|
Loading…
Reference in New Issue