0

我是一名核心 java 开发人员,我创建了一个类,它从 android 设备接收音频并将接收到的数据扔给 pc 扬声器。该类在我的本地机器上运行,并且设备正在使用我机器的 IP 地址向它发送数据。现在,我必须将课程托管到服务器上,并将课程提供给互联网用户。由于我不了解 Java Web 技术,所以我不知道如何主持课程。

java类:

class Server {

AudioInputStream audioInputStream;
static AudioInputStream ais;
static AudioFormat format;
static boolean status = true;
static int port = 50005;
static int sampleRate = 8000;



    public static void main(String args[]) throws Exception {


        DatagramSocket serverSocket = new DatagramSocket(50005);

        /**
         * Formula for lag = (byte_size/sample_rate)*2
         * Byte size 9728 will produce ~ 0.45 seconds of lag. Voice slightly broken.
         * Byte size 1400 will produce ~ 0.06 seconds of lag. Voice extremely broken.
         * Byte size 4000 will produce ~ 0.18 seconds of lag. Voice slightly more broken then 9728.
         */

        byte[] receiveData = new byte[5000];

        format = new AudioFormat(sampleRate, 16, 1, true, false);

        while (status == true) {
            DatagramPacket receivePacket = new DatagramPacket(receiveData,
                    receiveData.length);

            serverSocket.receive(receivePacket);

            ByteArrayInputStream baiss = new ByteArrayInputStream(
                    receivePacket.getData());

            ais = new AudioInputStream(baiss, format, receivePacket.getLength());
            toSpeaker(receivePacket.getData());

        }



    }

    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(6.0206f);

            sourceDataLine.start();
            sourceDataLine.open(format);

            sourceDataLine.start();

            System.out.println("format? :" + sourceDataLine.getFormat());

            sourceDataLine.write(soundbytes, 0, soundbytes.length);
            System.out.println(soundbytes.toString());
            sourceDataLine.drain();
            sourceDataLine.close();
        } catch (Exception e) {
            System.out.println("Not working in speakers...");
            e.printStackTrace();
        }
    }
    }

请告诉我如何才能主持课程。如果问题有点愚蠢,请原谅。

4

1 回答 1

1

你可以做的两件事我更喜欢 web 服务,特别是 REST

1) 使用 EJB 将其公开为服务

2) 将其公开为 Web 服务 REST 或 SOAP,以便其他人可以通过 Web 访问它

http://geronimo.apache.org/GMOxDOC21/developing-a-jax-ws-pojo-web-service.html

http://wso2.com/library/3151/

于 2013-11-11T10:13:13.910 回答